This commit was manufactured by cvs2svn to create tag 'R36x_v20101019'.

Sprout from R3_6_maintenance 2010-10-19 16:00:23 UTC Andrew Niefer <aniefer> ' Bug 319123 -  [launcher] Application becomes unresponsive when code completion tooltip shows'
Cherrypick from master 2010-06-17 18:49:15 UTC Andrew Niefer <aniefer> 'pass cvsTag for building branches':
    releng/org.eclipse.equinox.launcher.releng/.project
    releng/org.eclipse.equinox.launcher.releng/build.xml
    releng/org.eclipse.equinox.launcher.releng/remote.sh
Delete:
    bundles/org.eclipse.equinox.launcher/.cdtproject
    bundles/org.eclipse.equinox.launcher/.classpath
    bundles/org.eclipse.equinox.launcher/.cproject
    bundles/org.eclipse.equinox.launcher/.project
    bundles/org.eclipse.equinox.launcher/.settings/.api_filters
    bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.pde.core.prefs
    bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/about.html
    bundles/org.eclipse.equinox.launcher/build.properties
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/.project
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/about.html
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/build.properties
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/launcher.gtk.linux.s390.properties
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/.project
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/about.html
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/build.properties
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/launcher.gtk.linux.s390x.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.settings/org.eclipse.pde.core.prefs
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/launcher.carbon.macosx.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/launcher.cocoa.macosx.x86_64.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/launcher.cocoa.macosx.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/launcher.gtk.aix.ppc64.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.settings/org.eclipse.pde.core.prefs
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/launcher.motif.aix.ppc.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/README.TXT
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/launcher.motif.hpux.ia64_32.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/launcher.motif.solaris.sparc.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/launcher.win32.win32.ia64.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.settings/org.eclipse.pde.core.prefs
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/launcher.win32.win32.x86.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/launcher.win32.win32.x86_64.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.classpath
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/launcher.wpf.win32.x86.properties
    bundles/org.eclipse.equinox.launcher/launcher.properties
    bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/Main.java
    bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/package.html
    bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java
    bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/JNIBridge.java
    bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java
    bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java
    bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/package.html
    bundles/org.eclipse.osgi.services/.classpath
    bundles/org.eclipse.osgi.services/.cvsignore
    bundles/org.eclipse.osgi.services/.project
    bundles/org.eclipse.osgi.services/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.osgi.services/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.services/about.html
    bundles/org.eclipse.osgi.services/about_files/LICENSE-2.0.txt
    bundles/org.eclipse.osgi.services/build.properties
    bundles/org.eclipse.osgi.services/customBuildCallbacks.xml
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/Configuration.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationAdmin.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationEvent.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationException.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationListener.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermission.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection$1.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPlugin.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedServiceFactory.class
    bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentConstants.class
    bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentContext.class
    bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentException.class
    bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentFactory.class
    bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentInstance.class
    bundles/org.eclipse.osgi.services/org/osgi/service/device/Constants.class
    bundles/org.eclipse.osgi.services/org/osgi/service/device/Device.class
    bundles/org.eclipse.osgi.services/org/osgi/service/device/Driver.class
    bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverLocator.class
    bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverSelector.class
    bundles/org.eclipse.osgi.services/org/osgi/service/device/Match.class
    bundles/org.eclipse.osgi.services/org/osgi/service/event/Event$UnmodifiableDictionary.class
    bundles/org.eclipse.osgi.services/org/osgi/service/event/Event.class
    bundles/org.eclipse.osgi.services/org/osgi/service/event/EventAdmin.class
    bundles/org.eclipse.osgi.services/org/osgi/service/event/EventConstants.class
    bundles/org.eclipse.osgi.services/org/osgi/service/event/EventHandler.class
    bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermission.class
    bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermissionCollection.class
    bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpContext.class
    bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/http/NamespaceException.class
    bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectionFactory.class
    bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectorService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/log/LogEntry.class
    bundles/org.eclipse.osgi.services/org/osgi/service/log/LogListener.class
    bundles/org.eclipse.osgi.services/org/osgi/service/log/LogReaderService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/log/LogService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/metatype/AttributeDefinition.class
    bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeInformation.class
    bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeProvider.class
    bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/metatype/ObjectClassDefinition.class
    bundles/org.eclipse.osgi.services/org/osgi/service/provisioning/ProvisioningService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPAction.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPDevice.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPEventListener.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPException.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPIcon.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPLocalStateVariable.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPService.class
    bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPStateVariable.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Authorization.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Group.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Role.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/User.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdmin.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminEvent.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminListener.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermission.class
    bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermissionCollection.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/BasicEnvelope.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Consumer.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Envelope.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Producer.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Wire.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdmin.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminEvent.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminListener.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireConstants.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermission.class
    bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermissionCollection.class
    bundles/org.eclipse.osgi.services/plugin.properties
    bundles/org.eclipse.osgi.services/src.zip
    bundles/org.eclipse.osgi.tests/.classpath
    bundles/org.eclipse.osgi.tests/.cvsignore
    bundles/org.eclipse.osgi.tests/.project
    bundles/org.eclipse.osgi.tests/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.osgi.tests/All OSGi Tests.launch
    bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/about.html
    bundles/org.eclipse.osgi.tests/build.properties
    bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/activator/error1/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/activator/error2/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/activator/error3/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/activator.error4/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/buddy/dependent/a/test1/ATest.java
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test1.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/buddy/dependent/a/test2/ATest.java
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test2.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/resources/test.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/buddy/registered/a/test1/ATest.java
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test1.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/buddy/registered/a/test2/ATest.java
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test2.txt
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/resources/test.txt
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AChain.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain1.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain2.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BChain.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain1.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain2.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain1.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain2.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/DMultipleChain1.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestMultiChain.java
    bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestSingleChain.java
    bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/ICircularity.java
    bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/TestCircularity.java
    bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/client1/multiple/exports/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/client2/multiple/exports/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/exporter/importer/test/Test1.java
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/exporter/importer/test/Test2.java
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/test/Test3.java
    bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer4/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/ext/extclasspath/a/importer/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/ExtClasspathExtTest.java
    bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/extresource.txt
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/ext/framework/a/importer/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/ext/framework/a/requires/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/FrameworkExtTest.java
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/fwkresource.txt
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java
    bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass1.java
    bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass2.java
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess.java
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess2.java
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/fragment/test/attach/frag/b/Test.java
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.require/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/Activator2.java
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/internal/test/PackageAccessTest2.java
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/internal/test/PackageAccessTest.java
    bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass1.java
    bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass2.java
    bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/onlyone/PublicClass1.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/ATest.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/BTest.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/a/BAExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/b/BBExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/CTest.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/a/CAExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/b/CBExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy1.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy2.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/SimpleLegacy.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy1.java
    bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy2.java
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativefile1.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativetest/a1/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativefile2.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativetest/a2/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativefile.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativetest/b1/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativefile.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativetest/b2/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test1/nativecode.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test2/nativecode.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test3/nativecode.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/nativetest/c/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/libs/test1/nativecode.txt
    bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/nativetest/d/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/ATest.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/BTest.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/a/BAExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/b/BBExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/CTest.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/a/CAExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/b/CBExcluded.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude1.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude2.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude1.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude2.java
    bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazySimple.java
    bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/HostManifest_en_US.properties
    bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/frag.a.txt
    bundles/org.eclipse.osgi.tests/bundles_src/security.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/security.a/resources/HostManifest.properties
    bundles/org.eclipse.osgi.tests/bundles_src/security.a/security/a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/security.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/security.b/OSGI-INF/permissions.perm
    bundles/org.eclipse.osgi.tests/bundles_src/security.b/security/b/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/substitutes/q/AFq.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/data/resource1
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/x/Ax.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/y/Ay.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/substitutes/q/BFq.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/x/Bx.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/y/By.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.c/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.d/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/substitutes/z/Ez.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/substitutes/z/Fz.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.g/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.h/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/x/Ix.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/y/Iy.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/x/Jx.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/y/Jy.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/x/Kx.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/y/Ky.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/x/Lx.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/y/Ly.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/x/Mx.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/y/My.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/x/Nx.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/y/Ny.java
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.p/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/substitutes.q/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/X1.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/internal/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/x/X.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/Y.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/internal/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a.update/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/Service1.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/b/Service2.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/test/bug259903/b/Service3.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/test/bug259903/c/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/OSGI-INF/permissions.perm
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/OSGI-INF/permissions.perm
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/test/bug287750/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/test/bug306181a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/component.xml
    bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/test/bug306181b/Component.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/test/filter/a/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.fragment1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.fragment2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.fragment3/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.fragment4/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.fragment5/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/test/link/a/client/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/SomeAPI.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/params/AParam.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/resource.txt
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/test/link/b/client/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/SomeAPI.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/params/AParam.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/resource.txt
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/test/link/c/client/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service1/Service1.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service2/Service2.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service3/Service3.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/test/link/d/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/test/link/e/client/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service1/Service1.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service2/Service2.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service3/Service3.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/test/link/postponed/PostPonedCondition.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/a/A.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/b/B.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/c/C.java
    bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/test/tccl/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test/a/b/c/d
    bundles/org.eclipse.osgi.tests/bundles_src/test/data/resource1
    bundles/org.eclipse.osgi.tests/bundles_src/test/stuff/data/resource1
    bundles/org.eclipse.osgi.tests/bundles_src/test/test1/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/test2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/test2/data/resource1
    bundles/org.eclipse.osgi.tests/bundles_src/test2/stuff/data/resource1
    bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/ATest.java
    bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Class1.java
    bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/external/TestFriends.java
    bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/onlyforfriends/TestFriends.java
    bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/xfriends/test2/Activator.java
    bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/xfriends/test3/Activator.java
    bundles/org.eclipse.osgi.tests/plugin.xml
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/AutomatedTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTestsActivator.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/AllTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ExitValueApp.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/FailedApp.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/SimpleApp.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/AbstractBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ArrayTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleExceptionTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstallUpdateTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstaller.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/EventListenerTestResults.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ExtensionBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ITestRunner.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/NativeCodeBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PackageAdminBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PlatformAdminBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SubstituteExportsBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SyncEventListenerTestResults.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/TestResults.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AbstractCompositeTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AllCompositeTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeCreateTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeSecurityTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/AllTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/MovableConfigurationAreaTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/ReadOnlyConfigurationAreaTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/debugoptions/DebugOptionsTestCase.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/AllTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/EnvironmentInfoTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/FilePathTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eventmgr/EventManagerTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/BundleContextFilterTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FrameworkUtilFilterTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/internal/plugins/InstallTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/listeners/ExceptionHandlerTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/misc/MiscTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/AllTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/BasePerformanceTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StatePerformanceTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StateUsesPerformanceTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/AdminPermissionTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PackagePermissionTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PermissionTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/ServicePermissionTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestAttributes_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestBSN_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_002.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_003.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_004.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_005.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_006.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_002.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_003.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_004.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_005.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_006.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGenerated_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_002.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_003.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_006.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_008.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_002.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_003.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_002.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_003.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_004.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_005.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_006.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_007.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_001.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_002.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_003.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeAnyTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeSignedTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeTrustedTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/BaseSecurityTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/KeyStoreTrustEngineTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/OSGiAPICertificateTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SecurityTestSuite.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SignedBundleTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/AllSecurityAdminTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityAdminUnitTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityManagerTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/TestPermissionStorage.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceExceptionTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceHookTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceRegistryTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceTrackerTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/AllTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/BasicLocationTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/FileManagerTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/LocationAreaSessionTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/SimpleTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/StreamManagerTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AbstractStateTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AllTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DevModeTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DisabledInfoTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/GenericCapabilityTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/NewResolverTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/PlatformAdminTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/R4ResolverTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SimplePlatformAdmin.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateComparisonTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateCycleTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateResolverTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SubstitutableExportsTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/VersionRangeTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/XFriendsInternalResolverTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/AllTests.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/BidiTextProcessorTestCase.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/LatinTextProcessorTestCase.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ManifestElementTestCase.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/NLSTestCase.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ObjectPoolTestCase.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorSessionTest.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorTestCase.java
    bundles/org.eclipse.osgi.tests/test.xml
    bundles/org.eclipse.osgi.tests/test_files/configuration/bundle01/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/configuration/bundle02/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/configuration/bundle03/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle 01/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle02_1.0.0/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle03/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle04/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle05/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle06/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07b/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08b/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle09/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle10/plugin.xml
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle11/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle12/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle13/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle14/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle15/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle16/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle17/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle18/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/test_files/resolverTests/c1.MF
    bundles/org.eclipse.osgi.tests/test_files/resolverTests/p1.MF
    bundles/org.eclipse.osgi.tests/test_files/resolverTests/p2.MF
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/README
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed_with_corrupt.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_tsa.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_corrupt.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_added.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_corrupt.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_removed.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_sf_corrupted.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/test.bug252098.jar
    bundles/org.eclipse.osgi.tests/test_files/security/bundles/unsigned.jar
    bundles/org.eclipse.osgi.tests/test_files/security/eclipse.jks
    bundles/org.eclipse.osgi.tests/test_files/security/keystore.jks
    bundles/org.eclipse.osgi.tests/test_files/security/leafkeys.jks
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/README
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafa.p12
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafb.p12
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_ou.p12
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_root.p12
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafa.p12
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafb.p12
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_ou.p12
    bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_root.p12
    bundles/org.eclipse.osgi.util/.classpath
    bundles/org.eclipse.osgi.util/.cvsignore
    bundles/org.eclipse.osgi.util/.project
    bundles/org.eclipse.osgi.util/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.osgi.util/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.osgi.util/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.util/about.html
    bundles/org.eclipse.osgi.util/about_files/LICENSE-2.0.txt
    bundles/org.eclipse.osgi.util/build.properties
    bundles/org.eclipse.osgi.util/customBuildCallbacks.xml
    bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Measurement.class
    bundles/org.eclipse.osgi.util/org/osgi/util/measurement/State.class
    bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Unit.class
    bundles/org.eclipse.osgi.util/org/osgi/util/position/Position.class
    bundles/org.eclipse.osgi.util/org/osgi/util/xml/XMLParserActivator.class
    bundles/org.eclipse.osgi.util/plugin.properties
    bundles/org.eclipse.osgi.util/src.zip
    bundles/org.eclipse.osgi/.classpath
    bundles/org.eclipse.osgi/.cvsignore
    bundles/org.eclipse.osgi/.options
    bundles/org.eclipse.osgi/.project
    bundles/org.eclipse.osgi/.settings/.api_filters
    bundles/org.eclipse.osgi/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.launching.prefs
    bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.osgi/.settings/org.eclipse.pde.api.tools.prefs
    bundles/org.eclipse.osgi/CDC-1.0_Foundation-1.0.profile
    bundles/org.eclipse.osgi/CDC-1.1_Foundation-1.1.profile
    bundles/org.eclipse.osgi/J2SE-1.2.profile
    bundles/org.eclipse.osgi/J2SE-1.3.profile
    bundles/org.eclipse.osgi/J2SE-1.4.profile
    bundles/org.eclipse.osgi/J2SE-1.5.profile
    bundles/org.eclipse.osgi/JRE-1.1.profile
    bundles/org.eclipse.osgi/JavaSE-1.6.profile
    bundles/org.eclipse.osgi/JavaSE-1.7.profile
    bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi/META-INF/services/org.osgi.framework.launch.FrameworkFactory
    bundles/org.eclipse.osgi/OSGi_Minimum-1.0.profile
    bundles/org.eclipse.osgi/OSGi_Minimum-1.1.profile
    bundles/org.eclipse.osgi/OSGi_Minimum-1.2.profile
    bundles/org.eclipse.osgi/about.html
    bundles/org.eclipse.osgi/about_files/LICENSE-2.0.txt
    bundles/org.eclipse.osgi/build.properties
    bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleManager.java
    bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMessages.properties
    bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMsg.java
    bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandInterpreter.java
    bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java
    bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java
    bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsoleSession.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleClassLoader.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleData.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleOperation.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleProtectionDomain.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleWatcher.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegate.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/EventPublisher.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FilePath.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FrameworkAdaptor.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/PermissionStorage.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/StatusException.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/Headers.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedElement.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedHashSet.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/ObjectPool.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BaseDescription.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDelta.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDescription.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleSpecification.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/DisabledInfo.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ExportPackageDescription.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericDescription.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericSpecification.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/HostSpecification.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ImportPackageSpecification.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeDescription.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeSpecification.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/PlatformAdmin.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/Resolver.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ResolverError.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/State.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateDelta.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateHelper.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateObjectFactory.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionConstraint.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionRange.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/package.html
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/package.html
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeBase.java
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeClassLoader.java
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeConfigurator.java
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeHelper.java
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeServiceTracker.java
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/SurrogateImpl.java
    bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/service/internal/composite/CompositeModule.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/event/BatchBundleListener.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandProvider.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/package.html
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/CopyOnWriteIdentityMap.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventDispatcher.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventListeners.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventManager.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/ListenerQueue.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/package.html
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AliasMapper.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleFragment.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleHost.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleRepository.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleSource.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Constants.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/EquinoxLauncher.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ExportedPackageImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilterImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/InternalSystemBundle.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ManifestLocalization.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelEvent.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelManager.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleActivator.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Util.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerFactory.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerProxy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingContentHandler.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingFactory.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingURLStreamHandler.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/NullURLStreamHandlerService.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ProtocolActivator.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/StreamHandlerFactory.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerFactoryProxyFor15.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerProxy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerSetter.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoader.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoaderProxy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/FilteredSourcePackage.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/MultiSourcePackage.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/NullPackageSource.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/PackageSource.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SingleSourcePackage.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SystemBundleLoader.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/DependentPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/GlobalPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/IBuddyPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/PolicyHandler.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/RegisteredPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/SystemPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/BundlePermissions.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/EquinoxSecurityManager.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionAdminTable.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionInfoCollection.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionsHash.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurePermissionStorage.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityAdmin.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRow.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRowSnapShot.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTable.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTableUpdate.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/default.permissions
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/implied.permissions
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/DefaultProfileLogger.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/Profile.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/ProfileLogger.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/FilteredServiceListener.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ModifiedServiceEvent.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceReferenceImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistrationImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceUse.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/Equinox.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFWClassLoader.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFactory.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/package.html
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseAdaptor.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseData.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookConfigurator.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookRegistry.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleEntry.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFile.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFileWrapperChain.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirBundleFile.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirZipBundleEntry.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/FileBundleEntry.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/NestedDirBundleFile.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleEntry.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleFile.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/AdaptorHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileFactoryHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileWrapperFactoryHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingStatsHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/StorageHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/BaseClassLoader.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathEntry.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathManager.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/FragmentClasspath.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ParallelClassLoader.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleResourceHandler.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleURLConnection.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/ReferenceInputStream.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleentry/Handler.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleresource/Handler.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/Handler.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/ReferenceURLConnection.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorMsg.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorUtil.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseClassLoadingHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseHookConfigurator.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BasePermissionStorage.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorageHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleInstall.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUninstall.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUpdate.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassLoadingHook.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassPathHelper.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/ExternalMessages.properties
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/InvalidVersion.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/StateManager.java
    bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/SystemBundleData.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseLog.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/package.html
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/BundleLocalizationImpl.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/CachedManifest.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ClasspathManifest.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ContextFinder.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorHook.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseClassLoadingHook.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseCommandProvider.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseErrorHandler.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLazyStarter.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLogHook.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseStorageHook.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IModel.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IPluginInfo.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/MessageHelper.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginParser.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/Semaphore.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/URLConverterImpl.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/BundleStats.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassStats.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassloaderStats.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ResourceBundleStats.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/StatsManager.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConversionException.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConverter.java
    bundles/org.eclipse.osgi/hookconfigurators.properties
    bundles/org.eclipse.osgi/osgi/CDC-1.1_Foundation-1.1.ee
    bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.1.ee
    bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.2.ee
    bundles/org.eclipse.osgi/osgi/ee.foundation.jar
    bundles/org.eclipse.osgi/osgi/ee.minimum-1.2.0.jar
    bundles/org.eclipse.osgi/osgi/ee.minimum.jar
    bundles/org.eclipse.osgi/osgi/exceptions.jar
    bundles/org.eclipse.osgi/osgi/osgi.cmpn.jar
    bundles/org.eclipse.osgi/osgi/osgi.core.jar
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AllServiceListener.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Bundle.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleActivator.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleContext.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleEvent.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleException.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleListener.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleReference.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Configurable.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Filter.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkEvent.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkListener.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/InvalidSyntaxException.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceEvent.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceException.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceFactory.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceListener.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceRegistration.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SynchronousBundleListener.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/EventHook.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/FindHook.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/ListenerHook.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/Framework.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/FrameworkFactory.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/Condition.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionAdmin.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionInfo.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionUpdate.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundle.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundleFactory.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/SurrogateBundle.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/ExportedPackage.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/PackageAdmin.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/RequiredBundle.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionAdmin.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/StartLevel.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/AbstractURLStreamHandlerService.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLConstants.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerService.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerSetter.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTrackerCustomizer.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTrackerCustomizer.java
    bundles/org.eclipse.osgi/osgi/xmlParserAPIs.jar
    bundles/org.eclipse.osgi/profile.list
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/BundleConstraint.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelper.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelperRegistry.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericCapability.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericConstraint.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GroupingChecker.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/MappedList.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/PermissionChecker.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverConstraint.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverExport.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImport.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionSupplier.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BaseDescriptionImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDeltaImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDescriptionImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleSpecificationImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ComputeNodeOrder.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ExportPackageDescriptionImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericDescriptionImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericSpecificationImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/HostSpecificationImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ImportPackageSpecificationImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeDescriptionImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeSpecificationImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ReadOnlyState.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ResolverErrorImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateBuilder.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateDeltaImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMessages.properties
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMsg.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateObjectFactoryImpl.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateReader.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateWriter.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/SystemState.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/UserState.java
    bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/VersionConstraintImpl.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEngine.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEvent.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationListener.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationStatus.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/DefaultAuthorizationEngine.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BERProcessor.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/Base64.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BundleInstallListener.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/DigestedInputStream.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/LegacyVerifierFactory.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7DateParser.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7Processor.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignatureBlockProcessor.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleFile.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentConstants.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentFile.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentImpl.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedStorageHook.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignerInfoImpl.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/TrustEngineListener.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/TrustEngine.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/package.html
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/InvalidContentException.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContent.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentEntry.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentFactory.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignerInfo.java
    bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/package.html
    bundles/org.eclipse.osgi/supplement/.classpath
    bundles/org.eclipse.osgi/supplement/.cvsignore
    bundles/org.eclipse.osgi/supplement/.project
    bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.core.resources.prefs
    bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.ui.prefs
    bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi/supplement/about.html
    bundles/org.eclipse.osgi/supplement/build.properties
    bundles/org.eclipse.osgi/supplement/plugin.properties
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/BasicLocation.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMsg.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/LocationHelper.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaIo.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaNio.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/Debug.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/EclipseDebugTrace.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugOptions.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugTraceEntry.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/FrameworkProperties.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Msg.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Tokenizer.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFile.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileInputStream.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileOutputStream.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLog.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLogEntry.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/package.html
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/util/SecureAction.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/Location.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/package.html
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptions.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptionsListener.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugTrace.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/package.html
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/EnvironmentInfo.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/package.html
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/BundleLocalization.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/LocaleProvider.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/package.html
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/StartupMonitor.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/package.html
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/urlconversion/URLConverter.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/ManagedOutputStream.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/StorageManager.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/package.html
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/ManifestElement.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/NLS.java
    bundles/org.eclipse.osgi/systembundle.properties
    features/org.eclipse.equinox.core.sdk/.project
    features/org.eclipse.equinox.core.sdk/build.properties
    features/org.eclipse.equinox.core.sdk/epl-v10.html
    features/org.eclipse.equinox.core.sdk/feature.properties
    features/org.eclipse.equinox.core.sdk/feature.xml
    features/org.eclipse.equinox.core.sdk/license.html
diff --git a/bundles/org.eclipse.equinox.launcher/.cdtproject b/bundles/org.eclipse.equinox.launcher/.cdtproject
deleted file mode 100644
index 66a469d..0000000
--- a/bundles/org.eclipse.equinox.launcher/.cdtproject
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse-cdt version="2.0"?>
-
-<cdtproject id="org.eclipse.cdt.make.core.make">
-<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.MachO" point="org.eclipse.cdt.core.BinaryParser">
-<attribute key="c++filt" value="c++filt"/>
-</extension>
-<data>
-<item id="scannerConfiguration">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="false" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="false"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="false" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="false"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="false" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="false"/>
-</scannerInfoProvider>
-</profile>
-</item>
-<item id="org.eclipse.cdt.core.pathentry">
-<pathentry kind="src" path=""/>
-<pathentry kind="out" path=""/>
-<pathentry kind="con" path="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/>
-</item>
-<item id="org.eclipse.cdt.make.core.buildtargets">
-<buildTargets>
-<target name="all-mingw" path="library/win32" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_mingw.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="clean" path="library/win32" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_mingw.mak</buildArguments>
-<buildTarget>clean</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="linux-all" path="library/gtk" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_linux.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="clean" path="library/gtk" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_linux.mak</buildArguments>
-<buildTarget>clean</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="all" path="library/carbon" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_macosx.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="clean" path="library/carbon" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_macosx.mak</buildArguments>
-<buildTarget>clean</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="linux-all" path="library/motif" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_linux.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-</buildTargets>
-</item>
-</data>
-</cdtproject>
diff --git a/bundles/org.eclipse.equinox.launcher/.classpath b/bundles/org.eclipse.equinox.launcher/.classpath
deleted file mode 100644
index d5735f0..0000000
--- a/bundles/org.eclipse.equinox.launcher/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/OSGi%Minimum-1.2"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.equinox.launcher/.cproject b/bundles/org.eclipse.equinox.launcher/.cproject
deleted file mode 100644
index 36b45a4..0000000
--- a/bundles/org.eclipse.equinox.launcher/.cproject
+++ /dev/null
@@ -1,120 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?fileVersion 4.0.0?>
-
-<cproject>
-<storageModule moduleId="org.eclipse.cdt.core.settings">
-<cconfiguration id="converted.config.1529602833">
-<storageModule moduleId="scannerConfiguration">
-<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="true" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="true"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerFileProfile">
-<buildOutputProvider>
-<openAction enabled="false" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="makefileGenerator">
-<runAction arguments="-f ${project_name}_scd.mk" command="make" useDefault="true"/>
-<parser enabled="false"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="false" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="false"/>
-</scannerInfoProvider>
-</profile>
-<profile id="org.eclipse.cdt.managedbuilder.core.GCCWinManagedMakePerProjectProfile">
-<buildOutputProvider>
-<openAction enabled="false" filePath=""/>
-<parser enabled="true"/>
-</buildOutputProvider>
-<scannerInfoProvider id="specsFile">
-<runAction arguments="-E -P -v -dD ${plugin_state_location}/${specs_file}" command="gcc" useDefault="true"/>
-<parser enabled="false"/>
-</scannerInfoProvider>
-</profile>
-</storageModule>
-<storageModule moduleId="org.eclipse.cdt.core.pathentry">
-<pathentry kind="src" path=""/>
-<pathentry kind="out" path=""/>
-<pathentry kind="con" path="org.eclipse.cdt.make.core.DISCOVERED_SCANNER_INFO"/>
-</storageModule>
-<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
-<buildTargets>
-<target name="all-mingw" path="library/win32" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_mingw.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="clean" path="library/win32" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_mingw.mak</buildArguments>
-<buildTarget>clean</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="linux-all" path="library/gtk" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_linux.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="clean" path="library/gtk" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_linux.mak</buildArguments>
-<buildTarget>clean</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="all" path="library/carbon" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_macosx.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="clean" path="library/carbon" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_macosx.mak</buildArguments>
-<buildTarget>clean</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-<target name="linux-all" path="library/motif" targetID="org.eclipse.cdt.make.MakeTargetBuilder">
-<buildCommand>make</buildCommand>
-<buildArguments>-f make_linux.mak</buildArguments>
-<buildTarget>all</buildTarget>
-<stopOnError>false</stopOnError>
-<useDefaultCommand>false</useDefaultCommand>
-</target>
-</buildTargets>
-</storageModule>
-<storageModule buildSystemId="org.eclipse.cdt.core.defaultConfigDataProvider" id="converted.config.1529602833" moduleId="org.eclipse.cdt.core.settings" name="convertedConfig">
-<externalSettings/>
-<extensions>
-<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
-<extension id="org.eclipse.cdt.core.MachO" point="org.eclipse.cdt.core.BinaryParser">
-<attribute key="c++filt" value="c++filt"/>
-</extension>
-</extensions>
-</storageModule>
-</cconfiguration>
-</storageModule>
-</cproject>
diff --git a/bundles/org.eclipse.equinox.launcher/.project b/bundles/org.eclipse.equinox.launcher/.project
deleted file mode 100644
index 4e54463..0000000
--- a/bundles/org.eclipse.equinox.launcher/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher</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>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/.settings/.api_filters b/bundles/org.eclipse.equinox.launcher/.settings/.api_filters
deleted file mode 100644
index 2281b22..0000000
--- a/bundles/org.eclipse.equinox.launcher/.settings/.api_filters
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<component id="org.eclipse.equinox.launcher" version="2">
-    <resource path="src/org/eclipse/equinox/launcher/Main.java" type="org.eclipse.equinox.launcher.Main$EclipsePolicy">
-        <filter id="647004193">
-            <message_arguments>
-                <message_argument value="org.eclipse.equinox.launcher.Main.EclipsePolicy.implies(ProtectionDomain, Permission)"/>
-                <message_argument value="Policy"/>
-                <message_argument value="implies(ProtectionDomain, Permission)"/>
-                <message_argument value="J2SE-1.3"/>
-            </message_arguments>
-        </filter>
-        <filter id="647004193">
-            <message_arguments>
-                <message_argument value="org.eclipse.equinox.launcher.Main.EclipsePolicy.getPermissions(ProtectionDomain)"/>
-                <message_argument value="Policy"/>
-                <message_argument value="getPermissions(ProtectionDomain)"/>
-                <message_argument value="J2SE-1.3"/>
-            </message_arguments>
-        </filter>
-    </resource>
-</component>
diff --git a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 739d2b2..0000000
--- a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,329 +0,0 @@
-#Wed Apr 08 09:36:05 EDT 2009
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-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.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=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 20e2cfa..0000000
--- a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,57 +0,0 @@
-#Tue Aug 21 11:30:59 CDT 2007
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index fe921f9..0000000
--- a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Mon Nov 13 11:00:38 EST 2006
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF
deleted file mode 100644
index e0111e8..0000000
--- a/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.equinox.launcher;singleton:=true
-Bundle-Version: 1.1.0.qualifier
-Main-Class: org.eclipse.equinox.launcher.Main
-Bundle-ClassPath: .
-Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.2
-Bundle-Localization: launcher
-Export-Package: org.eclipse.core.launcher;x-internal:=true,
- org.eclipse.equinox.internal.launcher;x-internal:=true,
- org.eclipse.equinox.launcher;x-internal:=true
diff --git a/bundles/org.eclipse.equinox.launcher/about.html b/bundles/org.eclipse.equinox.launcher/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/build.properties b/bundles/org.eclipse.equinox.launcher/build.properties
deleted file mode 100644
index c7e3014..0000000
--- a/bundles/org.eclipse.equinox.launcher/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               launcher.properties,\
-               about.html
-src.includes = about.html
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/.project b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/.project
deleted file mode 100644
index 26fdb5b..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.gtk.linux.s390</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
deleted file mode 100644
index 57288ac..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.s390;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="1.0.0"
-Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=s390))
-Bundle-Localization: launcher.gtk.linux.s390
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/about.html b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/about.html
deleted file mode 100644
index 985239a..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/build.properties b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/build.properties
deleted file mode 100644
index f3c0662..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.gtk.linux.s390.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/launcher.gtk.linux.s390.properties b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/launcher.gtk.linux.s390.properties
deleted file mode 100644
index 3782298..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/launcher.gtk.linux.s390.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher Linux s390 Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/.project b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/.project
deleted file mode 100644
index 0313a09..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.gtk.linux.s390x</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/META-INF/MANIFEST.MF
deleted file mode 100644
index 28fa3d0..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.s390x;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="1.0.0"
-Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=s390x))
-Bundle-Localization: launcher.gtk.linux.s390x
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/about.html b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/about.html
deleted file mode 100644
index 985239a..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/build.properties b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/build.properties
deleted file mode 100644
index 2213963..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.gtk.linux.s390x.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/launcher.gtk.linux.s390x.properties b/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/launcher.gtk.linux.s390x.properties
deleted file mode 100644
index 810b0a3..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/launcher.gtk.linux.s390x.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher Linux s390x Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.project
deleted file mode 100644
index e2a2b78..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.carbon.macosx</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 259feff..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Wed Dec 06 11:35:44 EST 2006
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/META-INF/MANIFEST.MF
deleted file mode 100644
index 0d21e54..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.carbon.macosx;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=carbon) (osgi.os=macosx) (|(osgi.arch=x86)(osgi.arch=ppc)) )
-Bundle-Localization: launcher.carbon.macosx
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/build.properties
deleted file mode 100644
index d6d2e53..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.carbon.macosx.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/launcher.carbon.macosx.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/launcher.carbon.macosx.properties
deleted file mode 100644
index 8b6f73f..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.carbon.macosx/launcher.carbon.macosx.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher MacOSX Carbon Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/.project
deleted file mode 100644
index c731487..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.cocoa.macosx.x86_64</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF
deleted file mode 100644
index 807ab25..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.cocoa.macosx.x86_64;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (osgi.arch=x86_64) )
-Bundle-Localization: launcher.cocoa.macosx.x86_64
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/build.properties
deleted file mode 100644
index f0642e7..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.cocoa.macosx.x86_64.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/launcher.cocoa.macosx.x86_64.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/launcher.cocoa.macosx.x86_64.properties
deleted file mode 100644
index b49be95..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx.x86_64/launcher.cocoa.macosx.x86_64.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher MacOSX Cocoa Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/.project
deleted file mode 100644
index e3ceabe..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.cocoa.macosx</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/META-INF/MANIFEST.MF
deleted file mode 100644
index 534d132..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.cocoa.macosx;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=cocoa) (osgi.os=macosx) (|(osgi.arch=x86)(osgi.arch=ppc)) )
-Bundle-Localization: launcher.cocoa.macosx
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/build.properties
deleted file mode 100644
index d0fa255..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.cocoa.macosx.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/launcher.cocoa.macosx.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/launcher.cocoa.macosx.properties
deleted file mode 100644
index b49be95..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.cocoa.macosx/launcher.cocoa.macosx.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher MacOSX Cocoa Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/.project
deleted file mode 100644
index 980375b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.gtk.aix.ppc64</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/META-INF/MANIFEST.MF
deleted file mode 100644
index 9b58379..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.aix.ppc64
-Bundle-Version: 1.0.0.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="1.0.0"
-Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=aix) (osgi.arch=ppc64))
-Bundle-Localization: launcher.gtk.aix.ppc64
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/build.properties
deleted file mode 100644
index 7be314c..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.gtk.aix.ppc64.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/launcher.gtk.aix.ppc64.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/launcher.gtk.aix.ppc64.properties
deleted file mode 100644
index 425bb64..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.aix.ppc64/launcher.gtk.aix.ppc64.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2010 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher GTK AIX PPC64 Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.project
deleted file mode 100644
index 3be3164..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.motif.aix.ppc</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 8e93962..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Wed Dec 06 11:41:27 EST 2006
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/META-INF/MANIFEST.MF
deleted file mode 100644
index ae7748f..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.motif.aix.ppc;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=motif) (osgi.os=aix) (osgi.arch=ppc))
-Bundle-Localization: launcher.motif.aix.ppc
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/build.properties
deleted file mode 100644
index e890e22..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/build.properties
+++ /dev/null
@@ -1,8 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               libeclipse-motif.so, \
-               launcher.motif.aix.ppc.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false               
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/launcher.motif.aix.ppc.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/launcher.motif.aix.ppc.properties
deleted file mode 100644
index 95c4a79..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.aix.ppc/launcher.motif.aix.ppc.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher AIX PPC Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/.project
deleted file mode 100644
index a97a672..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.motif.hpux.PA_RISC</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/README.TXT b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/README.TXT
deleted file mode 100644
index affe393..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/README.TXT
+++ /dev/null
@@ -1,2 +0,0 @@
-The org.eclipse.equinox.launcher.motif.hpux.PA_RISC launcher is no longer maintained.  
-Content has been deleted.  The tag v20100118 contains the last content before deletion.
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/.project
deleted file mode 100644
index 5bbcd80..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.motif.hpux.ia64_32</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/META-INF/MANIFEST.MF
deleted file mode 100644
index 8599977..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.motif.hpux.ia64_32;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Bundle-Vendor: %providerName
-Eclipse-PlatformFilter: (& (osgi.ws=motif) (osgi.os=hpux) (osgi.arch=ia64_32) )
-Bundle-Localization: launcher.motif.hpux.ia64_32
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/build.properties
deleted file mode 100644
index 408b84c..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.motif.hpux.ia64_32.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/launcher.motif.hpux.ia64_32.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/launcher.motif.hpux.ia64_32.properties
deleted file mode 100644
index 4fd387b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.ia64_32/launcher.motif.hpux.ia64_32.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher HPUX IA64_32 Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/.project
deleted file mode 100644
index 0d55c5b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.motif.solaris.sparc</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/META-INF/MANIFEST.MF
deleted file mode 100644
index 1604561..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Sparc Fragment
-Bundle-SymbolicName: org.eclipse.equinox.launcher.motif.solaris.sparc;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=motif) (osgi.os=solaris) (osgi.arch=sparc))
-Bundle-Localization: launcher.motif.solaris.sparc
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/build.properties
deleted file mode 100644
index 1848bce..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/build.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.motif.solaris.sparc.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
-generateSourceBundle=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/customBuildCallbacks.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">	
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-	
-	<target name="pre.gather.bin.parts">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   base.dir - root of the project                                      -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-		<chmod perm="755" dir="${target.folder}" includes="eclipse_*" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">              
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">             
-	</target>
-</project>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/launcher.motif.solaris.sparc.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/launcher.motif.solaris.sparc.properties
deleted file mode 100644
index dd11a28..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/launcher.motif.solaris.sparc.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher Motif Solaris Sparc Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/.project
deleted file mode 100644
index 9165658..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.win32.win32.ia64</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF
deleted file mode 100644
index e69c7f3..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.ia64;singleton:=true
-Bundle-Version: 1.2.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=ia64))
-Bundle-Localization: launcher.win32.win32.ia64
-Eclipse-BundleShape: dir
-
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/build.properties
deleted file mode 100644
index b489f85..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.dll,\
-               launcher.win32.win32.ia64.properties,\
-               about.html
-generateSourceBundle=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/launcher.win32.win32.ia64.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/launcher.win32.win32.ia64.properties
deleted file mode 100644
index 56553cf..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.ia64/launcher.win32.win32.ia64.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher Win32 IA64 Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.project
deleted file mode 100644
index 1ca9e89..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.win32.win32.x86</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index 300e310..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Wed Dec 06 11:24:25 EST 2006
-eclipse.preferences.version=1
-pluginProject.extensions=false
-resolve.requirebundle=false
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF
deleted file mode 100644
index dd5cfdc..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.x86; singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
-Bundle-Localization: launcher.win32.win32.x86
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/build.properties
deleted file mode 100644
index 199f7ee..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.dll,\
-               launcher.win32.win32.x86.properties,\
-               about.html
-generateSourceBundle=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/launcher.win32.win32.x86.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/launcher.win32.win32.x86.properties
deleted file mode 100644
index c5ca613..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86/launcher.win32.win32.x86.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher Win32 X86 Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/.project
deleted file mode 100644
index 388f97d..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.win32.win32.x86_64</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF
deleted file mode 100644
index a5a4fb5..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.x86_64;singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86_64))
-Bundle-Localization: launcher.win32.win32.x86_64
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/build.properties
deleted file mode 100644
index f64240c..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/build.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.dll,\
-               launcher.win32.win32.x86_64.properties,\
-               about.html
-generateSourceBundle=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/launcher.win32.win32.x86_64.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/launcher.win32.win32.x86_64.properties
deleted file mode 100644
index 4940a45..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.win32.win32.x86_64/launcher.win32.win32.x86_64.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher Win32 X86_64 Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.classpath b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.classpath
deleted file mode 100644
index 751c8f2..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.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.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.project b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.project
deleted file mode 100644
index c8be0ba..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/.project
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.launcher.wpf.win32.x86</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<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>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/META-INF/MANIFEST.MF
deleted file mode 100644
index 6ca4a07..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.wpf.win32.x86; singleton:=true
-Bundle-Version: 1.1.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.2.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=wpf) (osgi.os=win32) (osgi.arch=x86))
-Bundle-Localization: launcher.wpf.win32.x86
-Eclipse-BundleShape: dir
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>June 5, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  
-Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/org/documents/epl-v10.php">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&rsquo;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
-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/build.properties
deleted file mode 100644
index adb8345..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.dll,\
-               com_*.dll,\
-               launcher.wpf.win32.x86.properties,\
-               about.html
-generateSourceBundle=false
\ No newline at end of file
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/launcher.wpf.win32.x86.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/launcher.wpf.win32.x86.properties
deleted file mode 100644
index 253aace..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.wpf.win32.x86/launcher.wpf.win32.x86.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher WPF Win32 X86 Fragment
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/launcher.properties b/bundles/org.eclipse.equinox.launcher/launcher.properties
deleted file mode 100644
index 6493c8f..0000000
--- a/bundles/org.eclipse.equinox.launcher/launcher.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 Launcher
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/Main.java b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/Main.java
deleted file mode 100644
index c98f7ef..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/Main.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     Andrew Niefer - IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.launcher;
-
-/**
- * This class exists only for backwards compatibility.
- * The real Main class is now org.eclipse.equinox.launcher.Main.
- * <p>
- * <b>Note:</b> This class should not be referenced programmatically by
- * other Java code. This class exists only for the purpose of launching Eclipse
- * from the command line. To launch Eclipse programmatically, use 
- * org.eclipse.core.runtime.adaptor.EclipseStarter. The fields and methods
- * on this class are not API.
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-public class Main {
-
-	/**
-	 * Pass our args along to the real Main class.
-	 * 
-	 * @param args the given arguments
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public static void main(String[] args) {
-		org.eclipse.equinox.launcher.Main.main(args);
-	}
-
-}
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/package.html b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/package.html
deleted file mode 100644
index d329929..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/package.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="Author" content="IBM">
-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Launches the Eclipse Platform.
-<h2>
-Package Specification</h2>
-
-This package exists for backwards compatibility.  To start the platform, specify org.eclipse.equinox.launcher.Main
-as the main class when invoking the Java VM.
-<p>
-This package is not intended to be used by other Java code. The methods
-and fields in these classes are not API.
-
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java
deleted file mode 100644
index 6e83b71..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at 
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Andrew Niefer - IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.internal.launcher;
-
-/**
- * @author aniefer
- *
- */
-public class Constants {
-	public static final String INTERNAL_ARCH_I386 = "i386"; //$NON-NLS-1$
-	public static final String INTERNAL_AMD64 = "amd64"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_SUNOS = "SunOS"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_LINUX = "Linux"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_MACOSX = "Mac OS"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_AIX = "AIX"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_HPUX = "HP-UX"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_QNX = "QNX"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_OS400 = "OS/400"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_OS390 = "OS/390"; //$NON-NLS-1$
-	public static final String INTERNAL_OS_ZOS = "z/OS"; //$NON-NLS-1$
-
-	public static final String ARCH_X86 = "x86";//$NON-NLS-1$
-	public static final String ARCH_X86_64 = "x86_64";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * Window 32-bit operating system (e.g., Windows 98, NT, 2000).
-	 */
-	public static final String OS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "linux") indicating the platform is running on a
-	 * Linux-based operating system.
-	 */
-	public static final String OS_LINUX = "linux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "aix") indicating the platform is running on an
-	 * AIX-based operating system.
-	 */
-	public static final String OS_AIX = "aix";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "solaris") indicating the platform is running on a
-	 * Solaris-based operating system.
-	 */
-	public static final String OS_SOLARIS = "solaris";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "hpux") indicating the platform is running on an
-	 * HP/UX-based operating system.
-	 */
-	public static final String OS_HPUX = "hpux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "qnx") indicating the platform is running on a
-	 * QNX-based operating system.
-	 */
-	public static final String OS_QNX = "qnx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "macosx") indicating the platform is running on a
-	 * Mac OS X operating system.
-	 */
-	public static final String OS_MACOSX = "macosx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "os/400") indicating the platform is running on a
-	 * OS/400 operating system.
-	 */
-	public static final String OS_OS400 = "os/400"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "os/390") indicating the platform is running on a
-	 * OS/390 operating system.
-	 */
-	public static final String OS_OS390 = "os/390"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "z/os") indicating the platform is running on a
-	 * z/OS operating system.
-	 */
-	public static final String OS_ZOS = "z/os"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown operating system.
-	 */
-	public static final String OS_UNKNOWN = "unknown";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * machine using the Windows windowing system.
-	 */
-	public static final String WS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "wpf") indicating the platform is running on a
-	 * machine using the Windows Presendation Foundation system.
-	 */
-	public static final String WS_WPF = "wpf";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "motif") indicating the platform is running on a
-	 * machine using the Motif windowing system.
-	 */
-	public static final String WS_MOTIF = "motif";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "gtk") indicating the platform is running on a
-	 * machine using the GTK windowing system.
-	 */
-	public static final String WS_GTK = "gtk";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "photon") indicating the platform is running on a
-	 * machine using the Photon windowing system.
-	 */
-	public static final String WS_PHOTON = "photon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "carbon") indicating the platform is running on a
-	 * machine using the Carbon windowing system (Mac OS X).
-	 */
-	public static final String WS_CARBON = "carbon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "cocoa") indicating the platform is running on a
-	 * machine using the Cocoa windowing system (Mac OS X).
-	 */
-	public static final String WS_COCOA = "cocoa"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown windowing system.
-	 */
-	public static final String WS_UNKNOWN = "unknown";//$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/JNIBridge.java b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/JNIBridge.java
deleted file mode 100644
index 57749e4..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/JNIBridge.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies 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.launcher;
-
-/**
- * <b>Note:</b> This class should not be referenced programmatically by
- * other Java code. This class exists only for the purpose of interacting with
- * a native launcher. To launch Eclipse programmatically, use 
- * org.eclipse.core.runtime.adaptor.EclipseStarter. This class is not API.
- *
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-public class JNIBridge {
-	//TODO: This class should not be public
-	private native void _set_exit_data(String sharedId, String data);
-
-	private native void _set_launcher_info(String launcher, String name);
-
-	private native void _update_splash();
-
-	private native long _get_splash_handle();
-
-	private native void _show_splash(String bitmap);
-
-	private native void _takedown_splash();
-
-	private native int OleInitialize(int reserved);
-
-	private native void OleUninitialize();
-
-	private String library;
-	private boolean libraryLoaded = false;
-
-	/**
-	 * @noreference This constructor is not intended to be referenced by clients.
-	 * 
-	 * @param library the given library
-	 */
-	public JNIBridge(String library) {
-		this.library = library;
-	}
-
-	private void loadLibrary() {
-		if (library != null) {
-			try {
-				if (library.indexOf("wpf") != -1) { //$NON-NLS-1$
-					int idx = library.indexOf("eclipse_"); //$NON-NLS-1$
-					if (idx != -1) {
-						String comLibrary = library.substring(0, idx) + "com_"; //$NON-NLS-1$
-						comLibrary += library.substring(idx + 8, library.length());
-						Runtime.getRuntime().load(comLibrary);
-						OleInitialize(0);
-					}
-				}
-				Runtime.getRuntime().load(library);
-			} catch (UnsatisfiedLinkError e) {
-				//failed
-			}
-		}
-		libraryLoaded = true;
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public boolean setExitData(String sharedId, String data) {
-		try {
-			_set_exit_data(sharedId, data);
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if (!libraryLoaded) {
-				loadLibrary();
-				return setExitData(sharedId, data);
-			}
-			return false;
-		}
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients
-	 */
-	public boolean setLauncherInfo(String launcher, String name) {
-		try {
-			_set_launcher_info(launcher, name);
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if (!libraryLoaded) {
-				loadLibrary();
-				return setLauncherInfo(launcher, name);
-			}
-			return false;
-		}
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public boolean showSplash(String bitmap) {
-		try {
-			_show_splash(bitmap);
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if (!libraryLoaded) {
-				loadLibrary();
-				return showSplash(bitmap);
-			}
-			return false;
-		}
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public boolean updateSplash() {
-		try {
-			_update_splash();
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if (!libraryLoaded) {
-				loadLibrary();
-				return updateSplash();
-			}
-			return false;
-		}
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public long getSplashHandle() {
-		try {
-			return _get_splash_handle();
-		} catch (UnsatisfiedLinkError e) {
-			if (!libraryLoaded) {
-				loadLibrary();
-				return getSplashHandle();
-			}
-			return -1;
-		}
-	}
-
-	/**
-	 * Whether or not we loaded the shared library here from java.  
-	 * False does not imply the library is not available, it could have
-	 * been loaded natively by the executable.
-	 * 
-	 * @return boolean
-	 */
-	boolean isLibraryLoadedByJava() {
-		return libraryLoaded;
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public boolean takeDownSplash() {
-		try {
-			_takedown_splash();
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if (!libraryLoaded) {
-				loadLibrary();
-				return takeDownSplash();
-			}
-			return false;
-		}
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public boolean uninitialize() {
-		if (libraryLoaded && library != null) {
-			if (library.indexOf("wpf") != -1) { //$NON-NLS-1$
-				try {
-					OleUninitialize();
-				} catch (UnsatisfiedLinkError e) {
-					// library not loaded
-					return false;
-				}
-			}
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java
deleted file mode 100644
index da30753..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java
+++ /dev/null
@@ -1,2652 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Anton Leherbauer (Wind River Systems) - bug 301226
- *******************************************************************************/
-package org.eclipse.equinox.launcher;
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.*;
-import java.security.*;
-import java.util.*;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import org.eclipse.equinox.internal.launcher.Constants;
-
-/**
- * The launcher for Eclipse.
- * 
- * <b>Note:</b> This class should not be referenced programmatically by
- * other Java code. This class exists only for the purpose of launching Eclipse
- * from the command line. To launch Eclipse programmatically, use 
- * org.eclipse.core.runtime.adaptor.EclipseStarter. The fields and methods
- * on this class are not API.
- * 
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-public class Main {
-	/**
-	 * Indicates whether this instance is running in debug mode.
-	 */
-	protected boolean debug = false;
-
-	/**
-	 * The location of the launcher to run.
-	 */
-	protected String bootLocation = null;
-
-	/**
-	 * The location of the install root
-	 */
-	protected URL installLocation = null;
-
-	/**
-	 * The location of the configuration information for this instance
-	 */
-	protected URL configurationLocation = null;
-
-	/**
-	 * The location of the configuration information in the install root
-	 */
-	protected String parentConfigurationLocation = null;
-
-	/**
-	 * The id of the bundle that will contain the framework to run.  Defaults to org.eclipse.osgi.
-	 */
-	protected String framework = OSGI;
-
-	/**
-	 * The extra development time class path entries for the framework.
-	 */
-	protected String devClassPath = null;
-
-	/*
-	 * The extra development time class path entries for all bundles.
-	 */
-	private Properties devClassPathProps = null;
-
-	/**
-	 * Indicates whether this instance is running in development mode.
-	 */
-	protected boolean inDevelopmentMode = false;
-
-	/**
-	 * Indicates which OS was passed in with -os
-	 */
-	protected String os = null;
-	protected String ws = null;
-	protected String arch = null;
-
-	//    private String name = null; // The name to brand the launcher
-	//    private String launcher = null; // The full path to the launcher
-	private String library = null;
-	private String exitData = null;
-
-	private String vm = null;
-	private String[] vmargs = null;
-	private String[] commands = null;
-	String[] extensionPaths = null;
-
-	JNIBridge bridge = null;
-
-	// splash handling
-	private boolean showSplash = false;
-	private String splashLocation = null;
-	private String endSplash = null;
-	private boolean initialize = false;
-	protected boolean splashDown = false;
-
-	public final class SplashHandler extends Thread {
-		public void run() {
-			takeDownSplash();
-		}
-
-		public void updateSplash() {
-			if (bridge != null && !splashDown) {
-				bridge.updateSplash();
-			}
-		}
-	}
-
-	private final Thread splashHandler = new SplashHandler();
-
-	//splash screen system properties
-	public static final String SPLASH_HANDLE = "org.eclipse.equinox.launcher.splash.handle"; //$NON-NLS-1$
-	public static final String SPLASH_LOCATION = "org.eclipse.equinox.launcher.splash.location"; //$NON-NLS-1$
-
-	// command line args
-	private static final String FRAMEWORK = "-framework"; //$NON-NLS-1$
-	private static final String INSTALL = "-install"; //$NON-NLS-1$
-	private static final String INITIALIZE = "-initialize"; //$NON-NLS-1$
-	private static final String VM = "-vm"; //$NON-NLS-1$
-	private static final String VMARGS = "-vmargs"; //$NON-NLS-1$
-	private static final String DEBUG = "-debug"; //$NON-NLS-1$
-	private static final String DEV = "-dev"; //$NON-NLS-1$
-	private static final String CONFIGURATION = "-configuration"; //$NON-NLS-1$
-	private static final String NOSPLASH = "-nosplash"; //$NON-NLS-1$
-	private static final String SHOWSPLASH = "-showsplash"; //$NON-NLS-1$
-	private static final String EXITDATA = "-exitdata"; //$NON-NLS-1$
-	private static final String NAME = "-name"; //$NON-NLS-1$
-	private static final String LAUNCHER = "-launcher"; //$NON-NLS-1$
-	private static final String LIBRARY = "--launcher.library"; //$NON-NLS-1$
-	private static final String NL = "-nl"; //$NON-NLS-1$
-	private static final String ENDSPLASH = "-endsplash"; //$NON-NLS-1$
-	private static final String SPLASH_IMAGE = "splash.bmp"; //$NON-NLS-1$
-	private static final String CLEAN = "-clean"; //$NON-NLS-1$
-	private static final String NOEXIT = "-noExit"; //$NON-NLS-1$
-	private static final String OS = "-os"; //$NON-NLS-1$
-	private static final String WS = "-ws"; //$NON-NLS-1$
-	private static final String ARCH = "-arch"; //$NON-NLS-1$
-	private static final String STARTUP = "-startup"; //$NON-NLS-1$
-
-	private static final String OSGI = "org.eclipse.osgi"; //$NON-NLS-1$
-	private static final String STARTER = "org.eclipse.core.runtime.adaptor.EclipseStarter"; //$NON-NLS-1$
-	private static final String PLATFORM_URL = "platform:/base/"; //$NON-NLS-1$
-	private static final String ECLIPSE_PROPERTIES = "eclipse.properties"; //$NON-NLS-1$
-	private static final String FILE_SCHEME = "file:"; //$NON-NLS-1$    
-	protected static final String REFERENCE_SCHEME = "reference:"; //$NON-NLS-1$
-	protected static final String JAR_SCHEME = "jar:"; //$NON-NLS-1$
-
-	// constants: configuration file location
-	private static final String CONFIG_DIR = "configuration/"; //$NON-NLS-1$
-	private static final String CONFIG_FILE = "config.ini"; //$NON-NLS-1$
-	private static final String CONFIG_FILE_TEMP_SUFFIX = ".tmp"; //$NON-NLS-1$
-	private static final String CONFIG_FILE_BAK_SUFFIX = ".bak"; //$NON-NLS-1$
-	private static final String ECLIPSE = "eclipse"; //$NON-NLS-1$
-	private static final String PRODUCT_SITE_MARKER = ".eclipseproduct"; //$NON-NLS-1$
-	private static final String PRODUCT_SITE_ID = "id"; //$NON-NLS-1$
-	private static final String PRODUCT_SITE_VERSION = "version"; //$NON-NLS-1$
-
-	// constants: System property keys and/or configuration file elements
-	private static final String PROP_USER_HOME = "user.home"; //$NON-NLS-1$
-	private static final String PROP_USER_DIR = "user.dir"; //$NON-NLS-1$
-	private static final String PROP_INSTALL_AREA = "osgi.install.area"; //$NON-NLS-1$
-	private static final String PROP_CONFIG_AREA = "osgi.configuration.area"; //$NON-NLS-1$
-	private static final String PROP_CONFIG_AREA_DEFAULT = "osgi.configuration.area.default"; //$NON-NLS-1$
-	private static final String PROP_BASE_CONFIG_AREA = "osgi.baseConfiguration.area"; //$NON-NLS-1$
-	private static final String PROP_SHARED_CONFIG_AREA = "osgi.sharedConfiguration.area"; //$NON-NLS-1$
-	private static final String PROP_CONFIG_CASCADED = "osgi.configuration.cascaded"; //$NON-NLS-1$
-	protected static final String PROP_FRAMEWORK = "osgi.framework"; //$NON-NLS-1$
-	private static final String PROP_SPLASHPATH = "osgi.splashPath"; //$NON-NLS-1$
-	private static final String PROP_SPLASHLOCATION = "osgi.splashLocation"; //$NON-NLS-1$
-	private static final String PROP_CLASSPATH = "osgi.frameworkClassPath"; //$NON-NLS-1$
-	private static final String PROP_EXTENSIONS = "osgi.framework.extensions"; //$NON-NLS-1$
-	private static final String PROP_FRAMEWORK_SYSPATH = "osgi.syspath"; //$NON-NLS-1$
-	private static final String PROP_FRAMEWORK_SHAPE = "osgi.framework.shape"; //$NON-NLS-1$
-	private static final String PROP_LOGFILE = "osgi.logfile"; //$NON-NLS-1$
-	private static final String PROP_REQUIRED_JAVA_VERSION = "osgi.requiredJavaVersion"; //$NON-NLS-1$
-	private static final String PROP_PARENT_CLASSLOADER = "osgi.parentClassloader"; //$NON-NLS-1$
-	private static final String PROP_FRAMEWORK_PARENT_CLASSLOADER = "osgi.frameworkParentClassloader"; //$NON-NLS-1$
-	private static final String PROP_NL = "osgi.nl"; //$NON-NLS-1$
-	static final String PROP_NOSHUTDOWN = "osgi.noShutdown"; //$NON-NLS-1$
-	private static final String PROP_DEBUG = "osgi.debug"; //$NON-NLS-1$	
-	private static final String PROP_OS = "osgi.os"; //$NON-NLS-1$
-	private static final String PROP_WS = "osgi.ws"; //$NON-NLS-1$
-	private static final String PROP_ARCH = "osgi.arch"; //$NON-NLS-1$
-
-	private static final String PROP_EXITCODE = "eclipse.exitcode"; //$NON-NLS-1$
-	private static final String PROP_EXITDATA = "eclipse.exitdata"; //$NON-NLS-1$
-	private static final String PROP_LAUNCHER = "eclipse.launcher"; //$NON-NLS-1$
-	private static final String PROP_LAUNCHER_NAME = "eclipse.launcher.name"; //$NON-NLS-1$
-
-	private static final String PROP_VM = "eclipse.vm"; //$NON-NLS-1$
-	private static final String PROP_VMARGS = "eclipse.vmargs"; //$NON-NLS-1$
-	private static final String PROP_COMMANDS = "eclipse.commands"; //$NON-NLS-1$
-	private static final String PROP_ECLIPSESECURITY = "eclipse.security"; //$NON-NLS-1$
-
-	// Suffix for location properties - see LocationManager.
-	private static final String READ_ONLY_AREA_SUFFIX = ".readOnly"; //$NON-NLS-1$
-
-	// Data mode constants for user, configuration and data locations.
-	private static final String NONE = "@none"; //$NON-NLS-1$
-	private static final String NO_DEFAULT = "@noDefault"; //$NON-NLS-1$
-	private static final String USER_HOME = "@user.home"; //$NON-NLS-1$
-	private static final String USER_DIR = "@user.dir"; //$NON-NLS-1$
-
-	// types of parent classloaders the framework can have
-	private static final String PARENT_CLASSLOADER_APP = "app"; //$NON-NLS-1$
-	private static final String PARENT_CLASSLOADER_EXT = "ext"; //$NON-NLS-1$
-	private static final String PARENT_CLASSLOADER_BOOT = "boot"; //$NON-NLS-1$
-	private static final String PARENT_CLASSLOADER_CURRENT = "current"; //$NON-NLS-1$
-
-	// log file handling
-	protected static final String SESSION = "!SESSION"; //$NON-NLS-1$
-	protected static final String ENTRY = "!ENTRY"; //$NON-NLS-1$
-	protected static final String MESSAGE = "!MESSAGE"; //$NON-NLS-1$
-	protected static final String STACK = "!STACK"; //$NON-NLS-1$
-	protected static final int ERROR = 4;
-	protected static final String PLUGIN_ID = "org.eclipse.equinox.launcher"; //$NON-NLS-1$
-	protected File logFile = null;
-	protected BufferedWriter log = null;
-	protected boolean newSession = true;
-
-	/**
-	 * A structured form for a version identifier.
-	 * 
-	 * @see "http://java.sun.com/j2se/versioning_naming.html for information on valid version strings"
-	 */
-	static class Identifier {
-		private static final String DELIM = ". _-"; //$NON-NLS-1$
-		private int major, minor, service;
-
-		Identifier(int major, int minor, int service) {
-			super();
-			this.major = major;
-			this.minor = minor;
-			this.service = service;
-		}
-
-		/**
-		 * @throws NumberFormatException if cannot parse the major and minor version components
-		 */
-		Identifier(String versionString) {
-			super();
-			StringTokenizer tokenizer = new StringTokenizer(versionString, DELIM);
-
-			// major
-			if (tokenizer.hasMoreTokens())
-				major = Integer.parseInt(tokenizer.nextToken());
-
-			// minor
-			if (tokenizer.hasMoreTokens())
-				minor = Integer.parseInt(tokenizer.nextToken());
-
-			try {
-				// service
-				if (tokenizer.hasMoreTokens())
-					service = Integer.parseInt(tokenizer.nextToken());
-			} catch (NumberFormatException nfe) {
-				// ignore the service qualifier in that case and default to 0
-				// this will allow us to tolerate other non-conventional version numbers 
-			}
-		}
-
-		/**
-		 * Returns true if this id is considered to be greater than or equal to the given baseline.
-		 * e.g. 
-		 * 1.2.9 >= 1.3.1 -> false
-		 * 1.3.0 >= 1.3.1 -> false
-		 * 1.3.1 >= 1.3.1 -> true
-		 * 1.3.2 >= 1.3.1 -> true
-		 * 2.0.0 >= 1.3.1 -> true
-		 */
-		boolean isGreaterEqualTo(Identifier minimum) {
-			if (major < minimum.major)
-				return false;
-			if (major > minimum.major)
-				return true;
-			// major numbers are equivalent so check minor
-			if (minor < minimum.minor)
-				return false;
-			if (minor > minimum.minor)
-				return true;
-			// minor numbers are equivalent so check service
-			return service >= minimum.service;
-		}
-	}
-
-	private String getWS() {
-		if (ws != null)
-			return ws;
-
-		String osgiWs = System.getProperty(PROP_WS);
-		if (osgiWs != null) {
-			ws = osgiWs;
-			return ws;
-		}
-
-		String osName = getOS();
-		if (osName.equals(Constants.OS_WIN32))
-			return Constants.WS_WIN32;
-		if (osName.equals(Constants.OS_LINUX))
-			return Constants.WS_GTK;
-		if (osName.equals(Constants.OS_MACOSX))
-			return Constants.WS_COCOA;
-		if (osName.equals(Constants.OS_HPUX))
-			return Constants.WS_MOTIF;
-		if (osName.equals(Constants.OS_AIX))
-			return Constants.WS_MOTIF;
-		if (osName.equals(Constants.OS_SOLARIS))
-			return Constants.WS_GTK;
-		if (osName.equals(Constants.OS_QNX))
-			return Constants.WS_PHOTON;
-		return Constants.WS_UNKNOWN;
-	}
-
-	private String getAlternateWS(String defaultWS) {
-		// We'll have already tried the default, so we only need to map
-		// in one direction. (default -> alternate)
-		if (Constants.WS_COCOA.equals(defaultWS))
-			return Constants.WS_CARBON;
-		if (Constants.WS_GTK.equals(defaultWS))
-			return Constants.WS_MOTIF;
-		if (Constants.WS_WIN32.equals(defaultWS))
-			return Constants.WS_WPF;
-		return Constants.WS_UNKNOWN;
-	}
-
-	private String getOS() {
-		if (os != null)
-			return os;
-		String osgiOs = System.getProperty(PROP_OS);
-		if (osgiOs != null) {
-			os = osgiOs;
-			return os;
-		}
-		String osName = System.getProperties().getProperty("os.name"); //$NON-NLS-1$
-		if (osName.regionMatches(true, 0, Constants.OS_WIN32, 0, 3))
-			return Constants.OS_WIN32;
-		// EXCEPTION: All mappings of SunOS convert to Solaris
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_SUNOS))
-			return Constants.OS_SOLARIS;
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_LINUX))
-			return Constants.OS_LINUX;
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_QNX))
-			return Constants.OS_QNX;
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_AIX))
-			return Constants.OS_AIX;
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_HPUX))
-			return Constants.OS_HPUX;
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_OS400))
-			return Constants.OS_OS400;
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_OS390))
-			return Constants.OS_OS390;
-		if (osName.equalsIgnoreCase(Constants.INTERNAL_OS_ZOS))
-			return Constants.OS_ZOS;
-		// os.name on Mac OS can be either Mac OS or Mac OS X
-		if (osName.regionMatches(true, 0, Constants.INTERNAL_OS_MACOSX, 0, Constants.INTERNAL_OS_MACOSX.length()))
-			return Constants.OS_MACOSX;
-		return Constants.OS_UNKNOWN;
-	}
-
-	private String getArch() {
-		if (arch != null)
-			return arch;
-		String osgiArch = System.getProperty(PROP_ARCH);
-		if (osgiArch != null) {
-			arch = osgiArch;
-			return arch;
-		}
-		String name = System.getProperties().getProperty("os.arch");//$NON-NLS-1$
-		// Map i386 architecture to x86
-		if (name.equalsIgnoreCase(Constants.INTERNAL_ARCH_I386))
-			return Constants.ARCH_X86;
-		// Map amd64 architecture to x86_64
-		else if (name.equalsIgnoreCase(Constants.INTERNAL_AMD64))
-			return Constants.ARCH_X86_64;
-
-		return name;
-	}
-
-	private String getFragmentString(String fragmentOS, String fragmentWS, String fragmentArch) {
-		StringBuffer buffer = new StringBuffer(PLUGIN_ID);
-		buffer.append('.');
-		buffer.append(fragmentWS);
-		buffer.append('.');
-		buffer.append(fragmentOS);
-		if (!(fragmentOS.equals(Constants.OS_MACOSX) && !Constants.ARCH_X86_64.equals(fragmentArch))) {
-			buffer.append('.');
-			buffer.append(fragmentArch);
-		}
-		return buffer.toString();
-	}
-
-	/**
-	 *  Sets up the JNI bridge to native calls
-	 */
-	private void setupJNI(URL[] defaultPath) {
-		String libPath = null;
-
-		if (library != null) {
-			File lib = new File(library);
-			if (lib.isDirectory()) {
-				libPath = searchFor("eclipse", lib.getAbsolutePath()); //$NON-NLS-1$
-			} else if (lib.exists()) {
-				libPath = lib.getAbsolutePath();
-			}
-		}
-		if (libPath == null) {
-			//find our fragment name
-			String fragmentOS = getOS();
-			String fragmentWS = getWS();
-			String fragmentArch = getArch();
-
-			libPath = getLibraryPath(getFragmentString(fragmentOS, fragmentWS, fragmentArch), defaultPath);
-			if (libPath == null && ws == null) {
-				// no ws was specified and we didn't find the default fragment, try an alternate ws
-				String alternateWS = getAlternateWS(fragmentWS);
-				libPath = getLibraryPath(getFragmentString(fragmentOS, alternateWS, fragmentArch), defaultPath);
-				if (libPath != null) {
-					System.getProperties().put(PROP_WS, alternateWS);
-				}
-			}
-		}
-		library = libPath;
-		if (library != null)
-			bridge = new JNIBridge(library);
-	}
-
-	private String getLibraryPath(String fragmentName, URL[] defaultPath) {
-		String libPath = null;
-		String fragment = null;
-		if (inDevelopmentMode && devClassPathProps != null) {
-			String devPathList = devClassPathProps.getProperty(PLUGIN_ID);
-			String[] locations = getArrayFromList(devPathList);
-			if (locations.length > 0) {
-				File location = new File(locations[0]);
-				if (location.isAbsolute()) {
-					String dir = location.getParent();
-					fragment = searchFor(fragmentName, dir);
-					if (fragment != null)
-						libPath = getLibraryFromFragment(fragment);
-				}
-			}
-		}
-		if (libPath == null && bootLocation != null) {
-			URL[] urls = defaultPath;
-			if (urls != null && urls.length > 0) {
-				//the last one is most interesting
-				for (int i = urls.length - 1; i >= 0 && libPath == null; i--) {
-					File entryFile = new File(urls[i].getFile());
-					String dir = entryFile.getParent();
-					if (inDevelopmentMode) {
-						String devDir = dir + "/" + PLUGIN_ID + "/fragments"; //$NON-NLS-1$ //$NON-NLS-2$
-						fragment = searchFor(fragmentName, devDir);
-					}
-					if (fragment == null)
-						fragment = searchFor(fragmentName, dir);
-					if (fragment != null)
-						libPath = getLibraryFromFragment(fragment);
-				}
-			}
-		}
-		if (libPath == null) {
-			URL install = getInstallLocation();
-			String location = install.getFile();
-			location += "/plugins/"; //$NON-NLS-1$
-			fragment = searchFor(fragmentName, location);
-			if (fragment != null)
-				libPath = getLibraryFromFragment(fragment);
-		}
-		return libPath;
-	}
-
-	private String getLibraryFromFragment(String fragment) {
-		if (fragment.startsWith(FILE_SCHEME))
-			fragment = fragment.substring(5);
-
-		File frag = new File(fragment);
-		if (!frag.exists())
-			return null;
-
-		if (frag.isDirectory())
-			return searchFor("eclipse", fragment); //$NON-NLS-1$;
-
-		ZipFile fragmentJar = null;
-		try {
-			fragmentJar = new ZipFile(frag);
-		} catch (IOException e) {
-			log("Exception opening JAR file: " + fragment); //$NON-NLS-1$
-			log(e);
-			return null;
-		}
-
-		Enumeration entries = fragmentJar.entries();
-		String entry = null;
-		while (entries.hasMoreElements()) {
-			ZipEntry zipEntry = (ZipEntry) entries.nextElement();
-			if (zipEntry.getName().startsWith("eclipse_")) { //$NON-NLS-1$
-				entry = zipEntry.getName();
-				try {
-					fragmentJar.close();
-				} catch (IOException e) {
-					//ignore
-				}
-				break;
-			}
-		}
-		if (entry != null) {
-			String lib = extractFromJAR(fragment, entry);
-			if (!getOS().equals("win32")) { //$NON-NLS-1$
-				try {
-					Runtime.getRuntime().exec(new String[] {"chmod", "755", lib}).waitFor(); //$NON-NLS-1$ //$NON-NLS-2$
-				} catch (Throwable e) {
-					//ignore
-				}
-			}
-			return lib;
-		}
-		return null;
-	}
-
-	/**
-	 * Executes the launch.
-	 * 
-	 * @param args command-line arguments
-	 * @exception Exception thrown if a problem occurs during the launch
-	 */
-	protected void basicRun(String[] args) throws Exception {
-		System.getProperties().put("eclipse.startTime", Long.toString(System.currentTimeMillis())); //$NON-NLS-1$
-		commands = args;
-		String[] passThruArgs = processCommandLine(args);
-
-		if (!debug)
-			// debug can be specified as system property as well
-			debug = System.getProperty(PROP_DEBUG) != null;
-		setupVMProperties();
-		processConfiguration();
-
-		// need to ensure that getInstallLocation is called at least once to initialize the value.
-		// Do this AFTER processing the configuration to allow the configuration to set
-		// the install location.  
-		getInstallLocation();
-
-		// locate boot plugin (may return -dev mode variations)
-		URL[] bootPath = getBootPath(bootLocation);
-
-		//Set up the JNI bridge.  We need to know the install location to find the shared library
-		setupJNI(bootPath);
-
-		//ensure minimum Java version, do this after JNI is set up so that we can write an error message 
-		//with exitdata if we fail.
-		if (!checkVersion(System.getProperty("java.version"), System.getProperty(PROP_REQUIRED_JAVA_VERSION))) //$NON-NLS-1$
-			return;
-
-		// verify configuration location is writable
-		if (!checkConfigurationLocation(configurationLocation))
-			return;
-
-		setSecurityPolicy(bootPath);
-		// splash handling is done here, because the default case needs to know
-		// the location of the boot plugin we are going to use
-		handleSplash(bootPath);
-
-		beforeFwkInvocation();
-		invokeFramework(passThruArgs, bootPath);
-	}
-
-	protected void beforeFwkInvocation() {
-		//Nothing to do.
-	}
-
-	protected void setSecurityPolicy(URL[] bootPath) {
-		String eclipseSecurity = System.getProperty(PROP_ECLIPSESECURITY);
-		if (eclipseSecurity != null) {
-			// setup a policy that grants the launcher and path for the framework AllPermissions.
-			// Do not set the security manager, this will be done by the framework itself.
-			ProtectionDomain domain = Main.class.getProtectionDomain();
-			CodeSource source = null;
-			if (domain != null)
-				source = Main.class.getProtectionDomain().getCodeSource();
-			if (domain == null || source == null) {
-				log("Can not automatically set the security manager. Please use a policy file."); //$NON-NLS-1$
-				return;
-			}
-			// get the list of codesource URLs to grant AllPermission to
-			URL[] rootURLs = new URL[bootPath.length + 1];
-			rootURLs[0] = source.getLocation();
-			System.arraycopy(bootPath, 0, rootURLs, 1, bootPath.length);
-			// replace the security policy
-			Policy eclipsePolicy = new EclipsePolicy(Policy.getPolicy(), rootURLs);
-			Policy.setPolicy(eclipsePolicy);
-		}
-	}
-
-	private void invokeFramework(String[] passThruArgs, URL[] bootPath) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, Error, Exception, InvocationTargetException {
-		String type = System.getProperty(PROP_FRAMEWORK_PARENT_CLASSLOADER, System.getProperty(PROP_PARENT_CLASSLOADER, PARENT_CLASSLOADER_BOOT));
-		ClassLoader parent = null;
-		if (PARENT_CLASSLOADER_APP.equalsIgnoreCase(type))
-			parent = ClassLoader.getSystemClassLoader();
-		else if (PARENT_CLASSLOADER_EXT.equalsIgnoreCase(type)) {
-			ClassLoader appCL = ClassLoader.getSystemClassLoader();
-			if (appCL != null)
-				parent = appCL.getParent();
-		} else if (PARENT_CLASSLOADER_CURRENT.equalsIgnoreCase(type))
-			parent = this.getClass().getClassLoader();
-		URLClassLoader loader = new StartupClassLoader(bootPath, parent);
-		Class clazz = loader.loadClass(STARTER);
-		Method method = clazz.getDeclaredMethod("run", new Class[] {String[].class, Runnable.class}); //$NON-NLS-1$
-		try {
-			method.invoke(clazz, new Object[] {passThruArgs, splashHandler});
-		} catch (InvocationTargetException e) {
-			if (e.getTargetException() instanceof Error)
-				throw (Error) e.getTargetException();
-			else if (e.getTargetException() instanceof Exception)
-				throw (Exception) e.getTargetException();
-			else
-				//could be a subclass of Throwable!
-				throw e;
-		}
-	}
-
-	/**
-	 * Checks whether the given available version is greater or equal to the 
-	 * given required version.
-	 * <p>Will set PROP_EXITCODE/PROP_EXITDATA accordingly if check fails.</p>
-	 *   
-	 * @return a boolean indicating whether the checking passed 
-	 */
-	private boolean checkVersion(String availableVersion, String requiredVersion) {
-		if (requiredVersion == null || availableVersion == null)
-			return true;
-		try {
-			Identifier required = new Identifier(requiredVersion);
-			Identifier available = new Identifier(availableVersion);
-			boolean compatible = available.isGreaterEqualTo(required);
-			if (!compatible) {
-				// any non-zero value should do it - 14 used to be used for version incompatibility in Eclipse 2.1 
-				System.getProperties().put(PROP_EXITCODE, "14"); //$NON-NLS-1$
-				System.getProperties().put(PROP_EXITDATA, "<title>Incompatible JVM</title>Version " + availableVersion + " of the JVM is not suitable for this product. Version: " + requiredVersion + " or greater is required."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return compatible;
-		} catch (SecurityException e) {
-			// If the security manager won't allow us to get the system property, continue for
-			// now and let things fail later on their own if necessary.
-			return true;
-		} catch (NumberFormatException e) {
-			// If the version string was in a format that we don't understand, continue and
-			// let things fail later on their own if necessary.
-			return true;
-		}
-	}
-
-	/**
-	 * Checks whether the given location can be created and is writable.
-	 * If the system property "osgi.configuration.area.readOnly" is set
-	 * the check always succeeds.
-	 * <p>Will set PROP_EXITCODE/PROP_EXITDATA accordingly if check fails.</p>
-	 * 
-	 * @param locationUrl  configuration area URL, may be <code>null</code>
-	 * @return a boolean indicating whether the checking passed 
-	 */
-	private boolean checkConfigurationLocation(URL locationUrl) {
-		if (locationUrl == null || !"file".equals(locationUrl.getProtocol())) //$NON-NLS-1$
-			return true;
-		if (Boolean.valueOf(System.getProperty(PROP_CONFIG_AREA + READ_ONLY_AREA_SUFFIX)).booleanValue()) {
-			// user wants readonly config area
-			return true;
-		}
-		File configDir = new File(locationUrl.getFile()).getAbsoluteFile();
-		if (!configDir.exists()) {
-			configDir.mkdirs();
-			if (!configDir.exists()) {
-				System.getProperties().put(PROP_EXITCODE, "15"); //$NON-NLS-1$
-				System.getProperties().put(PROP_EXITDATA, "<title>Invalid Configuration Location</title>The configuration area at '" + configDir + //$NON-NLS-1$
-						"' could not be created.  Please choose a writable location using the '-configuration' command line option."); //$NON-NLS-1$
-				return false;
-			}
-		}
-		if (!canWrite(configDir)) {
-			System.getProperties().put(PROP_EXITCODE, "15"); //$NON-NLS-1$
-			System.getProperties().put(PROP_EXITDATA, "<title>Invalid Configuration Location</title>The configuration area at '" + configDir + //$NON-NLS-1$
-					"' is not writable.  Please choose a writable location using the '-configuration' command line option."); //$NON-NLS-1$
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Returns a string representation of the given URL String.  This converts
-	 * escaped sequences (%..) in the URL into the appropriate characters.
-	 * NOTE: due to class visibility there is a copy of this method
-	 *       in InternalBootLoader
-	 */
-	protected String decode(String urlString) {
-		//try to use Java 1.4 method if available
-		try {
-			Class clazz = URLDecoder.class;
-			Method method = clazz.getDeclaredMethod("decode", new Class[] {String.class, String.class}); //$NON-NLS-1$
-			//first encode '+' characters, because URLDecoder incorrectly converts 
-			//them to spaces on certain class library implementations.
-			if (urlString.indexOf('+') >= 0) {
-				int len = urlString.length();
-				StringBuffer buf = new StringBuffer(len);
-				for (int i = 0; i < len; i++) {
-					char c = urlString.charAt(i);
-					if (c == '+')
-						buf.append("%2B"); //$NON-NLS-1$
-					else
-						buf.append(c);
-				}
-				urlString = buf.toString();
-			}
-			Object result = method.invoke(null, new Object[] {urlString, "UTF-8"}); //$NON-NLS-1$
-			if (result != null)
-				return (String) result;
-		} catch (Exception e) {
-			//JDK 1.4 method not found -- fall through and decode by hand
-		}
-		//decode URL by hand
-		boolean replaced = false;
-		byte[] encodedBytes = urlString.getBytes();
-		int encodedLength = encodedBytes.length;
-		byte[] decodedBytes = new byte[encodedLength];
-		int decodedLength = 0;
-		for (int i = 0; i < encodedLength; i++) {
-			byte b = encodedBytes[i];
-			if (b == '%') {
-				if (i + 2 >= encodedLength)
-					throw new IllegalArgumentException("Malformed URL (\"" + urlString + "\"): % must be followed by 2 digits."); //$NON-NLS-1$//$NON-NLS-2$
-				byte enc1 = encodedBytes[++i];
-				byte enc2 = encodedBytes[++i];
-				b = (byte) ((hexToByte(enc1) << 4) + hexToByte(enc2));
-				replaced = true;
-			}
-			decodedBytes[decodedLength++] = b;
-		}
-		if (!replaced)
-			return urlString;
-		try {
-			return new String(decodedBytes, 0, decodedLength, "UTF-8"); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			//use default encoding
-			return new String(decodedBytes, 0, decodedLength);
-		}
-	}
-
-	/**
-	 * 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
-	 */
-	protected 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()]);
-	}
-
-	/**
-	 * Returns the <code>URL</code>-based class path describing where the boot classes
-	 * are located when running in development mode.
-	 * 
-	 * @return the url-based class path
-	 * @param base the base location
-	 * @exception MalformedURLException if a problem occurs computing the class path
-	 */
-	private URL[] getDevPath(URL base) throws IOException {
-		ArrayList result = new ArrayList(5);
-		if (inDevelopmentMode)
-			addDevEntries(base, result, OSGI);
-		//The jars from the base always need to be added, even when running in dev mode (bug 46772)
-		addBaseJars(base, result);
-		return (URL[]) result.toArray(new URL[result.size()]);
-	}
-
-	URL constructURL(URL url, String name) {
-		//Recognize the following URLs
-		//url: file:foo/dir/
-		//url: file:foo/file.jar
-
-		String externalForm = url.toExternalForm();
-		if (externalForm.endsWith(".jar")) { //$NON-NLS-1$
-			try {
-				return new URL(JAR_SCHEME + url + "!/" + name); //$NON-NLS-1$
-			} catch (MalformedURLException e) {
-				//Ignore
-			}
-		}
-
-		try {
-			return new URL(url, name);
-		} catch (MalformedURLException e) {
-			//Ignore
-			return null;
-		}
-	}
-
-	private void readFrameworkExtensions(URL base, ArrayList result) throws IOException {
-		String[] extensions = getArrayFromList(System.getProperties().getProperty(PROP_EXTENSIONS));
-		String parent = new File(base.getFile()).getParent().toString();
-		ArrayList extensionResults = new ArrayList(extensions.length);
-		for (int i = 0; i < extensions.length; i++) {
-			//Search the extension relatively to the osgi plugin 
-			String path = searchForBundle(extensions[i], parent);
-			if (path == null) {
-				log("Could not find extension: " + extensions[i]); //$NON-NLS-1$
-				continue;
-			}
-			if (debug)
-				System.out.println("Loading extension: " + extensions[i]); //$NON-NLS-1$
-
-			URL extensionURL = null;
-			if (installLocation.getProtocol().equals("file")) { //$NON-NLS-1$
-				extensionResults.add(path);
-				extensionURL = new File(path).toURL();
-			} else
-				extensionURL = new URL(installLocation.getProtocol(), installLocation.getHost(), installLocation.getPort(), path);
-
-			//Load a property file of the extension, merge its content, and in case of dev mode add the bin entries
-			Properties extensionProperties = null;
-			try {
-				extensionProperties = loadProperties(constructURL(extensionURL, ECLIPSE_PROPERTIES));
-			} catch (IOException e) {
-				if (debug)
-					System.out.println("\t" + ECLIPSE_PROPERTIES + " not found"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			String extensionClassPath = null;
-			if (extensionProperties != null)
-				extensionClassPath = extensionProperties.getProperty(PROP_CLASSPATH);
-			else
-				// this is a "normal" RFC 101 framework extension bundle just put the base path on the classpath
-				extensionProperties = new Properties();
-			String[] entries = extensionClassPath == null || extensionClassPath.length() == 0 ? new String[] {""} : getArrayFromList(extensionClassPath); //$NON-NLS-1$
-			String qualifiedPath;
-			if (System.getProperty(PROP_CLASSPATH) == null)
-				qualifiedPath = "."; //$NON-NLS-1$
-			else
-				qualifiedPath = ""; //$NON-NLS-1$
-			for (int j = 0; j < entries.length; j++)
-				qualifiedPath += ", " + FILE_SCHEME + path + entries[j]; //$NON-NLS-1$
-			extensionProperties.put(PROP_CLASSPATH, qualifiedPath);
-			mergeProperties(System.getProperties(), extensionProperties);
-			if (inDevelopmentMode) {
-				String name = extensions[i];
-				if (name.startsWith(REFERENCE_SCHEME)) {
-					// need to extract the BSN from the path
-					name = new File(path).getName();
-					// Note that we do not extract any version information.
-					// We assume the extension is located in the workspace in a project
-					// that has the same name as the BSN.
-					// We could add more logic here to support versions in project folder names
-					// but it will likely be complicated and error prone.
-				}
-				addDevEntries(extensionURL, result, name);
-			}
-		}
-		extensionPaths = (String[]) extensionResults.toArray(new String[extensionResults.size()]);
-	}
-
-	private void addBaseJars(URL base, ArrayList result) throws IOException {
-		String baseJarList = System.getProperty(PROP_CLASSPATH);
-		if (baseJarList == null) {
-			readFrameworkExtensions(base, result);
-			baseJarList = System.getProperties().getProperty(PROP_CLASSPATH);
-		}
-
-		File fwkFile = new File(base.getFile());
-		boolean fwkIsDirectory = fwkFile.isDirectory();
-		//We found where the fwk is, remember it and its shape
-		if (fwkIsDirectory) {
-			System.getProperties().put(PROP_FRAMEWORK_SHAPE, "folder");//$NON-NLS-1$
-		} else {
-			System.getProperties().put(PROP_FRAMEWORK_SHAPE, "jar");//$NON-NLS-1$
-		}
-		String fwkPath = new File(new File(base.getFile()).getParent()).getAbsolutePath();
-		if (Character.isUpperCase(fwkPath.charAt(0))) {
-			char[] chars = fwkPath.toCharArray();
-			chars[0] = Character.toLowerCase(chars[0]);
-			fwkPath = new String(chars);
-		}
-		System.getProperties().put(PROP_FRAMEWORK_SYSPATH, fwkPath);
-
-		String[] baseJars = getArrayFromList(baseJarList);
-		if (baseJars.length == 0) {
-			if (!inDevelopmentMode && new File(base.getFile()).isDirectory())
-				throw new IOException("Unable to initialize " + PROP_CLASSPATH); //$NON-NLS-1$
-			addEntry(base, result);
-			return;
-		}
-		for (int i = 0; i < baseJars.length; i++) {
-			String string = baseJars[i];
-			try {
-				// if the string is a file: URL then *carefully* construct the
-				// URL. Otherwisejust try to build a URL. In either case, if we fail, use
-				// string as something to tack on the end of the base.
-
-				if (string.equals(".")) { //$NON-NLS-1$
-					addEntry(base, result);
-				}
-				URL url = null;
-				if (string.startsWith(FILE_SCHEME))
-					url = new File(string.substring(5)).toURL();
-				else
-					url = new URL(string);
-				addEntry(url, result);
-			} catch (MalformedURLException e) {
-				addEntry(new URL(base, string), result);
-			}
-		}
-	}
-
-	protected void addEntry(URL url, List result) {
-		if (new File(url.getFile()).exists())
-			result.add(url);
-	}
-
-	private void addDevEntries(URL base, List result, String symbolicName) throws MalformedURLException {
-		if (devClassPathProps == null)
-			return; // do nothing
-		String devPathList = devClassPathProps.getProperty(symbolicName);
-		if (devPathList == null)
-			devPathList = devClassPathProps.getProperty("*"); //$NON-NLS-1$
-		String[] locations = getArrayFromList(devPathList);
-		for (int i = 0; i < locations.length; i++) {
-			String location = locations[i];
-			File path = new File(location);
-			URL url;
-			if (path.isAbsolute())
-				url = path.toURL();
-			else {
-				// dev path is relative, combine with base location
-				char lastChar = location.charAt(location.length() - 1);
-				if ((location.endsWith(".jar") || (lastChar == '/' || lastChar == '\\'))) //$NON-NLS-1$
-					url = new URL(base, location);
-				else
-					url = new URL(base, location + "/"); //$NON-NLS-1$
-			}
-			addEntry(url, result);
-		}
-	}
-
-	/**
-	 * Returns the <code>URL</code>-based class path describing where the boot classes are located.
-	 * 
-	 * @return the url-based class path
-	 * @param base the base location
-	 * @exception MalformedURLException if a problem occurs computing the class path
-	 */
-	protected URL[] getBootPath(String base) throws IOException {
-		URL url = null;
-		if (base != null) {
-			url = buildURL(base, true);
-		} else {
-			// search in the root location
-			url = getInstallLocation();
-			String path = new File(url.getFile(), "plugins").toString(); //$NON-NLS-1$
-			path = searchFor(framework, path);
-			if (path == null)
-				throw new RuntimeException("Could not find framework"); //$NON-NLS-1$
-			if (url.getProtocol().equals("file")) //$NON-NLS-1$
-				url = new File(path).toURL();
-			else
-				url = new URL(url.getProtocol(), url.getHost(), url.getPort(), path);
-		}
-		if (System.getProperty(PROP_FRAMEWORK) == null)
-			System.getProperties().put(PROP_FRAMEWORK, url.toExternalForm());
-		if (debug)
-			System.out.println("Framework located:\n    " + url.toExternalForm()); //$NON-NLS-1$
-		// add on any dev path elements
-		URL[] result = getDevPath(url);
-		if (debug) {
-			System.out.println("Framework classpath:"); //$NON-NLS-1$
-			for (int i = 0; i < result.length; i++)
-				System.out.println("    " + result[i].toExternalForm()); //$NON-NLS-1$
-		}
-		return result;
-	}
-
-	/**
-	 * Searches for the given target directory starting in the "plugins" subdirectory
-	 * of the given location.  If one is found then this location is returned; 
-	 * otherwise an exception is thrown.
-	 * 
-	 * @return the location where target directory was found
-	 * @param start the location to begin searching
-	 */
-	protected String searchFor(final String target, String start) {
-		return searchFor(target, null, start);
-	}
-
-	protected String searchFor(final String target, final String targetSuffix, String start) {
-		File root = resolveFile(new File(start));
-
-		// Note that File.list only gives you file names not the complete path from start
-		String[] candidates = root.list();
-		if (candidates == null)
-			return null;
-
-		ArrayList matches = new ArrayList(2);
-		for (int i = 0; i < candidates.length; i++) {
-			if (isMatchingCandidate(target, candidates[i], root))
-				matches.add(candidates[i]);
-		}
-		String[] names = (String[]) matches.toArray(new String[matches.size()]);
-		int result = findMax(target, names);
-		if (result == -1)
-			return null;
-		File candidate = new File(start, names[result]);
-		return candidate.getAbsolutePath().replace(File.separatorChar, '/') + (candidate.isDirectory() ? "/" : ""); //$NON-NLS-1$//$NON-NLS-2$
-	}
-
-	private boolean isMatchingCandidate(String target, String candidate, File root) {
-		if (candidate.equals(target))
-			return true;
-		if (!candidate.startsWith(target + "_")) //$NON-NLS-1$
-			return false;
-		int targetLength = target.length();
-		int lastUnderscore = candidate.lastIndexOf('_');
-
-		//do we have a second '_', version (foo_1.0.0.v1_123) or id (foo.x86_64) ?
-		//files are assumed to have an extension (zip or jar only), remove it
-		//NOTE: we only remove .zip and .jar extensions because we still need to accept libraries with
-		//simple versions (e.g. eclipse_1234.dll)
-		File candidateFile = new File(root, candidate);
-		if (candidateFile.isFile() && (candidate.endsWith(".jar") || candidate.endsWith(".zip"))) { //$NON-NLS-1$//$NON-NLS-2$
-			int extension = candidate.lastIndexOf('.');
-			candidate = candidate.substring(0, extension);
-		}
-
-		int lastDot = candidate.lastIndexOf('.');
-		if (lastDot < targetLength) {
-			// no dots after target, the '_' is not in a version (foo.x86_64 case), not a match
-			return false;
-		}
-
-		//get past all '_' that are part of the qualifier
-		while (lastUnderscore > lastDot)
-			lastUnderscore = candidate.lastIndexOf('_', lastUnderscore - 1);
-
-		if (lastUnderscore == targetLength)
-			return true; //underscore at the end of target (foo_1.0.0.v1_123 case)
-		return false; //another underscore between target and version (foo_64_1.0.0.v1_123 case)
-	}
-
-	private String searchForBundle(String target, String start) {
-		//Only handle "reference:file:" urls, and not simple "file:" because we will be using the jar wherever it is.
-		if (target.startsWith(REFERENCE_SCHEME)) {
-			target = target.substring(REFERENCE_SCHEME.length());
-			if (!target.startsWith(FILE_SCHEME))
-				throw new IllegalArgumentException("Bundle URL is invalid: " + target); //$NON-NLS-1$
-			target = target.substring(FILE_SCHEME.length());
-			File child = new File(target);
-			File fileLocation = child;
-			if (!child.isAbsolute()) {
-				File parent = resolveFile(new File(start));
-				fileLocation = new File(parent, child.getPath());
-			}
-			return searchFor(fileLocation.getName(), fileLocation.getParentFile().getAbsolutePath());
-		}
-		return searchFor(target, start);
-	}
-
-	protected int findMax(String prefix, String[] candidates) {
-		int result = -1;
-		Object maxVersion = null;
-		for (int i = 0; i < candidates.length; i++) {
-			String name = (candidates[i] != null) ? candidates[i] : ""; //$NON-NLS-1$
-			String version = ""; //$NON-NLS-1$ // Note: directory with version suffix is always > than directory without version suffix
-			if (prefix == null)
-				version = name; //webstart just passes in versions
-			else if (name.startsWith(prefix + "_")) //$NON-NLS-1$
-				version = name.substring(prefix.length() + 1); //prefix_version
-			Object currentVersion = getVersionElements(version);
-			if (maxVersion == null) {
-				result = i;
-				maxVersion = currentVersion;
-			} else {
-				if (compareVersion((Object[]) maxVersion, (Object[]) currentVersion) < 0) {
-					result = i;
-					maxVersion = currentVersion;
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Compares version strings. 
-	 * @return result of comparison, as integer;
-	 * <code><0</code> if left < right;
-	 * <code>0</code> if left == right;
-	 * <code>>0</code> if left > right;
-	 */
-	private int compareVersion(Object[] left, Object[] right) {
-
-		int result = ((Integer) left[0]).compareTo((Integer) right[0]); // compare major
-		if (result != 0)
-			return result;
-
-		result = ((Integer) left[1]).compareTo((Integer) right[1]); // compare minor
-		if (result != 0)
-			return result;
-
-		result = ((Integer) left[2]).compareTo((Integer) right[2]); // compare service
-		if (result != 0)
-			return result;
-
-		return ((String) left[3]).compareTo((String) right[3]); // compare qualifier
-	}
-
-	/**
-	 * Do a quick parse of version identifier so its elements can be correctly compared.
-	 * If we are unable to parse the full version, remaining elements are initialized
-	 * with suitable defaults.
-	 * @return an array of size 4; first three elements are of type Integer (representing
-	 * major, minor and service) and the fourth element is of type String (representing
-	 * qualifier). Note, that returning anything else will cause exceptions in the caller.
-	 */
-	private Object[] getVersionElements(String version) {
-		if (version.endsWith(".jar")) //$NON-NLS-1$
-			version = version.substring(0, version.length() - 4);
-		Object[] result = {new Integer(0), new Integer(0), new Integer(0), ""}; //$NON-NLS-1$
-		StringTokenizer t = new StringTokenizer(version, "."); //$NON-NLS-1$
-		String token;
-		int i = 0;
-		while (t.hasMoreTokens() && i < 4) {
-			token = t.nextToken();
-			if (i < 3) {
-				// major, minor or service ... numeric values
-				try {
-					result[i++] = new Integer(token);
-				} catch (Exception e) {
-					// invalid number format - use default numbers (0) for the rest
-					break;
-				}
-			} else {
-				// qualifier ... string value
-				result[i++] = token;
-			}
-		}
-		return result;
-	}
-
-	private static URL buildURL(String spec, boolean trailingSlash) {
-		if (spec == null)
-			return null;
-		boolean isFile = spec.startsWith(FILE_SCHEME);
-		try {
-			if (isFile) {
-				File toAdjust = new File(spec.substring(5));
-				toAdjust = resolveFile(toAdjust);
-				if (toAdjust.isDirectory())
-					return adjustTrailingSlash(toAdjust.toURL(), trailingSlash);
-				return toAdjust.toURL();
-			}
-			return new URL(spec);
-		} catch (MalformedURLException e) {
-			// if we failed and it is a file spec, there is nothing more we can do
-			// otherwise, try to make the spec into a file URL.
-			if (isFile)
-				return null;
-			try {
-				File toAdjust = new File(spec);
-				if (toAdjust.isDirectory())
-					return adjustTrailingSlash(toAdjust.toURL(), trailingSlash);
-				return toAdjust.toURL();
-			} catch (MalformedURLException e1) {
-				return null;
-			}
-		}
-	}
-
-	/**
-	 * Resolve the given file against  osgi.install.area.
-	 * If osgi.install.area is not set, or the file is not relative, then
-	 * the file is returned as is. 
-	 */
-	private static File resolveFile(File toAdjust) {
-		if (!toAdjust.isAbsolute()) {
-			String installArea = System.getProperties().getProperty(PROP_INSTALL_AREA);
-			if (installArea != null) {
-				if (installArea.startsWith(FILE_SCHEME))
-					toAdjust = new File(installArea.substring(5), toAdjust.getPath());
-				else if (new File(installArea).exists())
-					toAdjust = new File(installArea, toAdjust.getPath());
-			}
-		}
-		return toAdjust;
-	}
-
-	private static URL adjustTrailingSlash(URL url, boolean trailingSlash) throws MalformedURLException {
-		String file = url.getFile();
-		if (trailingSlash == (file.endsWith("/"))) //$NON-NLS-1$
-			return url;
-		file = trailingSlash ? file + "/" : file.substring(0, file.length() - 1); //$NON-NLS-1$
-		return new URL(url.getProtocol(), url.getHost(), file);
-	}
-
-	private URL buildLocation(String property, URL defaultLocation, String userDefaultAppendage) {
-		URL result = null;
-		String location = System.getProperty(property);
-		System.getProperties().remove(property);
-		// if the instance location is not set, predict where the workspace will be and 
-		// put the instance area inside the workspace meta area.
-		try {
-			if (location == null)
-				result = defaultLocation;
-			else if (location.equalsIgnoreCase(NONE))
-				return null;
-			else if (location.equalsIgnoreCase(NO_DEFAULT))
-				result = buildURL(location, true);
-			else {
-				if (location.startsWith(USER_HOME)) {
-					String base = substituteVar(location, USER_HOME, PROP_USER_HOME);
-					location = new File(base, userDefaultAppendage).getAbsolutePath();
-				} else if (location.startsWith(USER_DIR)) {
-					String base = substituteVar(location, USER_DIR, PROP_USER_DIR);
-					location = new File(base, userDefaultAppendage).getAbsolutePath();
-				}
-				result = buildURL(location, true);
-			}
-		} finally {
-			if (result != null)
-				System.getProperties().put(property, result.toExternalForm());
-		}
-		return result;
-	}
-
-	private String substituteVar(String source, String var, String prop) {
-		String value = System.getProperty(prop, ""); //$NON-NLS-1$
-		return value + source.substring(var.length());
-	}
-
-	/** 
-	 * Retuns the default file system path for the configuration location.
-	 * By default the configuration information is in the installation directory
-	 * if this is writeable.  Otherwise it is located somewhere in the user.home
-	 * area relative to the current product. 
-	 * @return the default file system path for the configuration information
-	 */
-	private String computeDefaultConfigurationLocation() {
-		// 1) We store the config state relative to the 'eclipse' directory if possible
-		// 2) If this directory is read-only 
-		//    we store the state in <user.home>/.eclipse/<application-id>_<version> where <user.home> 
-		//    is unique for each local user, and <application-id> is the one 
-		//    defined in .eclipseproduct marker file. If .eclipseproduct does not
-		//    exist, use "eclipse" as the application-id.
-
-		URL install = getInstallLocation();
-		// TODO a little dangerous here.  Basically we have to assume that it is a file URL.
-		if (install.getProtocol().equals("file")) { //$NON-NLS-1$
-			File installDir = new File(install.getFile());
-			if (canWrite(installDir))
-				return installDir.getAbsolutePath() + File.separator + CONFIG_DIR;
-		}
-		// We can't write in the eclipse install dir so try for some place in the user's home dir
-		return computeDefaultUserAreaLocation(CONFIG_DIR);
-	}
-
-	private static boolean canWrite(File installDir) {
-		if (installDir.canWrite() == false)
-			return false;
-
-		if (!installDir.isDirectory())
-			return false;
-
-		File fileTest = null;
-		try {
-			// we use the .dll suffix to properly test on Vista virtual directories
-			// on Vista you are not allowed to write executable files on virtual directories like "Program Files"
-			fileTest = File.createTempFile("writtableArea", ".dll", installDir); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (IOException e) {
-			//If an exception occured while trying to create the file, it means that it is not writtable
-			return false;
-		} finally {
-			if (fileTest != null)
-				fileTest.delete();
-		}
-		return true;
-	}
-
-	/**
-	 * Returns a files system path for an area in the user.home region related to the
-	 * current product.  The given appendage is added to this base location
-	 * @param pathAppendage the path segments to add to computed base
-	 * @return a file system location in the user.home area related the the current
-	 *   product and the given appendage
-	 */
-	private String computeDefaultUserAreaLocation(String pathAppendage) {
-		//    we store the state in <user.home>/.eclipse/<application-id>_<version> where <user.home> 
-		//    is unique for each local user, and <application-id> is the one 
-		//    defined in .eclipseproduct marker file. If .eclipseproduct does not
-		//    exist, use "eclipse" as the application-id.
-		URL installURL = getInstallLocation();
-		if (installURL == null)
-			return null;
-		File installDir = new File(installURL.getFile());
-		// compute an install dir hash to prevent configuration area collisions with other eclipse installs
-		int hashCode;
-		try {
-			hashCode = installDir.getCanonicalPath().hashCode();
-		} catch (IOException ioe) {
-			// fall back to absolute path
-			hashCode = installDir.getAbsolutePath().hashCode();
-		}
-		if (hashCode < 0)
-			hashCode = -(hashCode);
-		String installDirHash = String.valueOf(hashCode);
-
-		String appName = "." + ECLIPSE; //$NON-NLS-1$
-		File eclipseProduct = new File(installDir, PRODUCT_SITE_MARKER);
-		if (eclipseProduct.exists()) {
-			Properties props = new Properties();
-			try {
-				props.load(new FileInputStream(eclipseProduct));
-				String appId = props.getProperty(PRODUCT_SITE_ID);
-				if (appId == null || appId.trim().length() == 0)
-					appId = ECLIPSE;
-				String appVersion = props.getProperty(PRODUCT_SITE_VERSION);
-				if (appVersion == null || appVersion.trim().length() == 0)
-					appVersion = ""; //$NON-NLS-1$
-				appName += File.separator + appId + "_" + appVersion + "_" + installDirHash; //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (IOException e) {
-				// Do nothing if we get an exception.  We will default to a standard location 
-				// in the user's home dir.
-				// add the hash to help prevent collisions
-				appName += File.separator + installDirHash;
-			}
-		} else {
-			// add the hash to help prevent collisions
-			appName += File.separator + installDirHash;
-		}
-		String userHome = System.getProperty(PROP_USER_HOME);
-		return new File(userHome, appName + "/" + pathAppendage).getAbsolutePath(); //$NON-NLS-1$
-	}
-
-	/**
-	 * Runs this launcher with the arguments specified in the given string.
-	 * 
-	 * @param argString the arguments string
-	 */
-	public static void main(String argString) {
-		Vector list = new Vector(5);
-		for (StringTokenizer tokens = new StringTokenizer(argString, " "); tokens.hasMoreElements();) //$NON-NLS-1$
-			list.addElement(tokens.nextElement());
-		main((String[]) list.toArray(new String[list.size()]));
-	}
-
-	/**
-	 * Runs the platform with the given arguments.  The arguments must identify
-	 * an application to run (e.g., <code>-application com.example.application</code>).
-	 * After running the application <code>System.exit(N)</code> is executed.
-	 * The value of N is derived from the value returned from running the application.
-	 * If the application's return value is an <code>Integer</code>, N is this value.
-	 * In all other cases, N = 0.
-	 * <p>
-	 * Clients wishing to run the platform without a following <code>System.exit</code>
-	 * call should use <code>run()</code>.
-	 * </p>
-	 * 
-	 * @param args the command line arguments
-	 * @see #run(String[])
-	 */
-	public static void main(String[] args) {
-		int result = 0;
-		try {
-			result = new Main().run(args);
-		} catch (Throwable t) {
-			// This is *really* unlikely to happen - run() takes care of exceptional situations.
-			// In case something weird happens, just dump stack - logging is not available at this point
-			t.printStackTrace();
-		} finally {
-			if (!Boolean.getBoolean(PROP_NOSHUTDOWN))
-				// make sure we always terminate the VM
-				System.exit(result);
-		}
-	}
-
-	/**
-	 * Runs the platform with the given arguments.  The arguments must identify
-	 * an application to run (e.g., <code>-application com.example.application</code>).
-	 * Returns the value returned from running the application.
-	 * If the application's return value is an <code>Integer</code>, N is this value.
-	 * In all other cases, N = 0.
-	 *
-	 * @param args the command line arguments
-	 */
-	public int run(String[] args) {
-		int result = 0;
-		try {
-			basicRun(args);
-			String exitCode = System.getProperty(PROP_EXITCODE);
-			try {
-				result = exitCode == null ? 0 : Integer.parseInt(exitCode);
-			} catch (NumberFormatException e) {
-				result = 17;
-			}
-		} catch (Throwable e) {
-			// only log the exceptions if they have not been caught by the 
-			// EclipseStarter (i.e., if the exitCode is not 13) 
-			if (!"13".equals(System.getProperty(PROP_EXITCODE))) { //$NON-NLS-1$
-				log("Exception launching the Eclipse Platform:"); //$NON-NLS-1$
-				log(e);
-				String message = "An error has occurred"; //$NON-NLS-1$
-				if (logFile == null)
-					message += " and could not be logged: \n" + e.getMessage(); //$NON-NLS-1$
-				else
-					message += ".  See the log file\n" + logFile.getAbsolutePath(); //$NON-NLS-1$
-				System.getProperties().put(PROP_EXITDATA, message);
-			}
-			// Return "unlucky" 13 as the exit code. The executable will recognize
-			// this constant and display a message to the user telling them that
-			// there is information in their log file.
-			result = 13;
-		} finally {
-			// always try putting down the splash screen just in case the application failed to do so
-			takeDownSplash();
-			if (bridge != null)
-				bridge.uninitialize();
-		}
-		// Return an int exit code and ensure the system property is set.
-		System.getProperties().put(PROP_EXITCODE, Integer.toString(result));
-		setExitData();
-		return result;
-	}
-
-	private void setExitData() {
-		String data = System.getProperty(PROP_EXITDATA);
-		if (data == null)
-			return;
-		//if the bridge is null then we have nothing to send the data to;
-		//exitData is a shared memory id, if we loaded the library from java, we need a non-null exitData
-		//if the executable loaded the library, then we don't need the exitData id
-		if (bridge == null || (bridge.isLibraryLoadedByJava() && exitData == null))
-			System.out.println(data);
-		else
-			bridge.setExitData(exitData, data);
-	}
-
-	/**
-	 * Processes the command line arguments.  The general principle is to NOT
-	 * consume the arguments and leave them to be processed by Eclipse proper.
-	 * There are a few args which are directed towards main() and a few others
-	 * which we need to know about. Very few should actually be consumed here.
-	 * 
-	 * @return the arguments to pass through to the launched application
-	 * @param args the command line arguments
-	 */
-	protected String[] processCommandLine(String[] args) {
-		if (args.length == 0)
-			return args;
-		int[] configArgs = new int[args.length];
-		configArgs[0] = -1; // need to initialize the first element to something that could not be an index.
-		int configArgIndex = 0;
-		for (int i = 0; i < args.length; i++) {
-			boolean found = false;
-			// check for args without parameters (i.e., a flag arg)
-			// check if debug should be enabled for the entire platform
-			if (args[i].equalsIgnoreCase(DEBUG)) {
-				debug = true;
-				// passed thru this arg (i.e., do not set found = true)
-				continue;
-			}
-
-			// look for and consume the nosplash directive.  This supercedes any
-			// -showsplash command that might be present.
-			if (args[i].equalsIgnoreCase(NOSPLASH)) {
-				splashDown = true;
-				found = true;
-			}
-
-			if (args[i].equalsIgnoreCase(NOEXIT)) {
-				System.getProperties().put(PROP_NOSHUTDOWN, "true"); //$NON-NLS-1$
-				found = true;
-			}
-
-			// check if this is initialization pass
-			if (args[i].equalsIgnoreCase(INITIALIZE)) {
-				initialize = true;
-				// passed thru this arg (i.e., do not set found = true)
-				continue;
-			}
-
-			// check if development mode should be enabled for the entire platform
-			// If this is the last arg or there is a following arg (i.e., arg+1 has a leading -), 
-			// simply enable development mode.  Otherwise, assume that that the following arg is
-			// actually some additional development time class path entries.  This will be processed below.
-			if (args[i].equalsIgnoreCase(DEV) && ((i + 1 == args.length) || ((i + 1 < args.length) && (args[i + 1].startsWith("-"))))) { //$NON-NLS-1$
-				inDevelopmentMode = true;
-				// do not mark the arg as found so it will be passed through
-				continue;
-			}
-
-			// look for the command to use to show the splash screen
-			if (args[i].equalsIgnoreCase(SHOWSPLASH)) {
-				showSplash = true;
-				found = true;
-				//consume optional parameter for showsplash
-				if (i + 1 < args.length && !args[i + 1].startsWith("-")) { //$NON-NLS-1$
-					configArgs[configArgIndex++] = i++;
-					splashLocation = args[i];
-				}
-			}
-
-			// done checking for args.  Remember where an arg was found 
-			if (found) {
-				configArgs[configArgIndex++] = i;
-				continue;
-			}
-
-			// look for the VM args arg.  We have to do that before looking to see
-			// if the next element is a -arg as the thing following -vmargs may in
-			// fact be another -arg.
-			if (args[i].equalsIgnoreCase(VMARGS)) {
-				// consume the -vmargs arg itself
-				args[i] = null;
-				i++;
-				vmargs = new String[args.length - i];
-				for (int j = 0; i < args.length; i++) {
-					vmargs[j++] = args[i];
-					args[i] = null;
-				}
-				continue;
-			}
-
-			// check for args with parameters. If we are at the last argument or if the next one
-			// has a '-' as the first character, then we can't have an arg with a parm so continue.
-			if (i == args.length - 1 || args[i + 1].startsWith("-")) //$NON-NLS-1$
-				continue;
-			String arg = args[++i];
-
-			// look for the development mode and class path entries.  
-			if (args[i - 1].equalsIgnoreCase(DEV)) {
-				inDevelopmentMode = true;
-				devClassPathProps = processDevArg(arg);
-				if (devClassPathProps != null) {
-					devClassPath = devClassPathProps.getProperty(OSGI);
-					if (devClassPath == null)
-						devClassPath = devClassPathProps.getProperty("*"); //$NON-NLS-1$
-				}
-				continue;
-			}
-
-			// look for the framework to run
-			if (args[i - 1].equalsIgnoreCase(FRAMEWORK)) {
-				framework = arg;
-				found = true;
-			}
-
-			if (args[i - 1].equalsIgnoreCase(OS)) {
-				os = arg;
-				// passed thru this arg 
-				continue;
-			}
-
-			if (args[i - 1].equalsIgnoreCase(WS)) {
-				ws = arg;
-				continue;
-			}
-
-			if (args[i - 1].equalsIgnoreCase(ARCH)) {
-				arch = arg;
-				continue;
-			}
-
-			// look for explicitly set install root
-			// Consume the arg here to ensure that the launcher and Eclipse get the 
-			// same value as each other.  
-			if (args[i - 1].equalsIgnoreCase(INSTALL)) {
-				System.getProperties().put(PROP_INSTALL_AREA, arg);
-				found = true;
-			}
-
-			// look for the configuration to use.  
-			// Consume the arg here to ensure that the launcher and Eclipse get the 
-			// same value as each other.  
-			if (args[i - 1].equalsIgnoreCase(CONFIGURATION)) {
-				System.getProperties().put(PROP_CONFIG_AREA, arg);
-				found = true;
-			}
-
-			if (args[i - 1].equalsIgnoreCase(EXITDATA)) {
-				exitData = arg;
-				found = true;
-			}
-
-			// look for the name to use by the launcher
-			if (args[i - 1].equalsIgnoreCase(NAME)) {
-				System.getProperties().put(PROP_LAUNCHER_NAME, arg);
-				found = true;
-			}
-
-			// look for the startup jar used 
-			if (args[i - 1].equalsIgnoreCase(STARTUP)) {
-				//not doing anything with this right now, but still consume it
-				//startup = arg;
-				found = true;
-			}
-
-			// look for the launcher location
-			if (args[i - 1].equalsIgnoreCase(LAUNCHER)) {
-				//not doing anything with this right now, but still consume it
-				//launcher = arg;
-				System.getProperties().put(PROP_LAUNCHER, arg);
-				found = true;
-			}
-
-			if (args[i - 1].equalsIgnoreCase(LIBRARY)) {
-				library = arg;
-				found = true;
-			}
-
-			// look for the command to use to end the splash screen
-			if (args[i - 1].equalsIgnoreCase(ENDSPLASH)) {
-				endSplash = arg;
-				found = true;
-			}
-
-			// look for the VM location arg
-			if (args[i - 1].equalsIgnoreCase(VM)) {
-				vm = arg;
-				found = true;
-			}
-
-			//look for the nl setting
-			if (args[i - 1].equalsIgnoreCase(NL)) {
-				System.getProperties().put(PROP_NL, 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
-		String[] passThruArgs = new String[args.length - configArgIndex - (vmargs == null ? 0 : vmargs.length + 1)];
-		configArgIndex = 0;
-		int j = 0;
-		for (int i = 0; i < args.length; i++) {
-			if (i == configArgs[configArgIndex])
-				configArgIndex++;
-			else if (args[i] != null)
-				passThruArgs[j++] = args[i];
-		}
-		return passThruArgs;
-	}
-
-	private Properties processDevArg(String arg) {
-		if (arg == null)
-			return null;
-		try {
-			URL location = new URL(arg);
-			return load(location, null);
-		} catch (MalformedURLException e) {
-			// the arg was not a URL so use it as is.
-			Properties result = new Properties();
-			result.put("*", arg); //$NON-NLS-1$
-			return result;
-		} catch (IOException e) {
-			// TODO consider logging here
-			return null;
-		}
-	}
-
-	private URL getConfigurationLocation() {
-		if (configurationLocation != null)
-			return configurationLocation;
-		configurationLocation = buildLocation(PROP_CONFIG_AREA, null, ""); //$NON-NLS-1$
-		if (configurationLocation == null) {
-			configurationLocation = buildLocation(PROP_CONFIG_AREA_DEFAULT, null, ""); //$NON-NLS-1$
-			if (configurationLocation == null)
-				configurationLocation = buildURL(computeDefaultConfigurationLocation(), true);
-		}
-		if (configurationLocation != null)
-			System.getProperties().put(PROP_CONFIG_AREA, configurationLocation.toExternalForm());
-		if (debug)
-			System.out.println("Configuration location:\n    " + configurationLocation); //$NON-NLS-1$
-		return configurationLocation;
-	}
-
-	private void processConfiguration() {
-		// if the configuration area is not already defined, discover the config area by
-		// trying to find a base config area.  This is either defined in a system property or
-		// is computed relative to the install location.
-		// Note that the config info read here is only used to determine a value 
-		// for the user configuration area
-		URL baseConfigurationLocation = null;
-		Properties baseConfiguration = null;
-		if (System.getProperty(PROP_CONFIG_AREA) == null) {
-			String baseLocation = System.getProperty(PROP_BASE_CONFIG_AREA);
-			if (baseLocation != null)
-				// here the base config cannot have any symbolic (e..g, @xxx) entries.  It must just
-				// point to the config file.
-				baseConfigurationLocation = buildURL(baseLocation, true);
-			if (baseConfigurationLocation == null)
-				try {
-					// here we access the install location but this is very early.  This case will only happen if
-					// the config area is not set and the base config area is not set (or is bogus).
-					// In this case we compute based on the install location.
-					baseConfigurationLocation = new URL(getInstallLocation(), CONFIG_DIR);
-				} catch (MalformedURLException e) {
-					// leave baseConfigurationLocation null
-				}
-			baseConfiguration = loadConfiguration(baseConfigurationLocation);
-			if (baseConfiguration != null) {
-				// if the base sets the install area then use that value if the property.  We know the 
-				// property is not already set.
-				String location = baseConfiguration.getProperty(PROP_CONFIG_AREA);
-				if (location != null)
-					System.getProperties().put(PROP_CONFIG_AREA, location);
-				// if the base sets the install area then use that value if the property is not already set.
-				// This helps in selfhosting cases where you cannot easily compute the install location
-				// from the code base.
-				location = baseConfiguration.getProperty(PROP_INSTALL_AREA);
-				if (location != null && System.getProperty(PROP_INSTALL_AREA) == null)
-					System.getProperties().put(PROP_INSTALL_AREA, location);
-			}
-		}
-
-		// Now we know where the base configuration is supposed to be.  Go ahead and load
-		// it and merge into the System properties.  Then, if cascaded, read the parent configuration
-		// Note that the parent may or may not be the same parent as we read above since the 
-		// base can define its parent.  The first parent we read was either defined by the user
-		// on the command line or was the one in the install dir.  
-		// if the config or parent we are about to read is the same as the base config we read above,
-		// just reuse the base
-		Properties configuration = baseConfiguration;
-		if (configuration == null || !getConfigurationLocation().equals(baseConfigurationLocation))
-			configuration = loadConfiguration(getConfigurationLocation());
-		mergeProperties(System.getProperties(), configuration);
-		if ("false".equalsIgnoreCase(System.getProperty(PROP_CONFIG_CASCADED))) //$NON-NLS-1$
-			// if we are not cascaded then remove the parent property even if it was set.
-			System.getProperties().remove(PROP_SHARED_CONFIG_AREA);
-		else {
-			ensureAbsolute(PROP_SHARED_CONFIG_AREA);
-			URL sharedConfigURL = buildLocation(PROP_SHARED_CONFIG_AREA, null, ""); //$NON-NLS-1$
-			if (sharedConfigURL == null)
-				try {
-					// there is no shared config value so compute one
-					sharedConfigURL = new URL(getInstallLocation(), CONFIG_DIR);
-				} catch (MalformedURLException e) {
-					// leave sharedConfigurationLocation null
-				}
-			// if the parent location is different from the config location, read it too.
-			if (sharedConfigURL != null) {
-				if (sharedConfigURL.equals(getConfigurationLocation()))
-					// remove the property to show that we do not have a parent.
-					System.getProperties().remove(PROP_SHARED_CONFIG_AREA);
-				else {
-					// if the parent we are about to read is the same as the base config we read above,
-					// just reuse the base
-					configuration = baseConfiguration;
-					if (!sharedConfigURL.equals(baseConfigurationLocation))
-						configuration = loadConfiguration(sharedConfigURL);
-					mergeProperties(System.getProperties(), configuration);
-					System.getProperties().put(PROP_SHARED_CONFIG_AREA, sharedConfigURL.toExternalForm());
-					if (debug)
-						System.out.println("Shared configuration location:\n    " + sharedConfigURL.toExternalForm()); //$NON-NLS-1$
-				}
-			}
-		}
-		// setup the path to the framework
-		String urlString = System.getProperty(PROP_FRAMEWORK, null);
-		if (urlString != null) {
-			urlString = resolve(urlString);
-			//ensure that the install location is set before resolving framework
-			getInstallLocation();
-			URL url = buildURL(urlString, true);
-			urlString = url.toExternalForm();
-			System.getProperties().put(PROP_FRAMEWORK, urlString);
-			bootLocation = urlString;
-		}
-	}
-
-	/**
-	 * Ensures the value for a system property is an absolute URL. Relative URLs are translated to
-	 * absolute URLs by taking the install URL as reference.
-	 *   
-	 * @param locationProperty the key for a system property containing a URL
-	 */
-	private void ensureAbsolute(String locationProperty) {
-		String propertyValue = System.getProperty(locationProperty);
-		if (propertyValue == null)
-			// property not defined
-			return;
-		URL locationURL = null;
-		try {
-			locationURL = new URL(propertyValue);
-		} catch (MalformedURLException e) {
-			// property is not a valid URL
-			return;
-		}
-		String locationPath = locationURL.getPath();
-		if (locationPath.startsWith("/")) //$NON-NLS-1$
-			// property value is absolute
-			return;
-		URL installURL = getInstallLocation();
-		if (!locationURL.getProtocol().equals(installURL.getProtocol()))
-			// not same protocol
-			return;
-		try {
-			URL absoluteURL = new URL(installURL, locationPath);
-			System.getProperties().put(locationProperty, absoluteURL.toExternalForm());
-		} catch (MalformedURLException e) {
-			// should not happen - the relative URL is known to be valid
-		}
-	}
-
-	/**
-	 * Returns url of the location this class was loaded from
-	 */
-	private URL getInstallLocation() {
-		if (installLocation != null)
-			return installLocation;
-
-		// value is not set so compute the default and set the value
-		String installArea = System.getProperty(PROP_INSTALL_AREA);
-		if (installArea != null) {
-			installLocation = buildURL(installArea, true);
-			if (installLocation == null)
-				throw new IllegalStateException("Install location is invalid: " + installArea); //$NON-NLS-1$
-			System.getProperties().put(PROP_INSTALL_AREA, installLocation.toExternalForm());
-			if (debug)
-				System.out.println("Install location:\n    " + installLocation); //$NON-NLS-1$
-			return installLocation;
-		}
-
-		ProtectionDomain domain = Main.class.getProtectionDomain();
-		CodeSource source = null;
-		URL result = null;
-		if (domain != null)
-			source = domain.getCodeSource();
-		if (source == null || domain == null) {
-			if (debug)
-				System.out.println("CodeSource location is null. Defaulting the install location to file:startup.jar"); //$NON-NLS-1$
-			try {
-				result = new URL("file:startup.jar"); //$NON-NLS-1$
-			} catch (MalformedURLException e2) {
-				//Ignore
-			}
-		}
-		if (source != null)
-			result = source.getLocation();
-
-		String path = decode(result.getFile());
-		// normalize to not have leading / so we can check the form
-		File file = new File(path);
-		path = file.toString().replace('\\', '/');
-		// TODO need a better test for windows
-		// If on Windows then canonicalize the drive letter to be lowercase.
-		// remember that there may be UNC paths 
-		if (File.separatorChar == '\\')
-			if (Character.isUpperCase(path.charAt(0))) {
-				char[] chars = path.toCharArray();
-				chars[0] = Character.toLowerCase(chars[0]);
-				path = new String(chars);
-			}
-		if (path.toLowerCase().endsWith(".jar")) //$NON-NLS-1$
-			path = path.substring(0, path.lastIndexOf("/") + 1); //$NON-NLS-1$
-		if (path.toLowerCase().endsWith("/plugins/")) //$NON-NLS-1$ 
-			path = path.substring(0, path.length() - "/plugins/".length()); //$NON-NLS-1$
-		try {
-			try {
-				// create a file URL (via File) to normalize the form (e.g., put 
-				// the leading / on if necessary)
-				path = new File(path).toURL().getFile();
-			} catch (MalformedURLException e1) {
-				// will never happen.  The path is straight from a URL.  
-			}
-			installLocation = new URL(result.getProtocol(), result.getHost(), result.getPort(), path);
-			System.getProperties().put(PROP_INSTALL_AREA, installLocation.toExternalForm());
-		} catch (MalformedURLException e) {
-			// TODO Very unlikely case.  log here.  
-		}
-		if (debug)
-			System.out.println("Install location:\n    " + installLocation); //$NON-NLS-1$
-		return installLocation;
-	}
-
-	/*
-	 * Load the given configuration file
-	 */
-	private Properties loadConfiguration(URL url) {
-		Properties result = null;
-		try {
-			url = new URL(url, CONFIG_FILE);
-		} catch (MalformedURLException e) {
-			return null;
-		}
-		try {
-			if (debug)
-				System.out.print("Configuration file:\n    " + url.toString()); //$NON-NLS-1$
-			result = loadProperties(url);
-			if (debug)
-				System.out.println(" loaded"); //$NON-NLS-1$
-		} catch (IOException e) {
-			if (debug)
-				System.out.println(" not found or not read"); //$NON-NLS-1$
-		}
-		return result;
-	}
-
-	private Properties loadProperties(URL url) throws IOException {
-		// try to load saved configuration file (watch for failed prior save())
-		if (url == null)
-			return null;
-		Properties result = null;
-		IOException originalException = null;
-		try {
-			result = load(url, null); // try to load config file
-		} catch (IOException e1) {
-			originalException = e1;
-			try {
-				result = load(url, CONFIG_FILE_TEMP_SUFFIX); // check for failures on save
-			} catch (IOException e2) {
-				try {
-					result = load(url, CONFIG_FILE_BAK_SUFFIX); // check for failures on save
-				} catch (IOException e3) {
-					throw originalException; // we tried, but no config here ...
-				}
-			}
-		}
-		return result;
-	}
-
-	/*
-	 * Load the configuration  
-	 */
-	private Properties load(URL url, String suffix) throws IOException {
-		// figure out what we will be loading
-		if (suffix != null && !suffix.equals("")) //$NON-NLS-1$
-			url = new URL(url.getProtocol(), url.getHost(), url.getPort(), url.getFile() + suffix);
-
-		// try to load saved configuration file
-		Properties props = new Properties();
-		InputStream is = null;
-		try {
-			is = url.openStream();
-			props.load(is);
-		} finally {
-			if (is != null)
-				try {
-					is.close();
-				} catch (IOException e) {
-					//ignore failure to close
-				}
-		}
-		return props;
-	}
-
-	/*
-	 * Handle splash screen.
-	 *  The splash screen is displayed natively.  Whether or not the splash screen
-	 *  was displayed by the launcher, we invoke JNIBridge.showSplash() and the 
-	 *  native code handles the case of the splash screen already existing.
-	 * 
-	 * The -showsplash argument may indicate the bitmap used by the native launcher,
-	 * or the bitmap location may be extracted from the config.ini
-	 * 
-	 * We pass a handler (Runnable) to the platform which is called as a result of the
-	 * launched application calling Platform.endSplash(). This handle calls 
-	 * JNIBridge.takeDownSplash and the native code will close the splash screen.
-	 * 
-	 * The -endsplash argument is longer used and has the same result as -nosplash
-	 * 
-	 * @param defaultPath search path for the boot plugin
-	 */
-	private void handleSplash(URL[] defaultPath) {
-		// run without splash if we are initializing or nosplash 
-		// was specified (splashdown = true)
-		if (initialize || splashDown || bridge == null) {
-			showSplash = false;
-			endSplash = null;
-			return;
-		}
-
-		if (showSplash || endSplash != null) {
-			// Register the endSplashHandler to be run at VM shutdown. This hook will be 
-			// removed once the splash screen has been taken down.
-			try {
-				Runtime.getRuntime().addShutdownHook(splashHandler);
-			} catch (Throwable ex) {
-				// Best effort to register the handler
-			}
-		}
-
-		// if -endsplash is specified, use it and ignore any -showsplash command
-		if (endSplash != null) {
-			showSplash = false;
-			return;
-		}
-
-		// check if we are running without a splash screen
-		if (!showSplash)
-			return;
-
-		// determine the splash location
-		splashLocation = getSplashLocation(defaultPath);
-		if (debug)
-			System.out.println("Splash location:\n    " + splashLocation); //$NON-NLS-1$
-		if (splashLocation == null)
-			return;
-
-		bridge.setLauncherInfo(System.getProperty(PROP_LAUNCHER), System.getProperty(PROP_LAUNCHER_NAME));
-		bridge.showSplash(splashLocation);
-		long handle = bridge.getSplashHandle();
-		if (handle != 0 && handle != -1) {
-			System.getProperties().put(SPLASH_HANDLE, String.valueOf(handle));
-			System.getProperties().put(SPLASH_LOCATION, splashLocation);
-			bridge.updateSplash();
-		} else {
-			// couldn't show the splash screen for some reason
-			splashDown = true;
-		}
-	}
-
-	/*
-	 * Take down the splash screen. 
-	 */
-	protected void takeDownSplash() {
-		if (splashDown || bridge == null) // splash is already down
-			return;
-
-		splashDown = bridge.takeDownSplash();
-		System.getProperties().remove(SPLASH_HANDLE);
-
-		try {
-			Runtime.getRuntime().removeShutdownHook(splashHandler);
-		} catch (Throwable e) {
-			// OK to ignore this, happens when the VM is already shutting down
-		}
-	}
-
-	/*
-	 * Return path of the splash image to use.  First search the defined splash path.
-	 * If that does not work, look for a default splash.  Currently the splash must be in the file system
-	 * so the return value here is the file system path.
-	 */
-	private String getSplashLocation(URL[] bootPath) {
-		//check the path passed in from -showsplash first.  The old launcher passed a timeout value
-		//as the argument, so only use it if it isn't a number and the file exists.
-		if (splashLocation != null && !Character.isDigit(splashLocation.charAt(0)) && new File(splashLocation).exists()) {
-			System.getProperties().put(PROP_SPLASHLOCATION, splashLocation);
-			return splashLocation;
-		}
-		String result = System.getProperty(PROP_SPLASHLOCATION);
-		if (result != null)
-			return result;
-		String splashPath = System.getProperty(PROP_SPLASHPATH);
-		if (splashPath != null) {
-			String[] entries = getArrayFromList(splashPath);
-			ArrayList path = new ArrayList(entries.length);
-			for (int i = 0; i < entries.length; i++) {
-				String entry = resolve(entries[i]);
-				if (entry != null && entry.startsWith(FILE_SCHEME)) {
-					File entryFile = new File(entry.substring(5).replace('/', File.separatorChar));
-					entry = searchFor(entryFile.getName(), entryFile.getParent());
-					if (entry != null)
-						path.add(entry);
-				} else
-					log("Invalid splash path entry: " + entries[i]); //$NON-NLS-1$
-			}
-			// see if we can get a splash given the splash path
-			result = searchForSplash((String[]) path.toArray(new String[path.size()]));
-			if (result != null) {
-				System.getProperties().put(PROP_SPLASHLOCATION, result);
-				return result;
-			}
-		}
-		return result;
-	}
-
-	/*
-	 * Do a locale-sensitive lookup of splash image
-	 */
-	private String searchForSplash(String[] searchPath) {
-		if (searchPath == null)
-			return null;
-
-		// Get the splash screen for the specified locale
-		String locale = (String) System.getProperties().get(PROP_NL);
-		if (locale == null)
-			locale = Locale.getDefault().toString();
-		String[] nlVariants = buildNLVariants(locale);
-
-		for (int i = 0; i < nlVariants.length; i++) {
-			for (int j = 0; j < searchPath.length; j++) {
-				String path = searchPath[j];
-				if (path.startsWith(FILE_SCHEME))
-					path = path.substring(5);
-				// do we have a JAR?
-				if (isJAR(path)) {
-					String result = extractFromJAR(path, nlVariants[i]);
-					if (result != null)
-						return result;
-				} else {
-					// we have a file or a directory
-					if (!path.endsWith(File.separator))
-						path += File.separator;
-					path += nlVariants[i];
-					File result = new File(path);
-					if (result.exists())
-						return result.getAbsolutePath(); // return the first match found [20063]
-				}
-			}
-		}
-
-		// sorry, could not find splash image
-		return null;
-	}
-
-	/**
-	 * Transfers all available bytes from the given input stream to the given output stream. 
-	 * Regardless of failure, this method closes both streams.
-	 */
-	private static void transferStreams(InputStream source, OutputStream destination) {
-		byte[] buffer = new byte[8096];
-		try {
-			while (true) {
-				int bytesRead = -1;
-				try {
-					bytesRead = source.read(buffer);
-				} catch (IOException e) {
-					return;
-				}
-				if (bytesRead == -1)
-					break;
-				try {
-					destination.write(buffer, 0, bytesRead);
-				} catch (IOException e) {
-					return;
-				}
-			}
-		} finally {
-			try {
-				source.close();
-			} catch (IOException e) {
-				// ignore
-			} finally {
-				//close destination in finally in case source.close fails
-				try {
-					destination.close();
-				} catch (IOException e) {
-					// ignore
-				}
-			}
-		}
-	}
-
-	/*
-	 * Look for the specified spash file in the given JAR and extract it to the config 
-	 * area for caching purposes.
-	 */
-	private String extractFromJAR(String jarPath, String jarEntry) {
-		String configLocation = System.getProperty(PROP_CONFIG_AREA);
-		if (configLocation == null) {
-			log("Configuration area not set yet. Unable to extract " + jarEntry + " from JAR'd plug-in: " + jarPath); //$NON-NLS-1$ //$NON-NLS-2$
-			return null;
-		}
-		URL configURL = buildURL(configLocation, false);
-		if (configURL == null)
-			return null;
-		// cache the splash in the equinox launcher sub-dir in the config area
-		File splash = new File(configURL.getPath(), PLUGIN_ID);
-		//include the name of the jar in the cache location
-		File jarFile = new File(jarPath);
-		String cache = jarFile.getName();
-		if (cache.endsWith(".jar")) //$NON-NLS-1$
-			cache = cache.substring(0, cache.length() - 4);
-		splash = new File(splash, cache);
-		splash = new File(splash, jarEntry);
-		// if we have already extracted this file before, then return
-		if (splash.exists()) {
-			// if we are running with -clean then delete the cached splash file
-			boolean clean = false;
-			for (int i = 0; i < commands.length; i++) {
-				if (CLEAN.equalsIgnoreCase(commands[i])) {
-					clean = true;
-					splash.delete();
-					break;
-				}
-			}
-			if (!clean)
-				return splash.getAbsolutePath();
-		}
-		ZipFile file;
-		try {
-			file = new ZipFile(jarPath);
-		} catch (IOException e) {
-			log("Exception looking for " + jarEntry + " in JAR file: " + jarPath); //$NON-NLS-1$ //$NON-NLS-2$
-			log(e);
-			return null;
-		}
-		ZipEntry entry = file.getEntry(jarEntry.replace(File.separatorChar, '/'));
-		if (entry == null)
-			return null;
-		InputStream input = null;
-		try {
-			input = file.getInputStream(entry);
-		} catch (IOException e) {
-			log("Exception opening splash: " + entry.getName() + " in JAR file: " + jarPath); //$NON-NLS-1$ //$NON-NLS-2$
-			log(e);
-			return null;
-		}
-		new File(splash.getParent()).mkdirs();
-		OutputStream output;
-		try {
-			output = new BufferedOutputStream(new FileOutputStream(splash));
-		} catch (FileNotFoundException e) {
-			try {
-				input.close();
-			} catch (IOException e1) {
-				// ignore
-			}
-			return null;
-		}
-		transferStreams(input, output);
-		return splash.exists() ? splash.getAbsolutePath() : null;
-	}
-
-	/*
-	 * Return a boolean value indicating whether or not the given
-	 * path represents a JAR file.
-	 */
-	private boolean isJAR(String path) {
-		return new File(path).isFile();
-	}
-
-	/*
-	 * Build an array of path suffixes based on the given NL which is suitable
-	 * for splash path searching.  The returned array contains paths in order 
-	 * from most specific to most generic. So, in the FR_fr locale, it will return 
-	 * "nl/fr/FR/splash.bmp", then "nl/fr/splash.bmp", and finally "splash.bmp". 
-	 * (we always search the root)
-	 */
-	private static String[] buildNLVariants(String locale) {
-		//build list of suffixes for loading resource bundles
-		String nl = locale;
-		ArrayList result = new ArrayList(4);
-		int lastSeparator;
-		while (true) {
-			result.add("nl" + File.separatorChar + nl.replace('_', File.separatorChar) + File.separatorChar + SPLASH_IMAGE); //$NON-NLS-1$
-			lastSeparator = nl.lastIndexOf('_');
-			if (lastSeparator == -1)
-				break;
-			nl = nl.substring(0, lastSeparator);
-		}
-		//add the empty suffix last (most general)
-		result.add(SPLASH_IMAGE);
-		return (String[]) result.toArray(new String[result.size()]);
-	}
-
-	/*
-	 * resolve platform:/base/ URLs
-	 */
-	private String resolve(String urlString) {
-		// handle the case where people mistakenly spec a refererence: url.
-		if (urlString.startsWith(REFERENCE_SCHEME))
-			urlString = urlString.substring(10);
-		if (urlString.startsWith(PLATFORM_URL)) {
-			String path = urlString.substring(PLATFORM_URL.length());
-			return getInstallLocation() + path;
-		}
-		return urlString;
-	}
-
-	/*
-	 * Entry point for logging.
-	 */
-	protected synchronized void log(Object obj) {
-		if (obj == null)
-			return;
-		try {
-			openLogFile();
-			try {
-				if (newSession) {
-					log.write(SESSION);
-					log.write(' ');
-					String timestamp = new Date().toString();
-					log.write(timestamp);
-					log.write(' ');
-					for (int i = SESSION.length() + timestamp.length(); i < 78; i++)
-						log.write('-');
-					log.newLine();
-					newSession = false;
-				}
-				write(obj);
-			} finally {
-				if (logFile == null) {
-					if (log != null)
-						log.flush();
-				} else
-					closeLogFile();
-			}
-		} catch (Exception e) {
-			System.err.println("An exception occurred while writing to the platform log:"); //$NON-NLS-1$
-			e.printStackTrace(System.err);
-			System.err.println("Logging to the console instead."); //$NON-NLS-1$
-			//we failed to write, so dump log entry to console instead
-			try {
-				log = logForStream(System.err);
-				write(obj);
-				log.flush();
-			} catch (Exception e2) {
-				System.err.println("An exception occurred while logging to the console:"); //$NON-NLS-1$
-				e2.printStackTrace(System.err);
-			}
-		} finally {
-			log = null;
-		}
-	}
-
-	/*
-	 * This should only be called from #log()
-	 */
-	private void write(Object obj) throws IOException {
-		if (obj == null)
-			return;
-		if (obj instanceof Throwable) {
-			log.write(STACK);
-			log.newLine();
-			((Throwable) obj).printStackTrace(new PrintWriter(log));
-		} else {
-			log.write(ENTRY);
-			log.write(' ');
-			log.write(PLUGIN_ID);
-			log.write(' ');
-			log.write(String.valueOf(ERROR));
-			log.write(' ');
-			log.write(String.valueOf(0));
-			log.write(' ');
-			log.write(getDate(new Date()));
-			log.newLine();
-			log.write(MESSAGE);
-			log.write(' ');
-			log.write(String.valueOf(obj));
-		}
-		log.newLine();
-	}
-
-	protected String getDate(Date date) {
-		Calendar c = Calendar.getInstance();
-		c.setTime(date);
-		StringBuffer sb = new StringBuffer();
-		appendPaddedInt(c.get(Calendar.YEAR), 4, sb).append('-');
-		appendPaddedInt(c.get(Calendar.MONTH) + 1, 2, sb).append('-');
-		appendPaddedInt(c.get(Calendar.DAY_OF_MONTH), 2, sb).append(' ');
-		appendPaddedInt(c.get(Calendar.HOUR_OF_DAY), 2, sb).append(':');
-		appendPaddedInt(c.get(Calendar.MINUTE), 2, sb).append(':');
-		appendPaddedInt(c.get(Calendar.SECOND), 2, sb).append('.');
-		appendPaddedInt(c.get(Calendar.MILLISECOND), 3, sb);
-		return sb.toString();
-	}
-
-	private StringBuffer appendPaddedInt(int value, int pad, StringBuffer buffer) {
-		pad = pad - 1;
-		if (pad == 0)
-			return buffer.append(Integer.toString(value));
-		int padding = (int) Math.pow(10, pad);
-		if (value >= padding)
-			return buffer.append(Integer.toString(value));
-		while (padding > value && padding > 1) {
-			buffer.append('0');
-			padding = padding / 10;
-		}
-		buffer.append(value);
-		return buffer;
-	}
-
-	private void computeLogFileLocation() {
-		String logFileProp = System.getProperty(PROP_LOGFILE);
-		if (logFileProp != null) {
-			if (logFile == null || !logFileProp.equals(logFile.getAbsolutePath())) {
-				logFile = new File(logFileProp);
-				new File(logFile.getParent()).mkdirs();
-			}
-			return;
-		}
-
-		// compute the base location and then append the name of the log file
-		URL base = buildURL(System.getProperty(PROP_CONFIG_AREA), false);
-		if (base == null)
-			return;
-		logFile = new File(base.getPath(), Long.toString(System.currentTimeMillis()) + ".log"); //$NON-NLS-1$
-		new File(logFile.getParent()).mkdirs();
-		System.getProperties().put(PROP_LOGFILE, logFile.getAbsolutePath());
-	}
-
-	/**
-	 * Converts an ASCII character representing a hexadecimal
-	 * value into its integer equivalent.
-	 */
-	private int hexToByte(byte b) {
-		switch (b) {
-			case '0' :
-				return 0;
-			case '1' :
-				return 1;
-			case '2' :
-				return 2;
-			case '3' :
-				return 3;
-			case '4' :
-				return 4;
-			case '5' :
-				return 5;
-			case '6' :
-				return 6;
-			case '7' :
-				return 7;
-			case '8' :
-				return 8;
-			case '9' :
-				return 9;
-			case 'A' :
-			case 'a' :
-				return 10;
-			case 'B' :
-			case 'b' :
-				return 11;
-			case 'C' :
-			case 'c' :
-				return 12;
-			case 'D' :
-			case 'd' :
-				return 13;
-			case 'E' :
-			case 'e' :
-				return 14;
-			case 'F' :
-			case 'f' :
-				return 15;
-			default :
-				throw new IllegalArgumentException("Switch error decoding URL"); //$NON-NLS-1$
-		}
-	}
-
-	private void openLogFile() throws IOException {
-		computeLogFileLocation();
-		try {
-			log = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(logFile.getAbsolutePath(), true), "UTF-8")); //$NON-NLS-1$
-		} catch (IOException e) {
-			logFile = null;
-			throw e;
-		}
-	}
-
-	private BufferedWriter logForStream(OutputStream output) {
-		try {
-			return new BufferedWriter(new OutputStreamWriter(output, "UTF-8")); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			return new BufferedWriter(new OutputStreamWriter(output));
-		}
-	}
-
-	private void closeLogFile() throws IOException {
-		try {
-			if (log != null) {
-				log.flush();
-				log.close();
-			}
-		} finally {
-			log = null;
-		}
-	}
-
-	private void mergeProperties(Properties destination, Properties source) {
-		if (destination == null || source == null)
-			return;
-		for (Enumeration e = source.keys(); e.hasMoreElements();) {
-			String key = (String) e.nextElement();
-			if (key.equals(PROP_CLASSPATH)) {
-				String destinationClasspath = destination.getProperty(PROP_CLASSPATH);
-				String sourceClasspath = source.getProperty(PROP_CLASSPATH);
-				if (destinationClasspath == null)
-					destinationClasspath = sourceClasspath;
-				else
-					destinationClasspath = destinationClasspath + sourceClasspath;
-				destination.put(PROP_CLASSPATH, destinationClasspath);
-				continue;
-			}
-			String value = source.getProperty(key);
-			if (destination.getProperty(key) == null)
-				destination.put(key, value);
-		}
-	}
-
-	private void setupVMProperties() {
-		if (vm != null)
-			System.getProperties().put(PROP_VM, vm);
-		setMultiValueProperty(PROP_VMARGS, vmargs);
-		setMultiValueProperty(PROP_COMMANDS, commands);
-	}
-
-	private void setMultiValueProperty(String property, String[] value) {
-		if (value != null) {
-			StringBuffer result = new StringBuffer(300);
-			for (int i = 0; i < value.length; i++) {
-				if (value[i] != null) {
-					result.append(value[i]);
-					result.append('\n');
-				}
-			}
-			System.getProperties().put(property, result.toString());
-		}
-	}
-
-	/*
-	 * NOTE: It is ok here for EclipsePolicy to use 1.4 methods because the methods
-	 * that it calls them from don't exist in Foundation so they will never be called. A more
-	 * detailed explanation from Tom:
-	 * 
-	 * They will never get called because in a pre 1.4 VM the methods 
-	 * getPermissions(CodeSource) and implies(ProtectionDomain, Permission) are 
-	 * undefined on the Policy class which is what EclipsePolicy extends.  EclipsePolicy 
-	 * implements these two methods so it can proxy them to the parent Policy.  
-	 * But since these methods are not actually defined on Policy in a pre-1.4 VM 
-	 * nobody will actually call them (unless they casted the policy to EclipsePolicy and 
-	 * called our methods)
-	 */
-	private class EclipsePolicy extends Policy {
-		// The policy that this EclipsePolicy is replacing
-		private Policy policy;
-
-		// The set of URLs to give AllPermissions to; this is the set of bootURLs
-		private URL[] urls;
-
-		// The AllPermissions collection
-		private PermissionCollection allPermissions;
-
-		// The AllPermission permission
-		Permission allPermission = new AllPermission();
-
-		EclipsePolicy(Policy policy, URL[] urls) {
-			this.policy = policy;
-			this.urls = urls;
-			allPermissions = new PermissionCollection() {
-				private static final long serialVersionUID = 3258131349494708277L;
-
-				// A simple PermissionCollection that only has AllPermission
-				public void add(Permission permission) {
-					//no adding to this policy
-				}
-
-				public boolean implies(Permission permission) {
-					return true;
-				}
-
-				public Enumeration elements() {
-					return new Enumeration() {
-						int cur = 0;
-
-						public boolean hasMoreElements() {
-							return cur < 1;
-						}
-
-						public Object nextElement() {
-							if (cur == 0) {
-								cur = 1;
-								return allPermission;
-							}
-							throw new NoSuchElementException();
-						}
-					};
-				}
-			};
-		}
-
-		public PermissionCollection getPermissions(CodeSource codesource) {
-			if (contains(codesource))
-				return allPermissions;
-			return policy == null ? allPermissions : policy.getPermissions(codesource);
-		}
-
-		public PermissionCollection getPermissions(ProtectionDomain domain) {
-			if (contains(domain.getCodeSource()))
-				return allPermissions;
-			return policy == null ? allPermissions : policy.getPermissions(domain);
-		}
-
-		public boolean implies(ProtectionDomain domain, Permission permission) {
-			if (contains(domain.getCodeSource()))
-				return true;
-			return policy == null ? true : policy.implies(domain, permission);
-		}
-
-		public void refresh() {
-			if (policy != null)
-				policy.refresh();
-		}
-
-		private boolean contains(CodeSource codeSource) {
-			if (codeSource == null)
-				return false;
-			URL url = codeSource.getLocation();
-			if (url == null)
-				return false;
-			// Check to see if this URL is in our set of URLs to give AllPermissions to.
-			for (int i = 0; i < urls.length; i++) {
-				// We do simple equals test here because we assume the URLs will be the same objects.
-				if (urls[i] == url)
-					return true;
-			}
-			return false;
-		}
-	}
-
-	private class StartupClassLoader extends URLClassLoader {
-
-		public StartupClassLoader(URL[] urls) {
-			super(urls);
-		}
-
-		public StartupClassLoader(URL[] urls, ClassLoader parent) {
-			super(urls, parent);
-		}
-
-		public StartupClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory) {
-			super(urls, parent, factory);
-		}
-
-		protected String findLibrary(String name) {
-			if (extensionPaths == null)
-				return super.findLibrary(name);
-			String libName = System.mapLibraryName(name);
-			for (int i = 0; i < extensionPaths.length; i++) {
-				File libFile = new File(extensionPaths[i], libName);
-				if (libFile.isFile())
-					return libFile.getAbsolutePath();
-			}
-			return super.findLibrary(name);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java
deleted file mode 100644
index c4c7440..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java
+++ /dev/null
@@ -1,321 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies 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.launcher;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.net.*;
-import java.util.*;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-import java.util.zip.ZipFile;
-
-/**
- * The launcher to start eclipse using webstart. To use this launcher, the client 
- * must accept to give all security permissions.
- * <p>
- * <b>Note:</b> This class should not be referenced programmatically by
- * other Java code. This class exists only for the purpose of launching Eclipse
- * using Java webstart. To launch Eclipse programmatically, use 
- * org.eclipse.core.runtime.adaptor.EclipseStarter. The fields and methods
- * on this class are not API.
- * 
- * @noextend This class is not intended to be subclassed by clients.
- * @noinstantiate This class is not intended to be instantiated by clients.
- */
-//The bundles are discovered by finding all the jars on the classpath. Then they are added with their full path to the osgi.bundles list.
-public class WebStartMain extends Main {
-	private static final String PROP_WEBSTART_AUTOMATIC_INSTALLATION = "eclipse.webstart.automaticInstallation"; //$NON-NLS-1$
-	private static final String DEFAULT_OSGI_BUNDLES = "org.eclipse.equinox.common@2:start, org.eclipse.core.runtime@start"; //$NON-NLS-1$
-	private static final String PROP_OSGI_BUNDLES = "osgi.bundles"; //$NON-NLS-1$
-	private static final String PROP_CHECK_CONFIG = "osgi.checkConfiguration"; //$NON-NLS-1$
-
-	private Map allBundles = null; // Map of all the bundles found on the classpath. Id -> ArrayList of BundleInfo
-	private List bundleList = null; //The list of bundles found on the osgi.bundle list 
-
-	protected class BundleInfo {
-		String bsn;
-		String version;
-		String startData;
-		String location;
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public static void main(String[] args) {
-		System.setSecurityManager(null); //TODO Hack so that when the classloader loading the fwk is created we don't have funny permissions. This should be revisited. 
-		int result = new WebStartMain().run(args);
-		if (!Boolean.getBoolean(PROP_NOSHUTDOWN))
-			System.exit(result);
-	}
-
-	private void setDefaultBundles() {
-		if (System.getProperty(PROP_OSGI_BUNDLES) != null)
-			return;
-		System.getProperties().put(PROP_OSGI_BUNDLES, DEFAULT_OSGI_BUNDLES);
-	}
-
-	protected void basicRun(String[] args) throws Exception {
-		setDefaultBundles();
-		initializeBundleListStructure();
-		discoverBundles();
-		//Set the fwk location since the regular lookup would not find it
-		String fwkURL = searchFor(framework, null);
-		if (fwkURL == null) {
-			//MESSAGE CAN"T FIND THE FWK
-		}
-		allBundles.remove(framework);
-		System.getProperties().put(PROP_FRAMEWORK, fwkURL);
-		super.basicRun(args);
-	}
-
-	protected void beforeFwkInvocation() {
-		// set the check config option so we pick up modified bundle jars (bug 152825)
-		if (System.getProperty(PROP_CHECK_CONFIG) == null)
-			System.getProperties().put(PROP_CHECK_CONFIG, "true"); //$NON-NLS-1$
-		buildOSGiBundleList();
-		cleanup();
-	}
-
-	/*
-	 * Null out all the fields containing data 
-	 */
-	private void cleanup() {
-		allBundles = null;
-		bundleList = null;
-	}
-
-	/*
-	 * Find the target bundle among all the bundles that are on the classpath.
-	 * The start parameter is not used in this context
-	 */
-	protected String searchFor(final String target, String start) {
-		ArrayList matches = (ArrayList) allBundles.get(target);
-		if (matches == null)
-			return null;
-		int numberOfMatches = matches.size();
-		if (numberOfMatches == 1) {
-			return ((BundleInfo) matches.get(0)).location;
-		}
-		if (numberOfMatches == 0)
-			return null;
-
-		String[] versions = new String[numberOfMatches];
-		int highest = 0;
-		for (int i = 0; i < versions.length; i++) {
-			versions[i] = ((BundleInfo) matches.get(i)).version;
-		}
-		highest = findMax(null, versions);
-		return ((BundleInfo) matches.get(highest)).location;
-	}
-
-	private BundleInfo findBundle(final String target, String version, boolean removeMatch) {
-		ArrayList matches = (ArrayList) allBundles.get(target);
-		int numberOfMatches = matches != null ? matches.size() : 0;
-		if (numberOfMatches == 1) {
-			//TODO Need to check the version
-			return (BundleInfo) (removeMatch ? matches.remove(0) : matches.get(0));
-		}
-		if (numberOfMatches == 0)
-			return null;
-
-		if (version != null) {
-			for (Iterator iterator = matches.iterator(); iterator.hasNext();) {
-				BundleInfo bi = (BundleInfo) iterator.next();
-				if (bi.version.equals(version)) {
-					if (removeMatch)
-						iterator.remove();
-					return bi;
-				}
-			}
-			//TODO Need to log the fact that we could not find the version mentioned
-			return null;
-		}
-		String[] versions = new String[numberOfMatches];
-		int highest = 0;
-		for (int i = 0; i < versions.length; i++) {
-			versions[i] = ((BundleInfo) matches.get(i)).version;
-		}
-		highest = findMax(null, versions);
-		return (BundleInfo) (removeMatch ? matches.remove(highest) : matches.get(highest));
-	}
-
-	/* 
-	 * Get all the bundles available on the webstart classpath
-	 */
-	private void discoverBundles() {
-		allBundles = new HashMap();
-		try {
-			Enumeration resources = WebStartMain.class.getClassLoader().getResources(JarFile.MANIFEST_NAME);
-			while (resources.hasMoreElements()) {
-				BundleInfo found = getBundleInfo((URL) resources.nextElement());
-				if (found == null)
-					continue;
-				ArrayList matching = (ArrayList) allBundles.get(found.bsn);
-				if (matching == null) {
-					matching = new ArrayList(1);
-					allBundles.put(found.bsn, matching);
-				}
-				matching.add(found);
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	private String extractInnerURL(URL url) {
-		try {
-			URLConnection connection = null;
-			try {
-				connection = url.openConnection();
-				if (connection instanceof JarURLConnection) {
-					JarFile jarFile = ((JarURLConnection) connection).getJarFile();
-					String name = jarFile.getName();
-					// Some VMs may not return a jar name as a security precaution
-					if (name == null || name.length() == 0)
-						name = getJarNameByReflection(jarFile);
-
-					if (name != null && name.length() > 0)
-						return "file:" + name; //$NON-NLS-1$
-				}
-			} finally {
-				if (connection != null)
-					connection.getInputStream().close();
-			}
-		} catch (IOException e) {
-			//Ignore and return the external form
-		}
-		return url.toExternalForm();
-	}
-
-	/*
-	 *  Get a value of the ZipFile.name field using reflection.
-	 *  For this to succeed, we need the "suppressAccessChecks" permission.
-	 */
-	private String getJarNameByReflection(JarFile jarFile) {
-		if (jarFile == null)
-			return null;
-
-		Field nameField = null;
-		try {
-			nameField = ZipFile.class.getDeclaredField("name"); //$NON-NLS-1$
-		} catch (NoSuchFieldException e1) {
-			try {
-				nameField = ZipFile.class.getDeclaredField("fileName"); //$NON-NLS-1$
-			} catch (NoSuchFieldException e) {
-				//ignore
-			}
-		}
-
-		if (nameField == null || Modifier.isStatic(nameField.getModifiers()) || nameField.getType() != String.class)
-			return null;
-
-		try {
-			nameField.setAccessible(true);
-			return (String) nameField.get(jarFile);
-		} catch (SecurityException e) {
-			// Don't have permissions, ignore
-		} catch (IllegalArgumentException e) {
-			// Shouldn't happen
-		} catch (IllegalAccessException e) {
-			// Shouldn't happen
-		}
-
-		return null;
-	}
-
-	/*
-	 * Construct bundle info objects from items found on the osgi.bundles list
-	 */
-	private void initializeBundleListStructure() {
-		final char STARTLEVEL_SEPARATOR = '@';
-
-		//In webstart the bundles list can only contain bundle names with or without a version.
-		String prop = System.getProperty(PROP_OSGI_BUNDLES);
-		if (prop == null || prop.trim().equals("")) { //$NON-NLS-1$
-			bundleList = new ArrayList(0);
-			return;
-		}
-
-		bundleList = new ArrayList(10);
-		StringTokenizer tokens = new StringTokenizer(prop, ","); //$NON-NLS-1$
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			String bundleId = token;
-			if (token.equals("")) //$NON-NLS-1$
-				continue;
-			int startLevelSeparator;
-			BundleInfo toAdd = new BundleInfo();
-			toAdd.bsn = bundleId;
-			if ((startLevelSeparator = token.lastIndexOf(STARTLEVEL_SEPARATOR)) != -1) {
-				toAdd.bsn = token.substring(0, startLevelSeparator);
-				toAdd.startData = token.substring(startLevelSeparator);
-				//Note that here we don't try to parse the start attribute since this info is then used to recompose the value for osgi.bundles
-			}
-			bundleList.add(toAdd);
-		}
-	}
-
-	private BundleInfo getBundleInfo(URL manifestURL) {
-		final String BUNDLE_SYMBOLICNAME = "Bundle-SymbolicName"; //$NON-NLS-1$
-		final String BUNDLE_VERSION = "Bundle-Version"; //$NON-NLS-1$
-		final String DEFAULT_VERSION = "0.0.0"; //$NON-NLS-1$
-
-		Manifest mf;
-		try {
-			mf = new Manifest(manifestURL.openStream());
-			String symbolicNameString = mf.getMainAttributes().getValue(BUNDLE_SYMBOLICNAME);
-			if (symbolicNameString == null)
-				return null;
-
-			BundleInfo result = new BundleInfo();
-			String version = mf.getMainAttributes().getValue(BUNDLE_VERSION);
-			result.version = (version != null) ? version : DEFAULT_VERSION;
-			result.location = extractInnerURL(manifestURL);
-			int pos = symbolicNameString.lastIndexOf(';');
-			if (pos != -1) {
-				result.bsn = symbolicNameString.substring(0, pos);
-				return result;
-			}
-			result.bsn = symbolicNameString;
-			return result;
-		} catch (IOException e) {
-			if (debug)
-				e.printStackTrace();
-		}
-		return null;
-	}
-
-	//Build the osgi bundle list. The allbundles data structure is changed during the process. 
-	private void buildOSGiBundleList() {
-		StringBuffer finalBundleList = new StringBuffer(allBundles.size() * 30);
-		//First go through all the bundles of the bundle
-		for (Iterator iterator = bundleList.iterator(); iterator.hasNext();) {
-			BundleInfo searched = (BundleInfo) iterator.next();
-			BundleInfo found = findBundle(searched.bsn, searched.version, true);
-			if (found != null)
-				finalBundleList.append(REFERENCE_SCHEME).append(found.location).append(searched.startData).append(',');
-		}
-
-		if (!Boolean.FALSE.toString().equalsIgnoreCase(System.getProperties().getProperty(PROP_WEBSTART_AUTOMATIC_INSTALLATION))) {
-			for (Iterator iterator = allBundles.values().iterator(); iterator.hasNext();) {
-				ArrayList toAdd = (ArrayList) iterator.next();
-				for (Iterator iterator2 = toAdd.iterator(); iterator2.hasNext();) {
-					BundleInfo bi = (BundleInfo) iterator2.next();
-					finalBundleList.append(REFERENCE_SCHEME).append(bi.location).append(',');
-				}
-			}
-		}
-		System.getProperties().put(PROP_OSGI_BUNDLES, finalBundleList.toString());
-	}
-}
diff --git a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/package.html b/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/package.html
deleted file mode 100644
index cecfa72..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/package.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="Author" content="IBM">
-   <meta name="GENERATOR" content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Launches the Eclipse Platform.
-<h2>
-Package Specification</h2>
-
-This package contains classes for launching the Eclipse Platform from a command
-line or through Java web start. To start the platform, specify the Main class in this package
-when invoking the Java VM.
-<p>
-This package is not intended to be used by other Java code. The methods
-and fields in these classes are not API.
-<br>&nbsp;
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi.services/.classpath b/bundles/org.eclipse.osgi.services/.classpath
deleted file mode 100644
index 6b1debc..0000000
--- a/bundles/org.eclipse.osgi.services/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry path="" kind="lib" exported="true" sourcepath="src.zip"/>
-	<classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/OSGi%Minimum-1.2" kind="con"/>
-	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con"/>
-	<classpathentry path="bin" kind="output"/>
-</classpath>
diff --git a/bundles/org.eclipse.osgi.services/.cvsignore b/bundles/org.eclipse.osgi.services/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.osgi.services/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.osgi.services/.project b/bundles/org.eclipse.osgi.services/.project
deleted file mode 100644
index 65a2a5f..0000000
--- a/bundles/org.eclipse.osgi.services/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.osgi.services</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.osgi.services/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.osgi.services/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 17f5ec5..0000000
--- a/bundles/org.eclipse.osgi.services/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 25 15:00:14 EDT 2004
-encoding/<project>=ISO-8859-1
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.osgi.services/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.osgi.services/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 8e730b0..0000000
--- a/bundles/org.eclipse.osgi.services/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,76 +0,0 @@
-#Tue Dec 02 09:03:08 CST 2008
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.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.osgi.services/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF
deleted file mode 100644
index e8090ec..0000000
--- a/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,43 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %osgiServices
-Bundle-SymbolicName: org.eclipse.osgi.services
-Bundle-Version: 3.2.100.qualifier
-Bundle-Description: %osgiServicesDes
-Bundle-Localization: plugin
-Bundle-Vendor: %eclipse.org
-Bundle-DocUrl: http://www.eclipse.org
-Bundle-ContactAddress: www.eclipse.org
-Bundle-Copyright: %copyright
-Export-Package: org.osgi.service.cm; version="1.2.1",
- org.osgi.service.component; version="1.1",
- org.osgi.service.device; version="1.1",
- org.osgi.service.event; version="1.2",
- org.osgi.service.http; version="1.2.1",
- org.osgi.service.io; version="1.0",
- org.osgi.service.log; version="1.3",
- org.osgi.service.metatype; version="1.1",
- org.osgi.service.provisioning; version="1.2",
- org.osgi.service.upnp; version="1.1",
- org.osgi.service.useradmin; version="1.1",
- org.osgi.service.wireadmin; version="1.0"
-Import-Package: org.osgi.framework; version=1.2,
- org.osgi.service.cm; version="[1.2.1, 1.3)",
- org.osgi.service.component; version="[1.1, 1.2)",
- org.osgi.service.device; version="[1.1, 1.2)",
- org.osgi.service.event; version="[1.2, 1.3)",
- org.osgi.service.http; version="[1.2.1, 1.3)",
- org.osgi.service.io; version="[1.0, 1.1)",
- org.osgi.service.log; version="[1.3, 1.4)",
- org.osgi.service.metatype; version="[1.1, 1.2)",
- org.osgi.service.provisioning; version="[1.2, 1.3)",
- org.osgi.service.upnp; version="[1.1, 1.2)",
- org.osgi.service.useradmin; version="[1.1, 1.2)",
- org.osgi.service.wireadmin; version="[1.0, 1.1)",
- javax.servlet; resolution:="optional",
- javax.servlet.http; resolution:="optional"
-DynamicImport-Package: javax.servlet,
- javax.servlet.http
-Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.2,
- CDC-1.1/Foundation-1.1,
- J2SE-1.4
diff --git a/bundles/org.eclipse.osgi.services/about.html b/bundles/org.eclipse.osgi.services/about.html
deleted file mode 100644
index c57db22..0000000
--- a/bundles/org.eclipse.osgi.services/about.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>August 25, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">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
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>OSGi Materials</h4>
-
-<p>All files in the following sub-directories (and their sub-directories):</p>
-
-<ul>
-	<li>org/osgi</li>
-</ul>
-
-<p>and the following files (which may not be present in all cases):</p>
-
-<ul>
-	<li>osgi/ee.foundation.jar</li>
-	<li>osgi/ee.minimum.jar</li>	
-</ul>
-
-<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>
-
-<blockquote>
-Copyright (c) 2000, 2006
-<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 Apache License, Version 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE-2.0.txt" target="_blank">LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</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>
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.services/about_files/LICENSE-2.0.txt b/bundles/org.eclipse.osgi.services/about_files/LICENSE-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/bundles/org.eclipse.osgi.services/about_files/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/bundles/org.eclipse.osgi.services/build.properties b/bundles/org.eclipse.osgi.services/build.properties
deleted file mode 100644
index 7962dc5..0000000
--- a/bundles/org.eclipse.osgi.services/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.properties,\
-               about.html,\
-               META-INF/,\
-               org/,\
-               about_files/
-src.includes = src.zip,\
-               about.html,\
-               about_files/
-source.. = .
-output.. = .
-customBuildCallbacks=customBuildCallbacks.xml
diff --git a/bundles/org.eclipse.osgi.services/customBuildCallbacks.xml b/bundles/org.eclipse.osgi.services/customBuildCallbacks.xml
deleted file mode 100644
index 9187112..0000000
--- a/bundles/org.eclipse.osgi.services/customBuildCallbacks.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the compilation target <name>                      -->
-	<!-- Substitute "name" with the name of the compilation target, eg @dot    -->
-	<!-- Available parameters :                                                -->
-	<!--   source.foldern : n = 1 ... N, the source folders                    -->
-	<!--   target.folder  : where the results of the compilation go            -->
-	<!--   <name>.classpath : name = name of the compilation target. A         -->
-	<!--                      reference to the classpath structure.            -->
-	<!-- ===================================================================== -->
-	<target name="pre.name">
-	</target>
-
-	<target name="pre.@dot">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do during the compilation target <name>, after the compile   -->
-	<!-- but before jaring.  Substitute "name" with the name of the compilation-->
-	<!-- target, eg @dot                                                       -->
-	<!-- Available parameters :                                                -->
-	<!--   source.foldern : n = 1 ... N, the source folders                    -->
-	<!--   target.folder  : where the results of the compilation go            -->
-	<!--   <name>.classpath : name = name of the compilation target. A         -->
-	<!--                      reference to the classpath structure.            -->
-	<!-- ===================================================================== -->
-	<target name="post.compile.name">
-	</target>
-
-	<target name="post.compile.@dot">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the compilation target <name>                       -->
-	<!-- Substitute "name" with the name of the compilation target, eg @dot    -->
-	<!-- Available parameters :                                                -->
-	<!--   jar.location - the location of the compilation results              -->
-	<!--   <name>.classpath : name = name of the compilation target. A         -->
-	<!--                      reference to the classpath structure.            -->
-	<!-- ===================================================================== -->
-	<target name="post.name">
-	</target>
-
-	<target name="post.@dot">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.bin.parts">
-	</target>
-		
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-		<unzip src="${target.folder}/src.zip" dest="${target.folder}" overwrite="false"/>
-		<delete file="${destination.temp.folder}/src.zip" />	
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">  
-		<move  file="src.zip" tofile="services_src.zip"/>
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">
-		<move file="services_src.zip" tofile="src.zip"/>
-	</target>
-</project>
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/Configuration.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/Configuration.class
deleted file mode 100644
index 4dcf2e1..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/Configuration.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationAdmin.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationAdmin.class
deleted file mode 100644
index 77da123..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationAdmin.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationEvent.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationEvent.class
deleted file mode 100644
index e7ac7c0..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationEvent.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationException.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationException.class
deleted file mode 100644
index b59ea82..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationException.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationListener.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationListener.class
deleted file mode 100644
index 13b5e93..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationListener.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermission.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermission.class
deleted file mode 100644
index d88c04a..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermission.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection$1.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection$1.class
deleted file mode 100644
index ae1c8cd..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection$1.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection.class
deleted file mode 100644
index a6f831d..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPermissionCollection.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPlugin.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPlugin.class
deleted file mode 100644
index d1c7824..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ConfigurationPlugin.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedService.class
deleted file mode 100644
index 60094c6..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedServiceFactory.class b/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedServiceFactory.class
deleted file mode 100644
index 60c4afc..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/cm/ManagedServiceFactory.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentConstants.class b/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentConstants.class
deleted file mode 100644
index 61732d1..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentConstants.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentContext.class b/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentContext.class
deleted file mode 100644
index 31a8381..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentContext.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentException.class b/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentException.class
deleted file mode 100644
index 7e229e2..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentException.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentFactory.class b/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentFactory.class
deleted file mode 100644
index 6a27a81..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentFactory.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentInstance.class b/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentInstance.class
deleted file mode 100644
index 7c615df..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/component/ComponentInstance.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Constants.class b/bundles/org.eclipse.osgi.services/org/osgi/service/device/Constants.class
deleted file mode 100644
index 3aa7d2a..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Constants.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Device.class b/bundles/org.eclipse.osgi.services/org/osgi/service/device/Device.class
deleted file mode 100644
index c74de60..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Device.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Driver.class b/bundles/org.eclipse.osgi.services/org/osgi/service/device/Driver.class
deleted file mode 100644
index f19b903..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Driver.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverLocator.class b/bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverLocator.class
deleted file mode 100644
index 211bda8..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverLocator.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverSelector.class b/bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverSelector.class
deleted file mode 100644
index d0eb4d5..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/device/DriverSelector.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Match.class b/bundles/org.eclipse.osgi.services/org/osgi/service/device/Match.class
deleted file mode 100644
index aa75085..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/device/Match.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/event/Event$UnmodifiableDictionary.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/Event$UnmodifiableDictionary.class
deleted file mode 100644
index f243594..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/event/Event$UnmodifiableDictionary.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/event/Event.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/Event.class
deleted file mode 100644
index 5856c5c..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/event/Event.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventAdmin.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventAdmin.class
deleted file mode 100644
index ba765dd..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventAdmin.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventConstants.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventConstants.class
deleted file mode 100644
index e84161c..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventConstants.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventHandler.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventHandler.class
deleted file mode 100644
index 6747ad2..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/event/EventHandler.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermission.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermission.class
deleted file mode 100644
index b1534be..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermission.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermissionCollection.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermissionCollection.class
deleted file mode 100644
index 15a19b9..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/event/TopicPermissionCollection.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpContext.class b/bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpContext.class
deleted file mode 100644
index 758cf73..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpContext.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpService.class
deleted file mode 100644
index 09e7e86..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/http/HttpService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/http/NamespaceException.class b/bundles/org.eclipse.osgi.services/org/osgi/service/http/NamespaceException.class
deleted file mode 100644
index afa9683..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/http/NamespaceException.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectionFactory.class b/bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectionFactory.class
deleted file mode 100644
index fd11291..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectionFactory.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectorService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectorService.class
deleted file mode 100644
index 795596e..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/io/ConnectorService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogEntry.class b/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogEntry.class
deleted file mode 100644
index 70daca1..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogEntry.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogListener.class b/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogListener.class
deleted file mode 100644
index da9a415..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogListener.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogReaderService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogReaderService.class
deleted file mode 100644
index 75177cc..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogReaderService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogService.class
deleted file mode 100644
index 7b853c5..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/log/LogService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/AttributeDefinition.class b/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/AttributeDefinition.class
deleted file mode 100644
index 1027886..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/AttributeDefinition.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeInformation.class b/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeInformation.class
deleted file mode 100644
index a4f3fdf..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeInformation.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeProvider.class b/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeProvider.class
deleted file mode 100644
index d74b54c..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeProvider.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeService.class
deleted file mode 100644
index fd62288..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/MetaTypeService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/ObjectClassDefinition.class b/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/ObjectClassDefinition.class
deleted file mode 100644
index 372f43b..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/metatype/ObjectClassDefinition.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/provisioning/ProvisioningService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/provisioning/ProvisioningService.class
deleted file mode 100644
index 0855ca2..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/provisioning/ProvisioningService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPAction.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPAction.class
deleted file mode 100644
index a9e4e2a..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPAction.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPDevice.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPDevice.class
deleted file mode 100644
index b7445d9..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPDevice.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPEventListener.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPEventListener.class
deleted file mode 100644
index 784d1c3..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPEventListener.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPException.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPException.class
deleted file mode 100644
index c2e2ebe..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPException.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPIcon.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPIcon.class
deleted file mode 100644
index 820e4a4..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPIcon.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPLocalStateVariable.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPLocalStateVariable.class
deleted file mode 100644
index 406ff02..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPLocalStateVariable.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPService.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPService.class
deleted file mode 100644
index 140f87d..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPService.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPStateVariable.class b/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPStateVariable.class
deleted file mode 100644
index 133b723..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/upnp/UPnPStateVariable.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Authorization.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Authorization.class
deleted file mode 100644
index 07fa739..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Authorization.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Group.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Group.class
deleted file mode 100644
index 77553f7..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Group.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Role.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Role.class
deleted file mode 100644
index 5c74098..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/Role.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/User.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/User.class
deleted file mode 100644
index 2dcd183..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/User.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdmin.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdmin.class
deleted file mode 100644
index 4c73226..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdmin.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminEvent.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminEvent.class
deleted file mode 100644
index 42e5028..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminEvent.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminListener.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminListener.class
deleted file mode 100644
index 2ace020..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminListener.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermission.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermission.class
deleted file mode 100644
index 2a3e70b..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermission.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermissionCollection.class b/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermissionCollection.class
deleted file mode 100644
index 71d464c..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/useradmin/UserAdminPermissionCollection.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/BasicEnvelope.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/BasicEnvelope.class
deleted file mode 100644
index 3c0ca38..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/BasicEnvelope.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Consumer.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Consumer.class
deleted file mode 100644
index d6065fb..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Consumer.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Envelope.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Envelope.class
deleted file mode 100644
index 2dcdb02..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Envelope.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Producer.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Producer.class
deleted file mode 100644
index d817796..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Producer.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Wire.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Wire.class
deleted file mode 100644
index cd0ef13..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/Wire.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdmin.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdmin.class
deleted file mode 100644
index 09752e7..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdmin.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminEvent.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminEvent.class
deleted file mode 100644
index c6297f6..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminEvent.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminListener.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminListener.class
deleted file mode 100644
index a8bbb86..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireAdminListener.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireConstants.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireConstants.class
deleted file mode 100644
index 5b05529..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WireConstants.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermission.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermission.class
deleted file mode 100644
index 45e1483..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermission.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermissionCollection.class b/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermissionCollection.class
deleted file mode 100644
index b11a24f..0000000
--- a/bundles/org.eclipse.osgi.services/org/osgi/service/wireadmin/WirePermissionCollection.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.services/plugin.properties b/bundles/org.eclipse.osgi.services/plugin.properties
deleted file mode 100644
index fafc623..0000000
--- a/bundles/org.eclipse.osgi.services/plugin.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-osgiServices = OSGi Release 4.2.0 Services
-eclipse.org = Eclipse.org - Equinox
-osgiServicesDes = OSGi Service Platform Release 4.2.0 Service Interfaces and Classes
-copyright = 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
diff --git a/bundles/org.eclipse.osgi.services/src.zip b/bundles/org.eclipse.osgi.services/src.zip
deleted file mode 100644
index fe4cdfa..0000000
--- a/bundles/org.eclipse.osgi.services/src.zip
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/.classpath b/bundles/org.eclipse.osgi.tests/.classpath
deleted file mode 100644
index 26a9249..0000000
--- a/bundles/org.eclipse.osgi.tests/.classpath
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="src" output="bundle_tests/test" path="bundles_src/test"/>
-	<classpathentry kind="src" output="bundle_tests/test2" path="bundles_src/test2"/>
-	<classpathentry kind="src" output="bundle_tests/chain.test" path="bundles_src/chain.test"/>
-	<classpathentry kind="src" output="bundle_tests/chain.test.a" path="bundles_src/chain.test.a"/>
-	<classpathentry kind="src" output="bundle_tests/chain.test.b" path="bundles_src/chain.test.b"/>
-	<classpathentry kind="src" output="bundle_tests/chain.test.c" path="bundles_src/chain.test.c"/>
-	<classpathentry kind="src" output="bundle_tests/chain.test.d" path="bundles_src/chain.test.d"/>
-	<classpathentry kind="src" output="bundle_tests/circularity.test" path="bundles_src/circularity.test"/>
-	<classpathentry kind="src" output="bundle_tests/circularity.test.a" path="bundles_src/circularity.test.a"/>
-	<classpathentry kind="src" output="bundle_tests/fragment.test.attach.host.a" path="bundles_src/fragment.test.attach.host.a"/>
-	<classpathentry kind="src" output="bundle_tests/fragment.test.attach.host.a.v2" path="bundles_src/fragment.test.attach.host.a.v2"/>
-	<classpathentry kind="src" output="bundle_tests/fragment.test.attach.host.a.require" path="bundles_src/fragment.test.attach.host.a.require"/>
-	<classpathentry kind="src" output="bundle_tests/fragment.test.attach.frag.a" path="bundles_src/fragment.test.attach.frag.a"/>
-	<classpathentry kind="src" output="bundle_tests/fragment.test.attach.frag.b" path="bundles_src/fragment.test.attach.frag.b"/>
-	<classpathentry kind="src" output="bundle_tests/legacy.lazystart" path="bundles_src/legacy.lazystart"/>
-	<classpathentry kind="src" output="bundle_tests/legacy.lazystart.a" path="bundles_src/legacy.lazystart.a"/>
-	<classpathentry kind="src" output="bundle_tests/legacy.lazystart.b" path="bundles_src/legacy.lazystart.b"/>
-	<classpathentry kind="src" output="bundle_tests/legacy.lazystart.c" path="bundles_src/legacy.lazystart.c"/>
-	<classpathentry kind="src" output="bundle_tests/osgi.lazystart" path="bundles_src/osgi.lazystart"/>
-	<classpathentry kind="src" output="bundle_tests/osgi.lazystart.a" path="bundles_src/osgi.lazystart.a"/>
-	<classpathentry kind="src" output="bundle_tests/osgi.lazystart.b" path="bundles_src/osgi.lazystart.b"/>
-	<classpathentry kind="src" output="bundle_tests/osgi.lazystart.c" path="bundles_src/osgi.lazystart.c"/>
-	<classpathentry kind="src" output="bundle_tests/thread.locktest" path="bundles_src/thread.locktest"/>
-	<classpathentry kind="src" output="bundle_tests/buddy.registered.a" path="bundles_src/buddy.registered.a"/>
-	<classpathentry kind="src" output="bundle_tests/buddy.registered.a.test1" path="bundles_src/buddy.registered.a.test1"/>
-	<classpathentry kind="src" output="bundle_tests/buddy.registered.a.test2" path="bundles_src/buddy.registered.a.test2"/>
-	<classpathentry kind="src" output="bundle_tests/buddy.dependent.a" path="bundles_src/buddy.dependent.a"/>
-	<classpathentry kind="src" output="bundle_tests/buddy.dependent.a.test1" path="bundles_src/buddy.dependent.a.test1"/>
-	<classpathentry kind="src" output="bundle_tests/buddy.dependent.a.test2" path="bundles_src/buddy.dependent.a.test2"/>
-	<classpathentry kind="src" output="bundle_tests/nativetest.a1" path="bundles_src/nativetest.a1"/>
-	<classpathentry kind="src" output="bundle_tests/nativetest.a2" path="bundles_src/nativetest.a2"/>
-	<classpathentry kind="src" output="bundle_tests/nativetest.b1" path="bundles_src/nativetest.b1"/>
-	<classpathentry kind="src" output="bundle_tests/nativetest.b2" path="bundles_src/nativetest.b2"/>
-	<classpathentry kind="src" output="bundle_tests/nativetest.c" path="bundles_src/nativetest.c"/>
-	<classpathentry kind="src" output="bundle_tests/nativetest.d" path="bundles_src/nativetest.d"/>
-	<classpathentry kind="src" output="bundle_tests/host.multiple.exports" path="bundles_src/host.multiple.exports"/>
-	<classpathentry kind="src" output="bundle_tests/frag.multiple.exports" path="bundles_src/frag.multiple.exports"/>
-	<classpathentry kind="src" output="bundle_tests/client1.multiple.exports" path="bundles_src/client1.multiple.exports"/>
-	<classpathentry kind="src" output="bundle_tests/client2.multiple.exports" path="bundles_src/client2.multiple.exports"/>
-	<classpathentry kind="src" output="bundle_tests/xfriends.test1" path="bundles_src/xfriends.test1"/>
-	<classpathentry kind="src" output="bundle_tests/xfriends.test2" path="bundles_src/xfriends.test2"/>
-	<classpathentry kind="src" output="bundle_tests/xfriends.test3" path="bundles_src/xfriends.test3"/>
-	<classpathentry kind="src" output="bundle_tests/ext.framework.a" path="bundles_src/ext.framework.a"/>
-	<classpathentry kind="src" output="bundle_tests/ext.framework.a.importer" path="bundles_src/ext.framework.a.importer"/>
-	<classpathentry kind="src" output="bundle_tests/ext.framework.a.requires" path="bundles_src/ext.framework.a.requires"/>
-	<classpathentry kind="src" output="bundle_tests/ext.framework.b" path="bundles_src/ext.framework.b"/>
-	<classpathentry kind="src" output="bundle_tests/ext.extclasspath.a" path="bundles_src/ext.extclasspath.a"/>
-	<classpathentry kind="src" output="bundle_tests/ext.extclasspath.a.importer" path="bundles_src/ext.extclasspath.a.importer"/>
-	<classpathentry kind="src" output="bundle_tests/exporter.importer1" path="bundles_src/exporter.importer1"/>
-	<classpathentry kind="src" output="bundle_tests/exporter.importer2" path="bundles_src/exporter.importer2"/>
-	<classpathentry kind="src" output="bundle_tests/exporter.importer3" path="bundles_src/exporter.importer3"/>
-	<classpathentry kind="src" output="bundle_tests/exporter.importer4" path="bundles_src/exporter.importer4"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug235958.x" path="bundles_src/test.bug235958.x"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug235958.y" path="bundles_src/test.bug235958.y"/>
-	<classpathentry kind="src" output="bundle_tests/test.fragment1" path="bundles_src/test.fragment1"/>
-	<classpathentry kind="src" output="bundle_tests/test.fragment2" path="bundles_src/test.fragment2"/>
-	<classpathentry kind="src" output="bundle_tests/test.fragment3" path="bundles_src/test.fragment3"/>
-	<classpathentry kind="src" output="bundle_tests/test.fragment4" path="bundles_src/test.fragment4"/>
-	<classpathentry kind="src" output="bundle_tests/test.fragment5" path="bundles_src/test.fragment5"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.a" path="bundles_src/substitutes.a"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.a.frag" path="bundles_src/substitutes.a.frag"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.b" path="bundles_src/substitutes.b"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.b.frag" path="bundles_src/substitutes.b.frag"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.c" path="bundles_src/substitutes.c"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.d" path="bundles_src/substitutes.d"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.e" path="bundles_src/substitutes.e"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.f" path="bundles_src/substitutes.f"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.g" path="bundles_src/substitutes.g"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.h" path="bundles_src/substitutes.h"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.i" path="bundles_src/substitutes.i"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.j" path="bundles_src/substitutes.j"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.k" path="bundles_src/substitutes.k"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.l" path="bundles_src/substitutes.l"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.m" path="bundles_src/substitutes.m"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.n" path="bundles_src/substitutes.n"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.p" path="bundles_src/substitutes.p"/>
-	<classpathentry kind="src" output="bundle_tests/substitutes.q" path="bundles_src/substitutes.q"/>
-	<classpathentry kind="src" output="bundle_tests/activator.error1" path="bundles_src/activator.error1"/>
-	<classpathentry kind="src" output="bundle_tests/activator.error2" path="bundles_src/activator.error2"/>
-	<classpathentry kind="src" output="bundle_tests/activator.error3" path="bundles_src/activator.error3"/>
-	<classpathentry kind="src" output="bundle_tests/activator.error4" path="bundles_src/activator.error4"/>
-	<classpathentry kind="src" output="bundle_tests/security.a" path="bundles_src/security.a"/>
-	<classpathentry kind="src" output="bundle_tests/security.a.frag.a" path="bundles_src/security.a.frag.a"/>
-	<classpathentry kind="src" output="bundle_tests/security.b" path="bundles_src/security.b"/>
-	<classpathentry kind="src" output="bundle_tests/test.filter.a" path="bundles_src/test.filter.a"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.a" path="bundles_src/test.link.a"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.a.client" path="bundles_src/test.link.a.client"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.b" path="bundles_src/test.link.b"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.b.client" path="bundles_src/test.link.b.client"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.c" path="bundles_src/test.link.c"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.c.client" path="bundles_src/test.link.c.client"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.d" path="bundles_src/test.link.d"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.e" path="bundles_src/test.link.e"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.e.client" path="bundles_src/test.link.e.client"/>
-	<classpathentry kind="src" output="bundle_tests/test.link.postponed" path="bundles_src/test.link.postponed"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug259903.a" path="bundles_src/test.bug259903.a"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug259903.a.update" path="bundles_src/test.bug259903.a.update"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug259903.b" path="bundles_src/test.bug259903.b"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug259903.c" path="bundles_src/test.bug259903.c"/>
-	<classpathentry kind="src" output="bundle_tests/test.tccl" path="bundles_src/test.tccl"/>
-	<classpathentry kind="src" output="bundle_tests/test.manifestpackage" path="bundles_src/test.manifestpackage"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug286307" path="bundles_src/test.bug286307"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug287636.a1" path="bundles_src/test.bug287636.a1"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug287636.a2" path="bundles_src/test.bug287636.a2"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug287636.b" path="bundles_src/test.bug287636.b"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug287750" path="bundles_src/test.bug287750"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug306181a" path="bundles_src/test.bug306181a"/>
-	<classpathentry kind="src" output="bundle_tests/test.bug306181b" path="bundles_src/test.bug306181b"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.osgi.tests/.cvsignore b/bundles/org.eclipse.osgi.tests/.cvsignore
deleted file mode 100644
index e1951f8..0000000
--- a/bundles/org.eclipse.osgi.tests/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-bundle_tests
diff --git a/bundles/org.eclipse.osgi.tests/.project b/bundles/org.eclipse.osgi.tests/.project
deleted file mode 100644
index 3daf4e7..0000000
--- a/bundles/org.eclipse.osgi.tests/.project
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.osgi.tests</name>
-	<comment></comment>
-	<projects>
-		<project>org.eclipse.core.runtime</project>
-		<project>org.eclipse.core.tests.harness</project>
-		<project>org.eclipse.osgi</project>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ds.core.builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index e8c8a79..0000000
--- a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 25 15:00:27 EDT 2004
-encoding/<project>=ISO-8859-1
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 3ad8b24..0000000
--- a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,350 +0,0 @@
-#Wed Feb 10 08:41:26 CST 2010
-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.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-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=error
-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.missingHashCodeMethod=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.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
-org.eclipse.jdt.core.compiler.problem.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=error
-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.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-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.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=error
-org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index d56ae86..0000000
--- a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,57 +0,0 @@
-#Tue Aug 21 11:33:29 CDT 2007
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/bundles/org.eclipse.osgi.tests/All OSGi Tests.launch b/bundles/org.eclipse.osgi.tests/All OSGi Tests.launch
deleted file mode 100644
index ebb0a67..0000000
--- a/bundles/org.eclipse.osgi.tests/All OSGi Tests.launch
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="true"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="false"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/All OSGi Tests"/>
-<booleanAttribute key="default" value="true"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/All OSGi Tests/test-workspaces"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/AutomatedTests.java"/>
-</listAttribute>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="1"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.pde.ui.launcher.PDESourceLookupDirector"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;sourceLookupDirector&gt;&#13;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.eclipse.osgi.tests&amp;quot;/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot;/&gt;&#13;&#10;&lt;container memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#13;&amp;#10;&amp;lt;default/&amp;gt;&amp;#13;&amp;#10;&quot; typeId=&quot;org.eclipse.debug.core.containerType.default&quot;/&gt;&#13;&#10;&lt;/sourceContainers&gt;&#13;&#10;&lt;/sourceLookupDirector&gt;&#13;&#10;"/>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.osgi.tests.AutomatedTests"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osgi.tests"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-XX:MaxPermSize=256m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<booleanAttribute key="run_in_ui_thread" value="true"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value=""/>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-</launchConfiguration>
diff --git a/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF
deleted file mode 100644
index 67a59c2..0000000
--- a/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,19 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Core OSGi Tests
-Bundle-SymbolicName: org.eclipse.osgi.tests;singleton:=true
-Bundle-Version: 3.6.0
-Bundle-ClassPath: osgitests.jar
-Bundle-Vendor: Eclipse.org
-Bundle-Localization: plugin
-Require-Bundle: 
- org.eclipse.core.runtime,
- org.eclipse.core.tests.harness,
- org.eclipse.test.performance,
- org.junit
-Eclipse-LazyStart: true
-Bundle-Activator: org.eclipse.osgi.tests.OSGiTestsActivator
-Export-Package: org.eclipse.osgi.tests.bundles,
- org.eclipse.osgi.tests.appadmin
-Bundle-RequiredExecutionEnvironment: J2SE-1.4
-DynamicImport-Package: ext.framework.b
diff --git a/bundles/org.eclipse.osgi.tests/about.html b/bundles/org.eclipse.osgi.tests/about.html
deleted file mode 100644
index 4602330..0000000
--- a/bundles/org.eclipse.osgi.tests/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>June 2, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">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
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/build.properties b/bundles/org.eclipse.osgi.tests/build.properties
deleted file mode 100644
index 278b774..0000000
--- a/bundles/org.eclipse.osgi.tests/build.properties
+++ /dev/null
@@ -1,345 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2006 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = *.jar,\
-               test_files/,\
-               about.html,\
-               META-INF/,\
-               test.xml,\
-               bundle_tests/*.jar,\
-               plugin.xml
-
-source.osgitests.jar = src/
-source.bundle_tests/test.jar = bundles_src/test/
-manifest.bundle_tests/test.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test2.jar = bundles_src/test2/
-manifest.bundle_tests/test2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/chain.test.jar = bundles_src/chain.test/
-manifest.bundle_tests/chain.test.jar = META-INF/MANIFEST.MF
-source.bundle_tests/chain.test.a.jar = bundles_src/chain.test.a/
-manifest.bundle_tests/chain.test.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/chain.test.b.jar = bundles_src/chain.test.b/
-manifest.bundle_tests/chain.test.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/chain.test.c.jar = bundles_src/chain.test.c/
-manifest.bundle_tests/chain.test.c.jar = META-INF/MANIFEST.MF
-source.bundle_tests/chain.test.d.jar = bundles_src/chain.test.d/
-manifest.bundle_tests/chain.test.d.jar = META-INF/MANIFEST.MF
-source.bundle_tests/circularity.test.jar = bundles_src/circularity.test/
-manifest.bundle_tests/circularity.test.jar = META-INF/MANIFEST.MF
-source.bundle_tests/circularity.test.a.jar = bundles_src/circularity.test.a/
-manifest.bundle_tests/circularity.test.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/fragment.test.attach.host.a.jar = bundles_src/fragment.test.attach.host.a/
-manifest.bundle_tests/fragment.test.attach.host.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/fragment.test.attach.host.a.v2.jar = bundles_src/fragment.test.attach.host.a.v2/
-manifest.bundle_tests/fragment.test.attach.host.a.v2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/fragment.test.attach.host.a.require.jar = bundles_src/fragment.test.attach.host.a.require/
-manifest.bundle_tests/fragment.test.attach.host.a.require.jar = META-INF/MANIFEST.MF
-source.bundle_tests/fragment.test.attach.frag.a.jar = bundles_src/fragment.test.attach.frag.a/
-manifest.bundle_tests/fragment.test.attach.frag.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/fragment.test.attach.frag.b.jar = bundles_src/fragment.test.attach.frag.b/
-manifest.bundle_tests/fragment.test.attach.frag.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/legacy.lazystart.jar = bundles_src/legacy.lazystart/
-manifest.bundle_tests/legacy.lazystart.jar = META-INF/MANIFEST.MF
-source.bundle_tests/legacy.lazystart.a.jar = bundles_src/legacy.lazystart.a/
-manifest.bundle_tests/legacy.lazystart.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/legacy.lazystart.b.jar = bundles_src/legacy.lazystart.b/
-manifest.bundle_tests/legacy.lazystart.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/legacy.lazystart.c.jar = bundles_src/legacy.lazystart.c/
-manifest.bundle_tests/legacy.lazystart.c.jar = META-INF/MANIFEST.MF
-source.bundle_tests/osgi.lazystart.jar = bundles_src/osgi.lazystart/
-manifest.bundle_tests/osgi.lazystart.jar = META-INF/MANIFEST.MF
-source.bundle_tests/osgi.lazystart.a.jar = bundles_src/osgi.lazystart.a/
-manifest.bundle_tests/osgi.lazystart.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/osgi.lazystart.b.jar = bundles_src/osgi.lazystart.b/
-manifest.bundle_tests/osgi.lazystart.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/osgi.lazystart.c.jar = bundles_src/osgi.lazystart.c/
-manifest.bundle_tests/osgi.lazystart.c.jar = META-INF/MANIFEST.MF
-source.bundle_tests/thread.locktest.jar = bundles_src/thread.locktest/
-manifest.bundle_tests/thread.locktest.jar = META-INF/MANIFEST.MF
-source.bundle_tests/buddy.registered.a.jar = bundles_src/buddy.registered.a/
-manifest.bundle_tests/buddy.registered.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/buddy.registered.a.test1.jar = bundles_src/buddy.registered.a.test1/
-manifest.bundle_tests/buddy.registered.a.test1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/buddy.registered.a.test2.jar = bundles_src/buddy.registered.a.test2/
-manifest.bundle_tests/buddy.registered.a.test2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/buddy.dependent.a.jar = bundles_src/buddy.dependent.a/
-manifest.bundle_tests/buddy.dependent.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/buddy.dependent.a.test1.jar = bundles_src/buddy.dependent.a.test1/
-manifest.bundle_tests/buddy.dependent.a.test1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/buddy.dependent.a.test2.jar = bundles_src/buddy.dependent.a.test2/
-manifest.bundle_tests/buddy.dependent.a.test2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/nativetest.a1.jar = bundles_src/nativetest.a1/
-manifest.bundle_tests/nativetest.a1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/nativetest.a2.jar = bundles_src/nativetest.a2/
-manifest.bundle_tests/nativetest.a2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/nativetest.b1.jar = bundles_src/nativetest.b1/
-manifest.bundle_tests/nativetest.b1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/nativetest.b2.jar = bundles_src/nativetest.b2/
-manifest.bundle_tests/nativetest.b2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/nativetest.c.jar = bundles_src/nativetest.c/
-manifest.bundle_tests/nativetest.c.jar = META-INF/MANIFEST.MF
-source.bundle_tests/nativetest.d.jar = bundles_src/nativetest.d/
-manifest.bundle_tests/nativetest.d.jar = META-INF/MANIFEST.MF
-source.bundle_tests/host.multiple.exports.jar = bundles_src/host.multiple.exports/
-manifest.bundle_tests/host.multiple.exports.jar = META-INF/MANIFEST.MF
-source.bundle_tests/frag.multiple.exports.jar = bundles_src/frag.multiple.exports/
-manifest.bundle_tests/frag.multiple.exports.jar = META-INF/MANIFEST.MF
-source.bundle_tests/client1.multiple.exports.jar =bundles_src/client1.multiple.exports/
-manifest.bundle_tests/client1.multiple.exports.jar = META-INF/MANIFEST.MF
-source.bundle_tests/client2.multiple.exports.jar = bundles_src/client2.multiple.exports/
-manifest.bundle_tests/client2.multiple.exports.jar = META-INF/MANIFEST.MF
-source.bundle_tests/xfriends.test1.jar = bundles_src/xfriends.test1/
-manifest.bundle_tests/xfriends.test1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/xfriends.test2.jar = bundles_src/xfriends.test2/
-manifest.bundle_tests/xfriends.test2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/xfriends.test3.jar = bundles_src/xfriends.test3/
-manifest.bundle_tests/xfriends.test3.jar = META-INF/MANIFEST.MF
-source.bundle_tests/ext.framework.a.jar = bundles_src/ext.framework.a/
-manifest.bundle_tests/ext.framework.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/ext.framework.a.importer.jar = bundles_src/ext.framework.a.importer/
-manifest.bundle_tests/ext.framework.a.importer.jar = META-INF/MANIFEST.MF
-source.bundle_tests/ext.framework.a.requires.jar = bundles_src/ext.framework.a.requires/
-manifest.bundle_tests/ext.framework.a.requires.jar = META-INF/MANIFEST.MF
-source.bundle_tests/ext.framework.b.jar = bundles_src/ext.framework.b/
-manifest.bundle_tests/ext.framework.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/ext.extclasspath.a.jar = bundles_src/ext.extclasspath.a/
-manifest.bundle_tests/ext.extclasspath.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/ext.extclasspath.a.importer.jar = bundles_src/ext.extclasspath.a.importer/
-manifest.bundle_tests/ext.extclasspath.a.importer.jar = META-INF/MANIFEST.MF
-source.bundle_tests/exporter.importer1.jar = bundles_src/exporter.importer1/
-manifest.bundle_tests/exporter.importer1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/exporter.importer2.jar = bundles_src/exporter.importer2/
-manifest.bundle_tests/exporter.importer2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/exporter.importer3.jar = bundles_src/exporter.importer3/
-manifest.bundle_tests/exporter.importer3.jar = META-INF/MANIFEST.MF
-source.bundle_tests/exporter.importer4.jar = bundles_src/exporter.importer4/
-manifest.bundle_tests/exporter.importer4.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug235958.x.jar = bundles_src/test.bug235958.x/
-manifest.bundle_tests/test.bug235958.x.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug235958.y.jar = bundles_src/test.bug235958.y/
-manifest.bundle_tests/test.bug235958.y.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.fragment1.jar = bundles_src/test.fragment1/
-manifest.bundle_tests/test.fragment1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.fragment2.jar = bundles_src/test.fragment2/
-manifest.bundle_tests/test.fragment2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.fragment3.jar = bundles_src/test.fragment3/
-manifest.bundle_tests/test.fragment3.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.fragment4.jar = bundles_src/test.fragment4/
-manifest.bundle_tests/test.fragment4.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.fragment5.jar = bundles_src/test.fragment5/
-manifest.bundle_tests/test.fragment5.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.a.jar = bundles_src/substitutes.a/
-manifest.bundle_tests/substitutes.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.a.frag.jar = bundles_src/substitutes.a.frag/
-manifest.bundle_tests/substitutes.a.frag.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.b.jar = bundles_src/substitutes.b/
-manifest.bundle_tests/substitutes.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.b.frag.jar = bundles_src/substitutes.b.frag/
-manifest.bundle_tests/substitutes.b.frag.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.c.jar = bundles_src/substitutes.c/
-manifest.bundle_tests/substitutes.c.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.d.jar = bundles_src/substitutes.d/
-manifest.bundle_tests/substitutes.d.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.e.jar = bundles_src/substitutes.e/
-manifest.bundle_tests/substitutes.e.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.f.jar = bundles_src/substitutes.f/
-manifest.bundle_tests/substitutes.f.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.g.jar = bundles_src/substitutes.g/
-manifest.bundle_tests/substitutes.g.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.h.jar = bundles_src/substitutes.h/
-manifest.bundle_tests/substitutes.h.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.i.jar = bundles_src/substitutes.i/
-manifest.bundle_tests/substitutes.i.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.j.jar = bundles_src/substitutes.j/
-manifest.bundle_tests/substitutes.j.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.k.jar = bundles_src/substitutes.k/
-manifest.bundle_tests/substitutes.k.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.l.jar = bundles_src/substitutes.l/
-manifest.bundle_tests/substitutes.l.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.m.jar = bundles_src/substitutes.m/
-manifest.bundle_tests/substitutes.m.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.n.jar = bundles_src/substitutes.n/
-manifest.bundle_tests/substitutes.n.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.p.jar = bundles_src/substitutes.p/
-manifest.bundle_tests/substitutes.p.jar = META-INF/MANIFEST.MF
-source.bundle_tests/substitutes.q.jar = bundles_src/substitutes.q/
-manifest.bundle_tests/substitutes.q.jar = META-INF/MANIFEST.MF
-source.bundle_tests/activator.error1.jar = bundles_src/activator.error1/
-manifest.bundle_tests/activator.error1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/activator.error2.jar = bundles_src/activator.error2/
-manifest.bundle_tests/activator.error2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/activator.error3.jar = bundles_src/activator.error3/
-manifest.bundle_tests/activator.error3.jar = META-INF/MANIFEST.MF
-source.bundle_tests/activator.error4.jar = bundles_src/activator.error4/
-manifest.bundle_tests/activator.error4.jar = META-INF/MANIFEST.MF
-source.bundle_tests/security.a.jar = bundles_src/security.a/
-manifest.bundle_tests/security.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/security.a.frag.a.jar = bundles_src/security.a.frag.a/
-manifest.bundle_tests/security.a.frag.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/security.b.jar = bundles_src/security.b/
-manifest.bundle_tests/security.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.filter.a.jar = bundles_src/test.filter.a/
-manifest.bundle_tests/test.filter.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.a.jar = bundles_src/test.link.a/
-manifest.bundle_tests/test.link.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.a.client.jar = bundles_src/test.link.a.client/
-manifest.bundle_tests/test.link.a.client.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.b.jar = bundles_src/test.link.b/
-manifest.bundle_tests/test.link.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.b.client.jar = bundles_src/test.link.b.client/
-manifest.bundle_tests/test.link.b.client.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.c.jar = bundles_src/test.link.c/
-manifest.bundle_tests/test.link.c.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.c.client.jar = bundles_src/test.link.c.client/
-manifest.bundle_tests/test.link.c.client.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.d.jar = bundles_src/test.link.d/
-manifest.bundle_tests/test.link.d.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.e.jar = bundles_src/test.link.e/
-manifest.bundle_tests/test.link.e.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.e.client.jar = bundles_src/test.link.e.client/
-manifest.bundle_tests/test.link.e.client.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.link.postponed.jar = bundles_src/test.link.postponed/
-manifest.bundle_tests/test.link.postponed.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug259903.a.jar = bundles_src/test.bug259903.a/
-manifest.bundle_tests/test.bug259903.a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug259903.a.update.jar = bundles_src/test.bug259903.a.update/
-manifest.bundle_tests/test.bug259903.a.update.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug259903.b.jar = bundles_src/test.bug259903.b/
-manifest.bundle_tests/test.bug259903.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug259903.c.jar = bundles_src/test.bug259903.c/
-manifest.bundle_tests/test.bug259903.c.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.tccl.jar = bundles_src/test.tccl/
-manifest.bundle_tests/test.tccl.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.manifestpackage.jar = bundles_src/test.manifestpackage/
-manifest.bundle_tests/test.manifestpackage.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug286307.jar = bundles_src/test.bug286307/
-manifest.bundle_tests/test.bug286307.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug287636.a1.jar = bundles_src/test.bug287636.a1/
-manifest.bundle_tests/test.bug287636.a1.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug287636.a2.jar = bundles_src/test.bug287636.a2/
-manifest.bundle_tests/test.bug287636.a2.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug287636.b.jar = bundles_src/test.bug287636.b/
-manifest.bundle_tests/test.bug287636.b.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug287750.jar = bundles_src/test.bug287750/
-manifest.bundle_tests/test.bug287750.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug306181a.jar = bundles_src/test.bug306181a/
-manifest.bundle_tests/test.bug306181a.jar = META-INF/MANIFEST.MF
-source.bundle_tests/test.bug306181b.jar = bundles_src/test.bug306181b/
-manifest.bundle_tests/test.bug306181b.jar = META-INF/MANIFEST.MF
-
-jars.compile.order = bundle_tests/ext.framework.b.jar,\
-                     osgitests.jar,\
-                     bundle_tests/test.jar,\
-                     bundle_tests/test2.jar,\
-                     bundle_tests/chain.test.d.jar,\
-                     bundle_tests/chain.test.c.jar,\
-                     bundle_tests/chain.test.b.jar,\
-                     bundle_tests/chain.test.a.jar,\
-                     bundle_tests/chain.test.jar,\
-                     bundle_tests/circularity.test.a.jar,\
-                     bundle_tests/circularity.test.jar,\
-                     bundle_tests/fragment.test.attach.host.a.jar,\
-                     bundle_tests/fragment.test.attach.host.a.v2.jar,\
-                     bundle_tests/fragment.test.attach.host.a.require.jar,\
-                     bundle_tests/fragment.test.attach.frag.a.jar,\
-                     bundle_tests/fragment.test.attach.frag.b.jar,\
-                     bundle_tests/legacy.lazystart.a.jar,\
-                     bundle_tests/legacy.lazystart.b.jar,\
-                     bundle_tests/legacy.lazystart.c.jar,\
-                     bundle_tests/legacy.lazystart.jar,\
-                     bundle_tests/osgi.lazystart.a.jar,\
-                     bundle_tests/osgi.lazystart.b.jar,\
-                     bundle_tests/osgi.lazystart.c.jar,\
-                     bundle_tests/osgi.lazystart.jar,\
-                     bundle_tests/thread.locktest.jar,\
-                     bundle_tests/buddy.registered.a.jar,\
-                     bundle_tests/buddy.registered.a.test1.jar,\
-                     bundle_tests/buddy.registered.a.test2.jar,\
-                     bundle_tests/buddy.dependent.a.jar,\
-                     bundle_tests/buddy.dependent.a.test1.jar,\
-                     bundle_tests/buddy.dependent.a.test2.jar,\
-                     bundle_tests/nativetest.a1.jar,\
-                     bundle_tests/nativetest.a2.jar,\
-                     bundle_tests/nativetest.b1.jar,\
-                     bundle_tests/nativetest.b2.jar,\
-                     bundle_tests/nativetest.c.jar,\
-                     bundle_tests/nativetest.d.jar,\
-                     bundle_tests/host.multiple.exports.jar,\
-                     bundle_tests/frag.multiple.exports.jar,\
-                     bundle_tests/client1.multiple.exports.jar,\
-                     bundle_tests/client2.multiple.exports.jar,\
-                     bundle_tests/xfriends.test1.jar,\
-                     bundle_tests/xfriends.test2.jar,\
-                     bundle_tests/xfriends.test3.jar,\
-                     bundle_tests/ext.framework.a.jar,\
-                     bundle_tests/ext.framework.a.importer.jar,\
-                     bundle_tests/ext.framework.a.requires.jar,\
-                     bundle_tests/ext.extclasspath.a.jar,\
-                     bundle_tests/ext.extclasspath.a.importer.jar,\
-                     bundle_tests/exporter.importer1.jar,\
-                     bundle_tests/exporter.importer2.jar,\
-                     bundle_tests/exporter.importer3.jar,\
-                     bundle_tests/exporter.importer4.jar,\
-                     bundle_tests/test.fragment1.jar,\
-                     bundle_tests/test.fragment2.jar,\
-                     bundle_tests/test.fragment3.jar,\
-                     bundle_tests/test.fragment4.jar,\
-                     bundle_tests/test.fragment5.jar,\
-                     bundle_tests/test.bug235958.x,\
-                     bundle_tests/test.bug235958.y,\
-                     bundle_tests/substitutes.a.jar,\
-                     bundle_tests/substitutes.a.frag.jar,\
-                     bundle_tests/substitutes.b.jar,\
-                     bundle_tests/substitutes.b.frag.jar,\
-                     bundle_tests/substitutes.c.jar,\
-                     bundle_tests/substitutes.d.jar,\
-                     bundle_tests/substitutes.e.jar,\
-                     bundle_tests/substitutes.f.jar,\
-                     bundle_tests/substitutes.g.jar,\
-                     bundle_tests/substitutes.h.jar,\
-                     bundle_tests/substitutes.i.jar,\
-                     bundle_tests/substitutes.j.jar,\
-                     bundle_tests/substitutes.k.jar,\
-                     bundle_tests/substitutes.l.jar,\
-                     bundle_tests/substitutes.m.jar,\
-                     bundle_tests/substitutes.n.jar,\
-                     bundle_tests/substitutes.p.jar,\
-                     bundle_tests/substitutes.q.jar,\
-                     bundle_tests/activator.error1,\
-                     bundle_tests/activator.error2,\
-                     bundle_tests/activator.error3,\
-                     bundle_tests/activator.error4,\
-                     bundle_tests/security.a.jar,\
-                     bundle_tests/security.a.frag.a.jar,\
-                     bundle_tests/security.b.jar,\
-                     bundle_tests/test.filter.a.jar,\
-                     bundle_tests/test.link.a.jar,\
-                     bundle_tests/test.link.a.client.jar,\
-                     bundle_tests/test.link.b.jar,\
-                     bundle_tests/test.link.b.client.jar,\
-                     bundle_tests/test.link.c.jar,\
-                     bundle_tests/test.link.c.client.jar,\
-                     bundle_tests/test.link.d.jar,\
-                     bundle_tests/test.link.e.jar,\
-                     bundle_tests/test.link.e.client.jar,\
-                     bundle_tests/test.link.postponed.jar,\
-                     bundle_tests/test.bug259903.a.jar,\
-                     bundle_tests/test.bug259903.a.update.jar,\
-                     bundle_tests/test.bug259903.b.jar,\
-                     bundle_tests/test.bug259903.c.jar,\
-                     bundle_tests/test.tccl.jar,\
-                     bundle_tests/test.manifestpackage.jar,\
-                     bundle_tests/test.bug286307.jar,\
-                     bundle_tests/test.bug287636.a1.jar,\
-                     bundle_tests/test.bug287636.a2.jar,\
-                     bundle_tests/test.bug287636.b.jar,\
-                     bundle_tests/test.bug287750.jar,\
-                     bundle_tests/test.bug306181a.jar,\
-                     bundle_tests/test.bug306181b.jar
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/META-INF/MANIFEST.MF
deleted file mode 100644
index 01f39f2..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  activator.error1
-Bundle-SymbolicName: activator.error1
-Bundle-Version: 1.0.0
-Bundle-Activator: activator.error1.Activator
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/activator/error1/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/activator/error1/Activator.java
deleted file mode 100644
index 3ccacc2..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error1/activator/error1/Activator.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package activator.error1;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public Activator() {
-		throw new RuntimeException();
-	}
-
-	public void start(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/META-INF/MANIFEST.MF
deleted file mode 100644
index a21e36e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  activator.error2
-Bundle-SymbolicName: activator.error2
-Bundle-Version: 1.0.0
-Bundle-Activator: activator.error2.Activator
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/activator/error2/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/activator/error2/Activator.java
deleted file mode 100644
index 68e5a6c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error2/activator/error2/Activator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package activator.error2;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		throw new RuntimeException();
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/META-INF/MANIFEST.MF
deleted file mode 100644
index 8bb4325..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  activator.error3
-Bundle-SymbolicName: activator.error3
-Bundle-Version: 1.0.0
-Bundle-Activator: activator.error3.Activator
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/activator/error3/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/activator/error3/Activator.java
deleted file mode 100644
index 95ad1a0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error3/activator/error3/Activator.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package activator.error3;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		// nothing
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		throw new RuntimeException();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error4/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/activator.error4/META-INF/MANIFEST.MF
deleted file mode 100644
index dcaf6a4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/activator.error4/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  activator.error1
-Bundle-SymbolicName: activator.error1
-Bundle-Version: 1.0.0
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/META-INF/MANIFEST.MF
deleted file mode 100644
index ebb3b22..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: buddy.dependent.a.test1
-Bundle-SymbolicName: buddy.dependent.a.test1
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Require-Bundle: buddy.dependent.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/buddy/dependent/a/test1/ATest.java b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/buddy/dependent/a/test1/ATest.java
deleted file mode 100644
index 6709bc4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/buddy/dependent/a/test1/ATest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package buddy.dependent.a.test1;
-
-public class ATest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test.txt
deleted file mode 100644
index 6bddbfe..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.dependent.a.test1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test1.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test1.txt
deleted file mode 100644
index 6bddbfe..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test1.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.dependent.a.test1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/META-INF/MANIFEST.MF
deleted file mode 100644
index c6dc34a..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: buddy.dependent.a.test2
-Bundle-SymbolicName: buddy.dependent.a.test2
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Require-Bundle: buddy.dependent.a.test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/buddy/dependent/a/test2/ATest.java b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/buddy/dependent/a/test2/ATest.java
deleted file mode 100644
index 6eac558..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/buddy/dependent/a/test2/ATest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package buddy.dependent.a.test2;
-
-public class ATest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test.txt
deleted file mode 100644
index d629a67..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.dependent.a.test2
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test2.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test2.txt
deleted file mode 100644
index d629a67..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test2/resources/test2.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.dependent.a.test2
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/META-INF/MANIFEST.MF
deleted file mode 100644
index a3470ad..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: buddy.dependent.a
-Bundle-SymbolicName: buddy.dependent.a
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Eclipse-BuddyPolicy: dependent
-Export-Package: resources
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/resources/test.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/resources/test.txt
deleted file mode 100644
index 6648bd1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a/resources/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.dependent.a
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/META-INF/MANIFEST.MF
deleted file mode 100644
index 6221703..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: buddy.registered.a.test1
-Bundle-SymbolicName: buddy.registered.a.test1
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Require-Bundle: buddy.registered.a
-Eclipse-RegisterBuddy: buddy.registered.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/buddy/registered/a/test1/ATest.java b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/buddy/registered/a/test1/ATest.java
deleted file mode 100644
index 195d553..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/buddy/registered/a/test1/ATest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package buddy.registered.a.test1;
-
-public class ATest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test.txt
deleted file mode 100644
index ac6c013..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.registered.a.test1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test1.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test1.txt
deleted file mode 100644
index ac6c013..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test1/resources/test1.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.registered.a.test1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/META-INF/MANIFEST.MF
deleted file mode 100644
index 4b0fed0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: buddy.registered.a.test2
-Bundle-SymbolicName: buddy.registered.a.test2
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Require-Bundle: buddy.registered.a
-Eclipse-RegisterBuddy: buddy.registered.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/buddy/registered/a/test2/ATest.java b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/buddy/registered/a/test2/ATest.java
deleted file mode 100644
index 14e3e3c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/buddy/registered/a/test2/ATest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package buddy.registered.a.test2;
-
-public class ATest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test.txt
deleted file mode 100644
index b233054..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.registered.a.test2
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test2.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test2.txt
deleted file mode 100644
index b233054..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a.test2/resources/test2.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.registered.a.test2
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 386caf5..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: buddy.registered.a
-Bundle-SymbolicName: buddy.registered.a
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Eclipse-BuddyPolicy: registered
-Export-Package: resources
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/resources/test.txt b/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/resources/test.txt
deleted file mode 100644
index 9b8414b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/buddy.registered.a/resources/test.txt
+++ /dev/null
@@ -1 +0,0 @@
-buddy.registered.a
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 756ea91..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Chain test b
-Bundle-SymbolicName: chain.test.a
-Bundle-Version: 1.0.0
-Bundle-Activator: chain.test.a.Activator
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0",
- chain.test.b,
- chain.test.c
-Export-Package: chain.test.a
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AChain.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AChain.java
deleted file mode 100644
index b045bf5..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AChain.java
+++ /dev/null
@@ -1,17 +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 chain.test.a;
-
-import chain.test.b.BChain;
-
-public class AChain extends BChain{
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain1.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain1.java
deleted file mode 100644
index af1dd19..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain1.java
+++ /dev/null
@@ -1,18 +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 chain.test.a;
-
-import chain.test.b.BMultiChain1;
-import chain.test.c.CMultipleChain1;
-
-public interface AMultiChain1 extends AMultiChain2, CMultipleChain1, BMultiChain1 {
-//
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain2.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain2.java
deleted file mode 100644
index a923e71..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/AMultiChain2.java
+++ /dev/null
@@ -1,16 +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 chain.test.a;
-
-
-public interface AMultiChain2 {
-//
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/Activator.java
deleted file mode 100644
index 98f2da3..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.a/chain/test/a/Activator.java
+++ /dev/null
@@ -1,26 +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 chain.test.a;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/META-INF/MANIFEST.MF
deleted file mode 100644
index d8c70c4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Chain test b
-Bundle-SymbolicName: chain.test.b
-Bundle-Version: 1.0.0
-Bundle-Activator: chain.test.b.Activator
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0",
- chain.test.c,
- chain.test.d
-Export-Package: chain.test.b
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/Activator.java
deleted file mode 100644
index 366b33b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/Activator.java
+++ /dev/null
@@ -1,26 +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 chain.test.b;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BChain.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BChain.java
deleted file mode 100644
index 1ee6262..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BChain.java
+++ /dev/null
@@ -1,15 +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 chain.test.b;
-
-public class BChain {
-//
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain1.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain1.java
deleted file mode 100644
index 12226f6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain1.java
+++ /dev/null
@@ -1,16 +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 chain.test.b;
-
-
-public interface BMultiChain1 {
-//
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain2.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain2.java
deleted file mode 100644
index e87e869..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.b/chain/test/b/BMultiChain2.java
+++ /dev/null
@@ -1,18 +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 chain.test.b;
-
-import chain.test.c.CMultipleChain2;
-import chain.test.d.DMultipleChain1;
-
-public interface BMultiChain2 extends CMultipleChain2, DMultipleChain1{
-//
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/META-INF/MANIFEST.MF
deleted file mode 100644
index ce19453..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Chain test
-Bundle-SymbolicName: chain.test.c
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Bundle-Activator: chain.test.c.Activator
-Export-Package: chain.test.c
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0",
- chain.test.d
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/Activator.java
deleted file mode 100644
index cc108ac..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/Activator.java
+++ /dev/null
@@ -1,26 +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 chain.test.c;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain1.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain1.java
deleted file mode 100644
index d93bd6b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain1.java
+++ /dev/null
@@ -1,15 +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 chain.test.c;
-
-public interface CMultipleChain1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain2.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain2.java
deleted file mode 100644
index a81b787..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.c/chain/test/c/CMultipleChain2.java
+++ /dev/null
@@ -1,15 +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 chain.test.c;
-
-public interface CMultipleChain2 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/META-INF/MANIFEST.MF
deleted file mode 100644
index a8ff5fb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Chain test
-Bundle-SymbolicName: chain.test.d
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Bundle-Activator: chain.test.d.Activator
-Export-Package: chain.test.d
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/Activator.java
deleted file mode 100644
index efe9996..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/Activator.java
+++ /dev/null
@@ -1,26 +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 chain.test.d;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/DMultipleChain1.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/DMultipleChain1.java
deleted file mode 100644
index 2b389d6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test.d/chain/test/d/DMultipleChain1.java
+++ /dev/null
@@ -1,15 +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 chain.test.d;
-
-public interface DMultipleChain1 {
-//
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/META-INF/MANIFEST.MF
deleted file mode 100644
index 4dfa9ef..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Chain test
-Bundle-SymbolicName: chain.test
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: chain.test.a,
- chain.test.b,
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: chain.test.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/Activator.java
deleted file mode 100644
index a6296a1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/Activator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package chain.test;
-
-import chain.test.b.BMultiChain1;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator, SynchronousBundleListener {
-
-	public void start(BundleContext context) throws Exception {
-		if (context.getProperty("test.bug300692") == null)
-			return;
-		if (context.getProperty("test.bug300692.listener") != null) {
-			context.addBundleListener(this);
-		}
-
-		new TestMultiChain();
-		context.removeBundleListener(this);
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// Nothing
-	}
-
-	public void bundleChanged(BundleEvent event) {
-		if (event.getType() != BundleEvent.LAZY_ACTIVATION)
-			return;
-		Class clazz = BMultiChain1.class;
-		System.out.println(clazz.getName());
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestMultiChain.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestMultiChain.java
deleted file mode 100644
index bf2b425..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestMultiChain.java
+++ /dev/null
@@ -1,18 +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 chain.test;
-
-import chain.test.a.AMultiChain1;
-import chain.test.b.BMultiChain2;
-
-public class TestMultiChain implements AMultiChain1, BMultiChain2 {
-//
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestSingleChain.java b/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestSingleChain.java
deleted file mode 100644
index 0c13142..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/chain/test/TestSingleChain.java
+++ /dev/null
@@ -1,22 +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 chain.test;
-
-import chain.test.a.AChain;
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-
-public class TestSingleChain implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		return new AChain();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/META-INF/MANIFEST.MF
deleted file mode 100644
index ed87c2e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Circularity Test A
-Bundle-SymbolicName: circularity.test.a
-Bundle-Version: 1.0.0
-Bundle-Activator: circularity.test.a.Activator
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Export-Package: circularity.test.a
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/Activator.java
deleted file mode 100644
index 3cc302d..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/Activator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package circularity.test.a;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) {
-		try {
-			AbstractBundleTests.installer.getBundle("circularity.test").loadClass("circularity.test.TestCircularity");
-			AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/ICircularity.java b/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/ICircularity.java
deleted file mode 100644
index 0528bab..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test.a/circularity/test/a/ICircularity.java
+++ /dev/null
@@ -1,15 +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 circularity.test.a;
-
-public interface ICircularity {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/META-INF/MANIFEST.MF
deleted file mode 100644
index 1f6b8ef..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Circularity Test
-Bundle-SymbolicName: circularity.test
-Bundle-Version: 1.0.0
-Bundle-Activator: circularity.test.Activator
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0",
- circularity.test.a
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/Activator.java
deleted file mode 100644
index 154109b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/Activator.java
+++ /dev/null
@@ -1,26 +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 circularity.test;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/TestCircularity.java b/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/TestCircularity.java
deleted file mode 100644
index 4f938bf..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/circularity.test/circularity/test/TestCircularity.java
+++ /dev/null
@@ -1,17 +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 circularity.test;
-
-import circularity.test.a.ICircularity;
-
-public class TestCircularity implements ICircularity {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/META-INF/MANIFEST.MF
deleted file mode 100644
index 72374db..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: client1.multiple.exports
-Bundle-SymbolicName: client1.multiple.exports
-Bundle-Version: 1.0.0
-Bundle-Activator: client1.multiple.exports.Activator
-Import-Package: host.multiple.exports,
- host.multiple.exports.onlyone,
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/client1/multiple/exports/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/client1/multiple/exports/Activator.java
deleted file mode 100644
index ff63534..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/client1.multiple.exports/client1/multiple/exports/Activator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package client1.multiple.exports;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PublicClass1").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PublicClass2").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PrivateClass1").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent("success"); //$NON-NLS-1$
-		}
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PrivateClass2").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent("success"); //$NON-NLS-1$
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/META-INF/MANIFEST.MF
deleted file mode 100644
index 0bf4b97..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: client2.multiple.exports
-Bundle-SymbolicName: client2.multiple.exports
-Bundle-Version: 1.0.0
-Bundle-Activator: client2.multiple.exports.Activator
-Import-Package: host.multiple.exports; scope="private",
- host.multiple.exports.onlyone,
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/client2/multiple/exports/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/client2/multiple/exports/Activator.java
deleted file mode 100644
index 35db4f4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/client2.multiple.exports/client2/multiple/exports/Activator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package client2.multiple.exports;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PublicClass1").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PublicClass2").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PrivateClass1").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("host.multiple.exports.PrivateClass2").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/META-INF/MANIFEST.MF
deleted file mode 100644
index 9ddeeb5..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  exporter.importer1
-Bundle-SymbolicName: exporter.importer1
-Bundle-Version: 1.0.0
-Export-Package: exporter.importer.test; version=1.0
-Import-Package: exporter.importer.test; version=1.0
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/exporter/importer/test/Test1.java b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/exporter/importer/test/Test1.java
deleted file mode 100644
index 7312de5..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer1/exporter/importer/test/Test1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package exporter.importer.test;
-
-public class Test1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/META-INF/MANIFEST.MF
deleted file mode 100644
index 5724b050..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  exporter.importer2
-Bundle-SymbolicName: exporter.importer2
-Bundle-Version: 1.0.0
-Export-Package: exporter.importer.test; version=1.0
-Import-Package: exporter.importer.test; version=1.0
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/exporter/importer/test/Test2.java b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/exporter/importer/test/Test2.java
deleted file mode 100644
index 5e61679..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer2/exporter/importer/test/Test2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package exporter.importer.test;
-
-public class Test2 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/META-INF/MANIFEST.MF
deleted file mode 100644
index 625a10a..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  exporter.importer3
-Bundle-SymbolicName: exporter.importer3
-Bundle-Version: 1.0.0
-Export-Package: exporter.importer.test; version=1.0
-Import-Package: exporter.importer.test; version=1.0,
- org.osgi.framework
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: exporter.importer.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/Activator.java
deleted file mode 100644
index d8f33f1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/Activator.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package exporter.importer;
-import exporter.importer.test.Test3;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		new Test3();
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/test/Test3.java b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/test/Test3.java
deleted file mode 100644
index 3606f99..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer3/exporter/importer/test/Test3.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package exporter.importer.test;
-
-public class Test3 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer4/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer4/META-INF/MANIFEST.MF
deleted file mode 100644
index b09ef2a..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/exporter.importer4/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  exporter.importer4
-Bundle-SymbolicName: exporter.importer4
-Bundle-Version: 1.0.0
-Import-Package: exporter.importer.test; version=1.0
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/META-INF/MANIFEST.MF
deleted file mode 100644
index 10f2e2e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  ext.extclasspath.a.importer
-Bundle-SymbolicName: ext.extclasspath.a.importer
-Bundle-Version: 1.0.0
-Import-Package: org.osgi.framework,
- org.eclipse.osgi.tests.bundles,
- ext.extclasspath.a
-Bundle-Activator: ext.extclasspath.a.importer.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/ext/extclasspath/a/importer/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/ext/extclasspath/a/importer/Activator.java
deleted file mode 100644
index 59a6ca9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a.importer/ext/extclasspath/a/importer/Activator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package ext.extclasspath.a.importer;
-
-import ext.extclasspath.a.ExtClasspathExtTest;
-import java.io.*;
-import java.net.URL;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new ExtClasspathExtTest().toString());
-		AbstractBundleTests.simpleResults.addEvent(getURLContent(this.getClass().getResource("/ext/extclasspath/a/extresource.txt"))); //$NON-NLS-1$
-	}
-
-	private String getURLContent(URL resource) throws IOException {
-		BufferedReader br = new BufferedReader(new InputStreamReader(resource.openStream()));
-		try {
-			return br.readLine();
-		} finally {
-			br.close();
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/META-INF/MANIFEST.MF
deleted file mode 100644
index f230f0c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  ext.extclasspath.a
-Bundle-SymbolicName: ext.extclasspath.a
-Bundle-Version: 1.0.0
-Fragment-Host: system.bundle; extension:=extclasspath
-Export-Package: ext.extclasspath.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/ExtClasspathExtTest.java b/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/ExtClasspathExtTest.java
deleted file mode 100644
index 4c1550e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/ExtClasspathExtTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package ext.extclasspath.a;
-
-public class ExtClasspathExtTest {
-	public String toString() {
-		return "success";
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/extresource.txt b/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/extresource.txt
deleted file mode 100644
index 2e9ba47..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.extclasspath.a/ext/extclasspath/a/extresource.txt
+++ /dev/null
@@ -1 +0,0 @@
-success
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/META-INF/MANIFEST.MF
deleted file mode 100644
index e0f78c7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  ext.framework.a.importer
-Bundle-SymbolicName: ext.framework.a.importer
-Bundle-Version: 1.0.0
-Import-Package: org.osgi.framework,
- ext.framework.a,
- org.eclipse.osgi.tests.bundles
-Bundle-Activator: ext.framework.a.importer.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/ext/framework/a/importer/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/ext/framework/a/importer/Activator.java
deleted file mode 100644
index b821d56..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.importer/ext/framework/a/importer/Activator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package ext.framework.a.importer;
-
-import ext.framework.a.FrameworkExtTest;
-import java.io.*;
-import java.net.URL;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new FrameworkExtTest().testIt("success")); //$NON-NLS-1$
-		AbstractBundleTests.simpleResults.addEvent(getURLContent(this.getClass().getResource("/ext/framework/a/fwkresource.txt"))); //$NON-NLS-1$
-	}
-
-	private String getURLContent(URL resource) throws IOException {
-		BufferedReader br = new BufferedReader(new InputStreamReader(resource.openStream()));
-		try {
-			return br.readLine();
-		} finally {
-			br.close();
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/META-INF/MANIFEST.MF
deleted file mode 100644
index 2544b3b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  ext.framework.a.requires
-Bundle-SymbolicName: ext.framework.a.requires
-Bundle-Version: 1.0.0
-Import-Package: org.eclipse.osgi.tests.bundles
-Require-Bundle: org.eclipse.osgi
-Bundle-Activator: ext.framework.a.requires.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/ext/framework/a/requires/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/ext/framework/a/requires/Activator.java
deleted file mode 100644
index 8f8041d..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a.requires/ext/framework/a/requires/Activator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package ext.framework.a.requires;
-
-import ext.framework.a.FrameworkExtTest;
-import java.io.*;
-import java.net.URL;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new FrameworkExtTest().testIt("success")); //$NON-NLS-1$
-		AbstractBundleTests.simpleResults.addEvent(getURLContent(this.getClass().getResource("/ext/framework/a/fwkresource.txt"))); //$NON-NLS-1$
-	}
-
-	private String getURLContent(URL resource) throws IOException {
-		BufferedReader br = new BufferedReader(new InputStreamReader(resource.openStream()));
-		try {
-			return br.readLine();
-		} finally {
-			br.close();
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 346e725..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  ext.framework.a
-Bundle-SymbolicName: ext.framework.a
-Bundle-Version: 1.0.0
-Fragment-Host: system.bundle; extension:=framework
-Export-Package: ext.framework.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/FrameworkExtTest.java b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/FrameworkExtTest.java
deleted file mode 100644
index c33e7a1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/FrameworkExtTest.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package ext.framework.a;
-
-public class FrameworkExtTest {
-	public String testIt(String value) {
-		return value;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/fwkresource.txt b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/fwkresource.txt
deleted file mode 100644
index 2e9ba47..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.a/ext/framework/a/fwkresource.txt
+++ /dev/null
@@ -1 +0,0 @@
-success
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/META-INF/MANIFEST.MF
deleted file mode 100644
index ad385a9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: ext.framework.b
-Bundle-SymbolicName: ext.framework.b
-Bundle-Version: 1.0.0
-Fragment-Host: system.bundle; extension:=framework
-Export-Package: ext.framework.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java b/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java
deleted file mode 100644
index 3ea5acb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/ext.framework.b/ext/framework/b/TestCondition.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package ext.framework.b;
-
-import java.util.Dictionary;
-import java.util.HashMap;
-import org.osgi.framework.Bundle;
-import org.osgi.service.condpermadmin.Condition;
-import org.osgi.service.condpermadmin.ConditionInfo;
-
-public class TestCondition implements Condition {
-
-	private final String id;
-	private final boolean mutable;
-	private boolean curMutable;
-	private final boolean postponed;
-	private boolean curPostponed;
-	private final boolean satisfied;
-	private boolean curSatisfied;
-	private final Bundle bundle;
-
-	private static final HashMap conditionIDs = new HashMap();
-
-	private TestCondition(String id, boolean mutable, boolean postponed, boolean satisfied, Bundle bundle) {
-		this.id = id;
-		this.mutable = this.curMutable = mutable;
-		this.postponed = this.curPostponed = postponed;
-		this.satisfied = this.curSatisfied = satisfied;
-		this.bundle = bundle;
-	}
-
-	static public Condition getCondition(final Bundle bundle, ConditionInfo info) {
-		if (!TestCondition.class.getName().equals(info.getType()))
-			throw new IllegalArgumentException("ConditionInfo must be of type \"" + TestCondition.class.getName() + "\""); //$NON-NLS-1$ //$NON-NLS-2$
-		String[] args = info.getArgs();
-		if (args.length != 4)
-			throw new IllegalArgumentException("Illegal number of args: " + args.length); //$NON-NLS-1$
-		String identity = args[0] + '_' + bundle.getBundleId();
-		boolean mut = Boolean.valueOf(args[1]).booleanValue();
-		boolean post = Boolean.valueOf(args[2]).booleanValue();
-		boolean sat = Boolean.valueOf(args[3]).booleanValue();
-		synchronized (conditionIDs) {
-			TestCondition condition = (TestCondition) conditionIDs.get(identity);
-			if (condition == null) {
-				condition = new TestCondition(identity, mut, post, sat, bundle);
-				conditionIDs.put(identity, condition);
-			}
-			return condition;
-		}
-	}
-
-	static public TestCondition getTestCondition(String id) {
-		synchronized (conditionIDs) {
-			return (TestCondition) conditionIDs.get(id);
-		}
-	}
-
-	static public void clearConditions() {
-		synchronized (conditionIDs) {
-			conditionIDs.clear();
-		}
-	}
-
-	public boolean isMutable() {
-		return curMutable;
-	}
-
-	public boolean isPostponed() {
-		return curPostponed;
-	}
-
-	public boolean isSatisfied() {
-		return curSatisfied;
-	}
-
-	public boolean isSatisfied(Condition[] conditions, Dictionary context) {
-		if (!isPostponed())
-			throw new IllegalStateException("Should not call isSatisfied(Condition[] conditions, Dictionary context)"); //$NON-NLS-1$
-		for (int i = 0; i < conditions.length; i++) {
-			Boolean isSatisfied = (Boolean) context.get(conditions[i]);
-			if (isSatisfied == null) {
-				isSatisfied = new Boolean(conditions[i].isSatisfied());
-				context.put(conditions[i], isSatisfied);
-			}
-			if (!isSatisfied.booleanValue())
-				return false;
-		}
-		return true;
-	}
-
-	public int hashCode() {
-		return id.hashCode();
-	}
-
-	public boolean equals(Object o) {
-		if (!(o instanceof TestCondition))
-			return false;
-		TestCondition otherCondition = (TestCondition) o;
-		return id.equals(otherCondition.id) && postponed == otherCondition.postponed && satisfied == otherCondition.satisfied && mutable == otherCondition.mutable && bundle == otherCondition.bundle;
-	}
-
-	public void setMutable(boolean mutable) {
-		this.curMutable = mutable;
-	}
-
-	public void setPostponed(boolean isPostponed) {
-		this.curPostponed = isPostponed;
-	}
-
-	public void setSatisfied(boolean isSatisfied) {
-		this.curSatisfied = isSatisfied;
-	}
-
-	public Bundle getBundle() {
-		return bundle;
-	}
-
-	public String toString() {
-		return id + '-' + postponed + '-' + mutable + '-' + satisfied;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/META-INF/MANIFEST.MF
deleted file mode 100644
index cab82b9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: frag.multiple.exports
-Bundle-SymbolicName: frag.multiple.exports
-Bundle-Version: 1.0.0
-Fragment-Host: host.multiple.exports
-Export-Package: host.multiple.exports; mandatory:="scope"; scope="private",
- host.multiple.exports.onlyone;
-  version=1.0.0;
-  include:="Public*"; 
-  exclude:="PublicExclude*";
-  uses:="host.multiple.exports";
-  mantatory:="test1";
-  test1=value;
-  test2=value
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass1.java b/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass1.java
deleted file mode 100644
index 8011da7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package host.multiple.exports;
-
-public class PrivateClass1 {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass2.java b/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass2.java
deleted file mode 100644
index 286d0e0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/frag.multiple.exports/host/multiple/exports/PrivateClass2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package host.multiple.exports;
-
-public class PrivateClass2 {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/META-INF/MANIFEST.MF
deleted file mode 100644
index b5ca89c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: fragment test frag a
-Bundle-SymbolicName: fragment.test.attach.frag.a
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Fragment-Host: fragment.test.attach.host.a; multiple-hosts:=true
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess.java b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess.java
deleted file mode 100644
index a633da8..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess.java
+++ /dev/null
@@ -1,21 +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 fragment.test.attach.host.a.internal.test;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-
-public class TestPackageAccess implements ITestRunner{
-
-	public Object testIt() throws Exception {
-		new PackageAccessTest().packageLevelAccess(TestPackageAccess.class.getName());
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess2.java b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess2.java
deleted file mode 100644
index 0f9edb7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.a/fragment/test/attach/host/a/internal/test/TestPackageAccess2.java
+++ /dev/null
@@ -1,21 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package fragment.test.attach.host.a.internal.test;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-
-public class TestPackageAccess2 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		new PackageAccessTest2().packageLevelAccess(TestPackageAccess2.class.getName());
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/META-INF/MANIFEST.MF
deleted file mode 100644
index b167ab0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: fragment test frag a
-Bundle-SymbolicName: fragment.test.attach.frag.b
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Fragment-Host: fragment.test.attach.host.a
-Bundle-ActivationPolicy: lazy
-Export-Package: fragment.test.attach.frag.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/fragment/test/attach/frag/b/Test.java b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/fragment/test/attach/frag/b/Test.java
deleted file mode 100644
index c693748..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.frag.b/fragment/test/attach/frag/b/Test.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package fragment.test.attach.frag.b;
-
-
-public class Test {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.require/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.require/META-INF/MANIFEST.MF
deleted file mode 100644
index 2f122ba..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.require/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: fragment test host a
-Bundle-SymbolicName: fragment.test.attach.host.a.require
-Bundle-Version: 1.0.0
-Bundle-ActivationPolicy: lazy
-Require-Bundle: fragment.test.attach.host.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/META-INF/MANIFEST.MF
deleted file mode 100755
index b189bf4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: fragment test host a
-Bundle-SymbolicName: fragment.test.attach.host.a
-Bundle-Version: 1.0.1
-Bundle-Activator: fragment.test.attach.host.a.Activator2
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/Activator2.java b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/Activator2.java
deleted file mode 100755
index 610e600..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/Activator2.java
+++ /dev/null
@@ -1,26 +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 fragment.test.attach.host.a;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator2 implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/internal/test/PackageAccessTest2.java b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/internal/test/PackageAccessTest2.java
deleted file mode 100755
index e91ea73..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a.v2/fragment/test/attach/host/a/internal/test/PackageAccessTest2.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package fragment.test.attach.host.a.internal.test;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-
-public class PackageAccessTest2 {
-	void packageLevelAccess(String className) {
-		AbstractBundleTests.simpleResults.addEvent(className);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 78b10d6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: fragment test host a
-Bundle-SymbolicName: fragment.test.attach.host.a
-Bundle-Version: 1.0.0
-Bundle-Activator: fragment.test.attach.host.a.Activator
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/Activator.java
deleted file mode 100644
index fac099b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/Activator.java
+++ /dev/null
@@ -1,26 +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 fragment.test.attach.host.a;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/internal/test/PackageAccessTest.java b/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/internal/test/PackageAccessTest.java
deleted file mode 100644
index 0c03996..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/fragment.test.attach.host.a/fragment/test/attach/host/a/internal/test/PackageAccessTest.java
+++ /dev/null
@@ -1,19 +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 fragment.test.attach.host.a.internal.test;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-
-public class PackageAccessTest {
-	void packageLevelAccess(String className) {
-		AbstractBundleTests.simpleResults.addEvent(className);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/META-INF/MANIFEST.MF
deleted file mode 100644
index 47670f8..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: host.multiple.exports
-Bundle-SymbolicName: host.multiple.exports
-Bundle-Version: 1.0.0
-Export-Package: host.multiple.exports; include:="Public*",
- host.multiple.exports.onlyone;
-  version=1.0.0;
-  include:="Public*"; 
-  exclude:="PublicExclude*";
-  uses:="host.multiple.exports";
-  mantatory:="test1";
-  test1=value;
-  test2=value
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass1.java b/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass1.java
deleted file mode 100644
index e701713..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package host.multiple.exports;
-
-public class PublicClass1 {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass2.java b/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass2.java
deleted file mode 100644
index 7776307..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/PublicClass2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package host.multiple.exports;
-
-public class PublicClass2 {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/onlyone/PublicClass1.java b/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/onlyone/PublicClass1.java
deleted file mode 100644
index f7df082..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/host.multiple.exports/host/multiple/exports/onlyone/PublicClass1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package host.multiple.exports.onlyone;
-
-public class PublicClass1 {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/META-INF/MANIFEST.MF
deleted file mode 100644
index fee1e22..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Legacy test
-Bundle-SymbolicName: legacy.lazystart.a
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Eclipse-LazyStart: true
-Export-Package: legacy.lazystart.a
-Bundle-Activator: legacy.lazystart.a.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/ATest.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/ATest.java
deleted file mode 100644
index 58f30cf..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/ATest.java
+++ /dev/null
@@ -1,15 +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 legacy.lazystart.a;
-
-public class ATest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/Activator.java
deleted file mode 100644
index 4a5ed5d..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.a/legacy/lazystart/a/Activator.java
+++ /dev/null
@@ -1,26 +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 legacy.lazystart.a;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/META-INF/MANIFEST.MF
deleted file mode 100644
index 9ce5e90..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Legacy test
-Bundle-SymbolicName: legacy.lazystart.b
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Eclipse-LazyStart: true; exceptions="legacy.lazystart.b.excluded.a, legacy.lazystart.b.excluded.b"
-Export-Package: legacy.lazystart.b,
- legacy.lazystart.b.excluded.a,
- legacy.lazystart.b.excluded.b
-Bundle-Activator: legacy.lazystart.b.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/Activator.java
deleted file mode 100644
index 34d0992..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/Activator.java
+++ /dev/null
@@ -1,26 +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 legacy.lazystart.b;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/BTest.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/BTest.java
deleted file mode 100644
index 56cb9fd..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/BTest.java
+++ /dev/null
@@ -1,15 +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 legacy.lazystart.b;
-
-public class BTest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/a/BAExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/a/BAExcluded.java
deleted file mode 100644
index 69233c9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/a/BAExcluded.java
+++ /dev/null
@@ -1,15 +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 legacy.lazystart.b.excluded.a;
-
-public class BAExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/b/BBExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/b/BBExcluded.java
deleted file mode 100644
index bcef7d9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.b/legacy/lazystart/b/excluded/b/BBExcluded.java
+++ /dev/null
@@ -1,15 +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 legacy.lazystart.b.excluded.b;
-
-public class BBExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/META-INF/MANIFEST.MF
deleted file mode 100644
index a830eca..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Legacy test
-Bundle-SymbolicName: legacy.lazystart.c
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Eclipse-LazyStart: false; exceptions="legacy.lazystart.c"
-Export-Package: legacy.lazystart.c,
- legacy.lazystart.c.excluded.a,
- legacy.lazystart.c.excluded.b
-Bundle-Activator: legacy.lazystart.c.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/Activator.java
deleted file mode 100644
index bf8497b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/Activator.java
+++ /dev/null
@@ -1,26 +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 legacy.lazystart.c;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/CTest.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/CTest.java
deleted file mode 100644
index 3619d68..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/CTest.java
+++ /dev/null
@@ -1,15 +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 legacy.lazystart.c;
-
-public class CTest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/a/CAExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/a/CAExcluded.java
deleted file mode 100644
index ec8ebff..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/a/CAExcluded.java
+++ /dev/null
@@ -1,15 +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 legacy.lazystart.c.excluded.a;
-
-public class CAExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/b/CBExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/b/CBExcluded.java
deleted file mode 100644
index 08d3aec..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart.c/legacy/lazystart/c/excluded/b/CBExcluded.java
+++ /dev/null
@@ -1,15 +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 legacy.lazystart.c.excluded.b;
-
-public class CBExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/META-INF/MANIFEST.MF
deleted file mode 100644
index fadb991..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Legacy test
-Bundle-SymbolicName: legacy.lazystart
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0",
- legacy.lazystart.a,
- legacy.lazystart.b,
- legacy.lazystart.b.excluded.a,
- legacy.lazystart.b.excluded.b,
- legacy.lazystart.c,
- legacy.lazystart.c.excluded.a,
- legacy.lazystart.c.excluded.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy1.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy1.java
deleted file mode 100644
index 66a77d9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy1.java
+++ /dev/null
@@ -1,24 +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 legacy.lazystart;
-
-import legacy.lazystart.c.excluded.a.CAExcluded;
-import legacy.lazystart.c.excluded.b.CBExcluded;
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-
-public class FalseExceptionLegacy1 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		new CAExcluded();
-		return new CBExcluded();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy2.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy2.java
deleted file mode 100644
index 0c04441..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/FalseExceptionLegacy2.java
+++ /dev/null
@@ -1,21 +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 legacy.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import legacy.lazystart.c.CTest;
-public class FalseExceptionLegacy2 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		return new CTest();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/SimpleLegacy.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/SimpleLegacy.java
deleted file mode 100644
index 5c4325a..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/SimpleLegacy.java
+++ /dev/null
@@ -1,22 +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 legacy.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import legacy.lazystart.a.ATest;
-
-public class SimpleLegacy implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		return new ATest();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy1.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy1.java
deleted file mode 100644
index 1b03fda..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy1.java
+++ /dev/null
@@ -1,23 +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 legacy.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import legacy.lazystart.b.excluded.a.BAExcluded;
-import legacy.lazystart.b.excluded.b.BBExcluded;
-public class TrueExceptionLegacy1 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		new BAExcluded();
-		return new BBExcluded();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy2.java b/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy2.java
deleted file mode 100644
index d6f76d4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/legacy.lazystart/legacy/lazystart/TrueExceptionLegacy2.java
+++ /dev/null
@@ -1,22 +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 legacy.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import legacy.lazystart.b.BTest;
-
-public class TrueExceptionLegacy2 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		return new BTest();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF
deleted file mode 100644
index 9a6ea26..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,53 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: NativeBundle Plug-in
-Bundle-SymbolicName: NativeBundle
-Bundle-Version: 1.0.0
-Bundle-Activator: nativetest.a1.Activator
-Bundle-Localization: plugin
-Import-Package: org.osgi.framework;version="1.3.0",
- org.eclipse.osgi.tests.bundles
-Bundle-NativeCode: nativefile1.txt;
- processor=ppc64;
- processor=ppc;
- osname=AIX,
- nativefile1.txt;
- processor=PA_RISC;
- processor=PA_RISC2.0;
- osname=HP-UX,
- nativefile1.txt;
- processor=IA64N;
- osname=HP-UX,
- nativefile1.txt;
- processor=x86;
- processor=x86_64;
- osname=Linux,
- nativefile1.txt;
- processor=ppc64;
- processor=ppc;
- osname=Linux,
- nativefile1.txt;
- processor=s390;
- processor=s390x;
- osname=Linux,
- nativefile1.txt;
- processor=Sparc;
- osname=Solaris;
- osname=SunOS,
- nativefile1.txt;
- processor=x86;
- processor=x86_64;
- osname=Windows2000;
- osname="Windows 2003";
- osname=Windows95;
- osname=Windows98;
- osname=WindowsNT;
- osname=WindowsXP;
- osname="Windows NT (unknown)";
- osname="Windows Vista";
- osname=Win32,
- nativefile1.txt;
- processor=x86;
- processor=x86_64;
- processor=ppc;
- osname=macosx
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativefile1.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativefile1.txt
deleted file mode 100644
index 56a6051..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativefile1.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativetest/a1/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativetest/a1/Activator.java
deleted file mode 100644
index 65e1929..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a1/nativetest/a1/Activator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package nativetest.a1;
-
-import java.lang.reflect.Method;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Method findLibrary = ClassLoader.class.getDeclaredMethod("findLibrary", new Class[] {String.class});
-		findLibrary.setAccessible(true);
-		AbstractBundleTests.simpleResults.addEvent(findLibrary.invoke(this.getClass().getClassLoader(), new Object[] {"nativefile1.txt"}));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF
deleted file mode 100644
index bac9f7f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,53 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: NativeBundle Plug-in
-Bundle-SymbolicName: NativeBundle
-Bundle-Version: 1.1.0
-Bundle-Activator: nativetest.a2.Activator
-Bundle-Localization: plugin
-Import-Package: org.osgi.framework;version="1.3.0",
- org.eclipse.osgi.tests.bundles
-Bundle-NativeCode: nativefile2.txt;
- processor=ppc64;
- processor=ppc;
- osname=AIX,
- nativefile2.txt;
- processor=PA_RISC;
- processor=PA_RISC2.0;
- osname=HP-UX,
- nativefile2.txt;
- processor=IA64N;
- osname=HP-UX,
- nativefile2.txt;
- processor=x86;
- processor=x86_64;
- osname=Linux,
- nativefile2.txt;
- processor=ppc64;
- processor=ppc;
- osname=Linux,
- nativefile2.txt;
- processor=s390;
- processor=s390x;
- osname=Linux,
- nativefile2.txt;
- processor=Sparc;
- osname=Solaris;
- osname=SunOS,
- nativefile2.txt;
- processor=x86;
- processor=x86_64;
- osname=Windows2000;
- osname="Windows 2003";
- osname=Windows95;
- osname=Windows98;
- osname=WindowsNT;
- osname=WindowsXP;
- osname="Windows NT (unknown)";
- osname="Windows Vista";
- osname=Win32,
- nativefile2.txt;
- processor=x86;
- processor=x86_64;
- processor=ppc;
- osname=macosx
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativefile2.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativefile2.txt
deleted file mode 100644
index 56a6051..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativefile2.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativetest/a2/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativetest/a2/Activator.java
deleted file mode 100644
index 142bcd2..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.a2/nativetest/a2/Activator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package nativetest.a2;
-
-import java.lang.reflect.Method;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Method findLibrary = ClassLoader.class.getDeclaredMethod("findLibrary", new Class[] {String.class});
-		findLibrary.setAccessible(true);
-		AbstractBundleTests.simpleResults.addEvent(findLibrary.invoke(this.getClass().getClassLoader(), new Object[] {"nativefile2.txt"}));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF
deleted file mode 100644
index e7e2ec9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,53 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: NativeBundle Plug-in
-Bundle-SymbolicName: NativeBundle
-Bundle-Version: 2.0.0
-Bundle-Activator: nativetest.b1.Activator
-Bundle-Localization: plugin
-Import-Package: org.osgi.framework;version="1.3.0",
- org.eclipse.osgi.tests.bundles
-Bundle-NativeCode: nativefile.txt;
- processor=ppc64;
- processor=ppc;
- osname=AIX,
- nativefile.txt;
- processor=PA_RISC;
- processor=PA_RISC2.0;
- osname=HP-UX,
- nativefile.txt;
- processor=IA64N;
- osname=HP-UX,
- nativefile.txt;
- processor=x86;
- processor=x86_64;
- osname=Linux,
- nativefile.txt;
- processor=ppc64;
- processor=ppc;
- osname=Linux,
- nativefile.txt;
- processor=s390;
- processor=s390x;
- osname=Linux,
- nativefile.txt;
- processor=Sparc;
- osname=Solaris;
- osname=SunOS,
- nativefile.txt;
- processor=x86;
- processor=x86_64;
- osname=Windows2000;
- osname="Windows 2003";
- osname=Windows95;
- osname=Windows98;
- osname=WindowsNT;
- osname=WindowsXP;
- osname="Windows NT (unknown)";
- osname="Windows Vista";
- osname=Win32,
- nativefile.txt;
- processor=x86;
- processor=x86_64;
- processor=ppc;
- osname=macosx
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativefile.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativefile.txt
deleted file mode 100644
index 56a6051..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativefile.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativetest/b1/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativetest/b1/Activator.java
deleted file mode 100644
index 8fd7c66..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b1/nativetest/b1/Activator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package nativetest.b1;
-
-import java.lang.reflect.Method;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Method findLibrary = ClassLoader.class.getDeclaredMethod("findLibrary", new Class[] {String.class});
-		findLibrary.setAccessible(true);
-		AbstractBundleTests.simpleResults.addEvent(findLibrary.invoke(this.getClass().getClassLoader(), new Object[] {"nativefile.txt"}));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF
deleted file mode 100644
index 8b7fd1f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,53 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: NativeBundle Plug-in
-Bundle-SymbolicName: NativeBundle
-Bundle-Version: 2.1.0
-Bundle-Activator: nativetest.b2.Activator
-Bundle-Localization: plugin
-Import-Package: org.osgi.framework;version="1.3.0",
- org.eclipse.osgi.tests.bundles
-Bundle-NativeCode: nativefile.txt;
- processor=ppc64;
- processor=ppc;
- osname=AIX,
- nativefile.txt;
- processor=PA_RISC;
- processor=PA_RISC2.0;
- osname=HP-UX,
- nativefile.txt;
- processor=IA64N;
- osname=HP-UX,
- nativefile.txt;
- processor=x86;
- processor=x86_64;
- osname=Linux,
- nativefile.txt;
- processor=ppc64;
- processor=ppc;
- osname=Linux,
- nativefile.txt;
- processor=s390;
- processor=s390x;
- osname=Linux,
- nativefile.txt;
- processor=Sparc;
- osname=Solaris;
- osname=SunOS,
- nativefile.txt;
- processor=x86;
- processor=x86_64;
- osname=Windows2000;
- osname="Windows 2003";
- osname=Windows95;
- osname=Windows98;
- osname=WindowsNT;
- osname=WindowsXP;
- osname="Windows NT (unknown)";
- osname="Windows Vista";
- osname=Win32,
- nativefile.txt;
- processor=x86;
- processor=x86_64;
- processor=ppc;
- osname=macosx
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativefile.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativefile.txt
deleted file mode 100644
index 56a6051..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativefile.txt
+++ /dev/null
@@ -1 +0,0 @@
-1
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativetest/b2/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativetest/b2/Activator.java
deleted file mode 100644
index 03610a1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.b2/nativetest/b2/Activator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package nativetest.b2;
-
-import java.lang.reflect.Method;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Method findLibrary = ClassLoader.class.getDeclaredMethod("findLibrary", new Class[] {String.class});
-		findLibrary.setAccessible(true);
-		AbstractBundleTests.simpleResults.addEvent(findLibrary.invoke(this.getClass().getClassLoader(), new Object[] {"nativefile.txt"}));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/META-INF/MANIFEST.MF
deleted file mode 100644
index 22b492c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,35 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: NativeBundle Plug-in
-Bundle-SymbolicName: nativetest.c
-Bundle-Version: 1.0.0
-Bundle-Activator: nativetest.c.Activator
-Bundle-Localization: plugin
-Import-Package: org.osgi.framework;version="1.3.0",
- org.eclipse.osgi.tests.bundles
-Bundle-NativeCode: 
- libs/test1/nativecode.txt;
-  selection-filter="(nativecodetest=1)",
- libs/test2/nativecode.txt;
-  selection-filter="(nativecodetest=1)",
- libs/test3/nativecode.txt;
-  selection-filter="(nativecodetest=1)",
- libs/test1/nativecode.txt;
-  selection-filter="(nativecodetest=2)",
- libs/test2/nativecode.txt;
-  selection-filter="(nativecodetest=2)",
- libs/test3/nativecode.txt;
-  osversion="0.0.1";
-  selection-filter="(nativecodetest=2)",
- libs/test1/nativecode.txt;
-  selection-filter="(nativecodetest=3)",
- libs/test2/nativecode.txt;
-  osversion="0.0.1";
-  language="en";
-  selection-filter="(nativecodetest=3)",
- libs/test3/nativecode.txt;
-  osversion="0.0.1";
-  language="en";
-  selection-filter="(nativecodetest=3)",
- libs/test4/nativecode.txt;
-  selection-filter="(nativecodetest=4)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test1/nativecode.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test1/nativecode.txt
deleted file mode 100644
index 8c4e7bb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test1/nativecode.txt
+++ /dev/null
@@ -1 +0,0 @@
-libs.test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test2/nativecode.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test2/nativecode.txt
deleted file mode 100644
index 4bc17ea..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test2/nativecode.txt
+++ /dev/null
@@ -1 +0,0 @@
-libs.test2
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test3/nativecode.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test3/nativecode.txt
deleted file mode 100644
index e3643f3..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/libs/test3/nativecode.txt
+++ /dev/null
@@ -1 +0,0 @@
-libs.test3
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/nativetest/c/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/nativetest/c/Activator.java
deleted file mode 100644
index 1377780..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.c/nativetest/c/Activator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package nativetest.c;
-
-import java.lang.reflect.Method;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Method findLibrary = ClassLoader.class.getDeclaredMethod("findLibrary", new Class[] {String.class});
-		findLibrary.setAccessible(true);
-		AbstractBundleTests.simpleResults.addEvent(findLibrary.invoke(this.getClass().getClassLoader(), new Object[] {"nativecode.txt"}));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/META-INF/MANIFEST.MF
deleted file mode 100644
index 9e5bd4e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,13 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: NativeBundle Plug-in
-Bundle-SymbolicName: nativetest.d
-Bundle-Version: 1.0.0
-Bundle-Activator: nativetest.d.Activator
-Bundle-Localization: plugin
-Import-Package: org.osgi.framework;version="1.3.0",
- org.eclipse.osgi.tests.bundles
-Bundle-NativeCode: 
- libs/test1/nativecode.txt;
-  selection-filter="(nativecodetest=willnotresolve)",
- *
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/libs/test1/nativecode.txt b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/libs/test1/nativecode.txt
deleted file mode 100644
index 8c4e7bb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/libs/test1/nativecode.txt
+++ /dev/null
@@ -1 +0,0 @@
-libs.test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/nativetest/d/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/nativetest/d/Activator.java
deleted file mode 100644
index 129c2b1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/nativetest.d/nativetest/d/Activator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package nativetest.d;
-
-import java.lang.reflect.Method;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Method findLibrary = ClassLoader.class.getDeclaredMethod("findLibrary", new Class[] {String.class});
-		findLibrary.setAccessible(true);
-		AbstractBundleTests.simpleResults.addEvent(findLibrary.invoke(this.getClass().getClassLoader(), new Object[] {"nativecode.txt"}));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 1efc106..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: osgi test
-Bundle-SymbolicName: osgi.lazystart.a
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
-Export-Package: osgi.lazystart.a
-Bundle-Activator: osgi.lazystart.a.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/ATest.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/ATest.java
deleted file mode 100644
index a4fc515..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/ATest.java
+++ /dev/null
@@ -1,15 +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 osgi.lazystart.a;
-
-public class ATest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/Activator.java
deleted file mode 100644
index ded1d41..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.a/osgi/lazystart/a/Activator.java
+++ /dev/null
@@ -1,26 +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 osgi.lazystart.a;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/META-INF/MANIFEST.MF
deleted file mode 100644
index e9ed6af..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: osgi test
-Bundle-SymbolicName: osgi.lazystart.b
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy; exclude:="osgi.lazystart.b.excluded.a, osgi.lazystart.b.excluded.b"
-Export-Package: osgi.lazystart.b,
- osgi.lazystart.b.excluded.a,
- osgi.lazystart.b.excluded.b
-Bundle-Activator: osgi.lazystart.b.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/Activator.java
deleted file mode 100644
index 5ec97c8..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/Activator.java
+++ /dev/null
@@ -1,26 +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 osgi.lazystart.b;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/BTest.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/BTest.java
deleted file mode 100644
index 55ff033..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/BTest.java
+++ /dev/null
@@ -1,15 +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 osgi.lazystart.b;
-
-public class BTest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/a/BAExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/a/BAExcluded.java
deleted file mode 100644
index e04bf93..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/a/BAExcluded.java
+++ /dev/null
@@ -1,15 +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 osgi.lazystart.b.excluded.a;
-
-public class BAExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/b/BBExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/b/BBExcluded.java
deleted file mode 100644
index 131df8f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.b/osgi/lazystart/b/excluded/b/BBExcluded.java
+++ /dev/null
@@ -1,15 +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 osgi.lazystart.b.excluded.b;
-
-public class BBExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/META-INF/MANIFEST.MF
deleted file mode 100644
index 98891ce..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: osgi test
-Bundle-SymbolicName: osgi.lazystart.c
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy; include:="osgi.lazystart.c"
-Export-Package: osgi.lazystart.c,
- osgi.lazystart.c.excluded.a,
- osgi.lazystart.c.excluded.b
-Bundle-Activator: osgi.lazystart.c.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/Activator.java
deleted file mode 100644
index 0026b77..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/Activator.java
+++ /dev/null
@@ -1,26 +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 osgi.lazystart.c;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/CTest.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/CTest.java
deleted file mode 100644
index eec1261..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/CTest.java
+++ /dev/null
@@ -1,15 +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 osgi.lazystart.c;
-
-public class CTest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/a/CAExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/a/CAExcluded.java
deleted file mode 100644
index c1055ed..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/a/CAExcluded.java
+++ /dev/null
@@ -1,15 +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 osgi.lazystart.c.excluded.a;
-
-public class CAExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/b/CBExcluded.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/b/CBExcluded.java
deleted file mode 100644
index 256404f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart.c/osgi/lazystart/c/excluded/b/CBExcluded.java
+++ /dev/null
@@ -1,15 +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 osgi.lazystart.c.excluded.b;
-
-public class CBExcluded {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/META-INF/MANIFEST.MF
deleted file mode 100644
index d78cf41..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: osgi lazy test
-Bundle-SymbolicName: osgi.lazystart
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0",
- osgi.lazystart.a,
- osgi.lazystart.b,
- osgi.lazystart.b.excluded.a,
- osgi.lazystart.b.excluded.b,
- osgi.lazystart.c,
- osgi.lazystart.c.excluded.a,
- osgi.lazystart.c.excluded.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude1.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude1.java
deleted file mode 100644
index 4a3f7f8..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude1.java
+++ /dev/null
@@ -1,23 +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 osgi.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import osgi.lazystart.b.excluded.a.BAExcluded;
-import osgi.lazystart.b.excluded.b.BBExcluded;
-public class LazyExclude1 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		new BAExcluded();
-		return new BBExcluded();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude2.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude2.java
deleted file mode 100644
index 42102dd..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyExclude2.java
+++ /dev/null
@@ -1,22 +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 osgi.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import osgi.lazystart.b.BTest;
-
-public class LazyExclude2 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		return new BTest();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude1.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude1.java
deleted file mode 100644
index d746fbb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude1.java
+++ /dev/null
@@ -1,24 +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 osgi.lazystart;
-
-import osgi.lazystart.c.excluded.a.CAExcluded;
-import osgi.lazystart.c.excluded.b.CBExcluded;
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-
-public class LazyInclude1 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		new CAExcluded();
-		return new CBExcluded();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude2.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude2.java
deleted file mode 100644
index 3896053..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazyInclude2.java
+++ /dev/null
@@ -1,21 +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 osgi.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import osgi.lazystart.c.CTest;
-public class LazyInclude2 implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		return new CTest();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazySimple.java b/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazySimple.java
deleted file mode 100644
index edd98ef..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/osgi.lazystart/osgi/lazystart/LazySimple.java
+++ /dev/null
@@ -1,22 +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 osgi.lazystart;
-
-import org.eclipse.osgi.tests.bundles.ITestRunner;
-import osgi.lazystart.a.ATest;
-
-public class LazySimple implements ITestRunner {
-
-	public Object testIt() throws Exception {
-		return new ATest();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 737ea01..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  security.a.frag.a
-Bundle-SymbolicName: security.a.frag.a
-Fragment-Host: security.a
-Bundle-Version: 1.0.0
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/HostManifest_en_US.properties b/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/HostManifest_en_US.properties
deleted file mode 100644
index e00317d..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/HostManifest_en_US.properties
+++ /dev/null
@@ -1 +0,0 @@
-security.a=en_US
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/frag.a.txt b/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/frag.a.txt
deleted file mode 100644
index 854152b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.a.frag.a/resources/frag.a.txt
+++ /dev/null
@@ -1 +0,0 @@
-security.a.frag.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/security.a/META-INF/MANIFEST.MF
deleted file mode 100644
index de6661c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  %security.a
-Bundle-SymbolicName: security.a
-Bundle-Version: 1.0.0
-Import-Package: org.osgi.framework
-Bundle-Activator: security.a.Activator
-Bundle-Localization: resources/HostManifest
-Export-Package: security.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.a/resources/HostManifest.properties b/bundles/org.eclipse.osgi.tests/bundles_src/security.a/resources/HostManifest.properties
deleted file mode 100644
index 43c11c1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.a/resources/HostManifest.properties
+++ /dev/null
@@ -1 +0,0 @@
-security.a=default
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.a/security/a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/security.a/security/a/Activator.java
deleted file mode 100644
index d181096..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.a/security/a/Activator.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package security.a;
-
-import java.net.URL;
-import java.util.Enumeration;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Enumeration urls = context.getBundle().findEntries("resources", "frag.a.txt", false); //$NON-NLS-1$//$NON-NLS-2$
-		if (urls == null || !urls.hasMoreElements())
-			throw new Exception("Did not find any resources"); //$NON-NLS-1$
-		while (urls.hasMoreElements()) {
-			URL url = (URL) urls.nextElement();
-			if (url == null)
-				throw new Exception("The URL is null"); //$NON-NLS-1$
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		//nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/security.b/META-INF/MANIFEST.MF
deleted file mode 100644
index 8b455aa..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: security.b
-Bundle-SymbolicName: security.b
-Bundle-Version: 1.0.0
-Bundle-Activator: security.b.Activator
-Import-Package: org.osgi.framework;version="1.3.0"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.b/OSGI-INF/permissions.perm b/bundles/org.eclipse.osgi.tests/bundles_src/security.b/OSGI-INF/permissions.perm
deleted file mode 100644
index de62205..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.b/OSGI-INF/permissions.perm
+++ /dev/null
@@ -1,2 +0,0 @@
-(org.osgi.framework.PackagePermission "org.osgi.framework" "import")
-(org.osgi.framework.AdminPermission "*" "*")
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/security.b/security/b/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/security.b/security/b/Activator.java
deleted file mode 100644
index 2288b75..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/security.b/security/b/Activator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     ProSyst Software GmbH - initial API and implementation
- *******************************************************************************/
-
-package security.b;
-
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	private BundleContext bc;
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		System.out.println("Starting bundle Test2!!"); //$NON-NLS-1$
-		System.out.println("Security manager: " + System.getSecurityManager()); //$NON-NLS-1$
-		this.bc = context;
-		doTestAction();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-		System.out.println("Stopping bundle Test2!!"); //$NON-NLS-1$
-	}
-
-	private void doTestAction() {
-		Bundle[] bundles = bc.getBundles();
-		Bundle thisBundle = bc.getBundle();
-		for (int i = 0; i < bundles.length; i++) {
-			if (thisBundle.getBundleId() != bundles[i].getBundleId()) {
-				checkBundle(bundles[i]);
-			}
-		}
-	}
-
-	private void checkBundle(Bundle bundle) {
-		bundle.getHeaders();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/META-INF/MANIFEST.MF
deleted file mode 100644
index 74b3da4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.a.frag
-Bundle-SymbolicName: substitutes.a.frag
-Bundle-Version: 1.0.0
-Fragment-Host: substitutes.a
-Export-Package: substitutes.q; version=1.0
-Import-Package: substitutes.q; version="[1.0,2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/substitutes/q/AFq.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/substitutes/q/AFq.java
deleted file mode 100644
index cd6837c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a.frag/substitutes/q/AFq.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.q;
-
-public class AFq {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 0ec6eb6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.a
-Bundle-SymbolicName: substitutes.a
-Bundle-Version: 1.0.0
-Export-Package: substitutes.x; substitutes.y; version=1.0
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/data/resource1 b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/data/resource1
deleted file mode 100644
index 73d047f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/data/resource1
+++ /dev/null
@@ -1 +0,0 @@
-root classpath
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/x/Ax.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/x/Ax.java
deleted file mode 100644
index b1c6e90..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/x/Ax.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Ax {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/y/Ay.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/y/Ay.java
deleted file mode 100644
index 261bb81..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.a/substitutes/y/Ay.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class Ay {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/META-INF/MANIFEST.MF
deleted file mode 100644
index ab318b1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.b.frag
-Bundle-SymbolicName: substitutes.b.frag
-Bundle-Version: 1.0.0
-Fragment-Host: substitutes.b
-Export-Package: substitutes.q; version=1.0
-Import-Package: substitutes.q; version="[1.0,2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/substitutes/q/BFq.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/substitutes/q/BFq.java
deleted file mode 100644
index 6b1e3f0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b.frag/substitutes/q/BFq.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.q;
-
-public class BFq {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/META-INF/MANIFEST.MF
deleted file mode 100644
index b1b37b3..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.b
-Bundle-SymbolicName: substitutes.b
-Bundle-Version: 1.0.0
-Export-Package: substitutes.x; substitutes.y; version=1.0
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/x/Bx.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/x/Bx.java
deleted file mode 100644
index a4d2f0b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/x/Bx.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Bx {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/y/By.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/y/By.java
deleted file mode 100644
index 3266e8c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.b/substitutes/y/By.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class By {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.c/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.c/META-INF/MANIFEST.MF
deleted file mode 100644
index b8fb60f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.c/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.c
-Bundle-SymbolicName: substitutes.c
-Bundle-Version: 1.0.0
-Require-Bundle: substitutes.a
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.d/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.d/META-INF/MANIFEST.MF
deleted file mode 100644
index 19e1bfc..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.d/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.d
-Bundle-SymbolicName: substitutes.d
-Bundle-Version: 1.0.0
-Require-Bundle: substitutes.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/META-INF/MANIFEST.MF
deleted file mode 100644
index fd7e3a7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.e
-Bundle-SymbolicName: substitutes.e
-Bundle-Version: 1.0.0
-Export-Package: substitutes.z
-Require-Bundle: substitutes.a; visibility:=reexport
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/substitutes/z/Ez.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/substitutes/z/Ez.java
deleted file mode 100644
index 9ab36bb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.e/substitutes/z/Ez.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.z;
-
-public class Ez {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/META-INF/MANIFEST.MF
deleted file mode 100644
index 79ff9b7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.f
-Bundle-SymbolicName: substitutes.f
-Bundle-Version: 1.0.0
-Export-Package: substitutes.z
-Require-Bundle: substitutes.b; visibility:=reexport
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/substitutes/z/Fz.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/substitutes/z/Fz.java
deleted file mode 100644
index c3032d8..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.f/substitutes/z/Fz.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.z;
-
-public class Fz {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.g/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.g/META-INF/MANIFEST.MF
deleted file mode 100644
index 23c78af..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.g/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.g
-Bundle-SymbolicName: substitutes.g
-Bundle-Version: 1.0.0
-Require-Bundle: substitutes.e
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.h/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.h/META-INF/MANIFEST.MF
deleted file mode 100644
index 3e156bc..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.h/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.h
-Bundle-SymbolicName: substitutes.h
-Bundle-Version: 1.0.0
-Require-Bundle: substitutes.f
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/META-INF/MANIFEST.MF
deleted file mode 100644
index 5e8f3ea..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.i
-Bundle-SymbolicName: substitutes.i
-Bundle-Version: 1.0.0
-Export-Package: substitutes.x; substitutes.y; version=1.0; mandatory:=a; a=split
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"; a=split
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/x/Ix.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/x/Ix.java
deleted file mode 100644
index a4d6067..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/x/Ix.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Ix {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/y/Iy.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/y/Iy.java
deleted file mode 100644
index 207d65c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.i/substitutes/y/Iy.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class Iy {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/META-INF/MANIFEST.MF
deleted file mode 100644
index e920cdf..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.j
-Bundle-SymbolicName: substitutes.j
-Bundle-Version: 1.0.0
-Export-Package: substitutes.x; substitutes.y; version=1.0; mandatory:=a; a=split
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"; a=split
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/x/Jx.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/x/Jx.java
deleted file mode 100644
index 8457532..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/x/Jx.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Jx {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/y/Jy.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/y/Jy.java
deleted file mode 100644
index f8d4900..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.j/substitutes/y/Jy.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class Jy {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/META-INF/MANIFEST.MF
deleted file mode 100644
index 489a273..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.k
-Bundle-SymbolicName: substitutes.k
-Bundle-Version: 1.0.0
-Export-Package: substitutes.x; substitutes.y; version=1.0; mandatory:=b; b=split
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"; b=split
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/x/Kx.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/x/Kx.java
deleted file mode 100644
index 19e6bc7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/x/Kx.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Kx {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/y/Ky.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/y/Ky.java
deleted file mode 100644
index a3d88a7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.k/substitutes/y/Ky.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class Ky {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/META-INF/MANIFEST.MF
deleted file mode 100644
index 272a12a..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.l
-Bundle-SymbolicName: substitutes.l
-Bundle-Version: 1.0.0
-Export-Package: substitutes.x; substitutes.y; version=1.0; mandatory:=b; b=split
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"; b=split
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/x/Lx.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/x/Lx.java
deleted file mode 100644
index 7013459..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/x/Lx.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Lx {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/y/Ly.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/y/Ly.java
deleted file mode 100644
index 4bbfcfe..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.l/substitutes/y/Ly.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class Ly {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/META-INF/MANIFEST.MF
deleted file mode 100644
index 524ed25..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.m
-Bundle-SymbolicName: substitutes.m
-Bundle-Version: 1.0.0
-Require-Bundle: substitutes.i, substitutes.k
-Export-Package: substitutes.x; substitutes.y; version=1.0
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/x/Mx.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/x/Mx.java
deleted file mode 100644
index 0bf131f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/x/Mx.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Mx {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/y/My.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/y/My.java
deleted file mode 100644
index ed9b601..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.m/substitutes/y/My.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class My {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/META-INF/MANIFEST.MF
deleted file mode 100644
index 2a5b558..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.n
-Bundle-SymbolicName: substitutes.n
-Bundle-Version: 1.0.0
-Require-Bundle: substitutes.j, substitutes.l
-Export-Package: substitutes.x; substitutes.y; version=1.0
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/x/Nx.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/x/Nx.java
deleted file mode 100644
index 319a35e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/x/Nx.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.x;
-
-public class Nx {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/y/Ny.java b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/y/Ny.java
deleted file mode 100644
index 238a9c9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.n/substitutes/y/Ny.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package substitutes.y;
-
-public class Ny {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.p/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.p/META-INF/MANIFEST.MF
deleted file mode 100644
index 6b6bad0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.p/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.p
-Bundle-SymbolicName: substitutes.p
-Bundle-Version: 1.0.0
-Import-Package: substitutes.x; substitutes.y; version="[1.0, 2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.q/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.q/META-INF/MANIFEST.MF
deleted file mode 100644
index 711bb90..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/substitutes.q/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  substitutes.q
-Bundle-SymbolicName: substitutes.q
-Bundle-Version: 1.0.0
-Require-Bundle: substitutes.n
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/META-INF/MANIFEST.MF
deleted file mode 100644
index 346a933..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: X Plug-in
-Bundle-SymbolicName: test.bug235958.x
-Bundle-Version: 1.0.0
-Bundle-Activator: test.bug235958.x.internal.Activator
-Bundle-ActivationPolicy: lazy
-Import-Package: org.osgi.framework;version="1.3.0"
-Export-Package: test.bug235958.x; version=1.1
-Require-Bundle: test.bug235958.y
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/X1.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/X1.java
deleted file mode 100644
index 6986235..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/X1.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package test.bug235958.x;
-
-public class X1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/internal/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/internal/Activator.java
deleted file mode 100644
index 6708c0e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.x/test/bug235958/x/internal/Activator.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package test.bug235958.x.internal;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import test.bug235958.x.X1;
-
-public class Activator implements BundleActivator {
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-		new X1();
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/META-INF/MANIFEST.MF
deleted file mode 100644
index 823306c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Y Plug-in
-Bundle-SymbolicName: test.bug235958.y
-Bundle-Version: 1.0.0
-Bundle-Activator: test.bug235958.y.internal.Activator
-Bundle-ActivationPolicy: lazy
-Import-Package: org.osgi.framework;version="1.3.0",
- test.bug235958.x; version="[1.0,2.0)"
-Export-Package: test.bug235958.x; version=1.0,
- test.bug235958.y; version=1.0
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/x/X.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/x/X.java
deleted file mode 100644
index 2edc491..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/x/X.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package test.bug235958.x;
-
-public class X {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/Y.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/Y.java
deleted file mode 100644
index 7191061..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/Y.java
+++ /dev/null
@@ -1,5 +0,0 @@
-package test.bug235958.y;
-
-public class Y {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/internal/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/internal/Activator.java
deleted file mode 100644
index fb271d4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug235958.y/test/bug235958/y/internal/Activator.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package test.bug235958.y.internal;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
-	 */
-	public void start(BundleContext context) throws Exception {
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
-	 */
-	public void stop(BundleContext context) throws Exception {
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a.update/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a.update/META-INF/MANIFEST.MF
deleted file mode 100644
index 8510426..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a.update/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug259903.a
-Bundle-SymbolicName: test.bug259903.a
-Bundle-Version: 1.0.1
-Export-Package: test.bug259903.a, test.bug259903.a.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/META-INF/MANIFEST.MF
deleted file mode 100644
index cc63972..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug259903.a
-Bundle-SymbolicName: test.bug259903.a
-Bundle-Version: 1.0.0
-Export-Package: test.bug259903.a, test.bug259903.a.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/Service1.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/Service1.java
deleted file mode 100644
index 30c7c41..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/Service1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.bug259903.a;
-
-public interface Service1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/b/Service2.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/b/Service2.java
deleted file mode 100644
index 64a65af..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.a/test/bug259903/a/b/Service2.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.bug259903.a.b;
-
-public interface Service2 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/META-INF/MANIFEST.MF
deleted file mode 100644
index 7c30223..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug259903.b
-Bundle-SymbolicName: test.bug259903.b
-Bundle-Version: 1.0.0
-Import-Package: test.bug259903.a,
- test.bug259903.a.b
-Export-Package: test.bug259903.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/test/bug259903/b/Service3.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/test/bug259903/b/Service3.java
deleted file mode 100644
index 093450e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.b/test/bug259903/b/Service3.java
+++ /dev/null
@@ -1,18 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.bug259903.b;
-
-import test.bug259903.a.Service1;
-import test.bug259903.a.b.Service2;
-
-public interface Service3 extends Service1, Service2 {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/META-INF/MANIFEST.MF
deleted file mode 100644
index f6646ef..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug259903.c
-Bundle-SymbolicName: test.bug259903.c
-Bundle-Version: 1.0.0
-Bundle-Activator: test.bug259903.c.Activator
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework,
- test.bug259903.a,
- test.bug259903.a.b,
- test.bug259903.b
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/test/bug259903/c/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/test/bug259903/c/Activator.java
deleted file mode 100644
index 14d5989..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug259903.c/test/bug259903/c/Activator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.bug259903.c;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-import test.bug259903.b.Service3;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		// nothing
-	}
-
-	public void stop(BundleContext context) throws Exception {
-
-		new Service3() {/* nothing*/};
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/META-INF/MANIFEST.MF
deleted file mode 100644
index bcc28e2..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug286307
-Bundle-SymbolicName: test.bug286307
-Bundle-Version: 1.0.0
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/OSGI-INF/permissions.perm b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/OSGI-INF/permissions.perm
deleted file mode 100644
index 7490eca..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug286307/OSGI-INF/permissions.perm
+++ /dev/null
@@ -1 +0,0 @@
-(java.io.FilePermission "<<ALL FILES>>" "read")
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a1/META-INF/MANIFEST.MF
deleted file mode 100644
index 0626a67..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug287636.a
-Bundle-SymbolicName: test.bug287636.a
-Bundle-Version: 1.0.0
-Export-Package: test.bug287636.a; version=1.0
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a2/META-INF/MANIFEST.MF
deleted file mode 100644
index 80880c6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.a2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug287636.a
-Bundle-SymbolicName: test.bug287636.a
-Bundle-Version: 1.1.0
-Export-Package: test.bug287636.a; version=1.1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.b/META-INF/MANIFEST.MF
deleted file mode 100644
index d91b211..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287636.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug287636.b
-Bundle-SymbolicName: test.bug287636.b
-Bundle-Version: 2.0.0
-Import-Package: test.bug287636.a; version="[1.0,2.0)"
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/META-INF/MANIFEST.MF
deleted file mode 100644
index df77958..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug287750
-Bundle-SymbolicName: test.bug287750
-Bundle-Version: 1.0.0
-Bundle-Activator: test.bug287750.Activator
-Import-Package: org.osgi.framework,
- org.osgi.service.startlevel
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/OSGI-INF/permissions.perm b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/OSGI-INF/permissions.perm
deleted file mode 100644
index f58c1a6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/OSGI-INF/permissions.perm
+++ /dev/null
@@ -1,3 +0,0 @@
-(org.osgi.framework.PackagePermission "*" "import")
-(org.osgi.framework.ServicePermission "*" "GET")
-(org.osgi.framework.AdminPermission "*" "*")
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/test/bug287750/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/test/bug287750/Activator.java
deleted file mode 100644
index b423ddb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug287750/test/bug287750/Activator.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package test.bug287750;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.startlevel.StartLevel;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		StartLevel sl = (StartLevel) context.getService(context.getServiceReference(StartLevel.class.getName()));
-		sl.setStartLevel(10);
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/META-INF/MANIFEST.MF
deleted file mode 100644
index 3dcf733..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug306181a
-Bundle-SymbolicName: test.bug306181a
-Bundle-Version: 1.0.0
-Bundle-Activator: test.bug306181a.Activator
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/test/bug306181a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/test/bug306181a/Activator.java
deleted file mode 100644
index 03496cb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181a/test/bug306181a/Activator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.bug306181a;
-
-import java.util.Hashtable;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		ServiceReference[] refs = context.getServiceReferences(Runnable.class.getName(), "(test=bug306181)");
-		String error = null;
-		if (refs == null)
-			error = "Did not find expected service";
-		else if (refs.length != 1)
-			error = "Found wrong number of services: " + refs.length;
-		if (error != null) {
-			Hashtable props = new Hashtable();
-			props.put("test", "bug306181");
-			context.registerService(String.class.getName(), error, props);
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/META-INF/MANIFEST.MF
deleted file mode 100644
index 2bf1bba..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.bug306181b
-Bundle-SymbolicName: test.bug306181b
-Bundle-Version: 1.0.0
-Service-Component: component.xml
-Bundle-ActivationPolicy: lazy
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/component.xml b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/component.xml
deleted file mode 100644
index a7e4ee4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/component.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="org.eclipse.osgi.tests">
-   <implementation class="test.bug306181b.Component"/>
-   <property name="test" type="String" value="bug306181"/>
-   <service>
-      <provide interface="java.lang.Runnable"/>
-   </service>
-   
-</scr:component>
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/test/bug306181b/Component.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/test/bug306181b/Component.java
deleted file mode 100644
index 17f4234..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.bug306181b/test/bug306181b/Component.java
+++ /dev/null
@@ -1,19 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 20010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.bug306181b;
-
-public class Component implements Runnable {
-
-	public void run() {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 0f42f8d..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  test.filter.a
-Bundle-SymbolicName: test.filter.a
-Bundle-Version: 1.0.0
-Bundle-Activator: test.filter.a.Activator
-Import-Package: org.osgi.framework,
- org.osgi.util.tracker
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/test/filter/a/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/test/filter/a/Activator.java
deleted file mode 100644
index 7c0cb0b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.filter.a/test/filter/a/Activator.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.filter.a;
-
-import java.util.Hashtable;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		final boolean[] serviceChanged = {false};
-		ServiceListener listener = new ServiceListener() {
-			public void serviceChanged(ServiceEvent event) {
-				serviceChanged[0] = true;
-			}
-		};
-		context.addServiceListener(listener, "(&(objectClass=java.lang.String)(test=*))");
-		final boolean[] modifiedService = {false};
-		ServiceTracker tracker = new ServiceTracker(context, FrameworkUtil.createFilter("(&(objectClass=java.lang.String)(test=*))"), new ServiceTrackerCustomizer() {
-
-			public Object addingService(ServiceReference reference) {
-				return reference;
-			}
-
-			public void modifiedService(ServiceReference reference, Object service) {
-				modifiedService[0] = true;
-			}
-
-			public void removedService(ServiceReference reference, Object service) {
-				// TODO Auto-generated method stub
-
-			}
-
-		});
-		tracker.open();
-		Hashtable props = new Hashtable();
-		props.put("test", "value1");
-		ServiceRegistration registration = context.registerService(String.class.getName(), "test", props);
-		props.put("test", "value2");
-		registration.setProperties(props);
-		if (!serviceChanged[0])
-			throw new Exception("did not call service listener");
-		if (!modifiedService[0])
-			throw new Exception("did not call tracker customer");
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		//nothing; framework will clean up our listeners
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment1/META-INF/MANIFEST.MF
deleted file mode 100644
index 1b5383b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.fragment1
-Bundle-SymbolicName: test.fragment1
-Bundle-Version: 1.0.0
-Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment2/META-INF/MANIFEST.MF
deleted file mode 100644
index 06029a2..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.fragment2
-Bundle-SymbolicName: test.fragment2
-Bundle-Version: 1.0.0
-Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment3/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment3/META-INF/MANIFEST.MF
deleted file mode 100644
index 5eb286e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment3/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.fragment3
-Bundle-SymbolicName: test.fragment3
-Bundle-Version: 1.0.0
-Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment4/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment4/META-INF/MANIFEST.MF
deleted file mode 100644
index c0768c4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment4/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.fragment4
-Bundle-SymbolicName: test.fragment4
-Bundle-Version: 1.0.0
-Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment5/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment5/META-INF/MANIFEST.MF
deleted file mode 100644
index 8afa4a4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.fragment5/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.fragment5
-Bundle-SymbolicName: test.fragment5
-Bundle-Version: 1.0.0
-Fragment-Host: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/META-INF/MANIFEST.MF
deleted file mode 100644
index 24cf9ab..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  test.link.a.client
-Bundle-SymbolicName: test.link.a.client
-Bundle-Version: 1.0.0
-Bundle-Activator: test.link.a.client.Activator
-Import-Package: org.osgi.framework, test.link.a, test.link.a.params
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/test/link/a/client/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/test/link/a/client/Activator.java
deleted file mode 100644
index 700d13b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a.client/test/link/a/client/Activator.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.a.client;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URL;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import test.link.a.SomeAPI;
-import test.link.a.params.AParam;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		SomeAPI api = new SomeAPI();
-		api.getBundleID(context.getBundle());
-		api.getString(new AParam());
-		// test class that does not exist
-		try {
-			getClass().getClassLoader().loadClass("test.link.a.DoesNotExist"); //$NON-NLS-1$
-			throw new RuntimeException("Unexpected class load success"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		// test resource
-		URL resource = this.getClass().getResource("/test/link/a/resource.txt"); //$NON-NLS-1$
-		if (resource == null)
-			throw new RuntimeException("Did not find resource.txt"); //$NON-NLS-1$
-		BufferedReader reader = new BufferedReader(new InputStreamReader(resource.openStream()));
-		try {
-			String content = reader.readLine();
-			if (!"Test content".equals(content)) //$NON-NLS-1$
-				throw new RuntimeException("Unexpected content in resource.txt: " + content); //$NON-NLS-1$
-		} finally {
-			reader.close();
-		}
-		// test resource that does not exist
-		URL notExist = this.getClass().getResource("/test/link/b/DoesNotExist.txt"); //$NON-NLS-1$
-		if (notExist != null)
-			throw new RuntimeException("Should not have found resource: " + notExist.getPath()); //$NON-NLS-1$
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/META-INF/MANIFEST.MF
deleted file mode 100644
index 54ff1de..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  test.link.a
-Bundle-SymbolicName: test.link.a
-Bundle-Version: 1.0.0
-Export-Package: test.link.a; attr1="value1"; uses:="org.osgi.framework, test.link.a.params",
- test.link.a.params; attr2="value2" 
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/SomeAPI.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/SomeAPI.java
deleted file mode 100644
index 9a2483c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/SomeAPI.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.a;
-
-import org.osgi.framework.Bundle;
-import test.link.a.params.AParam;
-
-public class SomeAPI {
-	public Long getBundleID(Bundle bundle) {
-		return new Long(bundle.getBundleId());
-	}
-
-	public String getString(AParam arg0) {
-		return arg0.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/params/AParam.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/params/AParam.java
deleted file mode 100644
index 56d2534..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/params/AParam.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.a.params;
-
-public class AParam {
-	public String toString() {
-		return "AParam"; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/resource.txt b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/resource.txt
deleted file mode 100644
index 2eec599..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.a/test/link/a/resource.txt
+++ /dev/null
@@ -1 +0,0 @@
-Test content
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/META-INF/MANIFEST.MF
deleted file mode 100644
index 0b5d38f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.b.client
-Bundle-SymbolicName: test.link.b.client
-Bundle-Version: 1.0.0
-Bundle-Activator: test.link.b.client.Activator
-Import-Package: org.osgi.framework, test.link.b, test.link.b.params
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/test/link/b/client/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/test/link/b/client/Activator.java
deleted file mode 100644
index 4266b3f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b.client/test/link/b/client/Activator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.b.client;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.net.URL;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import test.link.b.SomeAPI;
-import test.link.b.params.AParam;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		SomeAPI api = new SomeAPI();
-		api.getBundleID(context.getBundle());
-		api.getString(new AParam());
-		// test class that does not exist
-		try {
-			getClass().getClassLoader().loadClass("test.link.b.DoesNotExist"); //$NON-NLS-1$
-			throw new RuntimeException("Unexpected class load success"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		// test resource
-		URL resource = this.getClass().getResource("/test/link/b/resource.txt"); //$NON-NLS-1$
-		if (resource == null)
-			throw new RuntimeException("Did not find resource.txt"); //$NON-NLS-1$
-		BufferedReader reader = new BufferedReader(new InputStreamReader(resource.openStream()));
-		try {
-			String content = reader.readLine();
-			if (!"Test content".equals(content)) //$NON-NLS-1$
-				throw new RuntimeException("Unexpected content in resource.txt: " + content); //$NON-NLS-1$
-		} finally {
-			reader.close();
-		}
-		// test resource that does not exist
-		URL notExist = this.getClass().getResource("/test/link/b/DoesNotExist.txt"); //$NON-NLS-1$
-		if (notExist != null)
-			throw new RuntimeException("Should not have found resource: " + notExist.getPath()); //$NON-NLS-1$
-
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/META-INF/MANIFEST.MF
deleted file mode 100644
index 1329e3e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.b
-Bundle-SymbolicName: test.link.b
-Bundle-Version: 1.0.0
-Export-Package: test.link.b; attr1="value1"; uses:="org.osgi.framework, test.link.b.params",
- test.link.b.params; attr2="value2" 
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/SomeAPI.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/SomeAPI.java
deleted file mode 100644
index 3b29bd0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/SomeAPI.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.b;
-
-import org.osgi.framework.Bundle;
-import test.link.b.params.AParam;
-
-public class SomeAPI {
-	public Long getBundleID(Bundle bundle) {
-		return new Long(bundle.getBundleId());
-	}
-
-	public String getString(AParam arg0) {
-		return arg0.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/params/AParam.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/params/AParam.java
deleted file mode 100644
index 6d8710c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/params/AParam.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.b.params;
-
-public class AParam {
-	public String toString() {
-		return "AParam"; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/resource.txt b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/resource.txt
deleted file mode 100644
index 2eec599..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.b/test/link/b/resource.txt
+++ /dev/null
@@ -1 +0,0 @@
-Test content
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/META-INF/MANIFEST.MF
deleted file mode 100644
index 90019f5..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.c.client
-Bundle-SymbolicName: test.link.c.client
-Bundle-Version: 1.0.0
-Bundle-Activator: test.link.c.client.Activator
-Import-Package: test.link.c.service1, test.link.c.service2, test.link.c.service3, org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/test/link/c/client/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/test/link/c/client/Activator.java
deleted file mode 100644
index d849816..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c.client/test/link/c/client/Activator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.c.client;
-
-import org.osgi.framework.*;
-import test.link.c.service1.Service1;
-import test.link.c.service2.Service2;
-import test.link.c.service3.Service3;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Service1 service1 = (Service1) checkService(Service1.class.getName(), context);
-		if (service1 == null)
-			throw new Exception("missing Service1"); //$NON-NLS-1$
-		Service2 service2 = (Service2) checkService(Service2.class.getName(), context);
-		if (service2 == null)
-			throw new Exception("missing Service2"); //$NON-NLS-1$
-		Service3 service3 = (Service3) checkService(Service3.class.getName(), context);
-		if (service3 == null)
-			throw new Exception("missing Service3"); //$NON-NLS-1$
-	}
-
-	private Object checkService(String name, BundleContext context) throws BundleException {
-		ServiceReference ref = context.getServiceReference(name);
-		if (ref == null)
-			throw new BundleException("Missing service " + name); //$NON-NLS-1$
-		Object service = context.getService(ref);
-		if (service != null)
-			context.ungetService(ref);
-		return service;
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/META-INF/MANIFEST.MF
deleted file mode 100644
index 4a15453..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.c
-Bundle-SymbolicName: test.link.c
-Bundle-Version: 1.0.0
-Bundle-Activator: test.link.c.Activator
-Export-Package: 
- test.link.c.service1; attr1="value1",
- test.link.c.service2; attr2="value2"; uses:="test.link.c.service1",
- test.link.c.service3; attr3="value3"; uses:="test.link.c.service2"
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/Activator.java
deleted file mode 100644
index ae6d199..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/Activator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.c;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import test.link.c.service1.Service1;
-import test.link.c.service2.Service2;
-import test.link.c.service3.Service3;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		context.registerService(Service1.class.getName(), new Service1() {}, null);
-		context.registerService(new String[] {Service1.class.getName(), Service2.class.getName()}, new Service2() {}, null);
-		context.registerService(new String[] {Service1.class.getName(), Service2.class.getName(), Service3.class.getName()}, new Service3() {}, null);
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service1/Service1.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service1/Service1.java
deleted file mode 100644
index 5286b6f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service1/Service1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.c.service1;
-
-public interface Service1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service2/Service2.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service2/Service2.java
deleted file mode 100644
index 5186e1e..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service2/Service2.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.c.service2;
-
-import test.link.c.service1.Service1;
-
-public interface Service2 extends Service1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service3/Service3.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service3/Service3.java
deleted file mode 100644
index 69c7bd0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.c/test/link/c/service3/Service3.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.c.service3;
-
-import test.link.c.service2.Service2;
-
-public interface Service3 extends Service2 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/META-INF/MANIFEST.MF
deleted file mode 100644
index 102d6ae..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.d
-Bundle-SymbolicName: test.link.d
-Bundle-Version: 1.0.0
-Bundle-Activator: test.link.d.Activator
-Import-Package: org.osgi.framework,
- org.eclipse.osgi.tests.bundles,
- org.osgi.service.framework,
- org.osgi.framework.launch,
- org.osgi.util.tracker
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/test/link/d/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/test/link/d/Activator.java
deleted file mode 100644
index 61de0e4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.d/test/link/d/Activator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package test.link.d;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.eclipse.osgi.tests.bundles.BundleInstaller;
-import org.osgi.framework.*;
-import org.osgi.service.framework.CompositeBundle;
-import org.osgi.service.framework.CompositeBundleFactory;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		ServiceReference installerRef = context.getServiceReference(BundleInstaller.class.getName());
-		if (installerRef == null)
-			throw new Exception("Missing Service Permission"); //$NON-NLS-1$
-		BundleInstaller installer = (BundleInstaller) context.getService(installerRef);
-		if (installer == null)
-			throw new Exception("Missing Service Permission"); //$NON-NLS-1$
-		context.ungetService(installerRef);
-
-		ServiceReference factoryRef = context.getServiceReference(CompositeBundleFactory.class.getName());
-		if (factoryRef == null)
-			throw new Exception("Missing Service Permission"); //$NON-NLS-1$
-		CompositeBundleFactory factory = (CompositeBundleFactory) context.getService(factoryRef);
-		if (factory == null)
-			throw new Exception("Missing Service Permission"); //$NON-NLS-1$
-
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "childComposite"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.eclipse.osgi.tests.bundles"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, "(objectClass=org.eclipse.osgi.tests.bundles.BundleInstaller)"); //$NON-NLS-1$
-		CompositeBundle childComposite = null;
-		try {
-			childComposite = factory.installCompositeBundle(null, "childComposite", linkManifest); //$NON-NLS-1$
-		} catch (SecurityException e) {
-			throw new Exception("Missing AllPermissions"); //$NON-NLS-1$
-		}
-
-		Bundle test = childComposite.getCompositeFramework().getBundleContext().installBundle(installer.getBundleLocation("test")); //$NON-NLS-1$
-		if (test == null)
-			throw new Exception("Install of test bundle is null"); //$NON-NLS-1$
-
-		childComposite.start();
-
-		ServiceTracker trackInstaller = new ServiceTracker(childComposite.getBundleContext(), BundleInstaller.class.getName(), null);
-		trackInstaller.open();
-		BundleInstaller childInstaller = (BundleInstaller) trackInstaller.waitForService(5000);
-		if (childInstaller != installer)
-			throw new Exception("Unexpected childInstaller: " + childInstaller);
-		test.start();
-		Object[] expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, test);
-		AbstractBundleTests.compareResults(expectedEvents, AbstractBundleTests.simpleResults.getResults(1));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/META-INF/MANIFEST.MF
deleted file mode 100644
index 1de76b3..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.e.client
-Bundle-SymbolicName: test.link.e.client
-Bundle-Version: 1.0.0
-Bundle-Activator: test.link.e.client.Activator
-Import-Package: test.link.e.service1, test.link.e.service2, test.link.e.service3, org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/test/link/e/client/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/test/link/e/client/Activator.java
deleted file mode 100644
index 49b3e2c..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e.client/test/link/e/client/Activator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.e.client;
-
-import org.osgi.framework.*;
-import test.link.e.service1.Service1;
-import test.link.e.service2.Service2;
-import test.link.e.service3.Service3;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Service1 service1 = (Service1) checkService(Service1.class.getName(), context);
-		if (service1 == null)
-			throw new Exception("missing Service1"); //$NON-NLS-1$
-		Service2 service2 = (Service2) checkService(Service2.class.getName(), context);
-		if (service2 == null)
-			throw new Exception("missing Service2"); //$NON-NLS-1$
-		Service3 service3 = (Service3) checkService(Service3.class.getName(), context);
-		if (service3 == null)
-			throw new Exception("missing Service3"); //$NON-NLS-1$
-	}
-
-	private Object checkService(String name, BundleContext context) throws BundleException {
-		ServiceReference ref = context.getServiceReference(name);
-		if (ref == null)
-			throw new BundleException("Missing service " + name); //$NON-NLS-1$
-		Object service = context.getService(ref);
-		if (service != null)
-			context.ungetService(ref);
-		return service;
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/META-INF/MANIFEST.MF
deleted file mode 100644
index 2370deb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.e
-Bundle-SymbolicName: test.link.e
-Bundle-Version: 1.0.0
-Bundle-Activator: test.link.e.Activator
-Export-Package: 
- test.link.e.service1; attr1="value1",
- test.link.e.service2; attr2="value2"; uses:="test.link.e.service1",
- test.link.e.service3; attr3="value3"; uses:="test.link.e.service2"
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/Activator.java
deleted file mode 100644
index b0c5aa0..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/Activator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.e;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import test.link.e.service1.Service1;
-import test.link.e.service2.Service2;
-import test.link.e.service3.Service3;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		context.registerService(Service1.class.getName(), new Service1() {}, null);
-		context.registerService(new String[] {Service1.class.getName(), Service2.class.getName()}, new Service2() {}, null);
-		context.registerService(new String[] {Service1.class.getName(), Service2.class.getName(), Service3.class.getName()}, new Service3() {}, null);
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service1/Service1.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service1/Service1.java
deleted file mode 100644
index 232152f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service1/Service1.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.e.service1;
-
-public interface Service1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service2/Service2.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service2/Service2.java
deleted file mode 100644
index 39b9598..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service2/Service2.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.e.service2;
-
-import test.link.e.service1.Service1;
-
-public interface Service2 extends Service1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service3/Service3.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service3/Service3.java
deleted file mode 100644
index 525bcd2..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.e/test/link/e/service3/Service3.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.link.e.service3;
-
-import test.link.e.service2.Service2;
-
-public interface Service3 extends Service2 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/META-INF/MANIFEST.MF
deleted file mode 100644
index cb31d5b..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.link.postponed
-Bundle-SymbolicName: test.link.postponed
-Bundle-Version: 1.0.0
-Fragment-Host: system.bundle
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/test/link/postponed/PostPonedCondition.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/test/link/postponed/PostPonedCondition.java
deleted file mode 100644
index 79026a7..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.link.postponed/test/link/postponed/PostPonedCondition.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package test.link.postponed;
-
-import java.util.Dictionary;
-import org.osgi.framework.Bundle;
-import org.osgi.service.condpermadmin.Condition;
-import org.osgi.service.condpermadmin.ConditionInfo;
-
-public class PostPonedCondition implements Condition {
-
-	static public Condition getCondition(final Bundle bundle, final ConditionInfo info) {
-		return new PostPonedCondition();
-	}
-
-	public boolean isMutable() {
-		return true;
-	}
-
-	public boolean isPostponed() {
-		return true;
-	}
-
-	public boolean isSatisfied() {
-		return true;
-	}
-
-	public boolean isSatisfied(Condition[] conditions, Dictionary context) {
-		return true;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/META-INF/MANIFEST.MF
deleted file mode 100644
index c1132cf..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,31 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.manifestpackage
-Bundle-SymbolicName: test.manifestpackage
-Bundle-Version: 1.0.0
-Bundle-Activator: test.manifestpackage.Activator
-Import-Package: org.osgi.framework
-
-Name: test/manifestpackage/a/
-Specification-Title: a
-Specification-Version: 1.1
-Specification-Vendor: equinox
-Implementation-Title: A
-Implementation-Version: 11.0
-Implementation-Vendor: equinox
-
-Name: test/manifestpackage/b/
-Specification-Title: b
-Specification-Version: 1.2
-Specification-Vendor: equinox
-Implementation-Title: B
-Implementation-Version: 12.0
-Implementation-Vendor: equinox
-
-Name: test/manifestpackage/c/
-Specification-Title: c
-Specification-Version: 1.3
-Specification-Vendor: equinox
-Implementation-Title: C
-Implementation-Version: 13.0
-Implementation-Vendor: equinox
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/Activator.java
deleted file mode 100644
index d939037..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/Activator.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.manifestpackage;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-import test.manifestpackage.a.A;
-import test.manifestpackage.b.B;
-import test.manifestpackage.c.C;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		Package aPkg = A.class.getPackage();
-		assertNotNull("aPkg", aPkg);
-		checkPackage(aPkg, "a", "1.1", "equinox", "A", "11.0", "equinox");
-		Package bPkg = B.class.getPackage();
-		assertNotNull("bPkg", bPkg);
-		checkPackage(bPkg, "b", "1.2", "equinox", "B", "12.0", "equinox");
-		Package cPkg = C.class.getPackage();
-		assertNotNull("cPkg", cPkg);
-		checkPackage(cPkg, "c", "1.3", "equinox", "C", "13.0", "equinox");
-	}
-
-	private void checkPackage(Package pkg, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor) {
-		assertEquals(specTitle, pkg.getSpecificationTitle());
-		assertEquals(specVersion, pkg.getSpecificationVersion());
-		assertEquals(specVendor, pkg.getSpecificationVendor());
-		assertEquals(implTitle, pkg.getImplementationTitle());
-		assertEquals(implVersion, pkg.getImplementationVersion());
-		assertEquals(implVendor, pkg.getImplementationVendor());
-	}
-
-	private void assertEquals(String expected, String actual) {
-		if (!expected.equals(actual))
-			throw new RuntimeException("Expected: \"" + expected + "\" but got: \"" + actual + "\"");
-	}
-
-	private void assertNotNull(String msg, Package pkg) {
-		if (pkg == null)
-			throw new RuntimeException(msg);
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/a/A.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/a/A.java
deleted file mode 100644
index 75a7acc..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/a/A.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.manifestpackage.a;
-
-public class A {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/b/B.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/b/B.java
deleted file mode 100644
index aa8ce57..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/b/B.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.manifestpackage.b;
-
-public class B {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/c/C.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/c/C.java
deleted file mode 100644
index f6e75ab..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.manifestpackage/test/manifestpackage/c/C.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.manifestpackage.c;
-
-public class C {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/META-INF/MANIFEST.MF
deleted file mode 100644
index 7510dfd..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test.tccl
-Bundle-SymbolicName: ttest.tccl
-Bundle-Version: 1.0.0
-Bundle-Activator: test.tccl.Activator
-Import-Package: org.osgi.framework
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/test/tccl/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/test/tccl/Activator.java
deleted file mode 100644
index 692e097..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test.tccl/test/tccl/Activator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package test.tccl;
-
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		ClassLoader tccl = Thread.currentThread().getContextClassLoader();
-		ClassLoader serviceTCCL = (ClassLoader) context.getService(context.getServiceReferences(ClassLoader.class.getName(), "(equinox.classloader.type=contextClassLoader)")[0]); //$NON-NLS-1$
-		if (tccl != serviceTCCL)
-			throw new BundleException("Wrong thread context class loader found"); //$NON-NLS-1$
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		ClassLoader tccl = Thread.currentThread().getContextClassLoader();
-		ClassLoader serviceTCCL = (ClassLoader) context.getService(context.getServiceReferences(ClassLoader.class.getName(), "(equinox.classloader.type=contextClassLoader)")[0]); //$NON-NLS-1$
-		if (tccl != serviceTCCL)
-			throw new BundleException("Wrong thread context class loader found"); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test/META-INF/MANIFEST.MF
deleted file mode 100644
index c147086..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,12 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test1 bundle
-Bundle-SymbolicName: test1
-Bundle-Version: 1.0.0
-Bundle-Activator: test1.Activator
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ClassPath: ., stuff/
-Export-Package: data,
- org.eclipse.osgi.tests.appadmin
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test/a/b/c/d b/bundles/org.eclipse.osgi.tests/bundles_src/test/a/b/c/d
deleted file mode 100644
index e69de29..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test/a/b/c/d
+++ /dev/null
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test/data/resource1 b/bundles/org.eclipse.osgi.tests/bundles_src/test/data/resource1
deleted file mode 100644
index 73d047f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test/data/resource1
+++ /dev/null
@@ -1 +0,0 @@
-root classpath
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test/stuff/data/resource1 b/bundles/org.eclipse.osgi.tests/bundles_src/test/stuff/data/resource1
deleted file mode 100644
index aa082aa..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test/stuff/data/resource1
+++ /dev/null
@@ -1 +0,0 @@
-stuff classpath
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test/test1/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/test/test1/Activator.java
deleted file mode 100644
index dcee8d1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test/test1/Activator.java
+++ /dev/null
@@ -1,26 +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 test1;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test2/META-INF/MANIFEST.MF
deleted file mode 100644
index e4e57a4..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,10 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test2 bundle
-Bundle-SymbolicName: test2
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ClassPath: ., stuff/
-Require-Bundle: test1
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test2/data/resource1 b/bundles/org.eclipse.osgi.tests/bundles_src/test2/data/resource1
deleted file mode 100644
index 5928f1f..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test2/data/resource1
+++ /dev/null
@@ -1 +0,0 @@
-root classpath test2
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/test2/stuff/data/resource1 b/bundles/org.eclipse.osgi.tests/bundles_src/test2/stuff/data/resource1
deleted file mode 100644
index 0a8aef9..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test2/stuff/data/resource1
+++ /dev/null
@@ -1 +0,0 @@
-stuff classpath test2
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/META-INF/MANIFEST.MF
deleted file mode 100644
index 7b415af..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: osgi test
-Bundle-SymbolicName: thread.locktest
-Bundle-Version: 1.0.0
-Bundle-Localization: plugin
-Import-Package: 
- org.eclipse.osgi.tests.bundles,
- org.osgi.framework;version="1.3.0"
-Bundle-ActivationPolicy: lazy
-Bundle-Activator: thread.locktest.Activator
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/ATest.java b/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/ATest.java
deleted file mode 100644
index 9d822b6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/ATest.java
+++ /dev/null
@@ -1,15 +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 thread.locktest;
-
-public class ATest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Activator.java
deleted file mode 100644
index f9a7eea..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Activator.java
+++ /dev/null
@@ -1,42 +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 thread.locktest;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class Activator implements BundleActivator, Runnable {
-
-	public void start(BundleContext context) throws Exception {
-		Thread thread = new Thread(this, "thread.locktest");
-		System.out.println("about to start thread");
-		thread.start();
-		System.out.println("about to join the thread");
-		thread.join(10000);
-		System.out.println("after joining thread");
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STARTED, context.getBundle()));
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		AbstractBundleTests.simpleResults.addEvent(new BundleEvent(BundleEvent.STOPPED, context.getBundle()));
-	}
-
-	public void run() {
-		long startTime = System.currentTimeMillis();
-		System.out.println("about to load Class1");
-		new Class1();
-		long totalTime = System.currentTimeMillis() - startTime;
-		System.out.println("loaded Class1 " + totalTime);
-		if (totalTime < 10000)
-			AbstractBundleTests.simpleResults.addEvent(new Long(5000));
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Class1.java b/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Class1.java
deleted file mode 100644
index 02203ca..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/thread.locktest/thread/locktest/Class1.java
+++ /dev/null
@@ -1,15 +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 thread.locktest;
-
-public class Class1 {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/META-INF/MANIFEST.MF
deleted file mode 100644
index f0d27c1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: xfriends.test1
-Bundle-SymbolicName: xfriends.test1
-Bundle-Version: 1.0.0
-Export-Package: xfriends.test1.onlyforfriends; x-friends:="xfriends.test2",
- xfriends.test1.external
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/external/TestFriends.java b/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/external/TestFriends.java
deleted file mode 100644
index 31a14fd..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/external/TestFriends.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package xfriends.test1.external;
-
-public class TestFriends {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/onlyforfriends/TestFriends.java b/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/onlyforfriends/TestFriends.java
deleted file mode 100644
index a7452bb..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test1/xfriends/test1/onlyforfriends/TestFriends.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package xfriends.test1.onlyforfriends;
-
-public class TestFriends {
-	// nothing
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/META-INF/MANIFEST.MF
deleted file mode 100644
index a87ad54..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: xfriends.test2
-Bundle-SymbolicName: xfriends.test2
-Bundle-Version: 1.0.0
-Bundle-Activator: xfriends.test2.Activator
-Require-Bundle: xfriends.test1
-Import-Package: org.osgi.framework,
- org.eclipse.osgi.tests.bundles
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/xfriends/test2/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/xfriends/test2/Activator.java
deleted file mode 100644
index 83649c1..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test2/xfriends/test2/Activator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package xfriends.test2;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("xfriends.test1.onlyforfriends.TestFriends").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("xfriends.test1.external.TestFriends").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/META-INF/MANIFEST.MF
deleted file mode 100644
index 5f0aca5..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: xfriends.test3
-Bundle-SymbolicName: xfriends.test3
-Bundle-Version: 1.0.0
-Bundle-Activator: xfriends.test3.Activator
-Require-Bundle: xfriends.test1
-Import-Package: org.osgi.framework,
- org.eclipse.osgi.tests.bundles
diff --git a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/xfriends/test3/Activator.java b/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/xfriends/test3/Activator.java
deleted file mode 100644
index b03d452..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/xfriends.test3/xfriends/test3/Activator.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package xfriends.test3;
-
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class Activator implements BundleActivator {
-
-	public void start(BundleContext context) throws Exception {
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("xfriends.test1.onlyforfriends.TestFriends").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent("success"); //$NON-NLS-1$
-		}
-		try {
-			AbstractBundleTests.simpleResults.addEvent(Class.forName("xfriends.test1.external.TestFriends").getName()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			AbstractBundleTests.simpleResults.addEvent(t);
-		}
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/plugin.xml b/bundles/org.eclipse.osgi.tests/plugin.xml
deleted file mode 100644
index 69e6db3..0000000
--- a/bundles/org.eclipse.osgi.tests/plugin.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-   <extension
-         id="simpleApp"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="1"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.SimpleApp">
-         </run>
-      </application>
-   </extension>
-   <extension
-         id="globalSingletonApp"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.SimpleApp">
-         </run>
-      </application>
-   </extension>
-   <extension
-         id="testCardinality01"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="10"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.SimpleApp">
-         </run>
-      </application>
-   </extension>
-   <extension
-         id="testCardinality02"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="*"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.SimpleApp">
-         </run>
-      </application>
-   </extension>
-   <extension
-         id="testMainThreaded01"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="*"
-            thread="main"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.SimpleApp">
-         </run>
-      </application>
-   </extension>
-      <extension
-         id="testMainThreaded02"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="1"
-            thread="main"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.SimpleApp">
-         </run>
-      </application>
-   </extension>
-   <extension
-         id="failedApp"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="1"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.FailedApp">
-         </run>
-      </application>
-   </extension>
-   <extension
-         id="exitValueApp"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="1"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.ExitValueApp">
-         </run>
-      </application>
-   </extension>
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/AutomatedTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/AutomatedTests.java
deleted file mode 100644
index ed368a2..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/AutomatedTests.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests;
-
-import junit.framework.*;
-import org.eclipse.osgi.tests.bundles.BundleTests;
-import org.eclipse.osgi.tests.composites.AllCompositeTests;
-import org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase;
-import org.eclipse.osgi.tests.eventmgr.EventManagerTests;
-import org.eclipse.osgi.tests.filter.FilterTests;
-import org.eclipse.osgi.tests.internal.plugins.InstallTests;
-import org.eclipse.osgi.tests.listeners.ExceptionHandlerTests;
-import org.eclipse.osgi.tests.misc.MiscTests;
-import org.eclipse.osgi.tests.permissions.PermissionTests;
-import org.eclipse.osgi.tests.serviceregistry.ServiceRegistryTests;
-
-public class AutomatedTests extends TestCase {
-	public final static String PI_OSGI_TESTS = "org.eclipse.osgi.tests"; //$NON-NLS-1$
-
-	/**
-	 * AllTests constructor.
-	 */
-	public AutomatedTests() {
-		super(null);
-	}
-
-	/**
-	 * AllTests constructor comment.
-	 * @param name java.lang.String
-	 */
-	public AutomatedTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AutomatedTests.class.getName());
-		//		suite.addTest(new TestSuite(SimpleTests.class));
-		suite.addTest(new TestSuite(InstallTests.class));
-		suite.addTest(org.eclipse.osgi.tests.eclipseadaptor.AllTests.suite());
-		suite.addTest(org.eclipse.osgi.tests.services.resolver.AllTests.suite());
-		suite.addTest(DebugOptionsTestCase.suite());
-		suite.addTest(org.eclipse.osgi.tests.security.SecurityTestSuite.suite());
-		suite.addTest(org.eclipse.osgi.tests.appadmin.AllTests.suite());
-		suite.addTest(new TestSuite(ExceptionHandlerTests.class));
-		suite.addTest(org.eclipse.osgi.tests.configuration.AllTests.suite());
-		suite.addTest(org.eclipse.osgi.tests.services.datalocation.AllTests.suite());
-		suite.addTest(org.eclipse.osgi.tests.util.AllTests.suite());
-		suite.addTest(MiscTests.suite());
-		suite.addTest(BundleTests.suite());
-		suite.addTest(ServiceRegistryTests.suite());
-		suite.addTest(EventManagerTests.suite());
-		suite.addTest(FilterTests.suite());
-		suite.addTest(PermissionTests.suite());
-		suite.addTest(AllCompositeTests.suite());
-		suite.addTest(org.eclipse.osgi.tests.securityadmin.AllSecurityAdminTests.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTest.java
deleted file mode 100644
index 0e3b144..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTest.java
+++ /dev/null
@@ -1,34 +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.osgi.tests;
-
-import org.eclipse.core.tests.harness.CoreTest;
-import org.osgi.framework.BundleContext;
-
-/**
- * @since 3.1
- */
-public class OSGiTest extends CoreTest {
-
-	public static final String PI_OSGI_TESTS = "org.eclipse.osgi.tests";
-
-	public OSGiTest() {
-		super();
-	}
-
-	public OSGiTest(String name) {
-		super(name);
-	}
-	
-	public BundleContext getContext() {
-		return OSGiTestsActivator.getContext();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTestsActivator.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTestsActivator.java
deleted file mode 100644
index 9b9a541..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/OSGiTestsActivator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests;
-
-import org.osgi.framework.BundleActivator;
-import org.osgi.framework.BundleContext;
-
-public class OSGiTestsActivator implements BundleActivator {
-	public static final String TEST_FILES_ROOT = "test_files/";
-
-	private static OSGiTestsActivator instance;
-	private BundleContext context;
-
-	public OSGiTestsActivator() {
-		instance = this;
-	}
-
-	public void start(BundleContext context) throws Exception {
-		this.context = context;
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		this.context = null;
-	}
-
-	public static BundleContext getContext() {
-		return instance != null ? instance.context : null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/AllTests.java
deleted file mode 100644
index 08e0bbb..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/AllTests.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.appadmin;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllTests.class.getName());
-		suite.addTest(ApplicationAdminTest.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java
deleted file mode 100644
index 0209d8c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ApplicationAdminTest.java
+++ /dev/null
@@ -1,1251 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.appadmin;
-
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-import org.eclipse.osgi.tests.OSGiTest;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.tests.bundles.BundleInstaller;
-import org.osgi.framework.*;
-import org.osgi.service.application.*;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class ApplicationAdminTest extends OSGiTest {
-	public static final String testRunnerApp = "org.eclipse.pde.junit.runtime.coretestapplicationnonmain"; //$NON-NLS-1$
-	public static final String testResults = "test.results"; //$NON-NLS-1$
-	public static final String SUCCESS = "success"; //$NON-NLS-1$
-	public static final String ADDED = "added"; //$NON-NLS-1$
-	public static final String MODIFIED = "modified"; //$NON-NLS-1$
-	public static final String REMOVED = "removed"; //$NON-NLS-1$
-	public static final String simpleResults = "test.simpleResults"; //$NON-NLS-1$
-	public static final String[] tests = new String[] {
-			"testSimpleApp", "testInvalidArgs", "testAsyncValue01", "testAsyncValue02", "testAsyncValue03", "testAsyncValue04", "testAsyncValue05", "testAsyncValue06", "testExitValue01", "testExitValue02", "testExitValue03", "testExitValue04", "testExitValue05", "testExitValue06", "testExitValue07", "testExitValue08", "testExitValue09", "testExitValue10", "testGlobalSingleton", "testCardinality01", "testCardinality02", "testMainThreaded01", "testMainThreaded02", "testHandleEvents01", "testDescriptorEvents01", "testPersistentLock01", "testPersistentLock02", "testPersistentLock03", "testPersistentSchedule01", "testPersistentSchedule02", "testPersistentSchedule03", "testPersistentSchedule04", "testPersistentSchedule05", "testPersistentSchedule06", "testPersistentSchedule07", "testPersistentSchedule08", "testFailedApplication01", "testDestroyBeforeStart01", "testDestroyBeforeStart02"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$ //$NON-NLS-14$ //$NON-NLS-15$ //$NON-NLS-16$ //$NON-NLS-17$ //$NON-NLS-18$ //$NON-NLS-19$ //$NON-NLS-20$ //$NON-NLS-21$ //$NON-NLS-22$ //$NON-NLS-23$ //$NON-NLS-24$ //$NON-NLS-25$ //$NON-NLS-26$ //$NON-NLS-27$ //$NON-NLS-28$ //$NON-NLS-29$
-	private static final String PI_OSGI_SERVICES = "org.eclipse.osgi.services"; //$NON-NLS-1$
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ApplicationAdminTest.class.getName());
-
-		ConfigurationSessionTestSuite appAdminSessionTest = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, ApplicationAdminTest.class.getName());
-		String[] ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET;
-		for (int i = 0; i < ids.length; i++)
-			appAdminSessionTest.addBundle(ids[i]);
-		appAdminSessionTest.addBundle(PI_OSGI_SERVICES);
-		appAdminSessionTest.addBundle(PI_OSGI_TESTS);
-		appAdminSessionTest.setApplicationId(testRunnerApp);
-		try {
-			appAdminSessionTest.getSetup().setSystemProperty("eclipse.application.registerDescriptors", "true"); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (SetupException e) {
-			throw new RuntimeException(e);
-		}
-		// we add tests the hard way so we can control the order of the tests.
-		for (int i = 0; i < tests.length; i++)
-			appAdminSessionTest.addTest(new ApplicationAdminTest(tests[i]));
-		suite.addTest(appAdminSessionTest);
-		return suite;
-	}
-
-	public ApplicationAdminTest(String name) {
-		super(name);
-	}
-
-	private ApplicationDescriptor getApplication(String appName) {
-		try {
-			BundleContext context = getContext();
-			assertNotNull("BundleContext is null!!", context); //$NON-NLS-1$
-			Class appDescClass = ApplicationDescriptor.class;
-			assertNotNull("ApplicationDescriptor.class is null!!", appDescClass); //$NON-NLS-1$
-			ServiceReference[] refs = context.getServiceReferences(appDescClass.getName(), "(" + ApplicationDescriptor.APPLICATION_PID + "=" + appName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			if (refs == null || refs.length == 0) {
-				refs = getContext().getServiceReferences(ApplicationDescriptor.class.getName(), null);
-				String availableApps = ""; //$NON-NLS-1$
-				if (refs != null) {
-					for (int i = 0; i < refs.length; i++) {
-						availableApps += refs[i].getProperty(ApplicationDescriptor.APPLICATION_PID);
-						if (i < refs.length - 1)
-							availableApps += ","; //$NON-NLS-1$
-					}
-				}
-				fail("Could not find app pid: " + appName + " available apps are: " + availableApps); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			ApplicationDescriptor result = (ApplicationDescriptor) getContext().getService(refs[0]);
-			if (result != null)
-				getContext().ungetService(refs[0]);
-			else
-				fail("Could not get application descriptor service: " + appName); //$NON-NLS-1$
-			return result;
-		} catch (InvalidSyntaxException e) {
-			fail("Could not create app filter", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	private HashMap getArguments() {
-		HashMap args = new HashMap();
-		args.put(testResults, new HashMap());
-		return args;
-	}
-
-	public void testSimpleApp() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		HashMap args = getArguments();
-		HashMap results = (HashMap) args.get(testResults);
-		try {
-			ApplicationHandle handle = app.launch(args);
-			handle.destroy();
-		} catch (Throwable e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		String result = (String) results.get(simpleResults);
-		assertEquals("Check application result", SUCCESS, result); //$NON-NLS-1$
-	}
-
-	private void doInvalidScheduleArgs(ApplicationDescriptor app, String id, Map invalidArgs, String topic, String eventFilter, boolean recurring, boolean invalidKeys, boolean invalidValues) {
-		ScheduledApplication sched = null;
-		try {
-			sched = app.schedule(id, invalidArgs, topic, eventFilter, recurring);
-			try {
-				sched.remove();
-			} catch (Throwable t) {
-				// nothing
-			}
-			if (invalidKeys || invalidValues)
-				fail("Should have failed with invalid arguments"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		} catch (IllegalArgumentException e) {
-			if (!invalidKeys)
-				fail("Failed to schedule an application", e); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			if (!invalidValues)
-				fail("Failed to schedule an application", e); //$NON-NLS-1$
-			if (e.getErrorCode() != ApplicationException.APPLICATION_INVALID_STARTUP_ARGUMENT)
-				fail("Failed to schedule an application", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testInvalidArgs() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		HashMap args = new HashMap();
-		args.put("test.arg1", Boolean.TRUE); //$NON-NLS-1$
-		args.put("test.arg2", new Integer(34)); //$NON-NLS-1$
-		args.put("test.arg3", new Long(34)); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		args.put("test.arg4", this); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		Collection list = new ArrayList();
-		args.put("test.arg4", list); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		list.add(this);
-		args.put("test.arg4", list); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		list.clear();
-		list.add("test"); //$NON-NLS-1$
-		list.add(new Integer(0));
-		list.add(new Long(0));
-		list.add(new Float(0));
-		list.add(new Double(0));
-		list.add(new Byte((byte) 0));
-		list.add(new Short((short) 1));
-		list.add(new Character((char) 0));
-		list.add(new Boolean(true));
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		args.put("test.arg5", new String[0]); //$NON-NLS-1$
-		args.put("test.arg6", new int[0]); //$NON-NLS-1$
-		args.put("test.arg7", new long[0]); //$NON-NLS-1$
-		args.put("test.arg8", new float[0]); //$NON-NLS-1$
-		args.put("test.arg9", new double[0]); //$NON-NLS-1$
-		args.put("test.arg10", new byte[0]); //$NON-NLS-1$
-		args.put("test.arg11", new short[0]); //$NON-NLS-1$
-		args.put("test.arg12", new char[0]); //$NON-NLS-1$
-		args.put("test.arg12", new boolean[0]); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		args.put("test.arg13", "test"); //$NON-NLS-1$ //$NON-NLS-2$
-		args.put("test.arg14", new Integer(0)); //$NON-NLS-1$
-		args.put("test.arg15", new Long(0)); //$NON-NLS-1$
-		args.put("test.arg16", new Float(0)); //$NON-NLS-1$
-		args.put("test.arg17", new Double(0)); //$NON-NLS-1$
-		args.put("test.arg18", new Byte((byte) 0)); //$NON-NLS-1$
-		args.put("test.arg19", new Short((short) 1)); //$NON-NLS-1$
-		args.put("test.arg20", new Character((char) 0)); //$NON-NLS-1$
-		args.put("test.arg21", new Boolean(true)); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		Map testMap = new HashMap();
-		args.put("test.arg22", testMap); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, false, true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-		args.clear();
-		args.put(new Long(0), "test"); //$NON-NLS-1$
-		doInvalidScheduleArgs(app, "schedule.testargs", args, "org/osgi/application/timer", "(minute=*)", true, true, false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	public void testExitValue01() {
-		// simple getExitValue test
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		String value = null;
-		try {
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testExitValue02() {
-		// getExitValue test when called from a service listener during service unregistration
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		final Object[] result = new Object[1];
-		ServiceTrackerCustomizer trackerCustomizer = new ServiceTrackerCustomizer() {
-			public Object addingService(ServiceReference reference) {
-				return getContext().getService(reference);
-			}
-
-			public void modifiedService(ServiceReference reference, Object service) {
-				// nothing
-			}
-
-			public void removedService(ServiceReference reference, Object service) {
-				try {
-					result[0] = ((ApplicationHandle) service).getExitValue(10000);
-				} catch (Exception e) {
-					result[0] = e;
-				}
-			}
-		};
-		ServiceTracker tracker = null;
-		try {
-			tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + app.getApplicationId() + "))"), trackerCustomizer); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		} catch (InvalidSyntaxException e) {
-			fail("unexpected syntax exception for tracker", e); //$NON-NLS-1$
-		}
-		tracker.open();
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		String value = null;
-		try {
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-		assertEquals("value from service unregister is different", value, result[0]); //$NON-NLS-1$
-	}
-
-	public void testExitValue03() {
-		// getExitValue test when called from a service listener during service property modified (STOPPING)
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		final Object[] result = new Object[1];
-		ServiceTrackerCustomizer trackerCustomizer = new ServiceTrackerCustomizer() {
-			public Object addingService(ServiceReference reference) {
-				return getContext().getService(reference);
-			}
-
-			public void modifiedService(ServiceReference reference, Object service) {
-				if (!"org.eclipse.equinox.app.stopped".equals(reference.getProperty(ApplicationHandle.APPLICATION_STATE))) //$NON-NLS-1$
-					return;
-				try {
-					result[0] = ((ApplicationHandle) service).getExitValue(10000);
-				} catch (Exception e) {
-					result[0] = e;
-				}
-			}
-
-			public void removedService(ServiceReference reference, Object service) {
-				// nothing
-			}
-		};
-		ServiceTracker tracker = null;
-		try {
-			tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + app.getApplicationId() + "))"), trackerCustomizer); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		} catch (InvalidSyntaxException e) {
-			fail("unexpected syntax exception for tracker", e); //$NON-NLS-1$
-		}
-		tracker.open();
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		String value = null;
-		try {
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-		assertEquals("value from service unregister is different", value, result[0]); //$NON-NLS-1$
-	}
-
-	public void testExitValue04() {
-		// getExitValue test with destroy called while waiting for an exit value
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		final ApplicationHandle destroyHandle = handle;
-		new Thread(new Runnable() {
-			public void run() {
-				try {
-					Thread.sleep(1000);
-					destroyHandle.destroy();
-				} catch (InterruptedException e) {
-					// nothing
-				}
-
-			}
-		}).start();
-		String value = null;
-		try {
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testExitValue05() {
-		// getExitValue test with destroy called before getting an exit value
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		handle.destroy();
-		String value = null;
-		try {
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testExitValue06() {
-		// getExitValue test; expecting an ApplicationException because the exit value is not available
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		try {
-			handle.getExitValue(100);
-			fail("Expected an ApplicationException for exit value not available"); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			assertEquals("Unexpected error type", ApplicationException.APPLICATION_EXITVALUE_NOT_AVAILABLE, e.getErrorCode()); //$NON-NLS-1$
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception waiting for exit value", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testExitValue07() {
-		//getExitValue test; called with timeout 0
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launcher simpleApp", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-
-		String value = null;
-		try {
-			value = (String) handle.getExitValue(0);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testExitValue08() {
-		//getExitValue test; called with timeout -1
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launcher simpleApp", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-
-		try {
-			handle.getExitValue(-1);
-			fail("Expected an ApplicationException for exit value not available"); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			assertEquals("Unexpected error type", ApplicationException.APPLICATION_EXITVALUE_NOT_AVAILABLE, e.getErrorCode()); //$NON-NLS-1$
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception waiting for exit value", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testExitValue09() {
-		//getExitValue test; application returns null
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-
-		HashMap args = getArguments();
-		args.put(ExitValueApp.returnNullResult, Boolean.TRUE);
-
-		try {
-			handle = app.launch(args);
-		} catch (ApplicationException e) {
-			fail("failed to launcher simpleApp", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-
-		try {
-			assertNull("expected null return value", handle.getExitValue(0));
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testExitValue10() {
-		//getExitValue test; called with timeout 0 after the result is available
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		String value = null;
-		try {
-			// waiting for app to exit
-			handle.getExitValue(10000);
-			// app exited now get the result with 0 timeout
-			value = (String) handle.getExitValue(0);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-
-		try {
-			// app exited now get the result with -1 timeout; we know the value is ready from above
-			value = (String) handle.getExitValue(-1);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testAsyncValue01() {
-		//setValue test; called with timeout 0 after the result is available
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		Map args = new HashMap();
-		args.put(ExitValueApp.returnAsyncResult, Boolean.TRUE);
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(args);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		String value = null;
-		try {
-			// waiting for app to exit
-			handle.getExitValue(10000);
-			// app exited now get the result with 0 timeout
-			value = (String) handle.getExitValue(0);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-
-		try {
-			// app exited now get the result with -1 timeout; we know the value is ready from above
-			value = (String) handle.getExitValue(-1);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testAsyncValue02() {
-		//setValue test; called with timeout -1
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-		Map args = new HashMap();
-		args.put(ExitValueApp.returnAsyncResult, Boolean.TRUE);
-		try {
-			handle = app.launch(args);
-		} catch (ApplicationException e) {
-			fail("failed to launcher simpleApp", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-
-		try {
-			handle.getExitValue(-1);
-			fail("Expected an ApplicationException for exit value not available"); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			assertEquals("Unexpected error type", ApplicationException.APPLICATION_EXITVALUE_NOT_AVAILABLE, e.getErrorCode()); //$NON-NLS-1$
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception waiting for exit value", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAsyncValue03() {
-		//setValue test; application returns null
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		ApplicationHandle handle = null;
-
-		HashMap args = getArguments();
-		args.put(ExitValueApp.returnNullResult, Boolean.TRUE);
-		args.put(ExitValueApp.returnAsyncResult, Boolean.TRUE);
-
-		try {
-			handle = app.launch(args);
-		} catch (ApplicationException e) {
-			fail("failed to launcher simpleApp", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-
-		try {
-			assertNull("expected null return value", handle.getExitValue(0));
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAsyncValue04() {
-		// setValue test with destroy called while waiting for an exit value
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		HashMap args = getArguments();
-		args.put(ExitValueApp.returnAsyncResult, Boolean.TRUE);
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(null);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		final ApplicationHandle destroyHandle = handle;
-		new Thread(new Runnable() {
-			public void run() {
-				try {
-					Thread.sleep(1000);
-					destroyHandle.destroy();
-				} catch (InterruptedException e) {
-					// nothing
-				}
-
-			}
-		}).start();
-		String value = null;
-		try {
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testAsyncValue05() {
-		// test calling setValue to early
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		Map args = new HashMap();
-		args.put(ExitValueApp.setAsyncEarly, Boolean.TRUE);
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(args);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		String value = null;
-		try {
-			// waiting for app to exit
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testAsyncValue06() {
-		// test calling setValue with wrong application instance
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".exitValueApp"); //$NON-NLS-1$
-		Map args = new HashMap();
-		args.put(ExitValueApp.returnAsyncResult, Boolean.TRUE);
-		args.put(ExitValueApp.setAsyncWrongApp, Boolean.TRUE);
-		ApplicationHandle handle = null;
-		try {
-			handle = app.launch(args);
-		} catch (ApplicationException e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-		assertNotNull("app handle is null", handle); //$NON-NLS-1$
-		String value = null;
-		try {
-			// waiting for app to exit
-			value = (String) handle.getExitValue(10000);
-		} catch (Exception e) {
-			fail("unexpected exception waiting for exit value", e); //$NON-NLS-1$
-		}
-		assertNotNull("value is null", value); //$NON-NLS-1$
-		assertEquals("exit value is incorrect", ExitValueApp.exitValue, value); //$NON-NLS-1$
-	}
-
-	public void testGlobalSingleton() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".globalSingletonApp"); //$NON-NLS-1$
-		HashMap args = getArguments();
-		try {
-			ApplicationHandle handle = app.launch(args);
-			handle.destroy();
-			fail("should not be able to launch a global singleton app: " + app.getApplicationId()); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			assertEquals("check error code", ApplicationException.APPLICATION_NOT_LAUNCHABLE, e.getErrorCode()); //$NON-NLS-1$
-		}
-	}
-
-	private void doTestCardinality01(String appID, int cardinality, boolean hasMax) {
-		ApplicationDescriptor app = getApplication(appID);
-		ArrayList instances = new ArrayList();
-		int i = 0;
-		try {
-			for (; i <= cardinality; i++)
-				instances.add(app.launch(null));
-		} catch (ApplicationException e) {
-			if (!hasMax || i != cardinality)
-				fail("Unexpected ApplicationException", e); //$NON-NLS-1$
-			assertEquals("check error code", ApplicationException.APPLICATION_NOT_LAUNCHABLE, e.getErrorCode()); //$NON-NLS-1$
-		} finally {
-			for (Iterator handles = instances.iterator(); handles.hasNext();) {
-				((ApplicationHandle) handles.next()).destroy();
-			}
-		}
-		assertEquals("Did not launch the correct # of concurrent instances", instances.size(), cardinality + (hasMax ? 0 : 1)); //$NON-NLS-1$
-	}
-
-	public void testCardinality01() {
-		doTestCardinality01(PI_OSGI_TESTS + ".testCardinality01", 10, true); //$NON-NLS-1$
-	}
-
-	public void testCardinality02() {
-		doTestCardinality01(PI_OSGI_TESTS + ".testCardinality02", 20, false); //$NON-NLS-1$
-	}
-
-	private void doTestMainThreaded(String appID) {
-		ApplicationDescriptor app = getApplication(appID);
-		ArrayList instances = new ArrayList();
-		try {
-			instances.add(app.launch(null));
-			instances.add(app.launch(null));
-		} catch (ApplicationException e) {
-			if (instances.size() == 0)
-				fail("Unable to launch a main threaded application", e); //$NON-NLS-1$
-			assertEquals("check error code", ApplicationException.APPLICATION_NOT_LAUNCHABLE, e.getErrorCode()); //$NON-NLS-1$
-		} finally {
-			for (Iterator handles = instances.iterator(); handles.hasNext();) {
-				((ApplicationHandle) handles.next()).destroy();
-			}
-		}
-		assertEquals("Did not launch the correct # of main app instances", instances.size(), 1); //$NON-NLS-1$
-	}
-
-	public void testMainThreaded01() {
-		doTestMainThreaded(PI_OSGI_TESTS + ".testMainThreaded01"); //$NON-NLS-1$
-	}
-
-	public void testMainThreaded02() {
-		doTestMainThreaded(PI_OSGI_TESTS + ".testMainThreaded02"); //$NON-NLS-1$
-	}
-
-	public void testHandleEvents01() throws InvalidSyntaxException {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		ApplicationHandleTracker handleTracker = new ApplicationHandleTracker(getContext());
-		ServiceTracker tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + app.getApplicationId() + "))"), handleTracker); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		tracker.open();
-		try {
-			ApplicationHandle handle = app.launch(null);
-			handleTracker.waitForEvent(handle.getInstanceId(), ApplicationHandle.RUNNING);
-			handle.destroy();
-			handleTracker.waitForEvent(handle.getInstanceId(), REMOVED);
-			String[][] events = handleTracker.getEvents();
-			String[][] expected = new String[][] {new String[] {handle.getInstanceId(), "org.eclipse.equinox.app.starting"}, new String[] {handle.getInstanceId(), ApplicationHandle.RUNNING}, new String[] {handle.getInstanceId(), ApplicationHandle.STOPPING}, new String[] {handle.getInstanceId(), "org.eclipse.equinox.app.stopped"}, new String[] {handle.getInstanceId(), "removed"}}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			assertEquals("Check expected # events", expected.length, events.length); //$NON-NLS-1$
-			for (int i = 0; i < events.length; i++) {
-				assertEquals("Check expected event id for #" + i, expected[i][0], events[i][0]); //$NON-NLS-1$
-				assertEquals("Check expected event state for #" + i, expected[i][1], events[i][1]); //$NON-NLS-1$
-			}
-		} catch (ApplicationException e) {
-			fail("failed to launch application", e); //$NON-NLS-1$
-		} finally {
-			tracker.close();
-		}
-	}
-
-	public void testDescriptorEvents01() throws InvalidSyntaxException, BundleException {
-		BundleInstaller bundleInstaller = null;
-		try {
-			bundleInstaller = new BundleInstaller(OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/appAdminTests", getContext()); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Failed to create bundle installer", e); //$NON-NLS-1$
-		}
-		String testAppPID = "appadmin.test01.simpleApp"; //$NON-NLS-1$
-		ApplicationDescriptorTracker descriptionTracker = new ApplicationDescriptorTracker(getContext());
-		ServiceTracker tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationDescriptor.class.getName() + ")(" + ApplicationDescriptor.APPLICATION_PID + "=" + testAppPID + "))"), descriptionTracker); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		tracker.open();
-		try {
-			Bundle test01 = bundleInstaller.installBundle("appadmin.test01"); //$NON-NLS-1$
-			assertTrue("Check if test bundle is resolved: " + test01.getSymbolicName(), bundleInstaller.resolveBundles(new Bundle[] {test01})); //$NON-NLS-1$
-			descriptionTracker.waitForEvent(testAppPID, ADDED, Boolean.FALSE, Boolean.TRUE);
-			ApplicationDescriptor app = getApplication(testAppPID);
-			app.lock();
-			Boolean locked = (Boolean) app.getProperties("").get(ApplicationDescriptor.APPLICATION_LOCKED); //$NON-NLS-1$
-			assertTrue("Application should be locked", locked.booleanValue()); //$NON-NLS-1$
-			descriptionTracker.waitForEvent(testAppPID, MODIFIED, Boolean.TRUE, Boolean.TRUE);
-			app.unlock();
-			descriptionTracker.waitForEvent(testAppPID, MODIFIED, Boolean.FALSE, Boolean.TRUE);
-			ApplicationHandle handle = null;
-			try {
-				handle = app.launch(null);
-			} catch (ApplicationException e) {
-				fail("failed to launch app: " + app.getApplicationId(), e); //$NON-NLS-1$
-			}
-			descriptionTracker.waitForEvent(testAppPID, MODIFIED, Boolean.FALSE, Boolean.FALSE);
-			handle.destroy();
-			descriptionTracker.waitForEvent(testAppPID, MODIFIED, Boolean.FALSE, Boolean.TRUE);
-			test01.uninstall();
-			descriptionTracker.waitForEvent(testAppPID, REMOVED, Boolean.FALSE, Boolean.TRUE);
-		} finally {
-			bundleInstaller.shutdown();
-			tracker.close();
-		}
-	}
-
-	public void testPersistentLock01() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		app.lock();
-	}
-
-	public void testPersistentLock02() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		try {
-			ApplicationHandle handle = app.launch(null);
-			handle.destroy();
-			fail("The application should be locked: " + app.getApplicationId()); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			assertEquals("check error code", ApplicationException.APPLICATION_LOCKED, e.getErrorCode()); //$NON-NLS-1$
-		}
-		app.unlock();
-		try {
-			ApplicationHandle handle = app.launch(null);
-			handle.destroy();
-		} catch (Throwable e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testPersistentLock03() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		try {
-			ApplicationHandle handle = app.launch(null);
-			handle.destroy();
-		} catch (Throwable e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testPersistentSchedule01() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		try {
-			HashMap args = new HashMap();
-			args.put("test.arg1", Boolean.TRUE); //$NON-NLS-1$
-			args.put("test.arg2", new Integer(34)); //$NON-NLS-1$
-			args.put("test.arg3", new Long(34)); //$NON-NLS-1$
-			app.schedule("schedule.1", args, "org/osgi/application/timer", "(minute=*)", true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		} catch (InvalidSyntaxException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testPersistentSchedule02() throws InvalidSyntaxException {
-		ScheduledApplication scheduledApp = getScheduleApplication("schedule.1", true); //$NON-NLS-1$
-		ApplicationHandleTracker handleTracker = new ApplicationHandleTracker(getContext());
-		ServiceTracker tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + scheduledApp.getApplicationDescriptor().getApplicationId() + "))"), handleTracker); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		tracker.open();
-		try {
-			ApplicationHandle handle = (ApplicationHandle) tracker.waitForService(61000);
-			assertNotNull("Should find an application handle", handle); //$NON-NLS-1$
-			handleTracker.waitForEvent(handle.getInstanceId(), ApplicationHandle.RUNNING);
-			handle.destroy();
-			handleTracker.waitForEvent(handle.getInstanceId(), REMOVED);
-			HashMap results = null;
-			try {
-				results = (HashMap) handle.getExitValue(1000);
-			} catch (ApplicationException e) {
-				fail("Unexpected application exception waiting for an exit value", e); //$NON-NLS-1$
-			}
-			assertNotNull("Null results", results); //$NON-NLS-1$
-			HashMap args = new HashMap();
-			args.put("test.arg1", Boolean.TRUE); //$NON-NLS-1$
-			args.put("test.arg2", new Integer(34)); //$NON-NLS-1$
-			args.put("test.arg3", new Long(34)); //$NON-NLS-1$
-			for (Iterator iEntries = args.entrySet().iterator(); iEntries.hasNext();) {
-				Map.Entry entry = (Map.Entry) iEntries.next();
-				assertEquals("key: " + entry.getKey(), entry.getValue(), results.get(entry.getKey())); //$NON-NLS-1$
-			}
-		} catch (InterruptedException e) {
-			fail("got interupted", e); //$NON-NLS-1$
-		} finally {
-			tracker.close();
-			scheduledApp.remove();
-		}
-	}
-
-	public void testPersistentSchedule03() {
-		ScheduledApplication scheduledApp = getScheduleApplication("schedule.1", false); //$NON-NLS-1$
-		if (scheduledApp != null) {
-			scheduledApp.remove();
-			fail("Scheduled application should not be found: " + scheduledApp.getScheduleId()); //$NON-NLS-1$
-		}
-	}
-
-	public void testPersistentSchedule04() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		try {
-			// lock the app so that it cannot be launched with a scheduled
-			app.lock();
-			HashMap args = new HashMap();
-			args.put("test.arg1", Boolean.TRUE); //$NON-NLS-1$
-			args.put("test.arg2", new Integer(34)); //$NON-NLS-1$
-			args.put("test.arg3", new Long(34)); //$NON-NLS-1$
-			// make it non-recurring
-			app.schedule("schedule.2", args, "org/osgi/application/timer", "(minute=*)", false); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		} catch (InvalidSyntaxException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testPersistentSchedule05() throws InvalidSyntaxException {
-		ScheduledApplication scheduledApp = getScheduleApplication("schedule.2", true); //$NON-NLS-1$
-		ApplicationHandleTracker handleTracker = new ApplicationHandleTracker(getContext());
-		ServiceTracker tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + scheduledApp.getApplicationDescriptor().getApplicationId() + "))"), handleTracker); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		tracker.open();
-		ApplicationHandle badHandle = null;
-		try {
-			badHandle = (ApplicationHandle) tracker.waitForService(61000);
-			assertNull("Should not find an application handle", badHandle); //$NON-NLS-1$
-			// unlock app then try again
-			scheduledApp.getApplicationDescriptor().unlock();
-			ApplicationHandle handle = (ApplicationHandle) tracker.waitForService(61000);
-			assertNotNull("Should find an application handle", handle); //$NON-NLS-1$
-			handleTracker.waitForEvent(handle.getInstanceId(), ApplicationHandle.RUNNING);
-			handle.destroy();
-			handleTracker.waitForEvent(handle.getInstanceId(), REMOVED);
-			HashMap results = null;
-			try {
-				results = (HashMap) handle.getExitValue(1000);
-			} catch (ApplicationException e) {
-				fail("Unexpected application exception waiting for an exit value", e); //$NON-NLS-1$
-			}
-			assertNotNull("Null results", results); //$NON-NLS-1$
-			HashMap args = new HashMap();
-			args.put("test.arg1", Boolean.TRUE); //$NON-NLS-1$
-			args.put("test.arg2", new Integer(34)); //$NON-NLS-1$
-			args.put("test.arg3", new Long(34)); //$NON-NLS-1$
-			for (Iterator iEntries = args.entrySet().iterator(); iEntries.hasNext();) {
-				Map.Entry entry = (Map.Entry) iEntries.next();
-				assertEquals("key: " + entry.getKey(), entry.getValue(), results.get(entry.getKey())); //$NON-NLS-1$
-			}
-			// should not find the scheduled app anymore
-			// sleeping here to allow for the scheduled app to disappear; could use service events instead
-			Thread.sleep(1000);
-			scheduledApp = getScheduleApplication("schedule.2", false); //$NON-NLS-1$
-			if (scheduledApp != null) {
-				fail("Scheduled application should not be found: " + scheduledApp.getScheduleId()); //$NON-NLS-1$
-			}
-		} catch (InterruptedException e) {
-			fail("got interupted", e); //$NON-NLS-1$
-		} finally {
-			if (badHandle != null)
-				badHandle.destroy();
-			tracker.close();
-			if (scheduledApp != null)
-				scheduledApp.remove();
-		}
-	}
-
-	public void testPersistentSchedule06() {
-		ScheduledApplication scheduledApp = getScheduleApplication("schedule.2", false); //$NON-NLS-1$
-		if (scheduledApp != null) {
-			scheduledApp.remove();
-			fail("Scheduled application should not be found: " + scheduledApp.getScheduleId()); //$NON-NLS-1$
-		}
-	}
-
-	public void testPersistentSchedule07() {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		try {
-			app.schedule("schedule.duplicate1", null, "org/osgi/application/timer", "(minute=*)", true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		} catch (InvalidSyntaxException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		}
-		try {
-			app.schedule("schedule.duplicate1", null, "org/osgi/application/timer", "(minute=*)", true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			fail("should not be able to create a duplicate scheduled application id"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			assertEquals("check error code", ApplicationException.APPLICATION_DUPLICATE_SCHEDULE_ID, e.getErrorCode()); //$NON-NLS-1$
-		}
-	}
-
-	public void testPersistentSchedule08() {
-		ScheduledApplication scheduledApp = getScheduleApplication("schedule.duplicate1", true); //$NON-NLS-1$
-		try {
-			scheduledApp.getApplicationDescriptor().schedule("schedule.duplicate1", null, "org/osgi/application/timer", "(minute=*)", true); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			fail("should not be able to create a duplicate scheduled application id"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Failed to schedule an application", e); //$NON-NLS-1$
-		} catch (ApplicationException e) {
-			assertEquals("check error code", ApplicationException.APPLICATION_DUPLICATE_SCHEDULE_ID, e.getErrorCode()); //$NON-NLS-1$
-		} finally {
-			scheduledApp.remove();
-		}
-	}
-
-	public void testFailedApplication01() throws InvalidSyntaxException {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".failedApp"); //$NON-NLS-1$
-		ApplicationHandleTracker handleTracker = new ApplicationHandleTracker(getContext());
-		ServiceTracker tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + app.getApplicationId() + "))"), handleTracker); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		tracker.open();
-		try {
-			ApplicationHandle handle = app.launch(null);
-			handleTracker.waitForEvent(handle.getInstanceId(), REMOVED);
-			String[][] events = handleTracker.getEvents();
-			String[][] expected = new String[][] {new String[] {handle.getInstanceId(), "org.eclipse.equinox.app.starting"}, new String[] {handle.getInstanceId(), ApplicationHandle.STOPPING}, new String[] {handle.getInstanceId(), "org.eclipse.equinox.app.stopped"}, new String[] {handle.getInstanceId(), "removed"}}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			assertEquals("Check expected # events", expected.length, events.length); //$NON-NLS-1$
-			for (int i = 0; i < events.length; i++) {
-				assertEquals("Check expected event id for #" + i, expected[i][0], events[i][0]); //$NON-NLS-1$
-				assertEquals("Check expected event state for #" + i, expected[i][1], events[i][1]); //$NON-NLS-1$
-			}
-		} catch (ApplicationException e) {
-			fail("failed to launch application", e); //$NON-NLS-1$
-		} finally {
-			tracker.close();
-		}
-	}
-
-	public void testDestroyBeforeStart01() throws InvalidSyntaxException {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".simpleApp"); //$NON-NLS-1$
-		HashMap args = getArguments();
-		HashMap results = (HashMap) args.get(testResults);
-		ServiceTrackerCustomizer trackerCustomizer = new ServiceTrackerCustomizer() {
-			public Object addingService(ServiceReference reference) {
-				ApplicationHandle handle = (ApplicationHandle) getContext().getService(reference);
-				handle.destroy();
-				return handle;
-			}
-
-			public void modifiedService(ServiceReference reference, Object service) {
-				// nothing
-			}
-
-			public void removedService(ServiceReference reference, Object service) {
-				// nothing
-			}
-		};
-		ServiceTracker tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + app.getApplicationId() + "))"), trackerCustomizer); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		tracker.open();
-		try {
-			ApplicationHandle handle = app.launch(args);
-			handle.destroy();
-		} catch (Throwable e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		} finally {
-			tracker.close();
-		}
-		String result = (String) results.get(simpleResults);
-		assertNull("Check application result", result); //$NON-NLS-1$
-	}
-
-	public void testDestroyBeforeStart02() throws InvalidSyntaxException {
-		ApplicationDescriptor app = getApplication(PI_OSGI_TESTS + ".testMainThreaded01"); //$NON-NLS-1$
-		HashMap args = getArguments();
-		HashMap results = (HashMap) args.get(testResults);
-		ServiceTrackerCustomizer trackerCustomizer = new ServiceTrackerCustomizer() {
-			public Object addingService(ServiceReference reference) {
-				ApplicationHandle handle = (ApplicationHandle) getContext().getService(reference);
-				handle.destroy();
-				return handle;
-			}
-
-			public void modifiedService(ServiceReference reference, Object service) {
-				// nothing
-			}
-
-			public void removedService(ServiceReference reference, Object service) {
-				// nothing
-			}
-		};
-		ServiceTracker tracker = new ServiceTracker(getContext(), FrameworkUtil.createFilter("(&(objectClass=" + ApplicationHandle.class.getName() + ")(" + ApplicationHandle.APPLICATION_DESCRIPTOR + "=" + app.getApplicationId() + "))"), trackerCustomizer); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		tracker.open();
-		try {
-			ApplicationHandle handle = app.launch(args);
-			handle.destroy();
-		} catch (Throwable e) {
-			fail("failed to launch simpleApp", e); //$NON-NLS-1$
-		} finally {
-			tracker.close();
-		}
-		String result = (String) results.get(simpleResults);
-		assertNull("Check application result", result); //$NON-NLS-1$
-	}
-
-	private ScheduledApplication getScheduleApplication(String scheduleID, boolean failOnMissing) {
-		try {
-			BundleContext context = getContext();
-			assertNotNull("BundleContext is null!!", context); //$NON-NLS-1$
-			Class schedAppClass = ScheduledApplication.class;
-			assertNotNull("ScheduledApplication.class is null!!", schedAppClass); //$NON-NLS-1$
-			ServiceReference[] refs = getContext().getServiceReferences(schedAppClass.getName(), "(" + ScheduledApplication.SCHEDULE_ID + "=" + scheduleID + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			if (refs == null || refs.length == 0) {
-				if (!failOnMissing)
-					return null;
-				refs = getContext().getServiceReferences(ScheduledApplication.class.getName(), null);
-				String availableScheds = ""; //$NON-NLS-1$
-				if (refs != null) {
-					for (int i = 0; i < refs.length; i++) {
-						availableScheds += refs[i].getProperty(ScheduledApplication.SCHEDULE_ID);
-						if (i < refs.length - 1)
-							availableScheds += ","; //$NON-NLS-1$
-					}
-				}
-				fail("Could not find schedule: " + scheduleID + " available apps are: " + availableScheds); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			ScheduledApplication result = (ScheduledApplication) getContext().getService(refs[0]);
-			if (result != null)
-				getContext().ungetService(refs[0]);
-			else
-				fail("Could not get scheduled application: " + scheduleID); //$NON-NLS-1$
-			return result;
-		} catch (InvalidSyntaxException e) {
-			fail("Could not create app filter", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	public static class ApplicationHandleTracker implements ServiceTrackerCustomizer {
-		private ArrayList events = new ArrayList();
-		private BundleContext bc;
-
-		public ApplicationHandleTracker(BundleContext bc) {
-			this.bc = bc;
-		}
-
-		public synchronized Object addingService(ServiceReference reference) {
-			String instance = (String) reference.getProperty(ApplicationHandle.APPLICATION_PID);
-			String state = (String) reference.getProperty(ApplicationHandle.APPLICATION_STATE);
-			events.add(new String[] {instance, state});
-			Object result = bc.getService(reference);
-			notifyAll();
-			return result;
-		}
-
-		public synchronized void modifiedService(ServiceReference reference, Object service) {
-			String instance = (String) reference.getProperty(ApplicationHandle.APPLICATION_PID);
-			String state = (String) reference.getProperty(ApplicationHandle.APPLICATION_STATE);
-			events.add(new String[] {instance, state});
-			notifyAll();
-		}
-
-		public synchronized void removedService(ServiceReference reference, Object service) {
-			String instance = (String) reference.getProperty(ApplicationHandle.APPLICATION_PID);
-			events.add(new String[] {instance, REMOVED});
-			notifyAll();
-		}
-
-		// Note that this method assumes you call it before the event actually gets posted.
-		// It only looks at the last event that was saved.
-		public synchronized void waitForEvent(String instance, String state) {
-			long delay = 5000;
-			long startTime = System.currentTimeMillis();
-			boolean found = eventFound(instance, state);
-			while (delay > 0 && !found) {
-				try {
-					wait(5000);
-					delay -= System.currentTimeMillis() - startTime;
-				} catch (InterruptedException e) {
-					// do nothing
-				}
-				found = eventFound(instance, state);
-			}
-			if (!found) {
-				Object[][] foundEvents = getEvents();
-				String foundEventsMsg;
-				if (foundEvents.length > 0) {
-					StringBuffer eventsBuffer = new StringBuffer();
-					eventsBuffer.append("\nFound the following events: \n"); //$NON-NLS-1$
-					for (int i = 0; i < foundEvents.length; i++)
-						eventsBuffer.append(" handle event: ").append(foundEvents[i][0]).append(" ").append(foundEvents[i][1]).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					foundEventsMsg = eventsBuffer.toString();
-				} else {
-					foundEventsMsg = "\nNo events recorded"; //$NON-NLS-1$
-				}
-				fail("failed waiting for handle event: " + instance + " " + state + foundEventsMsg); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		public synchronized String[][] getEvents() {
-			return (String[][]) events.toArray(new String[events.size()][]);
-		}
-
-		private boolean eventFound(String instance, String state) {
-			if (events.size() == 0)
-				return false;
-			String[] event = (String[]) events.get(events.size() - 1);
-			if (instance.equals(event[0]) && state.equals(event[1]))
-				return true;
-			return false;
-		}
-	}
-
-	public static class ApplicationDescriptorTracker implements ServiceTrackerCustomizer {
-		private BundleContext bc;
-		private ArrayList events = new ArrayList();
-
-		public ApplicationDescriptorTracker(BundleContext bc) {
-			this.bc = bc;
-		}
-
-		public synchronized Object addingService(ServiceReference reference) {
-			String pid = (String) reference.getProperty(ApplicationDescriptor.APPLICATION_PID);
-			Boolean locked = (Boolean) reference.getProperty(ApplicationDescriptor.APPLICATION_LOCKED);
-			Boolean launchable = (Boolean) reference.getProperty(ApplicationDescriptor.APPLICATION_LAUNCHABLE);
-			events.add(new Object[] {pid, ADDED, locked, launchable});
-			Object result = bc.getService(reference);
-			notifyAll();
-			return result;
-		}
-
-		public synchronized void modifiedService(ServiceReference reference, Object service) {
-			String pid = (String) reference.getProperty(ApplicationDescriptor.APPLICATION_PID);
-			Boolean locked = (Boolean) reference.getProperty(ApplicationDescriptor.APPLICATION_LOCKED);
-			Boolean launchable = (Boolean) reference.getProperty(ApplicationDescriptor.APPLICATION_LAUNCHABLE);
-			events.add(new Object[] {pid, MODIFIED, locked, launchable});
-			notifyAll();
-		}
-
-		public synchronized void removedService(ServiceReference reference, Object service) {
-			String pid = (String) reference.getProperty(ApplicationDescriptor.APPLICATION_PID);
-			Boolean locked = (Boolean) reference.getProperty(ApplicationDescriptor.APPLICATION_LOCKED);
-			Boolean launchable = (Boolean) reference.getProperty(ApplicationDescriptor.APPLICATION_LAUNCHABLE);
-			events.add(new Object[] {pid, REMOVED, locked, launchable});
-			notifyAll();
-		}
-
-		// Note that this method assumes you call it before the event actually gets posted.
-		// It only looks at the last event that was saved.
-		public synchronized void waitForEvent(String pid, String type, Boolean locked, Boolean launchable) {
-			long delay = 5000;
-			long startTime = System.currentTimeMillis();
-			boolean found = eventFound(pid, type, locked, launchable);
-			while (delay > 0 && !found) {
-				try {
-					wait(5000);
-					delay -= System.currentTimeMillis() - startTime;
-				} catch (InterruptedException e) {
-					// do nothing
-				}
-				found = eventFound(pid, type, locked, launchable);
-			}
-			if (!found) {
-				Object[][] foundEvents = getEvents();
-				String foundEventsMsg;
-				if (foundEvents.length > 0) {
-					StringBuffer eventsBuffer = new StringBuffer();
-					eventsBuffer.append("\nFound the following events: \n"); //$NON-NLS-1$
-					for (int i = 0; i < foundEvents.length; i++)
-						eventsBuffer.append(" descriptor event: ").append(foundEvents[i][0]).append(" ").append(foundEvents[i][1]).append(" ").append(foundEvents[i][2]).append(" ").append(foundEvents[i][3]).append("\n"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-					foundEventsMsg = eventsBuffer.toString();
-				} else {
-					foundEventsMsg = "\nNo events recorded"; //$NON-NLS-1$
-				}
-				fail("failed waiting for descriptor event: " + pid + " " + type + " " + locked + " " + launchable + foundEventsMsg); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-			}
-		}
-
-		public synchronized Object[][] getEvents() {
-			return (Object[][]) events.toArray(new Object[events.size()][]);
-		}
-
-		private boolean eventFound(String pid, String type, Boolean locked, Boolean launchable) {
-			if (events.size() == 0)
-				return false;
-			Object[] event = (Object[]) events.get(events.size() - 1);
-			if (pid.equals(event[0]) && type.equals(event[1]) && locked.equals(event[2]) && launchable.equals(event[3]))
-				return true;
-			return false;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ExitValueApp.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ExitValueApp.java
deleted file mode 100644
index 809fcbf..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/ExitValueApp.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.appadmin;
-
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.equinox.app.IApplicationContext;
-
-public class ExitValueApp implements IApplication, Runnable {
-	public static final String returnNullResult = "return.null"; //$NON-NLS-1$
-	public static final String returnAsyncResult = "return.async";
-	public static final String setAsyncEarly = "set.async.early";
-	public static final String setAsyncWrongApp = "set.async.wrongApp";
-	public static final String exitValue = "Exit Value"; //$NON-NLS-1$
-
-	private boolean active = true;
-	private boolean stopped = false;
-	private boolean useAsync = false;
-	private boolean returnNull = false;
-	private boolean setWrongApp = false;
-	private IApplicationContext appContext;
-	final Object guardObj = new Object();
-
-	public synchronized Object start(IApplicationContext context) {
-		appContext = context;
-		context.applicationRunning();
-		Boolean nullValue = (Boolean) context.getArguments().get(returnNullResult);
-		returnNull = nullValue == null ? false : nullValue.booleanValue();
-		Boolean asyncValue = (Boolean) context.getArguments().get(returnAsyncResult);
-		useAsync = asyncValue == null ? false : asyncValue.booleanValue();
-
-		Boolean asyncEarlyValue = (Boolean) context.getArguments().get(setAsyncEarly);
-		boolean setEarly = asyncEarlyValue == null ? false : asyncEarlyValue.booleanValue();
-		Boolean wrongAppValue = (Boolean) context.getArguments().get(setAsyncWrongApp);
-		setWrongApp = wrongAppValue == null ? false : wrongAppValue.booleanValue();
-		if (setEarly) {
-			try {
-				context.setResult("failed", this);
-				// failed
-			} catch (IllegalStateException e) {
-				// passed
-				return exitValue;
-			}
-		}
-		if (useAsync) {
-			System.out.println("async result");
-			new Thread(this, "ExitValueApp Test").start();
-			return IApplicationContext.EXIT_ASYNC_RESULT;
-		}
-		run();
-		return returnNull ? null : exitValue;
-	}
-
-	public synchronized void stop() {
-		active = false;
-		notifyAll();
-		while (!stopped)
-			try {
-				wait(100);
-			} catch (InterruptedException e) {
-				// do nothing
-			}
-	}
-
-	public synchronized void run() {
-		if (active) {
-			try {
-				wait(5000); // only run for 5 seconds at most
-			} catch (InterruptedException e) {
-				// do nothing
-			}
-		}
-		stopped = true;
-		if (useAsync) {
-			IApplication app = this;
-			Object result = returnNull ? null : exitValue;
-			if (setWrongApp) {
-				result = "failed";
-				app = new IApplication() {
-
-					public void stop() {
-						// nothing
-					}
-
-					public Object start(IApplicationContext context) throws Exception {
-						return null;
-					}
-				};
-			}
-			try {
-				appContext.setResult(result, app);
-				// failed
-			} catch (IllegalArgumentException e) {
-				// passed
-				appContext.setResult(returnNull ? null : exitValue, this);
-			}
-		}
-		notifyAll();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/FailedApp.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/FailedApp.java
deleted file mode 100644
index 524935c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/FailedApp.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.appadmin;
-
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.equinox.app.IApplicationContext;
-
-public class FailedApp implements IApplication {
-
-	public Object start(IApplicationContext context) throws Exception {
-		throw new Exception("Generated Exception"); //$NON-NLS-1$
-	}
-
-	public void stop() {
-		// nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/SimpleApp.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/SimpleApp.java
deleted file mode 100644
index 8a24748..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/appadmin/SimpleApp.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.appadmin;
-
-import java.util.HashMap;
-import org.eclipse.equinox.app.IApplication;
-import org.eclipse.equinox.app.IApplicationContext;
-
-public class SimpleApp implements IApplication {
-
-	private boolean active = true;
-	private boolean stopped = false;
-
-	public synchronized Object start(IApplicationContext context) {
-		System.out.println("started simple app");
-		System.out.flush();
-		HashMap results = (HashMap) context.getArguments().get(ApplicationAdminTest.testResults);
-		if (results != null)
-			results.put(ApplicationAdminTest.simpleResults, ApplicationAdminTest.SUCCESS);
-		context.applicationRunning();
-		while (active) {
-			try {
-				wait(100);
-			} catch (InterruptedException e) {
-				// do nothing
-			}
-		}
-		stopped = true;
-		notifyAll();
-		System.out.println("stopped simple app");
-		System.out.flush();
-		return context.getArguments();
-	}
-
-	public synchronized void stop() {
-		active = false;
-		notifyAll();
-		while (!stopped)
-			try {
-				wait(100);
-			} catch (InterruptedException e) {
-				// do nothing
-			}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/AbstractBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/AbstractBundleTests.java
deleted file mode 100644
index 4b1125e..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/AbstractBundleTests.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 20010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.osgi.internal.baseadaptor.StateManager;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-
-public class AbstractBundleTests extends CoreTest {
-	public static int BUNDLE_LISTENER = 0x01;
-	public static int SYNC_BUNDLE_LISTENER = 0x02;
-	public static int SIMPLE_RESULTS = 0x04;
-	public static final String BUNDLES_ROOT = "bundle_tests";
-	public static TestResults simpleResults;
-	public static EventListenerTestResults listenerResults;
-	public static SyncEventListenerTestResults syncListenerResults;
-	public static EventListenerTestResults frameworkListenerResults;
-	public static BundleInstaller installer;
-
-	protected void setUp() throws Exception {
-		installer = new BundleInstaller(BUNDLES_ROOT, OSGiTestsActivator.getContext());
-		installer.refreshPackages(null);
-		listenerResults = new EventListenerTestResults();
-		OSGiTestsActivator.getContext().addBundleListener(listenerResults);
-		syncListenerResults = new SyncEventListenerTestResults();
-		OSGiTestsActivator.getContext().addBundleListener(syncListenerResults);
-		simpleResults = new TestResults();
-		frameworkListenerResults = new EventListenerTestResults();
-		OSGiTestsActivator.getContext().addFrameworkListener(frameworkListenerResults);
-	}
-
-	protected void tearDown() throws Exception {
-		installer.shutdown();
-		installer = null;
-		OSGiTestsActivator.getContext().removeBundleListener(listenerResults);
-		OSGiTestsActivator.getContext().removeBundleListener(syncListenerResults);
-		OSGiTestsActivator.getContext().removeFrameworkListener(frameworkListenerResults);
-		listenerResults = null;
-		syncListenerResults = null;
-		simpleResults = null;
-		frameworkListenerResults = null;
-	}
-
-	public BundleContext getContext() {
-		return OSGiTestsActivator.getContext();
-	}
-
-	static public void compareResults(Object[] expectedEvents, Object[] actualEvents) {
-		assertEquals("compareResults length", expectedEvents.length, actualEvents.length);
-		for (int i = 0; i < expectedEvents.length; i++) {
-			assertEquals("compareResults " + i, expectedEvents[i], actualEvents[i]);
-		}
-	}
-
-	static public void assertEquals(String message, Object expected, Object actual) {
-		if (expected == null && actual == null)
-			return;
-		if ((expected == null || actual == null) && expected != actual)
-			failNotEquals(message, toString(expected), toString(actual));
-		if (isEqual(expected, actual))
-			return;
-		failNotEquals(message, toString(expected), toString(actual));
-	}
-
-	static public void assertEquals(String message, int[] expected, int[] actual) {
-		if (expected == null && actual == null)
-			return;
-		if ((expected == null || actual == null) && expected != actual)
-			failNotEquals(message, toString(expected), toString(actual));
-		if (expected.length != actual.length)
-			failNotEquals(message, toString(expected), toString(actual));
-		for (int i = 0; i < expected.length; i++)
-			if (expected[i] != actual[i])
-				failNotEquals(message, toString(expected), toString(actual));
-	}
-
-	private static boolean isEqual(Object expected, Object actual) {
-		if (!expected.getClass().isAssignableFrom(actual.getClass()))
-			return false;
-		if (expected instanceof BundleEvent)
-			return isEqual((BundleEvent) expected, (BundleEvent) actual);
-		else if (expected instanceof FrameworkEvent)
-			return isEqual((FrameworkEvent) expected, (FrameworkEvent) actual);
-		return expected.equals(actual);
-	}
-
-	private static boolean isEqual(BundleEvent expected, BundleEvent actual) {
-		return expected.getSource() == actual.getSource() && expected.getType() == actual.getType();
-	}
-
-	private static boolean isEqual(FrameworkEvent expected, FrameworkEvent actual) {
-		return expected.getSource() == actual.getSource() && expected.getType() == actual.getType();
-	}
-
-	private static String toString(int[] array) {
-		if (array == null)
-			return "null"; //$NON-NLS-1$
-		String result = "["; //$NON-NLS-1$
-		for (int i = 0; i < array.length; i++) {
-			if (i != 0)
-				result += ',';
-			result += array[i];
-		}
-		result += "]"; //$NON-NLS-1$
-		return result;
-	}
-
-	private static Object toString(Object object) {
-		if (object instanceof BundleEvent)
-			return toString((BundleEvent) object);
-		else if (object instanceof FrameworkEvent)
-			return toString((FrameworkEvent) object);
-		return object.toString();
-	}
-
-	private static Object toString(FrameworkEvent event) {
-		StringBuffer result = new StringBuffer("FrameworkEvent [");
-		switch (event.getType()) {
-			case FrameworkEvent.ERROR :
-				result.append("ERROR");
-				break;
-			case FrameworkEvent.INFO :
-				result.append("INFO");
-				break;
-			case FrameworkEvent.PACKAGES_REFRESHED :
-				result.append("PACKAGES_REFRESHED");
-				break;
-			case FrameworkEvent.STARTED :
-				result.append("STARTED");
-				break;
-			case FrameworkEvent.STARTLEVEL_CHANGED :
-				result.append("STARTLEVEL_CHANGED");
-				break;
-			case FrameworkEvent.WARNING :
-				result.append("WARNING");
-				break;
-			default :
-				break;
-		}
-		result.append("] ").append(event.getSource());
-		return result.toString();
-	}
-
-	private static Object toString(BundleEvent event) {
-		StringBuffer result = new StringBuffer("BundleEvent [");
-		switch (event.getType()) {
-			case BundleEvent.INSTALLED :
-				result.append("INSTALLED");
-				break;
-			case BundleEvent.LAZY_ACTIVATION :
-				result.append("LAZY_ACTIVATION");
-				break;
-			case BundleEvent.RESOLVED :
-				result.append("RESOLVED");
-				break;
-			case BundleEvent.STARTED :
-				result.append("STARTED");
-				break;
-			case BundleEvent.STARTING :
-				result.append("STARTING");
-				break;
-			case BundleEvent.STOPPED :
-				result.append("STOPPED");
-				break;
-			case BundleEvent.STOPPING :
-				result.append("STOPPING");
-				break;
-			case BundleEvent.UNINSTALLED :
-				result.append("UNINSTALLED");
-				break;
-			case BundleEvent.UNRESOLVED :
-				result.append("UNRESOLVED");
-				break;
-			case BundleEvent.UPDATED :
-				result.append("UPDATED");
-				break;
-			default :
-				break;
-		}
-		result.append("] ").append(event.getSource());
-		return result.toString();
-	}
-
-	public void setPlatformProperties() {
-		StateManager stateManager = (StateManager) installer.getPlatformAdmin();
-		stateManager.getSystemState().setPlatformProperties(System.getProperties());
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ArrayTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ArrayTest.java
deleted file mode 100644
index e4ce55f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ArrayTest.java
+++ /dev/null
@@ -1,15 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-public class ArrayTest {
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleExceptionTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleExceptionTests.java
deleted file mode 100644
index 813ee71..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleExceptionTests.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import java.io.IOException;
-import java.net.URL;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class BundleExceptionTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(BundleExceptionTests.class);
-	}
-
-	// test throwing exception from activator constructor
-	public void testInvalidBundleActivator01() throws BundleException {
-		Bundle error1 = installer.installBundle("activator.error1"); //$NON-NLS-1$
-		try {
-			error1.start();
-			fail("Expected a start failure on invalid activator"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Expected activator error", BundleException.ACTIVATOR_ERROR, e.getType()); //$NON-NLS-1$
-		}
-	}
-
-	// test throwing exception from activator start
-	public void testInvalidBundleActivator02() throws BundleException {
-		Bundle error1 = installer.installBundle("activator.error2"); //$NON-NLS-1$
-		try {
-			error1.start();
-			fail("Expected a start failure on invalid activator"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Expected activator error", BundleException.ACTIVATOR_ERROR, e.getType()); //$NON-NLS-1$
-		}
-	}
-
-	// test throwing exception from activator stop
-	public void testInvalidBundleActivator03() throws BundleException {
-		Bundle error1 = installer.installBundle("activator.error3"); //$NON-NLS-1$
-		error1.start();
-		try {
-			error1.stop();
-			fail("Expected a stop failure on invalid activator"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Expected activator error", BundleException.ACTIVATOR_ERROR, e.getType()); //$NON-NLS-1$
-		}
-	}
-
-	// test throwing exception when installing duplicate bundles
-	public void testDuplicateError01() throws BundleException {
-		installer.installBundle("activator.error1"); //$NON-NLS-1$
-		try {
-			installer.installBundle("activator.error4"); //$NON-NLS-1$;
-			fail("Expected an install failure on duplicate bundle"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Expected duplicate error", BundleException.DUPLICATE_BUNDLE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-	}
-
-	// test throwing exception when updating to a duplicate bundle
-	public void testDuplicateError02() throws BundleException {
-		installer.installBundle("activator.error1"); //$NON-NLS-1$
-		Bundle error2 = installer.installBundle("activator.error2"); //$NON-NLS-1$
-		try {
-			URL updateURL = new URL(installer.getBundleLocation("activator.error4")); //$NON-NLS-1$
-			error2.update(updateURL.openStream());
-			fail("Expected an update failure on duplicate bundle"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Expected duplicate error", BundleException.DUPLICATE_BUNDLE_ERROR, e.getType()); //$NON-NLS-1$
-		} catch (IOException e) {
-			fail("Unexpected io exception updating", e); //$NON-NLS-1$
-		}
-	}
-
-	// test uninstalling the system bundle
-	public void testUninstallSystemBundle() throws BundleException {
-		Bundle systemBundle = OSGiTestsActivator.getContext().getBundle(0);
-		assertNotNull("System Bundle is null!!", systemBundle); //$NON-NLS-1$
-		try {
-			systemBundle.uninstall();
-			fail("Expected error on uninstall of system bundle"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Expected invalid error", BundleException.INVALID_OPERATION, e.getType()); //$NON-NLS-1$
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstallUpdateTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstallUpdateTests.java
deleted file mode 100644
index cd21c17..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstallUpdateTests.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import java.io.File;
-import java.net.URL;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorUtil;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class BundleInstallUpdateTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(BundleInstallUpdateTests.class);
-	}
-
-	// test installing with location
-	public void testInstallWithLocation01() {
-		Bundle test = null;
-		try {
-			String location = installer.getBundleLocation("test"); //$NON-NLS-1$
-			test = OSGiTestsActivator.getContext().installBundle(location);
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (BundleException e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-
-	// test installing with location and null stream
-	public void testInstallWithLocation02() {
-		Bundle test = null;
-		try {
-			String location = installer.getBundleLocation("test"); //$NON-NLS-1$
-			test = OSGiTestsActivator.getContext().installBundle(location, null);
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (BundleException e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-
-	// test installing with location and non-null stream
-	public void testInstallWithStream03() {
-		Bundle test = null;
-		try {
-			String location1 = installer.getBundleLocation("test"); //$NON-NLS-1$
-			String location2 = installer.getBundleLocation("test2"); //$NON-NLS-1$
-			test = OSGiTestsActivator.getContext().installBundle(location1, new URL(location2).openStream());
-			assertEquals("Wrong BSN", "test2", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (Exception e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-
-	// test update with null stream
-	public void testUpdateNoStream01() {
-		Bundle test = null;
-		try {
-			String location = installer.getBundleLocation("test"); //$NON-NLS-1$
-			test = OSGiTestsActivator.getContext().installBundle(location);
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			test.update();
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (BundleException e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-
-	// test update with null stream
-	public void testUpdateNoStream02() {
-		Bundle test = null;
-		try {
-			String location = installer.getBundleLocation("test"); //$NON-NLS-1$
-			test = OSGiTestsActivator.getContext().installBundle(location);
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			test.update(null);
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (BundleException e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-
-	// test update with null stream
-	public void testUpdateWithStream01() {
-		Bundle test = null;
-		try {
-			String location1 = installer.getBundleLocation("test"); //$NON-NLS-1$
-			String location2 = installer.getBundleLocation("test2"); //$NON-NLS-1$
-			test = OSGiTestsActivator.getContext().installBundle(location1);
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			test.update(new URL(location2).openStream());
-			assertEquals("Wrong BSN", "test2", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (Exception e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-
-	// test update with null stream
-	public void testUpdateWithStream02() {
-		Bundle test = null;
-		try {
-			String location1 = installer.getBundleLocation("test"); //$NON-NLS-1$
-			String location2 = installer.getBundleLocation("test2"); //$NON-NLS-1$
-			test = OSGiTestsActivator.getContext().installBundle(location1);
-			Bundle b1 = installer.installBundle("chain.test"); //$NON-NLS-1$
-			assertEquals("Wrong BSN", "test1", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			test.update(new URL(location2).openStream());
-			assertEquals("Wrong BSN", "test2", test.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			// make sure b1 is still last bundle in bundles list
-			Bundle[] bundles = OSGiTestsActivator.getContext().getBundles();
-			assertTrue("Wrong bundle at the end: " + bundles[bundles.length - 1], bundles[bundles.length - 1] == b1); //$NON-NLS-1$
-			Bundle[] tests = installer.getPackageAdmin().getBundles(test.getSymbolicName(), null);
-			assertNotNull("null tests", tests); //$NON-NLS-1$
-			assertEquals("Wrong number", 1, tests.length); //$NON-NLS-1$
-			assertTrue("Wrong bundle: " + tests[0], tests[0] == test); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-
-	public void testBug290193() {
-		Bundle test = null;
-		try {
-			URL testBundle = OSGiTestsActivator.getContext().getBundle().getEntry("test_files/security/bundles/signed.jar");
-			File testFile = OSGiTestsActivator.getContext().getDataFile("test with space/test.jar");
-			assertTrue(testFile.getParentFile().mkdirs());
-			AdaptorUtil.readFile(testBundle.openStream(), testFile);
-			test = OSGiTestsActivator.getContext().installBundle("reference:" + testFile.toURI().toString());
-		} catch (Exception e) {
-			fail("Unexpected failure", e); //$NON-NLS-1$
-		} finally {
-			try {
-				if (test != null)
-					test.uninstall();
-			} catch (BundleException e) {
-				// nothing
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstaller.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstaller.java
deleted file mode 100644
index 5996403..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstaller.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.*;
-import java.util.*;
-import org.eclipse.osgi.service.resolver.PlatformAdmin;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class BundleInstaller {
-	private BundleContext context;
-	private String rootLocation;
-	private HashMap bundles = new HashMap();
-	private ServiceTracker packageAdmin;
-	private ServiceTracker startlevel;
-	private ServiceTracker converter;
-	private ServiceTracker platformAdmin;
-
-	public BundleInstaller(String bundlesRoot, BundleContext context) throws InvalidSyntaxException {
-		this.context = context;
-		rootLocation = bundlesRoot;
-		converter = new ServiceTracker(context, context.createFilter("(&(objectClass=" + URLConverter.class.getName() + ")(protocol=bundleentry))"), null);
-		converter.open();
-		startlevel = new ServiceTracker(context, StartLevel.class.getName(), null);
-		startlevel.open();
-		packageAdmin = new ServiceTracker(context, PackageAdmin.class.getName(), null);
-		packageAdmin.open();
-		platformAdmin = new ServiceTracker(context, PlatformAdmin.class.getName(), null);
-		platformAdmin.open();
-	}
-
-	synchronized public Bundle installBundle(String name) throws BundleException {
-		return installBundle(name, true);
-	}
-
-	synchronized public Bundle installBundle(String name, boolean track) throws BundleException {
-		if (bundles == null && track)
-			return null;
-		String location = getBundleLocation(name);
-		Bundle bundle = context.installBundle(location);
-		if (track)
-			bundles.put(name, bundle);
-		return bundle;
-	}
-
-	public String getBundleLocation(final String name) throws BundleException {
-		if (System.getSecurityManager() == null)
-			return getBundleLocation0(name);
-		try {
-			return (String) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws Exception {
-					return getBundleLocation0(name);
-				}
-			});
-		} catch (PrivilegedActionException e) {
-			throw (BundleException) e.getException();
-		}
-	}
-
-	String getBundleLocation0(String name) throws BundleException {
-		String bundleFileName = rootLocation + "/" + name;
-		URL bundleURL = context.getBundle().getEntry(bundleFileName);
-		if (bundleURL == null)
-			bundleURL = context.getBundle().getEntry(bundleFileName + ".jar");
-		if (bundleURL == null)
-			throw new BundleException("Could not find bundle to install at: " + name);
-		try {
-			bundleURL = ((URLConverter) converter.getService()).resolve(bundleURL);
-		} catch (IOException e) {
-			throw new BundleException("Converter error", e);
-		}
-		String location = bundleURL.toExternalForm();
-		if ("file".equals(bundleURL.getProtocol()))
-			location = "reference:" + location;
-		return location;
-	}
-
-	synchronized public Bundle updateBundle(String fromName, String toName) throws BundleException {
-		if (bundles == null)
-			return null;
-		Bundle fromBundle = (Bundle) bundles.get(fromName);
-		if (fromBundle == null)
-			throw new BundleException("The bundle to update does not exist!! " + fromName);
-		String bundleFileName = rootLocation + "/" + toName;
-		URL bundleURL = context.getBundle().getEntry(bundleFileName);
-		if (bundleURL == null)
-			bundleURL = context.getBundle().getEntry(bundleFileName + ".jar");
-		try {
-			bundleURL = ((URLConverter) converter.getService()).resolve(bundleURL);
-		} catch (IOException e) {
-			throw new BundleException("Converter error", e);
-		}
-		String location = bundleURL.toExternalForm();
-		if ("file".equals(bundleURL.getProtocol()))
-			location = "reference:" + location;
-		try {
-			fromBundle.update(new URL(location).openStream());
-		} catch (Exception e) {
-			throw new BundleException("Errors when updating bundle " + fromBundle, e);
-		}
-		bundles.remove(fromName);
-		bundles.put(toName, fromBundle);
-		return fromBundle;
-	}
-
-	synchronized public Bundle uninstallBundle(String name) throws BundleException {
-		if (bundles == null)
-			return null;
-		Bundle bundle = (Bundle) bundles.remove(name);
-		if (bundle == null)
-			return null;
-		bundle.uninstall();
-		return bundle;
-	}
-
-	synchronized public Bundle[] uninstallAllBundles() throws BundleException {
-		if (bundles == null)
-			return null;
-		ArrayList result = new ArrayList(bundles.size());
-		for (Iterator iter = bundles.values().iterator(); iter.hasNext();) {
-			Bundle bundle = (Bundle) iter.next();
-			try {
-				bundle.uninstall();
-			} catch (IllegalStateException e) {
-				// ignore; bundle probably already uninstalled
-			}
-			result.add(bundle);
-		}
-		bundles.clear();
-		return (Bundle[]) result.toArray(new Bundle[result.size()]);
-	}
-
-	synchronized public Bundle[] shutdown() throws BundleException {
-		if (bundles == null)
-			return null;
-		Bundle[] result = uninstallAllBundles();
-		refreshPackages(result);
-		packageAdmin.close();
-		startlevel.close();
-		converter.close();
-		platformAdmin.close();
-		bundles = null;
-		return result;
-	}
-
-	synchronized public Bundle[] refreshPackages(Bundle[] refresh) {
-		if (bundles == null)
-			return null;
-		PackageAdmin pa = (PackageAdmin) packageAdmin.getService();
-		final boolean[] flag = new boolean[] {false};
-		FrameworkListener listener = new FrameworkListener() {
-			public void frameworkEvent(FrameworkEvent event) {
-				if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED)
-					synchronized (flag) {
-						flag[0] = true;
-						flag.notifyAll();
-					}
-			}
-		};
-		context.addFrameworkListener(listener);
-		final HashSet refreshed = new HashSet();
-		BundleListener refreshBundleListener = new SynchronousBundleListener() {
-			public void bundleChanged(BundleEvent event) {
-				refreshed.add(event.getBundle());
-			}
-		};
-		context.addBundleListener(refreshBundleListener);
-		try {
-			pa.refreshPackages(refresh);
-			synchronized (flag) {
-				while (!flag[0]) {
-					try {
-						flag.wait(5000);
-					} catch (InterruptedException e) {
-						// do nothing
-					}
-				}
-			}
-		} finally {
-			context.removeFrameworkListener(listener);
-			context.removeBundleListener(refreshBundleListener);
-		}
-		return (Bundle[]) refreshed.toArray(new Bundle[refreshed.size()]);
-	}
-
-	synchronized public boolean resolveBundles(Bundle[] resolve) {
-		if (bundles == null)
-			return false;
-		PackageAdmin pa = (PackageAdmin) packageAdmin.getService();
-		return pa.resolveBundles(resolve);
-	}
-
-	synchronized public Bundle getBundle(String name) {
-		if (bundles == null)
-			return null;
-		return (Bundle) bundles.get(name);
-	}
-
-	public StartLevel getStartLevel() {
-		return (StartLevel) startlevel.getService();
-	}
-
-	public PackageAdmin getPackageAdmin() {
-		return (PackageAdmin) packageAdmin.getService();
-	}
-
-	public PlatformAdmin getPlatformAdmin() {
-		return (PlatformAdmin) platformAdmin.getService();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleTests.java
deleted file mode 100644
index e0bb723..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleTests.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class BundleTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(BundleTests.class.getName());
-		suite.addTest(BundleInstallUpdateTests.suite());
-		suite.addTest(SystemBundleTests.suite());
-		suite.addTest(BundleExceptionTests.suite());
-		suite.addTest(SubstituteExportsBundleTests.suite());
-		suite.addTest(PackageAdminBundleTests.suite());
-		suite.addTest(PlatformAdminBundleTests.suite());
-		suite.addTest(ExtensionBundleTests.suite());
-		suite.addTest(ClassLoadingBundleTests.suite());
-		suite.addTest(NativeCodeBundleTests.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java
deleted file mode 100644
index ec9308e..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java
+++ /dev/null
@@ -1,1633 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import java.io.*;
-import java.lang.reflect.Method;
-import java.net.*;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.ExportedPackage;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
-
-public class ClassLoadingBundleTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(ClassLoadingBundleTests.class);
-	}
-
-	public void testSimple() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		test.start();
-		installer.shutdown();
-
-		Object[] expectedEvents = new Object[6];
-		expectedEvents[0] = new BundleEvent(BundleEvent.INSTALLED, test);
-		expectedEvents[1] = new BundleEvent(BundleEvent.RESOLVED, test);
-		expectedEvents[2] = new BundleEvent(BundleEvent.STARTED, test);
-		expectedEvents[3] = new BundleEvent(BundleEvent.STOPPED, test);
-		expectedEvents[4] = new BundleEvent(BundleEvent.UNRESOLVED, test);
-		expectedEvents[5] = new BundleEvent(BundleEvent.UNINSTALLED, test);
-
-		Object[] actualEvents = listenerResults.getResults(expectedEvents.length);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testLoadTriggerClass() throws Exception {
-		Bundle chainTest = installer.installBundle("chain.test"); //$NON-NLS-1$
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		assertTrue("Did not resolve chainTest", installer.resolveBundles(new Bundle[] {chainTest})); //$NON-NLS-1$
-		chainTest.start(Bundle.START_ACTIVATION_POLICY);
-		chainTestA.start(Bundle.START_ACTIVATION_POLICY);
-		assertEquals("Wrong state", Bundle.STARTING, chainTest.getState()); //$NON-NLS-1$
-		chainTest.loadClass("org.osgi.framework.BundleActivator"); //$NON-NLS-1$
-		assertEquals("Wrong state", Bundle.STARTING, chainTest.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state", Bundle.STARTING, chainTestA.getState()); //$NON-NLS-1$
-		chainTest.loadClass("chain.test.a.AChain"); //$NON-NLS-1$
-		assertEquals("Wrong state", Bundle.STARTING, chainTest.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state", Bundle.ACTIVE, chainTestA.getState()); //$NON-NLS-1$
-	}
-
-	public void testChainDepedencies() throws Exception {
-		Bundle chainTest = installer.installBundle("chain.test"); //$NON-NLS-1$
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		Bundle chainTestB = installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		((ITestRunner) chainTest.loadClass("chain.test.TestSingleChain").newInstance()).testIt(); //$NON-NLS-1$
-
-		Object[] expectedEvents = new Object[6];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, chainTestB);
-		expectedEvents[1] = new BundleEvent(BundleEvent.STARTED, chainTestA);
-		expectedEvents[2] = new BundleEvent(BundleEvent.STOPPED, chainTestA);
-		expectedEvents[3] = new BundleEvent(BundleEvent.STOPPED, chainTestB);
-		expectedEvents[4] = new BundleEvent(BundleEvent.STARTED, chainTestB);
-		expectedEvents[5] = new BundleEvent(BundleEvent.STARTED, chainTestA);
-
-		installer.refreshPackages(new Bundle[] {chainTestB});
-
-		((ITestRunner) chainTest.loadClass("chain.test.TestSingleChain").newInstance()).testIt(); //$NON-NLS-1$
-
-		Object[] actualEvents = simpleResults.getResults(6);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testMultiChainDepedencies01() throws Exception {
-		Bundle chainTest = installer.installBundle("chain.test"); //$NON-NLS-1$
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		Bundle chainTestB = installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		Bundle chainTestC = installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		Bundle chainTestD = installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		chainTest.loadClass("chain.test.TestMultiChain").newInstance(); //$NON-NLS-1$
-
-		Object[] expectedEvents = new Object[12];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, chainTestD);
-		expectedEvents[1] = new BundleEvent(BundleEvent.STARTED, chainTestB);
-		expectedEvents[2] = new BundleEvent(BundleEvent.STARTED, chainTestC);
-		expectedEvents[3] = new BundleEvent(BundleEvent.STARTED, chainTestA);
-		expectedEvents[4] = new BundleEvent(BundleEvent.STOPPED, chainTestA);
-		expectedEvents[5] = new BundleEvent(BundleEvent.STOPPED, chainTestB);
-		expectedEvents[6] = new BundleEvent(BundleEvent.STOPPED, chainTestC);
-		expectedEvents[7] = new BundleEvent(BundleEvent.STOPPED, chainTestD);
-		expectedEvents[8] = new BundleEvent(BundleEvent.STARTED, chainTestD);
-		expectedEvents[9] = new BundleEvent(BundleEvent.STARTED, chainTestC);
-		expectedEvents[10] = new BundleEvent(BundleEvent.STARTED, chainTestB);
-		expectedEvents[11] = new BundleEvent(BundleEvent.STARTED, chainTestA);
-
-		installer.refreshPackages(new Bundle[] {chainTestC, chainTestD});
-
-		Object[] actualEvents = simpleResults.getResults(8);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testMultiChainDepedencies02() throws Exception {
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		Bundle chainTestB = installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		Bundle chainTestC = installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		Bundle chainTestD = installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		syncListenerResults.getResults(0);
-		installer.resolveBundles(new Bundle[] {chainTestA, chainTestB, chainTestC, chainTestD});
-
-		Object[] expectedEvents = new Object[8];
-		expectedEvents[0] = new BundleEvent(BundleEvent.RESOLVED, chainTestD);
-		expectedEvents[1] = new BundleEvent(BundleEvent.RESOLVED, chainTestC);
-		expectedEvents[2] = new BundleEvent(BundleEvent.RESOLVED, chainTestB);
-		expectedEvents[3] = new BundleEvent(BundleEvent.RESOLVED, chainTestA);
-		expectedEvents[4] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestD);
-		expectedEvents[5] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestC);
-		expectedEvents[6] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestB);
-		expectedEvents[7] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestA);
-
-		Object[] actualEvents = syncListenerResults.getResults(8);
-		compareResults(expectedEvents, actualEvents);
-
-		installer.refreshPackages(new Bundle[] {chainTestC, chainTestD});
-
-		expectedEvents = new Object[20];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STOPPING, chainTestA);
-		expectedEvents[1] = new BundleEvent(BundleEvent.STOPPED, chainTestA);
-		expectedEvents[2] = new BundleEvent(BundleEvent.STOPPING, chainTestB);
-		expectedEvents[3] = new BundleEvent(BundleEvent.STOPPED, chainTestB);
-		expectedEvents[4] = new BundleEvent(BundleEvent.STOPPING, chainTestC);
-		expectedEvents[5] = new BundleEvent(BundleEvent.STOPPED, chainTestC);
-		expectedEvents[6] = new BundleEvent(BundleEvent.STOPPING, chainTestD);
-		expectedEvents[7] = new BundleEvent(BundleEvent.STOPPED, chainTestD);
-		expectedEvents[8] = new BundleEvent(BundleEvent.UNRESOLVED, chainTestA);
-		expectedEvents[9] = new BundleEvent(BundleEvent.UNRESOLVED, chainTestB);
-		expectedEvents[10] = new BundleEvent(BundleEvent.UNRESOLVED, chainTestC);
-		expectedEvents[11] = new BundleEvent(BundleEvent.UNRESOLVED, chainTestD);
-		expectedEvents[12] = new BundleEvent(BundleEvent.RESOLVED, chainTestD);
-		expectedEvents[13] = new BundleEvent(BundleEvent.RESOLVED, chainTestC);
-		expectedEvents[14] = new BundleEvent(BundleEvent.RESOLVED, chainTestB);
-		expectedEvents[15] = new BundleEvent(BundleEvent.RESOLVED, chainTestA);
-		expectedEvents[16] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestD);
-		expectedEvents[17] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestC);
-		expectedEvents[18] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestB);
-		expectedEvents[19] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestA);
-
-		actualEvents = syncListenerResults.getResults(12);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testBug300692_01() throws BundleException {
-		Bundle chainTest = installer.installBundle("chain.test"); //$NON-NLS-1$
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		Bundle chainTestB = installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		Bundle chainTestC = installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		Bundle chainTestD = installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		syncListenerResults.getResults(0);
-
-		StartLevel sl = installer.getStartLevel();
-		int currentSL = sl.getStartLevel();
-		int testSL = currentSL + 1;
-		sl.setBundleStartLevel(chainTest, testSL);
-		sl.setBundleStartLevel(chainTestA, testSL);
-		sl.setBundleStartLevel(chainTestB, testSL);
-		sl.setBundleStartLevel(chainTestC, testSL);
-		sl.setBundleStartLevel(chainTestD, testSL);
-		installer.resolveBundles(new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD});
-
-		Object[] expectedEvents = new Object[5];
-		expectedEvents[0] = new BundleEvent(BundleEvent.RESOLVED, chainTestD);
-		expectedEvents[1] = new BundleEvent(BundleEvent.RESOLVED, chainTestC);
-		expectedEvents[2] = new BundleEvent(BundleEvent.RESOLVED, chainTestB);
-		expectedEvents[3] = new BundleEvent(BundleEvent.RESOLVED, chainTestA);
-		expectedEvents[4] = new BundleEvent(BundleEvent.RESOLVED, chainTest);
-
-		Object[] actualEvents = syncListenerResults.getResults(5);
-		compareResults(expectedEvents, actualEvents);
-		try {
-			System.setProperty("test.bug300692", "true");
-			chainTest.start();
-			sl.setStartLevel(testSL);
-			Object[] expectedFrameworkEvents = new Object[1];
-			expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-			Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-			compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-			expectedEvents = new Object[14];
-			int i = 0;
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestA);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestB);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestC);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestD);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTest);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestB);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestB);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestC);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestC);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestA);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestA);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestD);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestD);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTest);
-
-			actualFrameworkEvents = syncListenerResults.getResults(14);
-			compareResults(expectedEvents, actualFrameworkEvents);
-		} finally {
-			System.getProperties().remove("test.bug300692");
-			sl.setStartLevel(currentSL);
-			Object[] expectedFrameworkEvents = new Object[1];
-			expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-			Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-			compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-		}
-	}
-
-	public void testBug300692_02() throws BundleException {
-		Bundle chainTest = installer.installBundle("chain.test"); //$NON-NLS-1$
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		Bundle chainTestB = installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		Bundle chainTestC = installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		Bundle chainTestD = installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		syncListenerResults.getResults(0);
-
-		StartLevel sl = installer.getStartLevel();
-		int currentSL = sl.getStartLevel();
-		int testSL = currentSL + 1;
-		sl.setBundleStartLevel(chainTest, testSL);
-		sl.setBundleStartLevel(chainTestA, testSL);
-		sl.setBundleStartLevel(chainTestB, testSL);
-		sl.setBundleStartLevel(chainTestC, testSL);
-		sl.setBundleStartLevel(chainTestD, testSL);
-		installer.resolveBundles(new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD});
-
-		Object[] expectedEvents = new Object[5];
-		expectedEvents[0] = new BundleEvent(BundleEvent.RESOLVED, chainTestD);
-		expectedEvents[1] = new BundleEvent(BundleEvent.RESOLVED, chainTestC);
-		expectedEvents[2] = new BundleEvent(BundleEvent.RESOLVED, chainTestB);
-		expectedEvents[3] = new BundleEvent(BundleEvent.RESOLVED, chainTestA);
-		expectedEvents[4] = new BundleEvent(BundleEvent.RESOLVED, chainTest);
-
-		Object[] actualEvents = syncListenerResults.getResults(5);
-		compareResults(expectedEvents, actualEvents);
-		try {
-			System.setProperty("test.bug300692", "true");
-			System.setProperty("test.bug300692.listener", "true");
-			chainTest.start();
-			sl.setStartLevel(testSL);
-			Object[] expectedFrameworkEvents = new Object[1];
-			expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-			Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-			compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-			expectedEvents = new Object[14];
-			int i = 0;
-
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestA);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestB);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestC);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.LAZY_ACTIVATION, chainTestD);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTest);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestB);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestB);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestC);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestC);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestA);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestA);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTING, chainTestD);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTestD);
-			expectedEvents[i++] = new BundleEvent(BundleEvent.STARTED, chainTest);
-
-			actualFrameworkEvents = syncListenerResults.getResults(14);
-			compareResults(expectedEvents, actualFrameworkEvents);
-		} finally {
-			System.getProperties().remove("test.bug300692");
-			System.getProperties().remove("test.bug300692.listener");
-			sl.setStartLevel(currentSL);
-			Object[] expectedFrameworkEvents = new Object[1];
-			expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-			Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-			compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-		}
-	}
-
-	public void testClassCircularityError() throws Exception {
-		Bundle circularityTest = installer.installBundle("circularity.test"); //$NON-NLS-1$
-		Bundle circularityTestA = installer.installBundle("circularity.test.a"); //$NON-NLS-1$
-		circularityTest.loadClass("circularity.test.TestCircularity"); //$NON-NLS-1$
-
-		Object[] expectedEvents = new Object[2];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, circularityTest);
-		expectedEvents[1] = new BundleEvent(BundleEvent.STARTED, circularityTestA);
-		Object[] actualEvents = simpleResults.getResults(2);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testFragmentPackageAccess() throws Exception {
-		Bundle hostA = installer.installBundle("fragment.test.attach.host.a"); //$NON-NLS-1$
-		Bundle fragA = installer.installBundle("fragment.test.attach.frag.a"); //$NON-NLS-1$
-		assertTrue("Host/Frag resolve", installer.resolveBundles(new Bundle[] {hostA, fragA})); //$NON-NLS-1$
-
-		ITestRunner testRunner = (ITestRunner) hostA.loadClass("fragment.test.attach.host.a.internal.test.TestPackageAccess").newInstance(); //$NON-NLS-1$
-		try {
-			testRunner.testIt();
-		} catch (Exception e) {
-			fail("Failed package access test: " + e.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	public void testFragmentMultiHost() throws Exception {
-		Bundle hostA1 = installer.installBundle("fragment.test.attach.host.a"); //$NON-NLS-1$
-		Bundle hostA2 = installer.installBundle("fragment.test.attach.host.a.v2"); //$NON-NLS-1$
-		Bundle fragA = installer.installBundle("fragment.test.attach.frag.a"); //$NON-NLS-1$
-		assertTrue("Host/Frag resolve", installer.resolveBundles(new Bundle[] {hostA1, hostA2, fragA})); //$NON-NLS-1$
-
-		assertEquals("Wrong number of hosts", 2, installer.getPackageAdmin().getHosts(fragA).length); //$NON-NLS-1$
-		runTestRunner(hostA1, "fragment.test.attach.host.a.internal.test.TestPackageAccess"); //$NON-NLS-1$
-		runTestRunner(hostA2, "fragment.test.attach.host.a.internal.test.TestPackageAccess2"); //$NON-NLS-1$
-	}
-
-	private void runTestRunner(Bundle host, String classname) {
-		try {
-			ITestRunner testRunner = (ITestRunner) host.loadClass(classname).newInstance();
-			testRunner.testIt();
-		} catch (Exception e) {
-			fail("Failed package access test", e); //$NON-NLS-1$
-		}
-
-	}
-
-	public void testFragmentExportPackage() throws Exception {
-		Bundle hostA = installer.installBundle("fragment.test.attach.host.a"); //$NON-NLS-1$
-		assertTrue("Host resolve", installer.resolveBundles(new Bundle[] {hostA})); //$NON-NLS-1$
-
-		// make sure class loader for hostA is initialized
-		hostA.loadClass("fragment.test.attach.host.a.internal.test.PackageAccessTest"); //$NON-NLS-1$
-
-		Bundle fragB = installer.installBundle("fragment.test.attach.frag.b"); //$NON-NLS-1$
-		Bundle hostARequire = installer.installBundle("fragment.test.attach.host.a.require"); //$NON-NLS-1$
-		assertTrue("RequireA/Frag", installer.resolveBundles(new Bundle[] {hostARequire, fragB})); //$NON-NLS-1$
-		try {
-			hostARequire.loadClass("fragment.test.attach.frag.b.Test"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected class loading exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testLegacyLazyStart() throws Exception {
-		Bundle legacy = installer.installBundle("legacy.lazystart"); //$NON-NLS-1$
-		Bundle legacyA = installer.installBundle("legacy.lazystart.a"); //$NON-NLS-1$
-		Bundle legacyB = installer.installBundle("legacy.lazystart.b"); //$NON-NLS-1$
-		Bundle legacyC = installer.installBundle("legacy.lazystart.c"); //$NON-NLS-1$
-		assertTrue("legacy lazy start resolve", installer.resolveBundles(new Bundle[] {legacy, legacyA, legacyB, legacyC})); //$NON-NLS-1$
-
-		((ITestRunner) legacy.loadClass("legacy.lazystart.SimpleLegacy").newInstance()).testIt(); //$NON-NLS-1$
-		Object[] expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, legacyA);
-		Object[] actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		((ITestRunner) legacy.loadClass("legacy.lazystart.TrueExceptionLegacy1").newInstance()).testIt(); //$NON-NLS-1$
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0); //$NON-NLS-1$
-		((ITestRunner) legacy.loadClass("legacy.lazystart.TrueExceptionLegacy2").newInstance()).testIt(); //$NON-NLS-1$
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, legacyB);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		((ITestRunner) legacy.loadClass("legacy.lazystart.FalseExceptionLegacy1").newInstance()).testIt(); //$NON-NLS-1$
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0); //$NON-NLS-1$
-		((ITestRunner) legacy.loadClass("legacy.lazystart.FalseExceptionLegacy2").newInstance()).testIt(); //$NON-NLS-1$
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, legacyC);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testLegacyLoadActivation() throws Exception {
-		// test that calling loadClass from a non-lazy start bundle does not activate the bundle
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		try {
-			test.loadClass("does.not.exist.Test"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		Object[] expectedEvents = new Object[0];
-		Object[] actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		// test that calling loadClass from a lazy start bundle activates a bundle
-		Bundle legacyA = installer.installBundle("legacy.lazystart.a"); //$NON-NLS-1$
-		try {
-			legacyA.loadClass("does.not.exist.Test"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, legacyA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testOSGiLazyStart() throws Exception {
-		Bundle osgi = installer.installBundle("osgi.lazystart"); //$NON-NLS-1$
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a"); //$NON-NLS-1$
-		Bundle osgiB = installer.installBundle("osgi.lazystart.b"); //$NON-NLS-1$
-		Bundle osgiC = installer.installBundle("osgi.lazystart.c"); //$NON-NLS-1$
-		assertTrue("osgi lazy start resolve", installer.resolveBundles(new Bundle[] {osgi, osgiA, osgiB, osgiC})); //$NON-NLS-1$
-
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazySimple").newInstance()).testIt(); //$NON-NLS-1$
-		Object[] expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		Object[] actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazyExclude1").newInstance()).testIt(); //$NON-NLS-1$
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0); //$NON-NLS-1$
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazyExclude2").newInstance()).testIt(); //$NON-NLS-1$
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiB);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazyInclude1").newInstance()).testIt(); //$NON-NLS-1$
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0); //$NON-NLS-1$
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazyInclude2").newInstance()).testIt(); //$NON-NLS-1$
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiC);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testStartTransientByLoadClass() throws Exception {
-		// install a bundle and set its start-level high, then crank up the framework start-level.  This should result in no events
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {osgiA});
-		StartLevel startLevel = installer.getStartLevel();
-		startLevel.setBundleStartLevel(osgiA, startLevel.getStartLevel() + 10);
-
-		// test transient start by loadClass
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		Object[] expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		Object[] expectedEvents = new Object[0];
-		Object[] actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		// now load a class from it before the start-level is met.  This should result in no events
-		osgiA.loadClass("osgi.lazystart.a.ATest"); //$NON-NLS-1$
-		expectedEvents = new Object[0];
-		actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STOPPED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		// now load a class while start-level is met.
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		osgiA.loadClass("osgi.lazystart.a.ATest"); //$NON-NLS-1$
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STOPPED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testStartTransient() throws Exception {
-		// install a bundle and set its start-level high, then crank up the framework start-level.  This should result in no events
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {osgiA});
-		StartLevel startLevel = installer.getStartLevel();
-		startLevel.setBundleStartLevel(osgiA, startLevel.getStartLevel() + 10);
-
-		// test transient start Bundle.start(START_TRANSIENT)
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		Object[] expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		Object[] expectedEvents = new Object[0];
-		Object[] actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		// now call start(START_TRANSIENT) before the start-level is met.  This should result in no events
-		try {
-			osgiA.start(Bundle.START_TRANSIENT);
-			assertFalse("Bundle is started!!", osgiA.getState() == Bundle.ACTIVE); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Expected invalid operation", BundleException.INVALID_OPERATION, e.getType()); //$NON-NLS-1$
-		}
-		expectedEvents = new Object[0];
-		actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[0];
-		actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		// now call start(START_TRANSIENT) while start-level is met.
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		osgiA.start(Bundle.START_TRANSIENT);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STOPPED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testStartResolve() throws Exception {
-		// install a bundle and set its start-level high, then crank up the framework start-level.  This should result in no events
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		StartLevel startLevel = installer.getStartLevel();
-		startLevel.setBundleStartLevel(test, startLevel.getStartLevel() + 10);
-		try {
-			test.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state", Bundle.INSTALLED, test.getState()); //$NON-NLS-1$
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		Object[] expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-		assertEquals("Wrong state", Bundle.ACTIVE, test.getState()); //$NON-NLS-1$
-	}
-
-	public void testStopTransient() throws Exception {
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {osgiA});
-		StartLevel startLevel = installer.getStartLevel();
-		startLevel.setBundleStartLevel(osgiA, startLevel.getStartLevel() + 10);
-		// persistently start the bundle
-		osgiA.start();
-
-		// test that the bundle is started when start-level is met
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		Object[] expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		Object[] expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		Object[] actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STOPPED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		// now call stop(STOP_TRANSIENT) while the start-level is met.
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		osgiA.stop(Bundle.STOP_TRANSIENT);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STOPPED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		// now make sure the bundle still restarts when start-level is met
-		startLevel.setStartLevel(startLevel.getStartLevel() + 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-		startLevel.setStartLevel(startLevel.getStartLevel() - 15);
-		expectedFrameworkEvents = new Object[1];
-		expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-		actualFrameworkEvents = frameworkListenerResults.getResults(1);
-		compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STOPPED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testBug258659_01() throws Exception {
-		// install a bundle
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a"); //$NON-NLS-1$
-		SynchronousBundleListener testLoadClassListener = new SynchronousBundleListener() {
-			public void bundleChanged(BundleEvent event) {
-				if (event.getType() == BundleEvent.LAZY_ACTIVATION)
-					try {
-						event.getBundle().loadClass("osgi.lazystart.a.ATest"); //$NON-NLS-1$
-					} catch (ClassNotFoundException e) {
-						simpleResults.addEvent(e);
-					}
-			}
-
-		};
-		OSGiTestsActivator.getContext().addBundleListener(testLoadClassListener);
-		try {
-			osgiA.start(Bundle.START_ACTIVATION_POLICY);
-			Object[] expectedEvents = new Object[1];
-			expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-			Object[] actualEvents = simpleResults.getResults(1);
-			compareResults(expectedEvents, actualEvents);
-		} finally {
-			OSGiTestsActivator.getContext().removeBundleListener(testLoadClassListener);
-		}
-	}
-
-	public void testBug258659_02() throws Exception {
-		// install a bundle
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a"); //$NON-NLS-1$
-		osgiA.start(Bundle.START_ACTIVATION_POLICY);
-		SynchronousBundleListener testLoadClassListener = new SynchronousBundleListener() {
-			public void bundleChanged(BundleEvent event) {
-				if (event.getType() == BundleEvent.LAZY_ACTIVATION)
-					try {
-						event.getBundle().loadClass("osgi.lazystart.a.ATest"); //$NON-NLS-1$
-					} catch (ClassNotFoundException e) {
-						simpleResults.addEvent(e);
-					}
-			}
-
-		};
-		OSGiTestsActivator.getContext().addBundleListener(testLoadClassListener);
-		try {
-			installer.refreshPackages(new Bundle[] {osgiA});
-			Object[] expectedEvents = new Object[1];
-			expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-			Object[] actualEvents = simpleResults.getResults(1);
-			compareResults(expectedEvents, actualEvents);
-		} finally {
-			OSGiTestsActivator.getContext().removeBundleListener(testLoadClassListener);
-		}
-	}
-
-	public void testBug258659_03() throws Exception {
-		// install a bundle
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		SynchronousBundleListener testLoadClassListener = new SynchronousBundleListener() {
-			public void bundleChanged(BundleEvent event) {
-				if (event.getType() == BundleEvent.STARTED)
-					try {
-						event.getBundle().stop();
-					} catch (BundleException e) {
-						simpleResults.addEvent(e);
-					}
-			}
-
-		};
-		OSGiTestsActivator.getContext().addBundleListener(testLoadClassListener);
-		try {
-			test.start();
-			Object[] expectedEvents = new Object[2];
-			expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, test);
-			expectedEvents[1] = new BundleEvent(BundleEvent.STOPPED, test);
-			Object[] actualEvents = simpleResults.getResults(2);
-			compareResults(expectedEvents, actualEvents);
-		} finally {
-			OSGiTestsActivator.getContext().removeBundleListener(testLoadClassListener);
-		}
-	}
-
-	public void testBug258659_04() throws Exception {
-		// install a bundle
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		test.start();
-		SynchronousBundleListener testLoadClassListener = new SynchronousBundleListener() {
-			public void bundleChanged(BundleEvent event) {
-				if (event.getType() == BundleEvent.STARTED)
-					try {
-						event.getBundle().stop();
-					} catch (BundleException e) {
-						simpleResults.addEvent(e);
-					}
-			}
-
-		};
-		// clear the results from the initial start
-		simpleResults.getResults(0);
-		// listen for the events from refreshing
-		OSGiTestsActivator.getContext().addBundleListener(testLoadClassListener);
-		try {
-			installer.refreshPackages(new Bundle[] {test});
-			Object[] expectedEvents = new Object[3];
-			expectedEvents[0] = new BundleEvent(BundleEvent.STOPPED, test);
-			expectedEvents[1] = new BundleEvent(BundleEvent.STARTED, test);
-			expectedEvents[2] = new BundleEvent(BundleEvent.STOPPED, test);
-			Object[] actualEvents = simpleResults.getResults(3);
-			compareResults(expectedEvents, actualEvents);
-		} finally {
-			OSGiTestsActivator.getContext().removeBundleListener(testLoadClassListener);
-		}
-	}
-
-	public void testBug213791() throws Exception {
-		// install a bundle and call start(START_ACTIVATION_POLICY) twice
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {osgiA});
-		if (osgiA.getState() == Bundle.STARTING)
-			osgiA.stop();
-		osgiA.start(Bundle.START_ACTIVATION_POLICY);
-		Object[] expectedEvents = new Object[0];
-		Object[] actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		osgiA.start(Bundle.START_ACTIVATION_POLICY);
-		expectedEvents = new Object[0];
-		actualEvents = simpleResults.getResults(0);
-		compareResults(expectedEvents, actualEvents);
-
-		osgiA.loadClass("osgi.lazystart.a.ATest"); //$NON-NLS-1$
-		expectedEvents = new Object[1];
-		expectedEvents[0] = new BundleEvent(BundleEvent.STARTED, osgiA);
-		actualEvents = simpleResults.getResults(1);
-		compareResults(expectedEvents, actualEvents);
-
-	}
-
-	public void testThreadLock() throws Exception {
-		Bundle threadLockTest = installer.installBundle("thread.locktest"); //$NON-NLS-1$
-		threadLockTest.loadClass("thread.locktest.ATest"); //$NON-NLS-1$
-
-		Object[] expectedEvents = new Object[2];
-		expectedEvents[0] = new Long(5000);
-		expectedEvents[1] = new BundleEvent(BundleEvent.STARTED, threadLockTest);
-		Object[] actualEvents = simpleResults.getResults(2);
-		compareResults(expectedEvents, actualEvents);
-
-	}
-
-	public void testURLsBug164077() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {test});
-		URL[] urls = new URL[2];
-		urls[0] = test.getResource("a/b/c/d"); //$NON-NLS-1$
-		urls[1] = test.getEntry("a/b/c/d"); //$NON-NLS-1$
-		assertNotNull("resource", urls[0]); //$NON-NLS-1$
-		assertNotNull("entry", urls[1]); //$NON-NLS-1$
-		for (int i = 0; i < urls.length; i++) {
-			URL testURL = new URL(urls[i], "g"); //$NON-NLS-1$
-			assertEquals("g", "/a/b/c/g", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "./g"); //$NON-NLS-1$
-			assertEquals("./g", "/a/b/c/g", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "g/"); //$NON-NLS-1$
-			assertEquals("g/", "/a/b/c/g/", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "/g"); //$NON-NLS-1$
-			assertEquals("/g", "/g", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "?y"); //$NON-NLS-1$
-			assertEquals("?y", "/a/b/c/?y", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "g?y"); //$NON-NLS-1$
-			assertEquals("g?y", "/a/b/c/g?y", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "g#s"); //$NON-NLS-1$
-			assertEquals("g#s", "/a/b/c/g#s", testURL.getPath() + "#s"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			testURL = new URL(urls[i], "g?y#s"); //$NON-NLS-1$
-			assertEquals("g?y#s", "/a/b/c/g?y#s", testURL.getPath() + "#s"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			testURL = new URL(urls[i], ";x"); //$NON-NLS-1$
-			assertEquals(";x", "/a/b/c/;x", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "g;x"); //$NON-NLS-1$
-			assertEquals("g;x", "/a/b/c/g;x", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "g;x?y#s"); //$NON-NLS-1$
-			assertEquals("g;x?y#s", "/a/b/c/g;x?y#s", testURL.getPath() + "#s"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			testURL = new URL(urls[i], "."); //$NON-NLS-1$
-			assertEquals(".", "/a/b/c/", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "./"); //$NON-NLS-1$
-			assertEquals("./", "/a/b/c/", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], ".."); //$NON-NLS-1$
-			assertEquals("..", "/a/b/", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "../"); //$NON-NLS-1$
-			assertEquals("../", "/a/b/", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "../g"); //$NON-NLS-1$
-			assertEquals("../g", "/a/b/g", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "../.."); //$NON-NLS-1$
-			assertEquals("../..", "/a/", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "../../"); //$NON-NLS-1$
-			assertEquals("../../", "/a/", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-			testURL = new URL(urls[i], "../../g"); //$NON-NLS-1$
-			assertEquals("../../g", "/a/g", testURL.getPath()); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-	}
-
-	public void testEntryURLEqualsHashCode() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {test});
-		URL testEntry1 = test.getEntry("a/b/c/d"); //$NON-NLS-1$
-		URL testEntry2 = test.getEntry("a/b/c/d"); //$NON-NLS-1$
-		assertEquals("url equals 1.0", testEntry1, testEntry2); //$NON-NLS-1$
-		assertEquals("hashcode equals 1.1", testEntry1.hashCode(), testEntry2.hashCode()); //$NON-NLS-1$
-
-		URL testEntry3 = new URL(testEntry1, "./d"); //$NON-NLS-1$
-		assertEquals("url equals 2.0", testEntry1, testEntry3); //$NON-NLS-1$
-		assertEquals("hashcode equals 2.1", testEntry1.hashCode(), testEntry3.hashCode()); //$NON-NLS-1$
-
-		URL testEntry4 = new URL(testEntry3.toString());
-		assertEquals("url equals 3.0", testEntry4, testEntry3); //$NON-NLS-1$
-		assertEquals("hashcode equals 3.1", testEntry4.hashCode(), testEntry3.hashCode()); //$NON-NLS-1$
-	}
-
-	public void testResourceURLEqualsHashCode() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {test});
-		URL testResource1 = test.getResource("a/b/c/d"); //$NON-NLS-1$
-		URL testResource2 = test.getResource("a/b/c/d"); //$NON-NLS-1$
-		assertEquals("url equals 1.0", testResource1, testResource2); //$NON-NLS-1$
-		assertEquals("hashcode equals 1.1", testResource1.hashCode(), testResource2.hashCode()); //$NON-NLS-1$
-
-		URL testResource3 = new URL(testResource1, "./d"); //$NON-NLS-1$
-		assertEquals("url equals 2.0", testResource1, testResource3); //$NON-NLS-1$
-		assertEquals("hashcode equals 2.1", testResource1.hashCode(), testResource3.hashCode()); //$NON-NLS-1$
-
-		URL testResource4 = new URL(testResource3.toString());
-		assertEquals("url equals 3.0", testResource4, testResource3); //$NON-NLS-1$
-		assertEquals("hashcode equals 3.1", testResource4.hashCode(), testResource3.hashCode()); //$NON-NLS-1$
-	}
-
-	public void testGetEntryDir01() throws BundleException {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {test});
-		URL aDir = test.getEntry("a"); //$NON-NLS-1$
-		assertNotNull("aDir", aDir); //$NON-NLS-1$
-		assertTrue(aDir.toExternalForm(), aDir.getFile().endsWith("/")); //$NON-NLS-1$
-		URL bDir = test.getEntry("a/b"); //$NON-NLS-1$
-		assertNotNull("bDir", bDir); //$NON-NLS-1$
-		assertTrue(bDir.toExternalForm(), bDir.getFile().endsWith("/")); //$NON-NLS-1$
-
-		aDir = test.getEntry("a/"); //$NON-NLS-1$
-		assertNotNull("aDir", aDir); //$NON-NLS-1$
-		assertTrue(aDir.toExternalForm(), aDir.getFile().endsWith("/")); //$NON-NLS-1$
-		bDir = test.getEntry("a/b/"); //$NON-NLS-1$
-		assertNotNull("bDir", bDir); //$NON-NLS-1$
-		assertTrue(bDir.toExternalForm(), bDir.getFile().endsWith("/")); //$NON-NLS-1$
-
-		URL dResource = test.getEntry("a/b/c/d"); //$NON-NLS-1$
-		assertNotNull("dResource", dResource); //$NON-NLS-1$
-		assertFalse(dResource.toExternalForm(), dResource.getFile().endsWith("/")); //$NON-NLS-1$
-
-		dResource = test.getEntry("a/b/c/d/"); //$NON-NLS-1$
-		if (dResource != null) // note that File bundles will return non-null whilc jar'ed bundles will return null
-			assertFalse(dResource.toExternalForm(), dResource.getFile().endsWith("/")); //$NON-NLS-1$
-
-	}
-
-	public void testGetResourceDir01() throws BundleException {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {test});
-		URL aDir = test.getResource("a"); //$NON-NLS-1$
-		assertNotNull("aDir", aDir); //$NON-NLS-1$
-		assertTrue(aDir.toExternalForm(), aDir.getFile().endsWith("/")); //$NON-NLS-1$
-		URL bDir = test.getResource("a/b"); //$NON-NLS-1$
-		assertNotNull("bDir", bDir); //$NON-NLS-1$
-		assertTrue(bDir.toExternalForm(), bDir.getFile().endsWith("/")); //$NON-NLS-1$
-
-		aDir = test.getResource("a/"); //$NON-NLS-1$
-		assertNotNull("aDir", aDir); //$NON-NLS-1$
-		assertTrue(aDir.toExternalForm(), aDir.getFile().endsWith("/")); //$NON-NLS-1$
-		bDir = test.getResource("a/b/"); //$NON-NLS-1$
-		assertNotNull("bDir", bDir); //$NON-NLS-1$
-		assertTrue(bDir.toExternalForm(), bDir.getFile().endsWith("/")); //$NON-NLS-1$
-
-		URL dResource = test.getResource("a/b/c/d"); //$NON-NLS-1$
-		assertNotNull("dResource", dResource); //$NON-NLS-1$
-		assertFalse(dResource.toExternalForm(), dResource.getFile().endsWith("/")); //$NON-NLS-1$
-
-		dResource = test.getResource("a/b/c/d/"); //$NON-NLS-1$
-		if (dResource != null) // note that File bundles will return non-null whilc jar'ed bundles will return null
-			assertFalse(dResource.toExternalForm(), dResource.getFile().endsWith("/")); //$NON-NLS-1$
-
-	}
-
-	public void testBootGetResources() throws Exception {
-		if (System.getProperty(Constants.FRAMEWORK_BOOTDELEGATION) != null)
-			return; // cannot really test this if this property is set
-		// make sure there is only one manifest found
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		Enumeration manifests = test.getResources("META-INF/MANIFEST.MF"); //$NON-NLS-1$
-		assertNotNull("manifests", manifests); //$NON-NLS-1$
-		ArrayList manifestURLs = new ArrayList();
-		while (manifests.hasMoreElements())
-			manifestURLs.add(manifests.nextElement());
-		assertEquals("manifest number", 1, manifestURLs.size()); //$NON-NLS-1$
-		URL manifest = (URL) manifestURLs.get(0);
-		int dotIndex = manifest.getHost().indexOf('.');
-		long bundleId = dotIndex >= 0 && dotIndex < manifest.getHost().length() - 1 ? Long.parseLong(manifest.getHost().substring(0, dotIndex)) : Long.parseLong(manifest.getHost());
-		assertEquals("host id", test.getBundleId(), bundleId); //$NON-NLS-1$
-	}
-
-	public void testMultipleGetResources01() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		// test that we can get multiple resources from a bundle
-		Enumeration resources = test.getResources("data/resource1"); //$NON-NLS-1$
-		assertNotNull("resources", resources); //$NON-NLS-1$
-		ArrayList resourceURLs = new ArrayList();
-		while (resources.hasMoreElements())
-			resourceURLs.add(resources.nextElement());
-		assertEquals("resource number", 2, resourceURLs.size()); //$NON-NLS-1$
-		assertEquals("root resource", "root classpath", readURL((URL) resourceURLs.get(0))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("stuff resource", "stuff classpath", readURL((URL) resourceURLs.get(1))); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testMultipleGetResources02() throws Exception {
-		installer.installBundle("test"); //$NON-NLS-1$
-		Bundle test2 = installer.installBundle("test2"); //$NON-NLS-1$
-		// test that we can get multiple resources from a bundle
-		Enumeration resources = test2.getResources("data/resource1"); //$NON-NLS-1$
-		assertNotNull("resources", resources); //$NON-NLS-1$
-		ArrayList resourceURLs = new ArrayList();
-		while (resources.hasMoreElements())
-			resourceURLs.add(resources.nextElement());
-		assertEquals("resource number", 4, resourceURLs.size()); //$NON-NLS-1$
-		assertEquals("root resource", "root classpath", readURL((URL) resourceURLs.get(0))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("stuff resource", "stuff classpath", readURL((URL) resourceURLs.get(1))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("root resource", "root classpath test2", readURL((URL) resourceURLs.get(2))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("stuff resource", "stuff classpath test2", readURL((URL) resourceURLs.get(3))); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testMultipleGetResources03() throws Exception {
-		installer.installBundle("test"); //$NON-NLS-1$
-		Bundle test2 = installer.installBundle("test2"); //$NON-NLS-1$
-		// test that we can get multiple resources from a bundle
-		// test that using a context gives correct results for multiple resources (bug 261853)
-		Enumeration resources = test2.getResources("data/"); //$NON-NLS-1$
-		assertNotNull("resources", resources); //$NON-NLS-1$
-		ArrayList resourceURLs = new ArrayList();
-		while (resources.hasMoreElements())
-			resourceURLs.add(resources.nextElement());
-		assertEquals("resource number", 4, resourceURLs.size()); //$NON-NLS-1$
-		assertEquals("root resource", "root classpath", readURL(new URL((URL) resourceURLs.get(0), "resource1"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		assertEquals("stuff resource", "stuff classpath", readURL(new URL((URL) resourceURLs.get(1), "resource1"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		assertEquals("root resource", "root classpath test2", readURL(new URL((URL) resourceURLs.get(2), "resource1"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		assertEquals("stuff resource", "stuff classpath test2", readURL(new URL((URL) resourceURLs.get(3), "resource1"))); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	public void testURLExternalFormat01() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		// test the external format of bundle entry URLs
-		URL entry = test.getEntry("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry", entry); //$NON-NLS-1$
-		assertEquals("root resource", "root classpath", readURL(entry)); //$NON-NLS-1$ //$NON-NLS-2$
-		URL entryCopy = new URL(entry.toExternalForm());
-		assertEquals("external format", entry.toExternalForm(), entryCopy.toExternalForm()); //$NON-NLS-1$
-		assertEquals("root resource", "root classpath", readURL(entryCopy)); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testURLExternalFormat02() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		// test the external format of bundle entry URLs
-		URL entry = test.getResource("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry", entry); //$NON-NLS-1$
-		assertEquals("root resource", "root classpath", readURL(entry)); //$NON-NLS-1$ //$NON-NLS-2$
-		URL entryCopy = new URL(entry.toExternalForm());
-		assertEquals("external format", entry.toExternalForm(), entryCopy.toExternalForm()); //$NON-NLS-1$
-		assertEquals("root resource", "root classpath", readURL(entryCopy)); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testURLExternalFormat03() throws BundleException {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		// test the external format of bundle resource URLs
-		URL entry = test.getEntry("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry", entry); //$NON-NLS-1$
-		URI uri1 = null;
-		URI uri2 = null;
-		URI uri3 = null;
-		try {
-			uri1 = new URI(entry.getProtocol(), null, entry.getHost(), entry.getPort(), entry.getPath(), null, entry.getQuery());
-			uri2 = new URI(entry.getProtocol(), entry.getHost(), entry.getPath(), entry.getQuery());
-			uri3 = new URI(entry.toExternalForm());
-		} catch (URISyntaxException e) {
-			fail("Unexpected URI exception", e); //$NON-NLS-1$
-		}
-		URL url1 = null;
-		URL url2 = null;
-		URL url3 = null;
-		URL url4 = null;
-		try {
-			url1 = uri1.toURL();
-			url2 = uri2.toURL();
-			url3 = uri3.toURL();
-			url4 = new URL(uri1.toString());
-		} catch (MalformedURLException e) {
-			fail("Unexpected URL exception", e); //$NON-NLS-1$
-		}
-		checkURL("root classpath", entry, url1); //$NON-NLS-1$
-		checkURL("root classpath", entry, url2); //$NON-NLS-1$
-		checkURL("root classpath", entry, url3); //$NON-NLS-1$
-		checkURL("root classpath", entry, url4); //$NON-NLS-1$
-	}
-
-	public void testURLExternalFormat04() throws BundleException {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		// test the external format of bundle resource URLs
-		URL entry = test.getResource("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry", entry); //$NON-NLS-1$
-		URI uri1 = null;
-		URI uri2 = null;
-		URI uri3 = null;
-		try {
-			uri1 = new URI(entry.getProtocol(), null, entry.getHost(), entry.getPort(), entry.getPath(), null, entry.getQuery());
-			uri2 = new URI(entry.getProtocol(), entry.getHost(), entry.getPath(), entry.getQuery());
-			uri3 = new URI(entry.toExternalForm());
-		} catch (URISyntaxException e) {
-			fail("Unexpected URI exception", e); //$NON-NLS-1$
-		}
-		URL url1 = null;
-		URL url2 = null;
-		URL url3 = null;
-		URL url4 = null;
-		try {
-			url1 = uri1.toURL();
-			url2 = uri2.toURL();
-			url3 = uri3.toURL();
-			url4 = new URL(uri1.toString());
-		} catch (MalformedURLException e) {
-			fail("Unexpected URL exception", e); //$NON-NLS-1$
-		}
-		checkURL("root classpath", entry, url1); //$NON-NLS-1$
-		checkURL("root classpath", entry, url2); //$NON-NLS-1$
-		checkURL("root classpath", entry, url3); //$NON-NLS-1$
-		checkURL("root classpath", entry, url4); //$NON-NLS-1$
-	}
-
-	private void checkURL(String content, URL orig, URL copy) {
-		assertEquals("external format", orig.toExternalForm(), copy.toExternalForm()); //$NON-NLS-1$
-		assertEquals(content, content, readURL(copy));
-	}
-
-	public void testURI() throws URISyntaxException {
-		new URI("bundleentry", "1", "/test", null); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	public void testMultipleExportFragments01() throws Exception {
-		Bundle host = installer.installBundle("host.multiple.exports"); //$NON-NLS-1$
-		Bundle frag = installer.installBundle("frag.multiple.exports"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {host, frag});
-		PackageAdmin packageAdmin = installer.getPackageAdmin();
-		ExportedPackage[] hostExports = packageAdmin.getExportedPackages(host);
-		assertEquals("Number host exports", 3, hostExports == null ? 0 : hostExports.length); //$NON-NLS-1$
-
-		PlatformAdmin platformAdmin = installer.getPlatformAdmin();
-		State systemState = platformAdmin.getState(false);
-		BundleDescription hostDesc = systemState.getBundle(host.getBundleId());
-		ExportPackageDescription[] hostExportDescs = hostDesc.getSelectedExports();
-		assertEquals("Number host export descriptions", 3, hostExportDescs.length); //$NON-NLS-1$
-
-		assertEquals("Check export name", "host.multiple.exports", hostExportDescs[0].getName()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("Check include directive", "Public*", (String) hostExportDescs[0].getDirective("include")); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-
-		assertEquals("Check export name", "host.multiple.exports.onlyone", hostExportDescs[1].getName()); //$NON-NLS-1$ //$NON-NLS-2$
-
-		assertEquals("Check export name", "host.multiple.exports", hostExportDescs[2].getName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Check include directive", "private", (String) hostExportDescs[2].getAttributes().get("scope")); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	public void testMultipleExportFragments02() throws Exception {
-		Bundle host = installer.installBundle("host.multiple.exports"); //$NON-NLS-1$
-		Bundle frag = installer.installBundle("frag.multiple.exports"); //$NON-NLS-1$
-		Bundle client1 = installer.installBundle("client1.multiple.exports"); //$NON-NLS-1$
-
-		installer.resolveBundles(new Bundle[] {host, frag, client1});
-		client1.start();
-		client1.stop();
-		Object[] expectedEvents = new Object[4];
-		expectedEvents[0] = "host.multiple.exports.PublicClass1"; //$NON-NLS-1$
-		expectedEvents[1] = "host.multiple.exports.PublicClass2"; //$NON-NLS-1$
-		expectedEvents[2] = "success"; //$NON-NLS-1$
-		expectedEvents[3] = "success"; //$NON-NLS-1$
-		Object[] actualEvents = simpleResults.getResults(4);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testMultipleExportFragments03() throws Exception {
-		Bundle host = installer.installBundle("host.multiple.exports"); //$NON-NLS-1$
-		Bundle frag = installer.installBundle("frag.multiple.exports"); //$NON-NLS-1$
-		Bundle client2 = installer.installBundle("client2.multiple.exports"); //$NON-NLS-1$
-
-		installer.resolveBundles(new Bundle[] {host, frag, client2});
-		client2.start();
-		client2.stop();
-		Object[] expectedEvents = new Object[4];
-		expectedEvents[0] = "host.multiple.exports.PublicClass1"; //$NON-NLS-1$
-		expectedEvents[1] = "host.multiple.exports.PublicClass2"; //$NON-NLS-1$
-		expectedEvents[2] = "host.multiple.exports.PrivateClass1"; //$NON-NLS-1$
-		expectedEvents[3] = "host.multiple.exports.PrivateClass2"; //$NON-NLS-1$
-		Object[] actualEvents = simpleResults.getResults(4);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testXFriends() throws Exception {
-		System.setProperty("osgi.resolverMode", "strict"); //$NON-NLS-1$ //$NON-NLS-2$
-		setPlatformProperties();
-		try {
-			Bundle test1 = installer.installBundle("xfriends.test1"); //$NON-NLS-1$
-			Bundle test2 = installer.installBundle("xfriends.test2"); //$NON-NLS-1$
-			Bundle test3 = installer.installBundle("xfriends.test3"); //$NON-NLS-1$
-			installer.resolveBundles(new Bundle[] {test1, test2, test3});
-			test2.start();
-			test2.stop();
-			test3.start();
-			test3.stop();
-			Object[] expectedEvents = new Object[4];
-			expectedEvents[0] = "xfriends.test1.onlyforfriends.TestFriends"; //$NON-NLS-1$
-			expectedEvents[1] = "xfriends.test1.external.TestFriends"; //$NON-NLS-1$
-			expectedEvents[2] = "success"; //$NON-NLS-1$
-			expectedEvents[3] = "xfriends.test1.external.TestFriends"; //$NON-NLS-1$
-			Object[] actualEvents = simpleResults.getResults(4);
-			compareResults(expectedEvents, actualEvents);
-		} finally {
-			System.getProperties().remove("osgi.resolverMode"); //$NON-NLS-1$
-			setPlatformProperties();
-		}
-	}
-
-	public void testImporterExporter01() throws BundleException {
-		Bundle importerExporter1 = installer.installBundle("exporter.importer1"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {importerExporter1});
-		PackageAdmin pa = installer.getPackageAdmin();
-		ExportedPackage[] origExportedPackages = pa.getExportedPackages("exporter.importer.test"); //$NON-NLS-1$
-		assertNotNull("No exporter.importer.test found", origExportedPackages); //$NON-NLS-1$
-		assertEquals("Wrong number of exports", 1, origExportedPackages.length); //$NON-NLS-1$
-		Bundle exporter = origExportedPackages[0].getExportingBundle();
-		assertEquals("Wrong exporter", importerExporter1, exporter); //$NON-NLS-1$
-		// TODO need to get clarification from OSGi on what is returned by getImportingBundles when there is no importers
-		Bundle[] origImporters = origExportedPackages[0].getImportingBundles();
-		assertTrue("Should have no importers", origImporters == null || origImporters.length == 0); //$NON-NLS-1$
-
-		// install another importer/exporter.  This bundle should wire to the original exporter
-		Bundle importerExporter2 = installer.installBundle("exporter.importer2"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {importerExporter2});
-
-		origImporters = origExportedPackages[0].getImportingBundles();
-		assertNotNull("No importers found", origImporters); //$NON-NLS-1$
-		assertEquals("Wrong number of importers", 1, origImporters.length); //$NON-NLS-1$
-		assertEquals("Wrong importer", importerExporter2, origImporters[0]); //$NON-NLS-1$
-
-		ExportedPackage[] newExportedPackages = pa.getExportedPackages("exporter.importer.test"); //$NON-NLS-1$
-		assertNotNull("No exporter.importer.test found", newExportedPackages); //$NON-NLS-1$
-		assertEquals("Wrong number of exports", 1, newExportedPackages.length); //$NON-NLS-1$
-		exporter = newExportedPackages[0].getExportingBundle();
-		assertEquals("Wrong exporter", importerExporter1, exporter); //$NON-NLS-1$
-		Bundle[] newImporters = newExportedPackages[0].getImportingBundles();
-		assertNotNull("No importers found", newImporters); //$NON-NLS-1$
-		assertEquals("Wrong number of importers", 1, newImporters.length); //$NON-NLS-1$
-		assertEquals("Wrong importer", importerExporter2, newImporters[0]); //$NON-NLS-1$
-	}
-
-	public void testImporterExporter02() throws BundleException {
-		Bundle importerExporter3 = installer.installBundle("exporter.importer3"); //$NON-NLS-1$
-		Bundle importerExporter4 = installer.installBundle("exporter.importer4"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {importerExporter3, importerExporter4});
-
-		importerExporter3.start();
-		importerExporter3.stop();
-		importerExporter3.update();
-		try {
-			importerExporter3.start();
-		} catch (Throwable t) {
-			fail("Unexpected exception", t); //$NON-NLS-1$
-		}
-	}
-
-	public void testBug207847() throws BundleException {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {test});
-		test.start();
-
-		Bundle frag1 = installer.installBundle("test.fragment1"); //$NON-NLS-1$
-		Bundle frag2 = installer.installBundle("test.fragment2"); //$NON-NLS-1$
-		Bundle frag3 = installer.installBundle("test.fragment3"); //$NON-NLS-1$
-		Bundle frag4 = installer.installBundle("test.fragment4"); //$NON-NLS-1$
-		Bundle frag5 = installer.installBundle("test.fragment5"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {frag1, frag2, frag3, frag4, frag5});
-
-		assertTrue("host is not resolved", (test.getState() & Bundle.ACTIVE) != 0); //$NON-NLS-1$
-		assertTrue("frag1 is not resolved", (frag1.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
-		assertTrue("frag2 is not resolved", (frag2.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
-		assertTrue("frag3 is not resolved", (frag3.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
-		assertTrue("frag4 is not resolved", (frag4.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
-		assertTrue("frag5 is not resolved", (frag5.getState() & Bundle.RESOLVED) != 0); //$NON-NLS-1$
-	}
-
-	public void testBug235958() throws BundleException {
-		Bundle testX = installer.installBundle("test.bug235958.x"); //$NON-NLS-1$
-		Bundle testY = installer.installBundle("test.bug235958.y"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {testX, testY});
-		try {
-			testX.start();
-		} catch (Exception e) {
-			fail("Unexpected Exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBuddyClassLoadingRegistered1() throws Exception {
-		Bundle registeredA = installer.installBundle("buddy.registered.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {registeredA});
-		Enumeration testFiles = registeredA.getResources("resources/test.txt"); //$NON-NLS-1$
-		assertNotNull("testFiles", testFiles); //$NON-NLS-1$
-		ArrayList texts = new ArrayList();
-		while (testFiles.hasMoreElements())
-			texts.add(readURL((URL) testFiles.nextElement()));
-		assertEquals("test.txt number", 1, texts.size()); //$NON-NLS-1$
-		assertTrue("buddy.registered.a", texts.contains("buddy.registered.a")); //$NON-NLS-1$ //$NON-NLS-2$
-
-		Bundle registeredATest1 = installer.installBundle("buddy.registered.a.test1"); //$NON-NLS-1$
-		Bundle registeredATest2 = installer.installBundle("buddy.registered.a.test2"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {registeredATest1, registeredATest2});
-		testFiles = registeredA.getResources("resources/test.txt"); //$NON-NLS-1$
-		assertNotNull("testFiles", testFiles); //$NON-NLS-1$
-		texts = new ArrayList();
-		while (testFiles.hasMoreElements())
-			texts.add(readURL((URL) testFiles.nextElement()));
-
-		// The real test
-		assertEquals("test.txt number", 3, texts.size()); //$NON-NLS-1$
-		assertTrue("buddy.registered.a", texts.contains("buddy.registered.a")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("buddy.registered.a.test1", texts.contains("buddy.registered.a.test1")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("buddy.registered.a.test2", texts.contains("buddy.registered.a.test2")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testBuddyClassLoadingRegistered2() throws Exception {
-		Bundle registeredA = installer.installBundle("buddy.registered.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {registeredA});
-		URL testFile = registeredA.getResource("resources/test1.txt"); //$NON-NLS-1$
-		assertNull("test1.txt", testFile); //$NON-NLS-1$
-
-		testFile = registeredA.getResource("resources/test2.txt"); //$NON-NLS-1$
-		assertNull("test2.txt", testFile); //$NON-NLS-1$
-
-		Bundle registeredATest1 = installer.installBundle("buddy.registered.a.test1"); //$NON-NLS-1$
-		Bundle registeredATest2 = installer.installBundle("buddy.registered.a.test2"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {registeredATest1, registeredATest2});
-
-		testFile = registeredA.getResource("resources/test1.txt"); //$NON-NLS-1$
-		assertNotNull("test1.txt", testFile); //$NON-NLS-1$
-		assertEquals("buddy.registered.a.test1", "buddy.registered.a.test1", readURL(testFile)); //$NON-NLS-1$ //$NON-NLS-2$
-
-		testFile = registeredA.getResource("resources/test2.txt"); //$NON-NLS-1$
-		assertNotNull("test2.txt", testFile); //$NON-NLS-1$
-		assertEquals("buddy.registered.a.test2", "buddy.registered.a.test2", readURL(testFile)); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testBuddyClassLoadingRegistered3() throws Exception {
-		Bundle registeredA = installer.installBundle("buddy.registered.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {registeredA});
-		try {
-			registeredA.loadClass("buddy.registered.a.test1.ATest"); //$NON-NLS-1$
-			fail("expected ClassNotFoundException"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		try {
-			registeredA.loadClass("buddy.registered.a.test2.ATest"); //$NON-NLS-1$
-			fail("expected ClassNotFoundException"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		Bundle registeredATest1 = installer.installBundle("buddy.registered.a.test1"); //$NON-NLS-1$
-		Bundle registeredATest2 = installer.installBundle("buddy.registered.a.test2"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {registeredATest1, registeredATest2});
-
-		try {
-			Class testClass = registeredA.loadClass("buddy.registered.a.test1.ATest"); //$NON-NLS-1$
-			assertNotNull("testClass", testClass); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected ClassNotFoundException", e); //$NON-NLS-1$
-		}
-
-		try {
-			Class testClass = registeredA.loadClass("buddy.registered.a.test2.ATest"); //$NON-NLS-1$
-			assertNotNull("testClass", testClass); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected ClassNotFoundException", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBuddyClassLoadingDependent1() throws Exception {
-		Bundle dependentA = installer.installBundle("buddy.dependent.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {dependentA});
-		Enumeration testFiles = dependentA.getResources("resources/test.txt"); //$NON-NLS-1$
-		assertNotNull("testFiles", testFiles); //$NON-NLS-1$
-		ArrayList texts = new ArrayList();
-		while (testFiles.hasMoreElements())
-			texts.add(readURL((URL) testFiles.nextElement()));
-		assertEquals("test.txt number", 1, texts.size()); //$NON-NLS-1$
-		assertTrue("buddy.dependent.a", texts.contains("buddy.dependent.a")); //$NON-NLS-1$ //$NON-NLS-2$
-
-		Bundle dependentATest1 = installer.installBundle("buddy.dependent.a.test1"); //$NON-NLS-1$
-		Bundle dependentATest2 = installer.installBundle("buddy.dependent.a.test2"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {dependentATest1, dependentATest2});
-		testFiles = dependentA.getResources("resources/test.txt"); //$NON-NLS-1$
-		assertNotNull("testFiles", testFiles); //$NON-NLS-1$
-		texts = new ArrayList();
-		while (testFiles.hasMoreElements())
-			texts.add(readURL((URL) testFiles.nextElement()));
-		assertEquals("test.txt number", 3, texts.size()); //$NON-NLS-1$
-		assertTrue("buddy.dependent.a", texts.contains("buddy.dependent.a")); //$NON-NLS-1$//$NON-NLS-2$
-		assertTrue("buddy.dependent.a.test1", texts.contains("buddy.dependent.a.test1")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("buddy.dependent.a.test2", texts.contains("buddy.dependent.a.test2")); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testBuddyClassLoadingDependent2() throws Exception {
-		Bundle dependentA = installer.installBundle("buddy.dependent.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {dependentA});
-		URL testFile = dependentA.getResource("resources/test1.txt"); //$NON-NLS-1$
-		assertNull("test1.txt", testFile); //$NON-NLS-1$
-
-		testFile = dependentA.getResource("resources/test2.txt"); //$NON-NLS-1$
-		assertNull("test2.txt", testFile); //$NON-NLS-1$
-
-		Bundle dependentATest1 = installer.installBundle("buddy.dependent.a.test1"); //$NON-NLS-1$
-		Bundle dependentATest2 = installer.installBundle("buddy.dependent.a.test2"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {dependentATest1, dependentATest2});
-
-		testFile = dependentA.getResource("resources/test1.txt"); //$NON-NLS-1$
-		assertNotNull("test1.txt", testFile); //$NON-NLS-1$
-		assertEquals("buddy.dependent.a.test1", "buddy.dependent.a.test1", readURL(testFile)); //$NON-NLS-1$ //$NON-NLS-2$
-
-		testFile = dependentA.getResource("resources/test2.txt"); //$NON-NLS-1$
-		assertNotNull("test2.txt", testFile); //$NON-NLS-1$
-		assertEquals("buddy.dependent.a.test2", "buddy.dependent.a.test2", readURL(testFile)); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testBuddyClassLoadingDependent3() throws Exception {
-		Bundle dependentA = installer.installBundle("buddy.dependent.a"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {dependentA});
-
-		try {
-			dependentA.loadClass("buddy.dependent.a.test1.ATest"); //$NON-NLS-1$
-			fail("expected ClassNotFoundException"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-
-		try {
-			dependentA.loadClass("buddy.dependent.a.test2.ATest"); //$NON-NLS-1$
-			fail("expected ClassNotFoundException"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-
-		Bundle dependentATest1 = installer.installBundle("buddy.dependent.a.test1"); //$NON-NLS-1$
-		Bundle dependentATest2 = installer.installBundle("buddy.dependent.a.test2"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {dependentATest1, dependentATest2});
-
-		try {
-			Class testClass = dependentA.loadClass("buddy.dependent.a.test1.ATest"); //$NON-NLS-1$
-			assertNotNull("testClass", testClass); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected ClassNotFoundException", e); //$NON-NLS-1$
-		}
-		try {
-			Class testClass = dependentA.loadClass("buddy.dependent.a.test2.ATest"); //$NON-NLS-1$
-			assertNotNull("testClass", testClass); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected ClassNotFoundException", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleReference01() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		Class clazz = test.loadClass("test1.Activator"); //$NON-NLS-1$
-		Bundle bundle = FrameworkUtil.getBundle(clazz);
-		assertEquals("Wrong bundle", test, bundle); //$NON-NLS-1$
-	}
-
-	public void testBundleReference02() throws Exception {
-		Bundle test = installer.installBundle("test"); //$NON-NLS-1$
-		Class clazz = test.loadClass("test1.Activator"); //$NON-NLS-1$
-		ClassLoader cl = clazz.getClassLoader();
-		if (!(cl instanceof BundleReference))
-			fail("ClassLoader is not of type BundleReference"); //$NON-NLS-1$
-		assertEquals("Wrong bundle", test, ((BundleReference) cl).getBundle()); //$NON-NLS-1$
-	}
-
-	public void testResolveURLRelativeBundleResourceWithPort() throws Exception {
-		URL directory = new URL("bundleresource://82:1/dictionaries/"); //$NON-NLS-1$
-		assertEquals(1, directory.getPort());
-
-		URL resource = new URL(directory, "en_GB.dictionary"); //$NON-NLS-1$
-		assertEquals(1, resource.getPort());
-	}
-
-	public void testManifestPackageSpec() {
-		try {
-			Bundle test = installer.installBundle("test.manifestpackage"); //$NON-NLS-1$
-			test.start();
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testArrayTypeLoad() {
-		doTestArrayTypeLoad("[B"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[C"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[D"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[F"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[I"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[J"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[S"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[Z"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[Lorg.eclipse.osgi.tests.bundles.ArrayTest;"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[[D"); //$NON-NLS-1$
-		doTestArrayTypeLoad("[[Lorg.eclipse.osgi.tests.bundles.ArrayTest;"); //$NON-NLS-1$
-	}
-
-	public void testSystemBundleGetResources01() {
-		Bundle systemBundle = OSGiTestsActivator.getContext().getBundle(0);
-		Enumeration resources = null;
-		try {
-			resources = systemBundle.getResources("hookconfigurators.properties");
-		} catch (IOException e) {
-			fail("Failed to get resources", e);
-		}
-		assertNotNull("Resources is null", resources);
-	}
-
-	public void testSystemBundleGetResources02() {
-		Bundle systemBundle = OSGiTestsActivator.getContext().getBundle(0);
-		Enumeration resources = null;
-		try {
-			resources = systemBundle.getResources("java/lang/test.resource");
-		} catch (IOException e) {
-			fail("Failed to get resources", e);
-		}
-		assertNull("Resources is not null", resources);
-	}
-
-	public void testBug299921() {
-		ClassLoader cl = this.getClass().getClassLoader();
-		Enumeration resources = null;
-		try {
-			Method findMethod = ClassLoader.class.getDeclaredMethod("findResources", new Class[] {String.class});
-			findMethod.setAccessible(true);
-
-			resources = (Enumeration) findMethod.invoke(cl, new Object[] {"test/doesnotexist.txt"});
-		} catch (Exception e) {
-			fail("Unexpected error calling getResources", e);
-		}
-		assertNotNull("Should not be null", resources);
-		assertFalse("Found resources!", resources.hasMoreElements());
-		try {
-			resources = cl.getResources("test/doesnotexist.txt");
-		} catch (IOException e) {
-			fail("Unexpected IOException", e);
-		}
-		assertNotNull("Should not be null", resources);
-		assertFalse("Found resources!", resources.hasMoreElements());
-	}
-
-	public void testBug306181() throws BundleException {
-		StartLevel sl = installer.getStartLevel();
-		int origSL = sl.getStartLevel();
-		int origBundleSL = sl.getInitialBundleStartLevel();
-		int newSL = origSL + 1;
-		sl.setInitialBundleStartLevel(newSL);
-		try {
-			Bundle a = installer.installBundle("test.bug306181a");
-			Bundle b = installer.installBundle("test.bug306181b");
-
-			sl.setBundleStartLevel(a, newSL);
-			sl.setBundleStartLevel(b, newSL);
-			installer.resolveBundles(new Bundle[] {a, b});
-			a.start();
-			b.start(Bundle.START_ACTIVATION_POLICY);
-
-			sl.setStartLevel(newSL);
-			Object[] expectedFrameworkEvents = new Object[1];
-			expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-			Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-			compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-
-			assertEquals("Bundle A is not active", Bundle.ACTIVE, a.getState());
-			assertEquals("Bundle B is not active", Bundle.STARTING, b.getState());
-			ServiceReference[] regs = a.getRegisteredServices();
-			if (regs != null && regs.length > 0) {
-				fail(OSGiTestsActivator.getContext().getService(regs[0]).toString());
-			}
-		} finally {
-			sl.setInitialBundleStartLevel(origBundleSL);
-			sl.setStartLevel(origSL);
-			Object[] expectedFrameworkEvents = new Object[1];
-			expectedFrameworkEvents[0] = new FrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, OSGiTestsActivator.getContext().getBundle(0), null);
-			Object[] actualFrameworkEvents = frameworkListenerResults.getResults(1);
-			compareResults(expectedFrameworkEvents, actualFrameworkEvents);
-		}
-	}
-
-	private void doTestArrayTypeLoad(String name) {
-		try {
-			Class arrayType = OSGiTestsActivator.getContext().getBundle().loadClass(name);
-			assertNotNull("Null class", arrayType); //$NON-NLS-1$
-			assertTrue("Class is not an array: " + arrayType, arrayType.isArray()); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	private String readURL(URL url) {
-		StringBuffer sb = new StringBuffer();
-		try {
-			BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
-			try {
-				for (String line = reader.readLine(); line != null;) {
-					sb.append(line);
-					line = reader.readLine();
-					if (line != null)
-						sb.append('\n');
-				}
-			} finally {
-				reader.close();
-			}
-		} catch (IOException e) {
-			fail("Unexpected exception reading url: " + url.toExternalForm(), e); //$NON-NLS-1$
-		}
-		return sb.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/EventListenerTestResults.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/EventListenerTestResults.java
deleted file mode 100644
index c3941bd..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/EventListenerTestResults.java
+++ /dev/null
@@ -1,23 +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.osgi.tests.bundles;
-
-import org.osgi.framework.*;
-
-public class EventListenerTestResults extends TestResults implements BundleListener, FrameworkListener {
-	public void bundleChanged(BundleEvent event) {
-		addEvent(event);
-	}
-
-	public void frameworkEvent(FrameworkEvent event) {
-		addEvent(event);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ExtensionBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ExtensionBundleTests.java
deleted file mode 100644
index 5ed5de4..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ExtensionBundleTests.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.Bundle;
-
-public class ExtensionBundleTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(ExtensionBundleTests.class);
-	}
-
-	public void testFrameworkExtension01() throws Exception {
-		Bundle fwkext = installer.installBundle("ext.framework.a", false); //$NON-NLS-1$
-		Bundle importer = installer.installBundle("ext.framework.a.importer"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {fwkext, importer});
-
-		importer.start();
-		importer.stop();
-		Object[] results = simpleResults.getResults(2);
-		assertTrue("1.0", results.length == 2); //$NON-NLS-1$
-		assertEquals("1.1", "success", results[0]); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("1.2", "success", results[1]); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testFrameworkExtension02() throws Exception {
-		Bundle fwkext = installer.installBundle("ext.framework.a", false); //$NON-NLS-1$
-		Bundle importer = installer.installBundle("ext.framework.a.requires"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {fwkext, importer});
-
-		importer.start();
-		importer.stop();
-		Object[] results = simpleResults.getResults(2);
-		assertTrue("1.0", results.length == 2); //$NON-NLS-1$
-		assertEquals("1.1", "success", results[0]); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("1.2", "success", results[1]); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testExtClasspathExtension01() throws Exception {
-		Bundle fwkext = installer.installBundle("ext.extclasspath.a", false); //$NON-NLS-1$
-		Bundle importer = installer.installBundle("ext.extclasspath.a.importer"); //$NON-NLS-1$
-		installer.resolveBundles(new Bundle[] {fwkext, importer});
-
-		importer.start();
-		importer.stop();
-		Object[] results = simpleResults.getResults(2);
-		assertTrue("1.0", results.length == 2); //$NON-NLS-1$
-		assertEquals("1.1", "success", results[0]); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("1.2", "success", results[1]); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ITestRunner.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ITestRunner.java
deleted file mode 100644
index f8ab83a..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ITestRunner.java
+++ /dev/null
@@ -1,15 +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.osgi.tests.bundles;
-
-public interface ITestRunner {
-	public Object testIt() throws Exception;
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/NativeCodeBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/NativeCodeBundleTests.java
deleted file mode 100644
index 863efa8..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/NativeCodeBundleTests.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import java.io.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class NativeCodeBundleTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(NativeCodeBundleTests.class);
-	}
-
-	public void testNativeCode01() throws Exception {
-		Bundle nativetestA1 = installer.installBundle("nativetest.a1");
-		nativetestA1.start();
-		nativetestA1.stop();
-		Object[] a1Results = simpleResults.getResults(1);
-
-		installer.updateBundle("nativetest.a1", "nativetest.a2");
-		nativetestA1.start();
-		nativetestA1.stop();
-		Object[] a2Results = simpleResults.getResults(1);
-		assertTrue("1.0", a1Results.length == 1);
-		assertTrue("1.1", a2Results.length == 1);
-		assertNotNull("1.2", a1Results[0]);
-		assertNotNull("1.3", a2Results[0]);
-		assertFalse("1.4", a1Results[0].equals(a2Results[0]));
-	}
-
-	public void testNativeCode02() throws Exception {
-		Bundle nativetestB1 = installer.installBundle("nativetest.b1");
-		nativetestB1.start();
-		nativetestB1.stop();
-		Object[] b1Results = simpleResults.getResults(1);
-
-		installer.updateBundle("nativetest.b1", "nativetest.b2");
-		nativetestB1.start();
-		nativetestB1.stop();
-		Object[] b2Results = simpleResults.getResults(1);
-		assertTrue("1.0", b1Results.length == 1);
-		assertTrue("1.1", b2Results.length == 1);
-		assertNotNull("1.2", b1Results[0]);
-		assertNotNull("1.3", b2Results[0]);
-		assertFalse("1.4", b1Results[0].equals(b2Results[0]));
-	}
-
-	public void testNativeCode03() throws Exception {
-		System.setProperty("nativecodetest", "1");
-		setPlatformProperties();
-		Bundle nativetestC = installer.installBundle("nativetest.c");
-		nativetestC.start();
-		nativetestC.stop();
-		Object[] results = simpleResults.getResults(1);
-
-		assertTrue("1.0", results.length == 1);
-		assertEquals("1.1", "libs.test1", getContent((String) results[0]));
-	}
-
-	public void testNativeCode04() throws Exception {
-		System.setProperty("nativecodetest", "unresolved");
-		setPlatformProperties();
-		Bundle nativetestC = installer.installBundle("nativetest.c");
-		installer.resolveBundles(new Bundle[] {nativetestC});
-		assertTrue("1.0", nativetestC.getState() == Bundle.INSTALLED);
-	}
-
-	public void testNativeCode05() throws Exception {
-		System.setProperty("nativecodetest", "2");
-		setPlatformProperties();
-		Bundle nativetestC = installer.installBundle("nativetest.c");
-		nativetestC.start();
-		nativetestC.stop();
-		Object[] results = simpleResults.getResults(1);
-
-		assertTrue("1.0", results.length == 1);
-		assertEquals("1.1", "libs.test3", getContent((String) results[0]));
-	}
-
-	public void testNativeCode06() throws Exception {
-		System.setProperty("nativecodetest", "3");
-		setPlatformProperties();
-		Bundle nativetestC = installer.installBundle("nativetest.c");
-		nativetestC.start();
-		nativetestC.stop();
-		Object[] results = simpleResults.getResults(1);
-
-		assertTrue("1.0", results.length == 1);
-		assertEquals("1.1", "libs.test2", getContent((String) results[0]));
-	}
-
-	public void testNativeCode07() throws Exception {
-		Bundle nativetestC = installer.installBundle("nativetest.d");
-		nativetestC.start();
-		nativetestC.stop();
-		Object[] results = simpleResults.getResults(1);
-
-		assertTrue("1.0", results.length == 1);
-		assertNull("1.1", results[0]);
-	}
-
-	public void testNativeCode08() throws Exception {
-		System.setProperty("nativecodetest", "4");
-		setPlatformProperties();
-		Bundle nativetestC = installer.installBundle("nativetest.c");
-		try {
-			nativetestC.start();
-			fail("Should not be able to start bundle with missing native code path");
-		} catch (BundleException e) {
-			// expected
-			assertEquals("Wrong exception type", BundleException.NATIVECODE_ERROR, e.getType());
-		}
-	}
-
-	private String getContent(String file) throws IOException {
-		BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
-		try {
-			return br.readLine();
-		} finally {
-			br.close();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PackageAdminBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PackageAdminBundleTests.java
deleted file mode 100644
index 70f3c0e..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PackageAdminBundleTests.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.ExportedPackage;
-
-public class PackageAdminBundleTests extends AbstractBundleTests {
-	public class TestListener implements SynchronousBundleListener {
-		ArrayList events = new ArrayList();
-
-		public synchronized void bundleChanged(BundleEvent event) {
-			events.add(event);
-		}
-
-		public synchronized BundleEvent[] getEvents() {
-			try {
-				return (BundleEvent[]) events.toArray(new BundleEvent[0]);
-			} finally {
-				events.clear();
-			}
-		}
-	}
-
-	public class Bug289719Listener implements SynchronousBundleListener {
-
-		ArrayList expectedEvents = new ArrayList();
-		ArrayList failures = new ArrayList();
-		int i = 0;
-
-		public synchronized void setExpectedEvents(BundleEvent[] events) {
-			i = 0;
-			failures.clear();
-			expectedEvents.clear();
-			expectedEvents.addAll(Arrays.asList(events));
-		}
-
-		public synchronized void bundleChanged(BundleEvent event) {
-			BundleEvent expected = expectedEvents.size() == 0 ? null : (BundleEvent) expectedEvents.remove(0);
-			try {
-				assertEquals("Compare results: " + i, expected, event);
-			} catch (Throwable t) {
-				failures.add(t);
-			} finally {
-				i++;
-			}
-		}
-
-		public synchronized Throwable[] getFailures() {
-			Throwable[] results = (Throwable[]) failures.toArray(new Throwable[failures.size()]);
-			setExpectedEvents(new BundleEvent[0]);
-			return results;
-		}
-	}
-
-	public static Test suite() {
-		return new TestSuite(PackageAdminBundleTests.class);
-	}
-
-	public void testBundleEvents01() throws Exception {
-		Bundle chainTest = installer.installBundle("chain.test"); //$NON-NLS-1$
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		Bundle chainTestB = installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		Bundle chainTestC = installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		Bundle chainTestD = installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		Bundle[] resolveBundles = new Bundle[] {chainTestC, chainTestA, chainTestB, chainTest, chainTestD};
-		Bundle[] dependencyOrder = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-		TestListener testListener = new TestListener();
-		OSGiTestsActivator.getContext().addBundleListener(testListener);
-		try {
-			installer.resolveBundles(resolveBundles);
-			BundleEvent[] events = testListener.getEvents();
-			assertEquals("Event count", 10, events.length); //$NON-NLS-1$
-			int j = 0;
-			for (int i = dependencyOrder.length - 1; i >= 0; i--, j++) {
-				assertTrue("Resolved Event Bundle: " + dependencyOrder[i].getSymbolicName(), dependencyOrder[i] == events[j].getBundle()); //$NON-NLS-1$
-				assertEquals("Expecting Resolved event", BundleEvent.RESOLVED, events[j].getType()); //$NON-NLS-1$
-			}
-			j = 5;
-			for (int i = dependencyOrder.length - 1; i >= 0; i--, j++) {
-				assertTrue("Lazy Starting Bundle: " + dependencyOrder[i].getSymbolicName(), dependencyOrder[i] == events[j].getBundle()); //$NON-NLS-1$
-				assertEquals("Expecting Lazy Starting event", BundleEvent.LAZY_ACTIVATION, events[j].getType()); //$NON-NLS-1$
-			}
-		} finally {
-			OSGiTestsActivator.getContext().removeBundleListener(testListener);
-		}
-	}
-
-	public void testBundleEvents02() throws Exception {
-		Bundle chainTest = installer.installBundle("chain.test"); //$NON-NLS-1$
-		Bundle chainTestA = installer.installBundle("chain.test.a"); //$NON-NLS-1$
-		Bundle chainTestB = installer.installBundle("chain.test.b"); //$NON-NLS-1$
-		Bundle chainTestC = installer.installBundle("chain.test.c"); //$NON-NLS-1$
-		Bundle chainTestD = installer.installBundle("chain.test.d"); //$NON-NLS-1$
-		Bundle[] resolveBundles = new Bundle[] {chainTestC, chainTestA, chainTestB, chainTest, chainTestD};
-		Bundle[] dependencyOrder = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-		TestListener testListener = new TestListener();
-		OSGiTestsActivator.getContext().addBundleListener(testListener);
-		try {
-			installer.resolveBundles(resolveBundles);
-			BundleEvent[] events = testListener.getEvents();
-			// throw away the events.  This was already tested
-			installer.refreshPackages(resolveBundles);
-			events = testListener.getEvents();
-			assertEquals("Event count", 25, events.length); //$NON-NLS-1$
-			int j = 0;
-			for (int i = 0; i < dependencyOrder.length; i++, j += 2) {
-				assertTrue("Stopping Event Bundle: " + dependencyOrder[i].getSymbolicName(), dependencyOrder[i] == events[j].getBundle()); //$NON-NLS-1$
-				assertEquals("Expecting Stopping event", BundleEvent.STOPPING, events[j].getType()); //$NON-NLS-1$
-				assertTrue("Stopped Event Bundle: " + dependencyOrder[i].getSymbolicName(), dependencyOrder[i] == events[j + 1].getBundle()); //$NON-NLS-1$
-				assertEquals("Expecting Stopping event", BundleEvent.STOPPED, events[j + 1].getType()); //$NON-NLS-1$
-			}
-			j = 10;
-			for (int i = 0; i < dependencyOrder.length; i++, j++) {
-				assertTrue("Unresolved Event Bundle: " + dependencyOrder[i].getSymbolicName(), dependencyOrder[i] == events[j].getBundle()); //$NON-NLS-1$
-				assertEquals("Expecting Unresolved event", BundleEvent.UNRESOLVED, events[j].getType()); //$NON-NLS-1$
-			}
-			j = 15;
-			for (int i = dependencyOrder.length - 1; i >= 0; i--, j++) {
-				assertTrue("Resolved Event Bundle: " + dependencyOrder[i].getSymbolicName(), dependencyOrder[i] == events[j].getBundle()); //$NON-NLS-1$
-				assertEquals("Expecting Resolved event", BundleEvent.RESOLVED, events[j].getType()); //$NON-NLS-1$
-			}
-			j = 20;
-			for (int i = dependencyOrder.length - 1; i >= 0; i--, j++) {
-				assertTrue("Lazy Starting Event Bundle: " + dependencyOrder[i].getSymbolicName(), dependencyOrder[i] == events[j].getBundle()); //$NON-NLS-1$
-				assertEquals("Expecting Lazy Starting event", BundleEvent.LAZY_ACTIVATION, events[j].getType()); //$NON-NLS-1$
-			}
-
-		} finally {
-			OSGiTestsActivator.getContext().removeBundleListener(testListener);
-		}
-	}
-
-	public void testBug259903() throws Exception {
-		Bundle bug259903a = installer.installBundle("test.bug259903.a"); //$NON-NLS-1$
-		Bundle bug259903b = installer.installBundle("test.bug259903.b"); //$NON-NLS-1$
-		Bundle bug259903c = installer.installBundle("test.bug259903.c"); //$NON-NLS-1$
-
-		try {
-			installer.resolveBundles(new Bundle[] {bug259903a, bug259903b, bug259903c});
-			bug259903c.start();
-			bug259903a.uninstall();
-			installer.installBundle("test.bug259903.a.update"); //$NON-NLS-1$
-			installer.refreshPackages(new Bundle[] {bug259903a});
-			Object[] expectedEvents = new Object[] {new BundleEvent(BundleEvent.STOPPED, bug259903c)};
-			Object[] actualEvents = simpleResults.getResults(expectedEvents.length);
-			compareResults(expectedEvents, actualEvents);
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBug287636() throws Exception {
-		Bundle bug287636a = installer.installBundle("test.bug287636.a1"); //$NON-NLS-1$
-		Bundle bug287636b = installer.installBundle("test.bug287636.b"); //$NON-NLS-1$
-		try {
-			bug287636a.start();
-			bug287636b.start();
-			assertTrue("Bundles are not resolved", installer.resolveBundles(new Bundle[] {bug287636a, bug287636b})); //$NON-NLS-1$
-			ExportedPackage ep = installer.getPackageAdmin().getExportedPackage("test.bug287636.a"); //$NON-NLS-1$
-			assertNotNull("Could not find exported package", ep); //$NON-NLS-1$
-			assertEquals("Wrong version", new Version(1, 0, 0), ep.getVersion()); //$NON-NLS-1$
-			// update bundle to export new 1.1.0 version of the pacakge
-			String updateLocation = installer.getBundleLocation("test.bug287636.a2"); //$NON-NLS-1$
-			bug287636a.update(new URL(updateLocation).openStream());
-			bug287636b.update();
-			updateLocation = installer.getBundleLocation("test.bug287636.a1"); //$NON-NLS-1$
-			bug287636a.update(new URL(updateLocation).openStream());
-			bug287636b.update();
-			updateLocation = installer.getBundleLocation("test.bug287636.a2"); //$NON-NLS-1$
-			bug287636a.update(new URL(updateLocation).openStream());
-			bug287636b.update();
-			installer.refreshPackages(null);
-			ep = installer.getPackageAdmin().getExportedPackage("test.bug287636.a"); //$NON-NLS-1$
-
-			assertNotNull("Could not find exported package", ep); //$NON-NLS-1$
-			assertEquals("Wrong version", new Version(1, 1, 0), ep.getVersion()); //$NON-NLS-1$
-			ExportedPackage eps[] = installer.getPackageAdmin().getExportedPackages("test.bug287636.a"); //$NON-NLS-1$
-			assertNotNull("Could not find exported package", eps); //$NON-NLS-1$
-			assertEquals("Wrong number of exports", 1, eps.length); //$NON-NLS-1$
-			assertEquals("Wrong version", new Version(1, 1, 0), eps[0].getVersion()); //$NON-NLS-1$
-			eps = installer.getPackageAdmin().getExportedPackages(bug287636a);
-			assertNotNull("Could not find exported package", eps); //$NON-NLS-1$
-			assertEquals("Wrong number of exports", 1, eps.length); //$NON-NLS-1$
-			assertEquals("Wrong version", new Version(1, 1, 0), eps[0].getVersion()); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBug289719() throws Exception {
-		Bundle bug259903a = installer.installBundle("test.bug259903.a"); //$NON-NLS-1$
-		Bundle bug259903b = installer.installBundle("test.bug259903.b"); //$NON-NLS-1$
-		Bundle bug259903c = installer.installBundle("test.bug259903.c"); //$NON-NLS-1$
-		Bug289719Listener testListener = new Bug289719Listener();
-
-		try {
-			installer.resolveBundles(new Bundle[] {bug259903a, bug259903b, bug259903c});
-			bug259903a.start();
-			bug259903b.start();
-			bug259903c.start();
-			installer.getStartLevel().setBundleStartLevel(bug259903c, 2);
-			installer.getStartLevel().setBundleStartLevel(bug259903b, 3);
-			installer.getStartLevel().setBundleStartLevel(bug259903a, 4);
-			OSGiTestsActivator.getContext().addBundleListener(testListener);
-			BundleEvent[] expectedEvents = new BundleEvent[] {new BundleEvent(BundleEvent.STOPPING, bug259903a), new BundleEvent(BundleEvent.STOPPED, bug259903a), new BundleEvent(BundleEvent.STOPPING, bug259903b), new BundleEvent(BundleEvent.STOPPED, bug259903b), new BundleEvent(BundleEvent.STOPPING, bug259903c), new BundleEvent(BundleEvent.STOPPED, bug259903c), new BundleEvent(BundleEvent.UNRESOLVED, bug259903a), new BundleEvent(BundleEvent.UNRESOLVED, bug259903b), new BundleEvent(BundleEvent.UNRESOLVED, bug259903c), new BundleEvent(BundleEvent.RESOLVED, bug259903c), new BundleEvent(BundleEvent.RESOLVED, bug259903b), new BundleEvent(BundleEvent.RESOLVED, bug259903a), new BundleEvent(BundleEvent.STARTING, bug259903c), new BundleEvent(BundleEvent.STARTED, bug259903c),
-					new BundleEvent(BundleEvent.STARTING, bug259903b), new BundleEvent(BundleEvent.STARTED, bug259903b), new BundleEvent(BundleEvent.STARTING, bug259903a), new BundleEvent(BundleEvent.STARTED, bug259903a)};
-			testListener.setExpectedEvents(expectedEvents);
-			// add a small delay to ensure the async bundle start-level changes above are done (bug 300820)
-			Thread.sleep(500);
-			installer.refreshPackages(new Bundle[] {bug259903a});
-			Throwable[] results = testListener.getFailures();
-			if (results.length > 0)
-				fail(getMessage(results));
-
-			expectedEvents = new BundleEvent[] {new BundleEvent(BundleEvent.STOPPING, bug259903c), new BundleEvent(BundleEvent.STOPPED, bug259903c), new BundleEvent(BundleEvent.STOPPING, bug259903b), new BundleEvent(BundleEvent.STOPPED, bug259903b), new BundleEvent(BundleEvent.STOPPING, bug259903a), new BundleEvent(BundleEvent.STOPPED, bug259903a), new BundleEvent(BundleEvent.UNRESOLVED, bug259903c), new BundleEvent(BundleEvent.UNRESOLVED, bug259903b), new BundleEvent(BundleEvent.UNRESOLVED, bug259903a), new BundleEvent(BundleEvent.RESOLVED, bug259903a), new BundleEvent(BundleEvent.RESOLVED, bug259903b), new BundleEvent(BundleEvent.RESOLVED, bug259903c), new BundleEvent(BundleEvent.STARTING, bug259903a), new BundleEvent(BundleEvent.STARTED, bug259903a),
-					new BundleEvent(BundleEvent.STARTING, bug259903b), new BundleEvent(BundleEvent.STARTED, bug259903b), new BundleEvent(BundleEvent.STARTING, bug259903c), new BundleEvent(BundleEvent.STARTED, bug259903c)};
-			testListener.setExpectedEvents(expectedEvents);
-			installer.getStartLevel().setBundleStartLevel(bug259903c, 4);
-			installer.getStartLevel().setBundleStartLevel(bug259903b, 4);
-			installer.getStartLevel().setBundleStartLevel(bug259903a, 4);
-			// add a small delay to ensure the async bundle start-level changes above are done (bug 300820)
-			Thread.sleep(500);
-			installer.refreshPackages(new Bundle[] {bug259903a});
-			results = testListener.getFailures();
-			if (results.length > 0)
-				fail(getMessage(results));
-
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		} finally {
-			OSGiTestsActivator.getContext().removeBundleListener(testListener);
-		}
-	}
-
-	private String getMessage(Throwable[] results) {
-		StringWriter sw = new StringWriter();
-		PrintWriter pw = new PrintWriter(sw);
-		for (int i = 0; i < results.length; i++)
-			results[i].printStackTrace(pw);
-		return sw.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PlatformAdminBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PlatformAdminBundleTests.java
deleted file mode 100644
index 5d167a1..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/PlatformAdminBundleTests.java
+++ /dev/null
@@ -1,430 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.Bundle;
-
-public class PlatformAdminBundleTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(PlatformAdminBundleTests.class);
-	}
-
-	public void testDisabledInfo01() throws Exception {
-		String testPolicy = "testDisabledInfo01";
-		Bundle chainTest = installer.installBundle("chain.test");
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		Bundle chainTestC = installer.installBundle("chain.test.c");
-		Bundle chainTestD = installer.installBundle("chain.test.d");
-		Bundle[] allBundles = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-
-		PlatformAdmin pa = installer.getPlatformAdmin();
-		State systemState = pa.getState(false);
-		BundleDescription testDesc = systemState.getBundle(chainTest.getBundleId());
-		BundleDescription testADesc = systemState.getBundle(chainTestA.getBundleId());
-		BundleDescription testBDesc = systemState.getBundle(chainTestB.getBundleId());
-		BundleDescription testCDesc = systemState.getBundle(chainTestC.getBundleId());
-		BundleDescription testDDesc = systemState.getBundle(chainTestD.getBundleId());
-		assertNotNull("testDesc null!!", testDesc);
-		assertNotNull("testADesc null!!", testADesc);
-		assertNotNull("testBDesc null!!", testBDesc);
-		assertNotNull("testCDesc null!!", testCDesc);
-		assertNotNull("testDDesc null!!", testDDesc);
-
-		installer.resolveBundles(allBundles);
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		// ok finally we can start testing!!!
-		// disable the toplevel testDesc bundle
-		pa.addDisabledInfo(new DisabledInfo(testPolicy, "reason 1", testDesc));
-		// force the bundles to re-resolve
-		installer.refreshPackages(allBundles);
-		// only testDesc should be unresolved
-		assertFalse("testDesc is resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-		// now enable the bundle
-		DisabledInfo info = systemState.getDisabledInfo(testDesc, testPolicy);
-		assertNotNull("info is null!!", info);
-		pa.removeDisabledInfo(info);
-		// just do normal resolve
-		assertTrue("resolveBundles returned false!", installer.resolveBundles(new Bundle[] {chainTest}));
-		// all bundles should be resolved
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-	}
-
-	public void testDisabledInfo02() throws Exception {
-		String testPolicy1 = "testDisabledInfo01";
-		String testPolicy2 = "testDisabledInfo02";
-		Bundle chainTest = installer.installBundle("chain.test");
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		Bundle chainTestC = installer.installBundle("chain.test.c");
-		Bundle chainTestD = installer.installBundle("chain.test.d");
-		Bundle[] allBundles = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-
-		PlatformAdmin pa = installer.getPlatformAdmin();
-		State systemState = pa.getState(false);
-		BundleDescription testDesc = systemState.getBundle(chainTest.getBundleId());
-		BundleDescription testADesc = systemState.getBundle(chainTestA.getBundleId());
-		BundleDescription testBDesc = systemState.getBundle(chainTestB.getBundleId());
-		BundleDescription testCDesc = systemState.getBundle(chainTestC.getBundleId());
-		BundleDescription testDDesc = systemState.getBundle(chainTestD.getBundleId());
-		assertNotNull("testDesc null!!", testDesc);
-		assertNotNull("testADesc null!!", testADesc);
-		assertNotNull("testBDesc null!!", testBDesc);
-		assertNotNull("testCDesc null!!", testCDesc);
-		assertNotNull("testDDesc null!!", testDDesc);
-
-		installer.resolveBundles(allBundles);
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		// ok finally we can start testing!!!
-		// disable the toplevel testDesc bundle with two DisabledInfos
-		pa.addDisabledInfo(new DisabledInfo(testPolicy1, "reason 1", testDesc));
-		pa.addDisabledInfo(new DisabledInfo(testPolicy2, "reason 2", testDesc));
-		// force the bundles to re-resolve
-		installer.refreshPackages(allBundles);
-		// only testDesc should be unresolved
-		assertFalse("testDesc is resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		DisabledInfo info1 = systemState.getDisabledInfo(testDesc, testPolicy1);
-		DisabledInfo info2 = systemState.getDisabledInfo(testDesc, testPolicy2);
-		assertNotNull("info1 is null!!", info1);
-		assertNotNull("info2 is null!!", info2);
-		// now remove the first policy
-		pa.removeDisabledInfo(info1);
-		// just do normal resolve
-		assertFalse("resolveBundles returned true!", installer.resolveBundles(new Bundle[] {chainTest}));
-		// testDesc should still be unresolved
-		assertFalse("testDesc is resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		// now remove the second policy
-		pa.removeDisabledInfo(info2);
-		// just do normal resolve
-		assertTrue("resolveBundles returned false!", installer.resolveBundles(new Bundle[] {chainTest}));
-		// testDesc should still be unresolved
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-	}
-
-	public void testDisabledInfo03() throws Exception {
-		String testPolicy1 = "testDisabledInfo01";
-		String testPolicy2 = "testDisabledInfo02";
-		Bundle chainTest = installer.installBundle("chain.test");
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		Bundle chainTestC = installer.installBundle("chain.test.c");
-		Bundle chainTestD = installer.installBundle("chain.test.d");
-		Bundle[] allBundles = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-
-		PlatformAdmin pa = installer.getPlatformAdmin();
-		State systemState = pa.getState(false);
-		BundleDescription testDesc = systemState.getBundle(chainTest.getBundleId());
-		BundleDescription testADesc = systemState.getBundle(chainTestA.getBundleId());
-		BundleDescription testBDesc = systemState.getBundle(chainTestB.getBundleId());
-		BundleDescription testCDesc = systemState.getBundle(chainTestC.getBundleId());
-		BundleDescription testDDesc = systemState.getBundle(chainTestD.getBundleId());
-		assertNotNull("testDesc null!!", testDesc);
-		assertNotNull("testADesc null!!", testADesc);
-		assertNotNull("testBDesc null!!", testBDesc);
-		assertNotNull("testCDesc null!!", testCDesc);
-		assertNotNull("testDDesc null!!", testDDesc);
-
-		installer.resolveBundles(allBundles);
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		// ok finally we can start testing!!!
-		// disable the toplevel testDesc bundle
-		pa.addDisabledInfo(new DisabledInfo(testPolicy1, "reason 1", testDesc));
-		pa.addDisabledInfo(new DisabledInfo(testPolicy2, "reason 2", testDesc));
-		// force the bundles to re-resolve
-		installer.refreshPackages(allBundles);
-		// only testDesc should be unresolved
-		assertFalse("testDesc is resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		ResolverError[] errors = systemState.getResolverErrors(testDesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.DISABLED_BUNDLE, errors[0].getType());
-	}
-
-	public void testDisabledInfo04() throws Exception {
-		String testPolicy1 = "testDisabledInfo01";
-		Bundle chainTest = installer.installBundle("chain.test");
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		Bundle chainTestC = installer.installBundle("chain.test.c");
-		Bundle chainTestD = installer.installBundle("chain.test.d");
-		Bundle[] allBundles = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-
-		PlatformAdmin pa = installer.getPlatformAdmin();
-		State systemState = pa.getState(false);
-		BundleDescription testDesc = systemState.getBundle(chainTest.getBundleId());
-		BundleDescription testADesc = systemState.getBundle(chainTestA.getBundleId());
-		BundleDescription testBDesc = systemState.getBundle(chainTestB.getBundleId());
-		BundleDescription testCDesc = systemState.getBundle(chainTestC.getBundleId());
-		BundleDescription testDDesc = systemState.getBundle(chainTestD.getBundleId());
-		assertNotNull("testDesc null!!", testDesc);
-		assertNotNull("testADesc null!!", testADesc);
-		assertNotNull("testBDesc null!!", testBDesc);
-		assertNotNull("testCDesc null!!", testCDesc);
-		assertNotNull("testDDesc null!!", testDDesc);
-
-		installer.resolveBundles(allBundles);
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		// ok finally we can start testing!!!
-		// disable the bottom level bundle, this should cause all bundles to be unresolved
-		pa.addDisabledInfo(new DisabledInfo(testPolicy1, "reason 1", testDDesc));
-		// force the bundles to re-resolve
-		installer.refreshPackages(allBundles);
-		// only testDesc should be unresolved
-		assertFalse("testDesc is resolved!!", testDesc.isResolved());
-		assertFalse("testADesc is resolved!!", testADesc.isResolved());
-		assertFalse("testBDesc is resolved!!", testBDesc.isResolved());
-		assertFalse("testCDesc is resolved!!", testCDesc.isResolved());
-		assertFalse("testDDesc is resolved!!", testDDesc.isResolved());
-
-		// check that the resolver errors are the correct type
-		ResolverError[] errors = systemState.getResolverErrors(testDDesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.DISABLED_BUNDLE, errors[0].getType());
-
-		// all other errors should be missing import errors
-		errors = systemState.getResolverErrors(testDesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.MISSING_IMPORT_PACKAGE, errors[0].getType());
-
-		errors = systemState.getResolverErrors(testADesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.MISSING_IMPORT_PACKAGE, errors[0].getType());
-
-		errors = systemState.getResolverErrors(testBDesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.MISSING_IMPORT_PACKAGE, errors[0].getType());
-
-		errors = systemState.getResolverErrors(testCDesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.MISSING_IMPORT_PACKAGE, errors[0].getType());
-	}
-
-	public void testDisabledInfo05() throws Exception {
-		String testPolicy1 = "testDisabledInfo01";
-		String testPolicy2 = "testDisabledInfo02";
-		Bundle chainTest = installer.installBundle("chain.test");
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		Bundle chainTestC = installer.installBundle("chain.test.c");
-		Bundle chainTestD = installer.installBundle("chain.test.d");
-		Bundle[] allBundles = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-
-		PlatformAdmin pa = installer.getPlatformAdmin();
-		State systemState = pa.getState(false);
-		BundleDescription testDesc = systemState.getBundle(chainTest.getBundleId());
-		BundleDescription testADesc = systemState.getBundle(chainTestA.getBundleId());
-		BundleDescription testBDesc = systemState.getBundle(chainTestB.getBundleId());
-		BundleDescription testCDesc = systemState.getBundle(chainTestC.getBundleId());
-		BundleDescription testDDesc = systemState.getBundle(chainTestD.getBundleId());
-		assertNotNull("testDesc null!!", testDesc);
-		assertNotNull("testADesc null!!", testADesc);
-		assertNotNull("testBDesc null!!", testBDesc);
-		assertNotNull("testCDesc null!!", testCDesc);
-		assertNotNull("testDDesc null!!", testDDesc);
-
-		installer.resolveBundles(allBundles);
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		// ok finally we can start testing!!!
-		// add many disabled infos to test the getDisabledInfo methods
-		DisabledInfo info1 = new DisabledInfo(testPolicy1, "reason 1", testDesc);
-		DisabledInfo info2 = new DisabledInfo(testPolicy2, "reason 2", testDesc);
-		DisabledInfo info3 = new DisabledInfo(testPolicy1, "reason 3", testDDesc);
-		DisabledInfo info4 = new DisabledInfo(testPolicy2, "reason 4", testDDesc);
-		pa.addDisabledInfo(info1);
-		pa.addDisabledInfo(info2);
-		pa.addDisabledInfo(info3);
-		pa.addDisabledInfo(info4);
-		// force the bundles to re-resolve
-		installer.refreshPackages(allBundles);
-
-		// check the errors only, resolution was checked in other tests
-		ResolverError[] errors = systemState.getResolverErrors(testDesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.DISABLED_BUNDLE, errors[0].getType());
-
-		errors = systemState.getResolverErrors(testDDesc);
-		assertNotNull("resolver errors is null!!", errors);
-		assertEquals("unexpected number of errors", 1, errors.length);
-		assertEquals("unexpected error type", ResolverError.DISABLED_BUNDLE, errors[0].getType());
-
-		DisabledInfo getInfo1 = systemState.getDisabledInfo(testDesc, testPolicy1);
-		assertEquals("info1 not equal!", info1, getInfo1);
-		DisabledInfo getInfo2 = systemState.getDisabledInfo(testDesc, testPolicy2);
-		assertEquals("info2 not equal!", info2, getInfo2);
-		DisabledInfo getInfo3 = systemState.getDisabledInfo(testDDesc, testPolicy1);
-		assertEquals("info3 not equal!", info3, getInfo3);
-		DisabledInfo getInfo4 = systemState.getDisabledInfo(testDDesc, testPolicy2);
-		assertEquals("info4 not equal!", info4, getInfo4);
-
-		DisabledInfo[] infos1 = systemState.getDisabledInfos(testDesc);
-		assertNotNull("infos1 is null!!", infos1);
-		assertEquals("unexpected info1 size", 2, infos1.length);
-		assertTrue("info1 not found", infos1[0] == info1 || infos1[1] == info1);
-		assertTrue("info2 not found", infos1[0] == info2 || infos1[1] == info2);
-		DisabledInfo[] infos2 = systemState.getDisabledInfos(testDDesc);
-		assertNotNull("infos2 is null!!", infos2);
-		assertEquals("unexpected info2 size", 2, infos2.length);
-		assertTrue("info3 not found", infos2[0] == info3 || infos2[1] == info3);
-		assertTrue("info4 not found", infos2[0] == info4 || infos2[1] == info4);
-	}
-
-	public void testDisabledInfo06() throws Exception {
-		String testPolicy = "testDisabledInfo01";
-		Bundle chainTest = installer.installBundle("chain.test");
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		Bundle chainTestC = installer.installBundle("chain.test.c");
-		Bundle chainTestD = installer.installBundle("chain.test.d");
-		Bundle[] allBundles = new Bundle[] {chainTest, chainTestA, chainTestB, chainTestC, chainTestD};
-
-		PlatformAdmin pa = installer.getPlatformAdmin();
-		State systemState = pa.getState(false);
-		BundleDescription testDesc = systemState.getBundle(chainTest.getBundleId());
-		BundleDescription testADesc = systemState.getBundle(chainTestA.getBundleId());
-		BundleDescription testBDesc = systemState.getBundle(chainTestB.getBundleId());
-		BundleDescription testCDesc = systemState.getBundle(chainTestC.getBundleId());
-		BundleDescription testDDesc = systemState.getBundle(chainTestD.getBundleId());
-		assertNotNull("testDesc null!!", testDesc);
-		assertNotNull("testADesc null!!", testADesc);
-		assertNotNull("testBDesc null!!", testBDesc);
-		assertNotNull("testCDesc null!!", testCDesc);
-		assertNotNull("testDDesc null!!", testDDesc);
-
-		installer.resolveBundles(allBundles);
-		assertTrue("testDesc not resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-
-		// ok finally we can start testing!!!
-		// disable the toplevel testDesc bundle
-		DisabledInfo info = new DisabledInfo(testPolicy, "reason 1", testDesc);
-		pa.addDisabledInfo(info);
-		// force the bundles to re-resolve
-		installer.refreshPackages(allBundles);
-		// only testDesc should be unresolved
-		assertFalse("testDesc is resolved!!", testDesc.isResolved());
-		assertTrue("testADesc not resolved!!", testADesc.isResolved());
-		assertTrue("testBDesc not resolved!!", testBDesc.isResolved());
-		assertTrue("testCDesc not resolved!!", testCDesc.isResolved());
-		assertTrue("testDDesc not resolved!!", testDDesc.isResolved());
-		// uninstall the bundle testDesc
-		Bundle uninstalledChainTest = installer.uninstallBundle("chain.test");
-		assertTrue("Unexpected uninstall result", uninstalledChainTest == chainTest);
-
-		// now try to get the DisabledInfo
-		DisabledInfo getInfo = systemState.getDisabledInfo(testDesc, testPolicy);
-		assertNull("info is not null!!", getInfo);
-		// try to add the info again.  This should fail
-		try {
-			pa.addDisabledInfo(info);
-			pa.removeDisabledInfo(info);
-			fail("should not be able to add a DisabledInfo for a bundle not in the state");
-		} catch (IllegalArgumentException e) {
-			// expected
-		}
-	}
-
-	public void testUnresolvedLeaves01() throws Exception {
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		Bundle chainTestC = installer.installBundle("chain.test.c");
-		Bundle[] allBundles = new Bundle[] {chainTestA, chainTestB, chainTestC};
-
-		PlatformAdmin pa = installer.getPlatformAdmin();
-		State systemState = pa.getState(false);
-		BundleDescription testADesc = systemState.getBundle(chainTestA.getBundleId());
-		BundleDescription testBDesc = systemState.getBundle(chainTestB.getBundleId());
-		BundleDescription testCDesc = systemState.getBundle(chainTestC.getBundleId());
-		assertNotNull("testADesc null!!", testADesc);
-		assertNotNull("testBDesc null!!", testBDesc);
-		assertNotNull("testCDesc null!!", testCDesc);
-
-		installer.resolveBundles(allBundles);
-		assertFalse("testADesc is resolved!!", testADesc.isResolved());
-		assertFalse("testBDesc is resolved!!", testBDesc.isResolved());
-		assertFalse("testCDesc is resolved!!", testCDesc.isResolved());
-
-		// ok finally we can start testing!!
-		VersionConstraint[] unsatifiedLeaves = pa.getStateHelper().getUnsatisfiedLeaves(new BundleDescription[] {testADesc});
-		assertNotNull("Unsatified constraints is null!!", unsatifiedLeaves);
-		assertEquals("Wrong number of constraints!!", 2, unsatifiedLeaves.length);
-		for (int i = 0; i < unsatifiedLeaves.length; i++) {
-			assertTrue("Constraint type is not import package: " + unsatifiedLeaves[i], unsatifiedLeaves[i] instanceof ImportPackageSpecification);
-			assertEquals("Package name is wrong: " + i, "chain.test.d", unsatifiedLeaves[i].getName());
-			if (unsatifiedLeaves[i].getBundle() != testBDesc && unsatifiedLeaves[i].getBundle() != testCDesc)
-				fail("Wrong bundle for the constraint: " + unsatifiedLeaves[i].getBundle());
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SubstituteExportsBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SubstituteExportsBundleTests.java
deleted file mode 100644
index 9d26cea..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SubstituteExportsBundleTests.java
+++ /dev/null
@@ -1,572 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.service.packageadmin.ExportedPackage;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-public class SubstituteExportsBundleTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(SubstituteExportsBundleTests.class);
-	}
-
-	public void testSubstituteExports01x() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle c = installer.installBundle("substitutes.c"); //$NON-NLS-1$
-		Bundle d = installer.installBundle("substitutes.d"); //$NON-NLS-1$
-
-		String className = "substitutes.x.Ax"; //$NON-NLS-1$
-		Class ax = null;
-		Class bx = null;
-		Class cx = null;
-		Class dx = null;
-		try {
-			ax = a.loadClass(className);
-			bx = b.loadClass(className);
-			cx = c.loadClass(className);
-			dx = d.loadClass(className);
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", ax, bx); //$NON-NLS-1$
-		assertEquals("class from c is wrong", ax, cx); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, dx); //$NON-NLS-1$
-	}
-
-	public void testSubstituteExports01y() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle c = installer.installBundle("substitutes.c"); //$NON-NLS-1$
-		Bundle d = installer.installBundle("substitutes.d"); //$NON-NLS-1$
-
-		String className = "substitutes.y.Ay"; //$NON-NLS-1$
-		Class ax = null;
-		Class bx = null;
-		Class cx = null;
-		Class dx = null;
-		try {
-			ax = a.loadClass(className);
-			bx = b.loadClass(className);
-			cx = c.loadClass(className);
-			dx = d.loadClass(className);
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", ax, bx); //$NON-NLS-1$
-		assertEquals("class from c is wrong", ax, cx); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, dx); //$NON-NLS-1$
-	}
-
-	public void testSubstituteExports02() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle e = installer.installBundle("substitutes.e"); //$NON-NLS-1$
-		Bundle f = installer.installBundle("substitutes.f"); //$NON-NLS-1$
-
-		String className = "substitutes.x.Ax"; //$NON-NLS-1$
-		Class ax = null;
-		Class bx = null;
-		Class ex = null;
-		Class fx = null;
-		try {
-			ax = a.loadClass(className);
-			bx = b.loadClass(className);
-			ex = e.loadClass(className);
-			fx = f.loadClass(className);
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", ax, bx); //$NON-NLS-1$
-		assertEquals("class from c is wrong", ax, ex); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, fx); //$NON-NLS-1$
-	}
-
-	public void testSubstituteExports03() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle e = installer.installBundle("substitutes.e"); //$NON-NLS-1$
-		Bundle f = installer.installBundle("substitutes.f"); //$NON-NLS-1$
-		Bundle g = installer.installBundle("substitutes.g"); //$NON-NLS-1$
-		Bundle h = installer.installBundle("substitutes.h"); //$NON-NLS-1$
-
-		String className = "substitutes.x.Ax"; //$NON-NLS-1$
-		Class ax = null;
-		Class bx = null;
-		Class ex = null;
-		Class fx = null;
-		Class gx = null;
-		Class hx = null;
-		try {
-			ax = a.loadClass(className);
-			bx = b.loadClass(className);
-			ex = e.loadClass(className);
-			fx = f.loadClass(className);
-			gx = g.loadClass(className);
-			hx = h.loadClass(className);
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", ax, bx); //$NON-NLS-1$
-		assertEquals("class from c is wrong", ax, ex); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, fx); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, gx); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, hx); //$NON-NLS-1$
-	}
-
-	public void testSubstituteExports04() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		installer.installBundle("substitutes.a.frag"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		installer.installBundle("substitutes.b.frag"); //$NON-NLS-1$
-		Bundle c = installer.installBundle("substitutes.c"); //$NON-NLS-1$
-		Bundle d = installer.installBundle("substitutes.d"); //$NON-NLS-1$
-
-		String className = "substitutes.x.Ax"; //$NON-NLS-1$
-		Class ax = null;
-		Class bx = null;
-		Class cx = null;
-		Class dx = null;
-		try {
-			ax = a.loadClass(className);
-			bx = b.loadClass(className);
-			cx = c.loadClass(className);
-			dx = d.loadClass(className);
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", ax, bx); //$NON-NLS-1$
-		assertEquals("class from c is wrong", ax, cx); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, dx); //$NON-NLS-1$
-
-		String className2 = "substitutes.q.AFq"; //$NON-NLS-1$
-		Class aq = null;
-		Class bq = null;
-		Class cq = null;
-		Class dq = null;
-		try {
-			aq = a.loadClass(className2);
-			bq = b.loadClass(className2);
-			cq = c.loadClass(className2);
-			dq = d.loadClass(className2);
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", aq, bq); //$NON-NLS-1$
-		assertEquals("class from c is wrong", aq, cq); //$NON-NLS-1$
-		assertEquals("class from d is wrong", aq, dq); //$NON-NLS-1$
-	}
-
-	public void testSubstituteExports05() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		installer.installBundle("substitutes.a.frag"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		installer.installBundle("substitutes.b.frag"); //$NON-NLS-1$
-		Bundle e = installer.installBundle("substitutes.e"); //$NON-NLS-1$
-		Bundle f = installer.installBundle("substitutes.f"); //$NON-NLS-1$
-		Bundle g = installer.installBundle("substitutes.g"); //$NON-NLS-1$
-		Bundle h = installer.installBundle("substitutes.h"); //$NON-NLS-1$
-
-		String className = "substitutes.x.Ax"; //$NON-NLS-1$
-		Class ax = null;
-		Class bx = null;
-		Class ex = null;
-		Class fx = null;
-		Class gx = null;
-		Class hx = null;
-		try {
-			ax = a.loadClass(className);
-			bx = b.loadClass(className);
-			ex = e.loadClass(className);
-			fx = f.loadClass(className);
-			gx = g.loadClass(className);
-			hx = h.loadClass(className);
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", ax, bx); //$NON-NLS-1$
-		assertEquals("class from c is wrong", ax, ex); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, fx); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, gx); //$NON-NLS-1$
-		assertEquals("class from d is wrong", ax, hx); //$NON-NLS-1$
-
-		String className2 = "substitutes.q.AFq"; //$NON-NLS-1$
-		Class aq = null;
-		Class bq = null;
-		Class eq = null;
-		Class fq = null;
-		Class gq = null;
-		Class hq = null;
-		try {
-			aq = a.loadClass(className2);
-			bq = b.loadClass(className2);
-			eq = e.loadClass(className2);
-			fq = f.loadClass(className2);
-			gq = g.loadClass(className2);
-			hq = h.loadClass(className2);
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-		assertEquals("class from b is wrong", aq, bq); //$NON-NLS-1$
-		assertEquals("class from c is wrong", aq, eq); //$NON-NLS-1$
-		assertEquals("class from d is wrong", aq, fq); //$NON-NLS-1$
-		assertEquals("class from d is wrong", aq, gq); //$NON-NLS-1$
-		assertEquals("class from d is wrong", aq, hq); //$NON-NLS-1$
-	}
-
-	public void testSubstituteExports06() throws BundleException {
-		Bundle iBundle = installer.installBundle("substitutes.i"); //$NON-NLS-1$
-		Bundle jBundle = installer.installBundle("substitutes.j"); //$NON-NLS-1$
-		Bundle kBundle = installer.installBundle("substitutes.k"); //$NON-NLS-1$
-		Bundle lBundle = installer.installBundle("substitutes.l"); //$NON-NLS-1$
-		Bundle mBundle = installer.installBundle("substitutes.m"); //$NON-NLS-1$
-		Bundle nBundle = installer.installBundle("substitutes.n"); //$NON-NLS-1$
-		Bundle pBundle = installer.installBundle("substitutes.p"); //$NON-NLS-1$
-		Bundle qBundle = installer.installBundle("substitutes.q"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {iBundle, jBundle, kBundle, lBundle, mBundle, nBundle, pBundle, qBundle};
-
-		String classNameIx = "substitutes.x.Ix"; //$NON-NLS-1$
-		String classNameKx = "substitutes.x.Kx"; //$NON-NLS-1$
-		String classNameMx = "substitutes.x.Mx"; //$NON-NLS-1$
-		String classNameIy = "substitutes.y.Iy"; //$NON-NLS-1$
-		String classNameKy = "substitutes.y.Ky"; //$NON-NLS-1$
-		String classNameMy = "substitutes.y.My"; //$NON-NLS-1$
-
-		try {
-			Class iX = iBundle.loadClass(classNameIx);
-			assertEquals("jBundle has different copy of iX", iX, jBundle.loadClass(classNameIx)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of iX", iX, mBundle.loadClass(classNameIx)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of iX", iX, nBundle.loadClass(classNameIx)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of iX", iX, pBundle.loadClass(classNameIx)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of iX", iX, qBundle.loadClass(classNameIx)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-		try {
-			Class iY = iBundle.loadClass(classNameIy);
-			assertEquals("jBundle has different copy of iY", iY, jBundle.loadClass(classNameIy)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of iY", iY, mBundle.loadClass(classNameIy)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of iY", iY, nBundle.loadClass(classNameIy)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of iY", iY, pBundle.loadClass(classNameIy)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of iY", iY, qBundle.loadClass(classNameIy)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class kX = kBundle.loadClass(classNameKx);
-			assertEquals("lBundle has different copy of Kx", kX, lBundle.loadClass(classNameKx)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of Kx", kX, mBundle.loadClass(classNameKx)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of Kx", kX, nBundle.loadClass(classNameKx)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Kx", kX, pBundle.loadClass(classNameKx)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Kx", kX, qBundle.loadClass(classNameKx)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class kY = kBundle.loadClass(classNameKy);
-			assertEquals("lBundle has different copy of Ky", kY, lBundle.loadClass(classNameKy)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of Ky", kY, mBundle.loadClass(classNameKy)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of Ky", kY, nBundle.loadClass(classNameKy)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Ky", kY, pBundle.loadClass(classNameKy)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Ky", kY, qBundle.loadClass(classNameKy)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class mX = mBundle.loadClass(classNameMx);
-			assertEquals("nBundle has different copy of mX", mX, nBundle.loadClass(classNameMx)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of mX", mX, pBundle.loadClass(classNameMx)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of mX", mX, qBundle.loadClass(classNameMx)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class mY = mBundle.loadClass(classNameMy);
-			assertEquals("nBundle has different copy of mY", mY, nBundle.loadClass(classNameMy)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of mY", mY, pBundle.loadClass(classNameMy)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of mY", mY, qBundle.loadClass(classNameMy)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		String[] unexpectedClasseNames = new String[] {"substitutes.x.Jx", "substitutes.x.Lx", "substitutes.x.Nx", "substitutes.y.Jy", "substitutes.y.Ly", "substitutes.y.Ny"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
-		for (int i = 0; i < unexpectedClasseNames.length; i++) {
-			for (int j = 0; j < allBundles.length; j++) {
-				try {
-					Class found = allBundles[j].loadClass(unexpectedClasseNames[i]);
-					fail("Found class " + found + " in bundle " + allBundles[j]); //$NON-NLS-1$//$NON-NLS-2$
-				} catch (ClassNotFoundException cnfe) {
-					// expected
-				}
-			}
-		}
-	}
-
-	public void testSubstituteExports07() throws BundleException {
-		// same as previous split test but bundles are installed in opposite order to force the opposite classes to load
-		Bundle jBundle = installer.installBundle("substitutes.j"); //$NON-NLS-1$
-		Bundle iBundle = installer.installBundle("substitutes.i"); //$NON-NLS-1$
-		Bundle lBundle = installer.installBundle("substitutes.l"); //$NON-NLS-1$
-		Bundle kBundle = installer.installBundle("substitutes.k"); //$NON-NLS-1$
-		Bundle nBundle = installer.installBundle("substitutes.n"); //$NON-NLS-1$
-		Bundle mBundle = installer.installBundle("substitutes.m"); //$NON-NLS-1$
-		Bundle qBundle = installer.installBundle("substitutes.q"); //$NON-NLS-1$
-		Bundle pBundle = installer.installBundle("substitutes.p"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {iBundle, jBundle, kBundle, lBundle, mBundle, nBundle, pBundle, qBundle};
-
-		String classNameJx = "substitutes.x.Jx"; //$NON-NLS-1$
-		String classNameLx = "substitutes.x.Lx"; //$NON-NLS-1$
-		String classNameNx = "substitutes.x.Nx"; //$NON-NLS-1$
-		String classNameJy = "substitutes.y.Jy"; //$NON-NLS-1$
-		String classNameLy = "substitutes.y.Ly"; //$NON-NLS-1$
-		String classNameNy = "substitutes.y.Ny"; //$NON-NLS-1$
-
-		try {
-			Class jX = jBundle.loadClass(classNameJx);
-			assertEquals("iBundle has different copy of Jx", jX, iBundle.loadClass(classNameJx)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of Jx", jX, mBundle.loadClass(classNameJx)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of Jx", jX, nBundle.loadClass(classNameJx)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Jx", jX, pBundle.loadClass(classNameJx)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Jx", jX, qBundle.loadClass(classNameJx)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-		try {
-			Class jY = jBundle.loadClass(classNameJy);
-			assertEquals("jBundle has different copy of Jy", jY, iBundle.loadClass(classNameJy)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of Jy", jY, mBundle.loadClass(classNameJy)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of Jy", jY, nBundle.loadClass(classNameJy)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Jy", jY, pBundle.loadClass(classNameJy)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Jy", jY, qBundle.loadClass(classNameJy)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class lX = lBundle.loadClass(classNameLx);
-			assertEquals("lBundle has different copy of Lx", lX, kBundle.loadClass(classNameLx)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of Lx", lX, mBundle.loadClass(classNameLx)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of Lx", lX, nBundle.loadClass(classNameLx)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Lx", lX, pBundle.loadClass(classNameLx)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Lx", lX, qBundle.loadClass(classNameLx)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class lY = lBundle.loadClass(classNameLy);
-			assertEquals("lBundle has different copy of Ly", lY, kBundle.loadClass(classNameLy)); //$NON-NLS-1$
-			assertEquals("mBundle has different copy of Ly", lY, mBundle.loadClass(classNameLy)); //$NON-NLS-1$
-			assertEquals("nBundle has different copy of Ly", lY, nBundle.loadClass(classNameLy)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Ly", lY, pBundle.loadClass(classNameLy)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Ly", lY, qBundle.loadClass(classNameLy)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class nX = nBundle.loadClass(classNameNx);
-			assertEquals("nBundle has different copy of Nx", nX, mBundle.loadClass(classNameNx)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Nx", nX, pBundle.loadClass(classNameNx)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Nx", nX, qBundle.loadClass(classNameNx)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		try {
-			Class nY = nBundle.loadClass(classNameNy);
-			assertEquals("nBundle has different copy of Ny", nY, mBundle.loadClass(classNameNy)); //$NON-NLS-1$
-			assertEquals("pBundle has different copy of Ny", nY, pBundle.loadClass(classNameNy)); //$NON-NLS-1$
-			assertEquals("qBundle has different copy of Ny", nY, qBundle.loadClass(classNameNy)); //$NON-NLS-1$
-		} catch (ClassNotFoundException cnfe) {
-			fail("Unexpected exception", cnfe); //$NON-NLS-1$
-		}
-
-		String[] unexpectedClasseNames = new String[] {"substitutes.x.Ix", "substitutes.x.Kx", "substitutes.x.Mx", "substitutes.y.Iy", "substitutes.y.Ky", "substitutes.y.My"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
-		for (int i = 0; i < unexpectedClasseNames.length; i++) {
-			for (int j = 0; j < allBundles.length; j++) {
-				try {
-					Class found = allBundles[j].loadClass(unexpectedClasseNames[i]);
-					fail("Found class " + found + " in bundle " + allBundles[j]); //$NON-NLS-1$//$NON-NLS-2$
-				} catch (ClassNotFoundException cnfe) {
-					// expected
-				}
-			}
-		}
-	}
-
-	public void testSubstituteExports08() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle c = installer.installBundle("substitutes.c"); //$NON-NLS-1$
-		Bundle d = installer.installBundle("substitutes.d"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {a, b, c, d};
-		doRefreshTest(allBundles, a);
-	}
-
-	public void testSubstituteExports09() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle e = installer.installBundle("substitutes.e"); //$NON-NLS-1$
-		Bundle f = installer.installBundle("substitutes.f"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {a, b, e, f};
-		doRefreshTest(allBundles, a);
-	}
-
-	public void testSubstituteExports10() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle e = installer.installBundle("substitutes.e"); //$NON-NLS-1$
-		Bundle f = installer.installBundle("substitutes.f"); //$NON-NLS-1$
-		Bundle g = installer.installBundle("substitutes.g"); //$NON-NLS-1$
-		Bundle h = installer.installBundle("substitutes.h"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {a, b, e, f, g, h};
-		doRefreshTest(allBundles, a);
-	}
-
-	public void testSubstituteExports11() throws BundleException {
-		Bundle iBundle = installer.installBundle("substitutes.i"); //$NON-NLS-1$
-		Bundle jBundle = installer.installBundle("substitutes.j"); //$NON-NLS-1$
-		installer.installBundle("substitutes.k"); //$NON-NLS-1$
-		installer.installBundle("substitutes.l"); //$NON-NLS-1$
-		Bundle mBundle = installer.installBundle("substitutes.m"); //$NON-NLS-1$
-		Bundle nBundle = installer.installBundle("substitutes.n"); //$NON-NLS-1$
-		Bundle pBundle = installer.installBundle("substitutes.p"); //$NON-NLS-1$
-		Bundle qBundle = installer.installBundle("substitutes.q"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {iBundle, jBundle, mBundle, nBundle, pBundle, qBundle}; // k and l do not depend on i
-		doRefreshTest(allBundles, iBundle);
-	}
-
-	public void testSubstituteExports12() throws BundleException {
-		Bundle jBundle = installer.installBundle("substitutes.j"); //$NON-NLS-1$
-		Bundle iBundle = installer.installBundle("substitutes.i"); //$NON-NLS-1$
-		installer.installBundle("substitutes.l"); //$NON-NLS-1$
-		installer.installBundle("substitutes.k"); //$NON-NLS-1$
-		Bundle nBundle = installer.installBundle("substitutes.n"); //$NON-NLS-1$
-		Bundle mBundle = installer.installBundle("substitutes.m"); //$NON-NLS-1$
-		Bundle qBundle = installer.installBundle("substitutes.q"); //$NON-NLS-1$
-		Bundle pBundle = installer.installBundle("substitutes.p"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {iBundle, jBundle, mBundle, nBundle, pBundle, qBundle}; // k and l do not depend on j
-		doRefreshTest(allBundles, jBundle);
-	}
-
-	private void doRefreshTest(Bundle[] allBundles, Bundle toRefresh) {
-		installer.resolveBundles(allBundles);
-		Bundle[] refreshed = installer.refreshPackages(new Bundle[] {toRefresh});
-		for (int i = 0; i < allBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < refreshed.length && !found; j++)
-				found = allBundles[i] == refreshed[j];
-			if (!found)
-				fail("bundle did not get refreshed: " + allBundles[i]); //$NON-NLS-1$
-		}
-		assertEquals("Wrong number of bundles refreshed", allBundles.length, refreshed.length); //$NON-NLS-1$
-	}
-
-	public void testSubstituteExports13() throws BundleException {
-		Bundle a = installer.installBundle("substitutes.a"); //$NON-NLS-1$
-		Bundle b = installer.installBundle("substitutes.b"); //$NON-NLS-1$
-		Bundle c = installer.installBundle("substitutes.c"); //$NON-NLS-1$
-		Bundle d = installer.installBundle("substitutes.d"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {a, b, c, d};
-		assertTrue("Bundles are not resolved", installer.resolveBundles(allBundles)); //$NON-NLS-1$
-
-		PackageAdmin pa = installer.getPackageAdmin();
-
-		ExportedPackage[] xPackages = pa.getExportedPackages("substitutes.x"); //$NON-NLS-1$
-		assertNotNull("xPackages is null", xPackages); //$NON-NLS-1$
-		assertEquals("xPackages wrong number", 1, xPackages.length); //$NON-NLS-1$
-		assertEquals("Wrong exporter", a, xPackages[0].getExportingBundle()); //$NON-NLS-1$
-		Bundle[] xImporters = xPackages[0].getImportingBundles();
-		assertNotNull("xImporters is null", xImporters); //$NON-NLS-1$
-		assertEquals("Wrong number of xImporters", 3, xImporters.length); //$NON-NLS-1$
-
-		ExportedPackage[] yPackages = pa.getExportedPackages("substitutes.y"); //$NON-NLS-1$
-		assertNotNull("yPackages is null", yPackages); //$NON-NLS-1$
-		assertEquals("yPackages wrong number", 1, yPackages.length); //$NON-NLS-1$
-		assertEquals("Wrong exporter", a, yPackages[0].getExportingBundle()); //$NON-NLS-1$
-		Bundle[] yImporters = yPackages[0].getImportingBundles();
-		assertNotNull("yImporters is null", yImporters); //$NON-NLS-1$
-		assertEquals("Wrong number of yImporters", 3, yImporters.length); //$NON-NLS-1$
-
-		Bundle[] expectedImporters = new Bundle[] {b, c, d};
-		for (int i = 0; i < expectedImporters.length; i++) {
-			contains("xPackages importers does not contain", xImporters, expectedImporters[i]); //$NON-NLS-1$
-			contains("yPackages importers does not contain", yImporters, expectedImporters[i]); //$NON-NLS-1$
-		}
-	}
-
-	public void testSubstituteExports14() throws BundleException {
-		Bundle iBundle = installer.installBundle("substitutes.i"); //$NON-NLS-1$
-		Bundle jBundle = installer.installBundle("substitutes.j"); //$NON-NLS-1$
-		Bundle kBundle = installer.installBundle("substitutes.k"); //$NON-NLS-1$
-		Bundle lBundle = installer.installBundle("substitutes.l"); //$NON-NLS-1$
-		Bundle mBundle = installer.installBundle("substitutes.m"); //$NON-NLS-1$
-		Bundle nBundle = installer.installBundle("substitutes.n"); //$NON-NLS-1$
-		Bundle pBundle = installer.installBundle("substitutes.p"); //$NON-NLS-1$
-		Bundle qBundle = installer.installBundle("substitutes.q"); //$NON-NLS-1$
-		Bundle[] allBundles = new Bundle[] {iBundle, jBundle, kBundle, lBundle, mBundle, nBundle, pBundle, qBundle}; // k and l do not depend on i
-		assertTrue("Bundles are not resolved", installer.resolveBundles(allBundles)); //$NON-NLS-1$
-
-		PackageAdmin pa = installer.getPackageAdmin();
-
-		ExportedPackage[] xPackages = pa.getExportedPackages("substitutes.x"); //$NON-NLS-1$
-		assertNotNull("xPackages is null", xPackages); //$NON-NLS-1$
-		assertEquals("xPackages wrong number", 3, xPackages.length); //$NON-NLS-1$
-
-		ExportedPackage[] yPackages = pa.getExportedPackages("substitutes.y"); //$NON-NLS-1$
-		assertNotNull("yPackages is null", yPackages); //$NON-NLS-1$
-		assertEquals("yPackages wrong number", 3, yPackages.length); //$NON-NLS-1$
-
-		Bundle[] expectedExporters = new Bundle[] {iBundle, kBundle, mBundle};
-		for (int i = 0; i < expectedExporters.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < xPackages.length && !found; j++) {
-				found = expectedExporters[i] == xPackages[j].getExportingBundle();
-				if (found) {
-					Bundle[] importingBundles = xPackages[j].getImportingBundles();
-					Bundle[] expectedImporters = null;
-					String message = null;
-					if (expectedExporters[i] == iBundle) {
-						expectedImporters = new Bundle[] {jBundle, mBundle, nBundle, pBundle, qBundle};
-						message = "iBundle "; //$NON-NLS-1$
-					} else if (expectedExporters[i] == kBundle) {
-						expectedImporters = new Bundle[] {lBundle, mBundle, nBundle, pBundle, qBundle};
-						message = "kBundle "; //$NON-NLS-1$
-					} else if (expectedExporters[i] == mBundle) {
-						expectedImporters = new Bundle[] {nBundle, pBundle, qBundle};
-						message = "mBundle "; //$NON-NLS-1$
-					}
-					assertEquals(message, expectedImporters.length, importingBundles.length);
-					for (int k = 0; k < expectedImporters.length; k++)
-						contains(message, importingBundles, expectedImporters[k]);
-				}
-			}
-		}
-
-	}
-
-	private void contains(String message, Bundle[] bundles, Bundle b) {
-		boolean found = false;
-		for (int i = 0; i < bundles.length && !found; i++)
-			found = bundles[i] == b;
-		if (!found)
-			fail(message + b);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SyncEventListenerTestResults.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SyncEventListenerTestResults.java
deleted file mode 100644
index c50fffc..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SyncEventListenerTestResults.java
+++ /dev/null
@@ -1,17 +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.osgi.tests.bundles;
-
-import org.osgi.framework.SynchronousBundleListener;
-
-public class SyncEventListenerTestResults extends EventListenerTestResults implements SynchronousBundleListener{
-	// implements SynchronousBundleListener
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java
deleted file mode 100644
index 09dc0a8..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/SystemBundleTests.java
+++ /dev/null
@@ -1,1122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.bundles;
-
-import java.io.*;
-import java.net.URL;
-import java.util.Properties;
-import java.util.jar.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.launch.Equinox;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.ExportedPackage;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
-
-public class SystemBundleTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(SystemBundleTests.class);
-	}
-
-	public void testSystemBundle01() {
-		// simple test to create an embedded framework
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle01"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("SystemBundle context is null", systemContext); //$NON-NLS-1$
-
-		ServiceReference[] refs = null;
-		try {
-			refs = systemContext.getServiceReferences(Location.class.getName(), "(type=osgi.configuration.area)"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Unexpected syntax error", e); //$NON-NLS-1$
-		}
-		assertNotNull("Configuration Location refs is null", refs); //$NON-NLS-1$
-		assertEquals("config refs length is wrong", 1, refs.length); //$NON-NLS-1$
-		Location configLocation = (Location) systemContext.getService(refs[0]);
-		URL configURL = configLocation.getURL();
-		assertTrue("incorrect configuration location", configURL.toExternalForm().endsWith("testSystemBundle01/")); //$NON-NLS-1$ //$NON-NLS-2$
-
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle02() {
-		// create/start/stop/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle02"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle03() {
-		// create/stop/ test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle03"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		String configArea = systemContext.getProperty("osgi.configuration.area"); //$NON-NLS-1$
-		assertNotNull("config property is null", configArea); //$NON-NLS-1$
-		assertTrue("Wrong configuration area", configArea.endsWith("testSystemBundle03/")); //$NON-NLS-1$ //$NON-NLS-2$
-		// don't do anything; just put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected error stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle04() {
-		// create/start/stop/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle04"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing a bundle before starting
-		Bundle substitutesA = null;
-		try {
-			substitutesA = systemContext.installBundle(installer.getBundleLocation("substitutes.a")); //$NON-NLS-1$
-		} catch (BundleException e1) {
-			fail("failed to install a bundle", e1); //$NON-NLS-1$
-		}
-		try {
-			substitutesA.start();
-		} catch (BundleException e) {
-			fail("Unexpected bundle exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for installed bundle", Bundle.ACTIVE, substitutesA.getState()); //$NON-NLS-1$
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle05_1() {
-		// create/install/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle05_1"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing a bundle before starting
-		Bundle substitutesA = null;
-		try {
-			substitutesA = systemContext.installBundle(installer.getBundleLocation("substitutes.a")); //$NON-NLS-1$
-		} catch (BundleException e1) {
-			fail("failed to install a bundle", e1); //$NON-NLS-1$
-		}
-		// start framework first
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for installed bundle", Bundle.INSTALLED, substitutesA.getState()); //$NON-NLS-1$
-		try {
-			substitutesA.start();
-		} catch (BundleException e1) {
-			fail("Failed to start a bundle", e1); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for active bundle", Bundle.ACTIVE, substitutesA.getState()); //$NON-NLS-1$
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle05_2() {
-		// create/install/start/stop/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle05_2"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing a bundle before starting
-		Bundle substitutesA = null;
-		try {
-			substitutesA = systemContext.installBundle(installer.getBundleLocation("substitutes.a")); //$NON-NLS-1$
-		} catch (BundleException e1) {
-			fail("failed to install a bundle", e1); //$NON-NLS-1$
-		}
-		// start framework first
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for installed bundle", Bundle.INSTALLED, substitutesA.getState()); //$NON-NLS-1$
-		try {
-			substitutesA.start();
-		} catch (BundleException e1) {
-			fail("Failed to start a bundle", e1); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for active bundle", Bundle.ACTIVE, substitutesA.getState()); //$NON-NLS-1$
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		Bundle substitutesA2 = null;
-		try {
-			substitutesA2 = equinox.getBundleContext().installBundle(installer.getBundleLocation("substitutes.a")); //$NON-NLS-1$
-		} catch (BundleException e) {
-			fail("Unexpected exception installing", e); //$NON-NLS-1$
-		}
-		// assert the same bundle ID
-		assertEquals("Bundle ids are not the same", substitutesA.getBundleId(), substitutesA2.getBundleId()); //$NON-NLS-1$
-		// no need to start the bundle again it should have been persistently started
-		assertEquals("Wrong state for active bundle", Bundle.ACTIVE, substitutesA2.getState()); //$NON-NLS-1$
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-
-	}
-
-	public void testSystemBundle06() {
-		// create multiple instances test
-		File config1 = OSGiTestsActivator.getContext().getDataFile("testSystemBundle06_1"); //$NON-NLS-1$
-		Properties configuration1 = new Properties();
-		configuration1.put(Constants.FRAMEWORK_STORAGE, config1.getAbsolutePath());
-		Equinox equinox1 = new Equinox(configuration1);
-		try {
-			equinox1.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox1.getState()); //$NON-NLS-1$
-
-		File config2 = OSGiTestsActivator.getContext().getDataFile("testSystemBundle06_2"); //$NON-NLS-1$
-		Properties configuration2 = new Properties();
-		configuration2.put(Constants.FRAMEWORK_STORAGE, config2.getAbsolutePath());
-		Equinox equinox2 = new Equinox(configuration2);
-		try {
-			equinox2.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox2.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext1 = equinox1.getBundleContext();
-		assertNotNull("System context is null", systemContext1); //$NON-NLS-1$
-		BundleContext systemContext2 = equinox2.getBundleContext();
-		assertNotNull("System context is null", systemContext2); //$NON-NLS-1$
-
-		assertNotSame(systemContext1, systemContext2);
-
-		// start framework 1 first
-		try {
-			equinox1.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox1.getState()); //$NON-NLS-1$
-		// start framework 2 first
-		try {
-			equinox2.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox2.getState()); //$NON-NLS-1$
-
-		// put the framework 1 back to the RESOLVED state
-		try {
-			equinox1.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox1.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox1.getState()); //$NON-NLS-1$
-
-		// put the framework 2 back to the RESOLVED state
-		try {
-			equinox2.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox2.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox2.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle07() {
-		// test init twice
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle07_01"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.init();
-		} catch (Exception e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("SystemBundle context is null", systemContext); //$NON-NLS-1$
-
-		try {
-			equinox.init();
-		} catch (Exception e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-
-		ServiceReference[] refs = null;
-		try {
-			refs = systemContext.getServiceReferences(Location.class.getName(), "(type=osgi.configuration.area)"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Unexpected syntax error", e); //$NON-NLS-1$
-		}
-		assertNotNull("Configuration Location refs is null", refs); //$NON-NLS-1$
-		assertEquals("config refs length is wrong", 1, refs.length); //$NON-NLS-1$
-		Location configLocation = (Location) systemContext.getService(refs[0]);
-		URL configURL = configLocation.getURL();
-		assertTrue("incorrect configuration location", configURL.toExternalForm().endsWith("testSystemBundle07_01/")); //$NON-NLS-1$ //$NON-NLS-2$
-
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle08() {
-		// create/start/stop/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle08_1"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-
-		config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle08_2"); //$NON-NLS-1$
-		configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-
-		ServiceReference[] refs = null;
-		try {
-			refs = equinox.getBundleContext().getServiceReferences(Location.class.getName(), "(type=osgi.configuration.area)"); //$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Unexpected syntax error", e); //$NON-NLS-1$
-		}
-		assertNotNull("Configuration Location refs is null", refs); //$NON-NLS-1$
-		assertEquals("config refs length is wrong", 1, refs.length); //$NON-NLS-1$
-		Location configLocation = (Location) equinox.getBundleContext().getService(refs[0]);
-		URL configURL = configLocation.getURL();
-		assertTrue("incorrect configuration location", configURL.toExternalForm().endsWith("testSystemBundle08_2/")); //$NON-NLS-1$ //$NON-NLS-2$
-
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle09() {
-		// test FrameworkUtil.createFilter
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle09"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-
-		Bundle testFilterA = null;
-		try {
-			testFilterA = equinox.getBundleContext().installBundle(installer.getBundleLocation("test.filter.a")); //$NON-NLS-1$
-		} catch (BundleException e) {
-			fail("Unexpected exception installing", e); //$NON-NLS-1$
-		}
-		try {
-			testFilterA.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception starting test bundle", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle10() {
-		// create/start/update/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle10"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		final Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		final Exception[] failureException = new BundleException[1];
-		final FrameworkEvent[] success = new FrameworkEvent[] {null};
-		Thread t = new Thread(new Runnable() {
-			public void run() {
-				try {
-					success[0] = equinox.waitForStop(10000);
-				} catch (InterruptedException e) {
-					failureException[0] = e;
-				}
-			}
-		}, "test waitForStop thread"); //$NON-NLS-1$
-		t.start();
-		try {
-			// delay hack to allow t thread to block on waitForStop before we update.
-			Thread.sleep(500);
-		} catch (InterruptedException e) {
-			fail("unexpected interuption", e);
-		}
-		try {
-			equinox.update();
-		} catch (BundleException e) {
-			fail("Failed to update the framework", e); //$NON-NLS-1$
-		}
-		try {
-			t.join();
-		} catch (InterruptedException e) {
-			fail("unexpected interuption", e); //$NON-NLS-1$
-		}
-		if (failureException[0] != null)
-			fail("Error occurred while waiting", failureException[0]); //$NON-NLS-1$
-		assertNotNull("Wait for stop event is null", success[0]); //$NON-NLS-1$
-		assertEquals("Wait for stop event type is wrong", FrameworkEvent.STOPPED_UPDATE, success[0].getType()); //$NON-NLS-1$
-		// TODO delay hack to allow the framework to get started again
-		for (int i = 0; i < 5 && Bundle.ACTIVE != equinox.getState(); i++)
-			try {
-				Thread.sleep(1000);
-			} catch (InterruptedException e) {
-				// nothing
-			}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle11() {
-		// test extra packages property
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle11"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, "test.pkg1, test.pkg2"); //$NON-NLS-1$
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("SystemBundle context is null", systemContext); //$NON-NLS-1$
-
-		PackageAdmin pa = (PackageAdmin) equinox.getBundleContext().getService(equinox.getBundleContext().getServiceReference(PackageAdmin.class.getName()));
-		ExportedPackage[] pkg1 = pa.getExportedPackages("test.pkg1"); //$NON-NLS-1$
-		assertNotNull(pkg1);
-		assertEquals("Wrong number of exports", 1, pkg1.length); //$NON-NLS-1$
-		assertEquals("Wrong package name", "test.pkg1", pkg1[0].getName()); //$NON-NLS-1$ //$NON-NLS-2$
-		ExportedPackage[] pkg2 = pa.getExportedPackages("test.pkg2"); //$NON-NLS-1$
-		assertNotNull(pkg2);
-		assertEquals("Wrong number of exports", 1, pkg2.length); //$NON-NLS-1$
-		assertEquals("Wrong package name", "test.pkg2", pkg2[0].getName()); //$NON-NLS-1$ //$NON-NLS-2$
-
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle12() {
-		// Test stop FrameworkEvent
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle12"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		// test timeout waiting for framework stop
-		FrameworkEvent stopEvent = null;
-		try {
-			stopEvent = equinox.waitForStop(1000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertNotNull("Stop event is null", stopEvent); //$NON-NLS-1$
-		assertEquals("Wrong stopEvent", FrameworkEvent.WAIT_TIMEDOUT, stopEvent.getType()); //$NON-NLS-1$
-
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			stopEvent = equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertNotNull("Stop event is null", stopEvent); //$NON-NLS-1$
-		assertEquals("Wrong stopEvent", FrameworkEvent.STOPPED, stopEvent.getType()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle13() {
-		// create/install/start/stop clean test
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle13"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing a bundle before starting
-		Bundle substitutesA = null;
-		try {
-			substitutesA = systemContext.installBundle(installer.getBundleLocation("substitutes.a")); //$NON-NLS-1$
-		} catch (BundleException e1) {
-			fail("failed to install a bundle", e1); //$NON-NLS-1$
-		}
-		// start framework first
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for installed bundle", Bundle.INSTALLED, substitutesA.getState()); //$NON-NLS-1$
-		try {
-			substitutesA.start();
-		} catch (BundleException e1) {
-			fail("Failed to start a bundle", e1); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for active bundle", Bundle.ACTIVE, substitutesA.getState()); //$NON-NLS-1$
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-
-		// initialize the framework again to the same configuration
-		configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		substitutesA = equinox.getBundleContext().getBundle(1);
-
-		// make sure the bundle is there
-		assertNotNull("missing installed bundle", substitutesA); //$NON-NLS-1$
-		assertEquals("Unexpected symbolic name", "substitutes.a", substitutesA.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-
-		// initialize the framework again to the same configuration but use clean option
-		configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_STORAGE_CLEAN, Constants.FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT);
-		equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		substitutesA = equinox.getBundleContext().getBundle(1);
-
-		// make sure the bundle is there
-		assertNull("Unexpected bundle is installed", substitutesA); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle14() {
-		// Test startlevel property
-		File config = OSGiTestsActivator.getContext().getDataFile("testSystemBundle14"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_BEGINNING_STARTLEVEL, "10"); //$NON-NLS-1$
-		Equinox equinox = new Equinox(configuration);
-
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-
-		StartLevel st = (StartLevel) equinox.getBundleContext().getService(equinox.getBundleContext().getServiceReference(StartLevel.class.getName()));
-		assertNotNull("StartLevel service is null", st); //$NON-NLS-1$
-		assertEquals("Unexpected start level", 10, st.getStartLevel()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-
-		FrameworkEvent stopEvent = null;
-		try {
-			stopEvent = equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertNotNull("Stop event is null", stopEvent); //$NON-NLS-1$
-		assertEquals("Wrong stopEvent", FrameworkEvent.STOPPED, stopEvent.getType()); //$NON-NLS-1$
-	}
-
-	public void testSystemBundle16() {
-		// test parent boot
-		File config = OSGiTestsActivator.getContext().getDataFile(getName());
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_BUNDLE_PARENT, Constants.FRAMEWORK_BUNDLE_PARENT_BOOT);
-		checkParentClassLoader(configuration);
-	}
-
-	public void testSystemBundle17() {
-		// test parent app
-		File config = OSGiTestsActivator.getContext().getDataFile(getName());
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_BUNDLE_PARENT, Constants.FRAMEWORK_BUNDLE_PARENT_APP);
-		checkParentClassLoader(configuration);
-	}
-
-	public void testSystemBundle18() {
-		// test parent ext
-		File config = OSGiTestsActivator.getContext().getDataFile(getName());
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_BUNDLE_PARENT, Constants.FRAMEWORK_BUNDLE_PARENT_EXT);
-		checkParentClassLoader(configuration);
-	}
-
-	public void testSystemBundle19() {
-		// test parent framework
-		File config = OSGiTestsActivator.getContext().getDataFile(getName());
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_BUNDLE_PARENT, Constants.FRAMEWORK_BUNDLE_PARENT_FRAMEWORK);
-		checkParentClassLoader(configuration);
-	}
-
-	private void checkParentClassLoader(Properties configuration) {
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-
-		Bundle test = null;
-		try {
-			test = equinox.getBundleContext().installBundle(installer.getBundleLocation("substitutes.a")); //$NON-NLS-1$
-		} catch (BundleException e) {
-			fail("Failed to install bundle", e); //$NON-NLS-1$
-		}
-		try {
-			Class activatorClazz = test.loadClass("substitutes.x.Ax"); //$NON-NLS-1$
-			ClassLoader parentCL = activatorClazz.getClassLoader().getParent();
-			String configParent = configuration.getProperty(Constants.FRAMEWORK_BUNDLE_PARENT);
-			if (Constants.FRAMEWORK_BUNDLE_PARENT_APP.equals(configParent))
-				assertTrue("Wrong parent", parentCL == ClassLoader.getSystemClassLoader()); //$NON-NLS-1$
-			else if (Constants.FRAMEWORK_BUNDLE_PARENT_EXT.equals(configParent))
-				assertTrue("Wrong parent", parentCL == ClassLoader.getSystemClassLoader().getParent()); //$NON-NLS-1$
-			else if (Constants.FRAMEWORK_BUNDLE_PARENT_FRAMEWORK.equals(configParent))
-				assertTrue("Wrong parent", parentCL == equinox.getClass().getClassLoader()); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("failed to load class", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-
-		FrameworkEvent stopEvent = null;
-		try {
-			stopEvent = equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertNotNull("Stop event is null", stopEvent); //$NON-NLS-1$
-		assertEquals("Wrong stopEvent", FrameworkEvent.STOPPED, stopEvent.getType()); //$NON-NLS-1$
-	}
-
-	public void testBug253942() {
-		// create/start/stop/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testBug253942"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put("osgi.bundlefile.limit", "10"); //$NON-NLS-1$//$NON-NLS-2$
-
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-
-		File[] testBundles = null;
-		try {
-			testBundles = createBundles(new File(config, "bundles"), 20); //$NON-NLS-1$
-		} catch (IOException e) {
-			fail("Unexpected error creating budnles", e); //$NON-NLS-1$
-		}
-		for (int i = 0; i < testBundles.length; i++) {
-			try {
-				systemContext.installBundle("reference:file:///" + testBundles[i].getAbsolutePath()); //$NON-NLS-1$
-			} catch (BundleException e) {
-				fail("Unexpected install error", e); //$NON-NLS-1$
-			}
-		}
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		systemContext = equinox.getBundleContext();
-		Bundle[] bundles = systemContext.getBundles();
-		// get an entry from each bundle to ensure each one gets opened.
-		try {
-			for (int i = 0; i < bundles.length; i++) {
-				bundles[i].getEntry("/META-INF/MANIFEST.MF"); //$NON-NLS-1$
-			}
-		} catch (Throwable t) {
-			// An exception used to get thrown here when we tried to close 
-			// the least used bundle file
-			fail("Failed to get bundle entries", t);
-		}
-
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-	}
-
-	public void testURLExternalFormat01() {
-		// create multiple instances test
-		File config1 = OSGiTestsActivator.getContext().getDataFile("testURLExternalFormat01_1"); //$NON-NLS-1$
-		Properties configuration1 = new Properties();
-		configuration1.put(Constants.FRAMEWORK_STORAGE, config1.getAbsolutePath());
-		Equinox equinox1 = new Equinox(configuration1);
-		try {
-			equinox1.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox1.getState()); //$NON-NLS-1$
-
-		File config2 = OSGiTestsActivator.getContext().getDataFile("testURLExternalFormat01_2"); //$NON-NLS-1$
-		Properties configuration2 = new Properties();
-		configuration2.put(Constants.FRAMEWORK_STORAGE, config2.getAbsolutePath());
-		Equinox equinox2 = new Equinox(configuration2);
-		try {
-			equinox2.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception in init()", e); //$NON-NLS-1$
-		}
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox2.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext1 = equinox1.getBundleContext();
-		assertNotNull("System context is null", systemContext1); //$NON-NLS-1$
-		BundleContext systemContext2 = equinox2.getBundleContext();
-		assertNotNull("System context is null", systemContext2); //$NON-NLS-1$
-
-		assertNotSame(systemContext1, systemContext2);
-
-		Bundle test1 = null;
-		Bundle test2 = null;
-		try {
-			test1 = systemContext1.installBundle(installer.getBundleLocation("test"));//$NON-NLS-1$
-			test2 = systemContext2.installBundle(installer.getBundleLocation("test"));//$NON-NLS-1$
-		} catch (BundleException e) {
-			fail("Unexpected error installing bundle", e);//$NON-NLS-1$
-		}
-		URL entry1 = test1.getEntry("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry1", entry1); //$NON-NLS-1$
-		URL entry2 = test2.getEntry("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry2", entry2); //$NON-NLS-1$
-		assertFalse("External form is equal: " + entry1.toExternalForm(), entry1.toExternalForm().equals(entry2.toExternalForm())); //$NON-NLS-1$
-		assertFalse("Host is equal: " + entry1.getHost(), entry1.getHost().equals(entry2.getHost())); //$NON-NLS-1$
-		assertFalse("URL is equal: " + entry1.toExternalForm(), entry1.equals(entry2)); //$NON-NLS-1$
-
-		Bundle substitutes1 = null;
-		Bundle substitutes2 = null;
-		try {
-			substitutes1 = systemContext1.installBundle(installer.getBundleLocation("substitutes.a"));//$NON-NLS-1$
-			substitutes2 = systemContext2.installBundle(installer.getBundleLocation("substitutes.a"));//$NON-NLS-1$
-		} catch (BundleException e) {
-			fail("Unexpected error installing bundle", e);//$NON-NLS-1$
-		}
-
-		entry1 = substitutes1.getResource("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry1", entry1); //$NON-NLS-1$
-		entry2 = substitutes2.getResource("data/resource1"); //$NON-NLS-1$
-		assertNotNull("entry2", entry2); //$NON-NLS-1$
-		assertFalse("External form is equal: " + entry1.toExternalForm(), entry1.toExternalForm().equals(entry2.toExternalForm())); //$NON-NLS-1$
-		assertFalse("Host is equal: " + entry1.getHost(), entry1.getHost().equals(entry2.getHost())); //$NON-NLS-1$
-		assertFalse("URL is equal: " + entry1.toExternalForm(), entry1.equals(entry2)); //$NON-NLS-1$
-
-		// put the framework 1 back to the RESOLVED state
-		try {
-			equinox1.stop();
-		} catch (BundleException e) {
-			fail("Unexpected error stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox1.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox1.getState()); //$NON-NLS-1$
-
-		// put the framework 2 back to the RESOLVED state
-		try {
-			equinox2.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox2.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox2.getState()); //$NON-NLS-1$
-	}
-
-	private static File[] createBundles(File outputDir, int bundleCount) throws IOException {
-		outputDir.mkdirs();
-
-		File[] bundles = new File[bundleCount];
-
-		for (int i = 0; i < bundleCount; i++)
-			bundles[i] = createBundle(outputDir, "-b" + i); //$NON-NLS-1$
-
-		return bundles;
-	}
-
-	private static File createBundle(File outputDir, String id) throws IOException {
-		File file = new File(outputDir, "bundle" + id + ".jar"); //$NON-NLS-1$ //$NON-NLS-2$
-		JarOutputStream jos = new JarOutputStream(new FileOutputStream(file), createManifest(id));
-		jos.flush();
-		jos.close();
-		return file;
-	}
-
-	private static Manifest createManifest(String id) {
-		Manifest manifest = new Manifest();
-		Attributes attributes = manifest.getMainAttributes();
-		attributes.putValue("Manifest-Version", "1.0"); //$NON-NLS-1$ //$NON-NLS-2$
-		attributes.putValue("Bundle-ManifestVersion", "2"); //$NON-NLS-1$ //$NON-NLS-2$
-		attributes.putValue("Bundle-SymbolicName", "bundle" + id); //$NON-NLS-1$ //$NON-NLS-2$
-		return manifest;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/TestResults.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/TestResults.java
deleted file mode 100644
index 9216773..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/TestResults.java
+++ /dev/null
@@ -1,36 +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.osgi.tests.bundles;
-
-import java.util.ArrayList;
-public class TestResults {
-	ArrayList events = new ArrayList();
-	
-	synchronized public void addEvent(Object event) {
-		events.add(event);
-		notifyAll();
-	}
-	synchronized public Object[] getResults(int expectedResultsNumber) {
-		while (events.size() < expectedResultsNumber) {
-			int currentSize = events.size();
-			try {
-				wait(5000);
-			} catch (InterruptedException e) {
-				// do nothing
-			}
-			if (currentSize == events.size())
-				break; // no new events occurred; break out
-		}
-		Object[] result = events.toArray();
-		events.clear();
-		return result;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AbstractCompositeTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AbstractCompositeTests.java
deleted file mode 100644
index 1413bae..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AbstractCompositeTests.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.composites;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.eclipse.osgi.tests.bundles.BundleInstaller;
-import org.osgi.framework.*;
-import org.osgi.framework.launch.Framework;
-import org.osgi.service.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class AbstractCompositeTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(AbstractCompositeTests.class);
-	}
-
-	ServiceRegistration installerReg;
-	ServiceReference linkBundleFactoryRef;
-	CompositeBundleFactory linkBundleFactory;
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		linkBundleFactoryRef = OSGiTestsActivator.getContext().getServiceReference(CompositeBundleFactory.class.getName());
-		assertNotNull("LinkBundleFactory reference is null", linkBundleFactoryRef); //$NON-NLS-1$
-		linkBundleFactory = (CompositeBundleFactory) OSGiTestsActivator.getContext().getService(linkBundleFactoryRef);
-		assertNotNull("LinkBundleFactory service is null", linkBundleFactory); //$NON-NLS-1$
-
-		installerReg = OSGiTestsActivator.getContext().registerService(BundleInstaller.class.getName(), installer, null);
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (linkBundleFactoryRef != null) {
-			OSGiTestsActivator.getContext().ungetService(linkBundleFactoryRef);
-			linkBundleFactoryRef = null;
-			linkBundleFactory = null;
-		}
-		if (installerReg != null)
-			installerReg.unregister();
-	}
-
-	CompositeBundle createCompositeBundle(CompositeBundleFactory factory, String location, Map configuration, Map linkManifest, boolean start, boolean security) {
-		if (configuration == null)
-			configuration = new HashMap();
-		if (security)
-			configuration.put(Constants.FRAMEWORK_SECURITY, "osgi"); //$NON-NLS-1$
-		if (linkManifest == null) {
-			linkManifest = new HashMap();
-			linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, location);
-		}
-		CompositeBundle composite = null;
-		try {
-			composite = factory.installCompositeBundle(configuration, location, linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected exception creating composite bundle", e); //$NON-NLS-1$
-		}
-		assertNotNull("Composite is null", composite); //$NON-NLS-1$
-		assertEquals("Wrong composite location", location, composite.getLocation()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, composite.getCompositeFramework().getState()); //$NON-NLS-1$
-		SurrogateBundle surrogate = composite.getSurrogateBundle();
-		assertNotNull("Surrogate is null", surrogate); //$NON-NLS-1$
-		assertEquals("Wrong surrogte location", location, surrogate.getLocation()); //$NON-NLS-1$
-		if (start)
-			startCompositeBundle(composite, false);
-		return composite;
-	}
-
-	InputStream getBundleInput() throws BundleException {
-		URL bundlejar = OSGiTestsActivator.getContext().getBundle().getEntry("test_files/security/bundles/signed.jar"); //$NON-NLS-1$
-		if (bundlejar == null)
-			throw new BundleException("Cannot find test bundle jar"); //$NON-NLS-1$
-		try {
-			return bundlejar.openStream();
-		} catch (IOException e) {
-			throw new BundleException("Cannot open test bundle stream", e); //$NON-NLS-1$
-		}
-	}
-
-	void waitForStateChange(Bundle bundle, int changeFrom) {
-		for (int i = 0; i < 10 && (bundle.getState() & changeFrom) != 0; i++)
-			try {
-				Thread.sleep(100);
-			} catch (InterruptedException e) {
-				// nothing
-			}
-		assertTrue("Wrong bundle state: " + bundle.getState(), (bundle.getState() & changeFrom) == 0); //$NON-NLS-1$
-
-	}
-
-	Bundle installIntoCurrent(String name) {
-		try {
-			Bundle testBundle = installer.installBundle(name);
-			installer.resolveBundles(new Bundle[] {testBundle});
-			return testBundle;
-		} catch (BundleException e) {
-			fail("failed to install test bundle", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	Bundle installIntoChild(Framework framework, String name) {
-		try {
-			return framework.getBundleContext().installBundle(installer.getBundleLocation(name));
-		} catch (BundleException e) {
-			fail("failed to install test bundle", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	void startCompositeBundle(CompositeBundle composite, boolean expectFailure) {
-		boolean childFrameworkActive = composite.getCompositeFramework().getState() == Bundle.ACTIVE;
-		try {
-			composite.start();
-			if (expectFailure)
-				fail("Expected an exception starting composite bundle"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			if (!expectFailure)
-				fail("Failed to start composite", e); //$NON-NLS-1$
-		}
-		Framework childFramework = composite.getCompositeFramework();
-		int expectedState = expectFailure && !childFrameworkActive ? Bundle.STARTING : Bundle.ACTIVE;
-		assertEquals("Wrong state for SystemBundle", expectedState, childFramework.getState()); //$NON-NLS-1$
-	}
-
-	void stopCompositeBundle(CompositeBundle composite) {
-		Framework childFramework = composite.getCompositeFramework();
-		try {
-			composite.stop();
-		} catch (BundleException e) {
-			fail("Unexpected error stopping composite", e); //$NON-NLS-1$
-		}
-		FrameworkEvent stopEvent = null;
-		try {
-			stopEvent = childFramework.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertNotNull("Stop event is null", stopEvent); //$NON-NLS-1$
-		assertEquals("Wrong stopEvent", FrameworkEvent.STOPPED, stopEvent.getType()); //$NON-NLS-1$
-
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, childFramework.getState()); //$NON-NLS-1$
-	}
-
-	void uninstallCompositeBundle(CompositeBundle composite) {
-		Framework childFramework = composite.getCompositeFramework();
-		try {
-			composite.uninstall();
-		} catch (BundleException e) {
-			fail("Unexpected error uninstalling composite", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, childFramework.getState()); //$NON-NLS-1$
-	}
-
-	PackageAdmin getPackageAdmin(Bundle framework) {
-		BundleContext context = framework.getBundleContext();
-		return (PackageAdmin) context.getService(context.getServiceReference(PackageAdmin.class.getName()));
-	}
-
-	CompositeBundleFactory getFactory(Bundle framework) {
-		BundleContext context = framework.getBundleContext();
-		assertNotNull("Child context is null.", context); //$NON-NLS-1$
-		ServiceReference ref = context.getServiceReference(CompositeBundleFactory.class.getName());
-		assertNotNull("Factory reference is null", ref); //$NON-NLS-1$
-		CompositeBundleFactory factory = (CompositeBundleFactory) context.getService(ref);
-		assertNotNull("factory service is null", factory); //$NON-NLS-1$
-		// just release now to make testcode simple
-		context.ungetService(ref);
-		return factory;
-	}
-
-	class TestServiceListener implements ServiceListener {
-		final int[] results = new int[4];
-
-		public int[] getResults() {
-			return results;
-		}
-
-		public void serviceChanged(ServiceEvent event) {
-			switch (event.getType()) {
-				case ServiceEvent.REGISTERED :
-					++results[0];
-					break;
-				case ServiceEvent.MODIFIED :
-					++results[1];
-					break;
-				case ServiceEvent.MODIFIED_ENDMATCH :
-					++results[2];
-					break;
-				case ServiceEvent.UNREGISTERING :
-					++results[3];
-					break;
-			}
-		}
-	}
-
-	public class TestTrackerCustomizer implements ServiceTrackerCustomizer {
-		final int[] results = new int[3];
-
-		public int[] getResults() {
-			return results;
-		}
-
-		public Object addingService(ServiceReference reference) {
-			++results[0];
-			return reference;
-		}
-
-		public void modifiedService(ServiceReference reference, Object service) {
-			++results[1];
-		}
-
-		public void removedService(ServiceReference reference, Object service) {
-			++results[2];
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AllCompositeTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AllCompositeTests.java
deleted file mode 100644
index 2b01a1c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/AllCompositeTests.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.composites;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllCompositeTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllCompositeTests.class.getName());
-		suite.addTest(CompositeCreateTests.suite());
-		suite.addTest(CompositeShareTests.suite());
-		suite.addTest(CompositeSecurityTests.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeCreateTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeCreateTests.java
deleted file mode 100644
index 2252b2b..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeCreateTests.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.composites;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.Bundle;
-import org.osgi.service.framework.CompositeBundle;
-import org.osgi.service.framework.CompositeBundleFactory;
-
-public class CompositeCreateTests extends AbstractCompositeTests {
-	public static Test suite() {
-		return new TestSuite(CompositeCreateTests.class);
-	}
-
-	public void testCreateComposite01() {
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testCreateComposite01", null, null, true, false); //$NON-NLS-1$
-		startCompositeBundle(composite, false);
-		stopCompositeBundle(composite);
-		uninstallCompositeBundle(composite);
-	}
-
-	public void testCreateComposite02() {
-		CompositeBundle compositeLevel0 = createCompositeBundle(linkBundleFactory, "compositeLevel0", null, null, true, false); //$NON-NLS-1$
-		CompositeBundleFactory factory = getFactory(compositeLevel0.getCompositeFramework());
-		CompositeBundle compositeLevel1_1 = createCompositeBundle(factory, "compositeLevel1_1", null, null, true, false); //$NON-NLS-1$
-		CompositeBundle compositeLevel1_2 = createCompositeBundle(factory, "compositeLevel1_2", null, null, true, false); //$NON-NLS-1$
-		long idLevel1_1 = compositeLevel1_1.getBundleId();
-		long idLevel1_2 = compositeLevel1_2.getBundleId();
-
-		stopCompositeBundle(compositeLevel0);
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel1_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel1_2.getCompositeFramework().getState()); //$NON-NLS-1$
-
-		startCompositeBundle(compositeLevel0, false);
-		// need to reget the bundles from child frameworks that were restarted
-		compositeLevel1_1 = (CompositeBundle) compositeLevel0.getCompositeFramework().getBundleContext().getBundle(idLevel1_1);
-		compositeLevel1_2 = (CompositeBundle) compositeLevel0.getCompositeFramework().getBundleContext().getBundle(idLevel1_2);
-
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel1_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel1_2.getCompositeFramework().getState()); //$NON-NLS-1$
-
-		uninstallCompositeBundle(compositeLevel0);
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel1_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel1_1.getCompositeFramework().getState()); //$NON-NLS-1$
-	}
-
-	public void testCreateComposite03() {
-		CompositeBundle compositeLevel0 = createCompositeBundle(linkBundleFactory, "compositeLevel0", null, null, true, false); //$NON-NLS-1$
-		CompositeBundleFactory factoryLevel1 = getFactory(compositeLevel0.getCompositeFramework());
-		// create two level 1 composites
-		CompositeBundle compositeLevel1_1 = createCompositeBundle(factoryLevel1, "compositeLevel1_1", null, null, true, false); //$NON-NLS-1$
-		CompositeBundle compositeLevel1_2 = createCompositeBundle(factoryLevel1, "compositeLevel1_2", null, null, true, false); //$NON-NLS-1$
-
-		// create two level 2 composites under 1_1
-		CompositeBundleFactory factoryLevel2_1 = getFactory(compositeLevel1_1.getCompositeFramework());
-		CompositeBundle compositeLevel2_1 = createCompositeBundle(factoryLevel2_1, "compositeLevel2_1", null, null, true, false); //$NON-NLS-1$
-		CompositeBundle compositeLevel2_2 = createCompositeBundle(factoryLevel2_1, "compositeLevel2_2", null, null, true, false); //$NON-NLS-1$
-		long idLevel2_1 = compositeLevel2_1.getBundleId();
-		long idLevel2_2 = compositeLevel2_2.getBundleId();
-
-		// create two level 2 composites under 1_2
-		CompositeBundleFactory factoryLevel2_2 = getFactory(compositeLevel1_2.getCompositeFramework());
-		CompositeBundle compositeLevel2_3 = createCompositeBundle(factoryLevel2_2, "compositeLevel2_3", null, null, true, false); //$NON-NLS-1$
-		CompositeBundle compositeLevel2_4 = createCompositeBundle(factoryLevel2_2, "compositeLevel2_4", null, null, true, false); //$NON-NLS-1$
-		long idLevel2_3 = compositeLevel2_3.getBundleId();
-		long idLevel2_4 = compositeLevel2_4.getBundleId();
-
-		stopCompositeBundle(compositeLevel1_1);
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_2.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_3.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_4.getCompositeFramework().getState()); //$NON-NLS-1$
-
-		startCompositeBundle(compositeLevel1_1, false);
-		// need to reget the bundles from child frameworks that were restarted
-		compositeLevel2_1 = (CompositeBundle) compositeLevel1_1.getCompositeFramework().getBundleContext().getBundle(idLevel2_1);
-		compositeLevel2_2 = (CompositeBundle) compositeLevel1_1.getCompositeFramework().getBundleContext().getBundle(idLevel2_2);
-
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_2.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_3.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_4.getCompositeFramework().getState()); //$NON-NLS-1$
-
-		stopCompositeBundle(compositeLevel1_2);
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_2.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_3.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_4.getCompositeFramework().getState()); //$NON-NLS-1$
-
-		startCompositeBundle(compositeLevel1_2, false);
-		// need to reget the bundles from child frameworks that were restarted
-		compositeLevel2_3 = (CompositeBundle) compositeLevel1_2.getCompositeFramework().getBundleContext().getBundle(idLevel2_3);
-		compositeLevel2_4 = (CompositeBundle) compositeLevel1_2.getCompositeFramework().getBundleContext().getBundle(idLevel2_4);
-
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_2.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_3.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, compositeLevel2_4.getCompositeFramework().getState()); //$NON-NLS-1$
-
-		uninstallCompositeBundle(compositeLevel0);
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_2.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_3.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel2_4.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel1_1.getCompositeFramework().getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, compositeLevel1_2.getCompositeFramework().getState()); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeSecurityTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeSecurityTests.java
deleted file mode 100644
index 7dea1a6..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeSecurityTests.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.composites;
-
-import java.security.*;
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.*;
-import org.osgi.service.condpermadmin.*;
-import org.osgi.service.framework.CompositeBundle;
-import org.osgi.service.framework.CompositeBundleFactory;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public class CompositeSecurityTests extends AbstractCompositeTests {
-	public static Test suite() {
-		return new TestSuite(CompositeSecurityTests.class);
-	}
-
-	private Policy previousPolicy;
-
-	protected void setUp() throws Exception {
-		if (System.getSecurityManager() != null)
-			fail("Cannot test with security manager set"); //$NON-NLS-1$
-		previousPolicy = Policy.getPolicy();
-		final Permission allPermission = new AllPermission();
-		final PermissionCollection allPermissions = new PermissionCollection() {
-			private static final long serialVersionUID = 3258131349494708277L;
-
-			// A simple PermissionCollection that only has AllPermission
-			public void add(Permission permission) {
-				//no adding to this policy
-			}
-
-			public boolean implies(Permission permission) {
-				return true;
-			}
-
-			public Enumeration elements() {
-				return new Enumeration() {
-					int cur = 0;
-
-					public boolean hasMoreElements() {
-						return cur < 1;
-					}
-
-					public Object nextElement() {
-						if (cur == 0) {
-							cur = 1;
-							return allPermission;
-						}
-						throw new NoSuchElementException();
-					}
-				};
-			}
-		};
-
-		Policy.setPolicy(new Policy() {
-
-			public PermissionCollection getPermissions(CodeSource codesource) {
-				return allPermissions;
-			}
-
-			public void refresh() {
-				// nothing
-			}
-
-		});
-		super.setUp();
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (System.getSecurityManager() != null)
-			System.setSecurityManager(null);
-		Policy.setPolicy(previousPolicy);
-	}
-
-	public void testLinkSecurity01() {
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testLinkSecurity01"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.eclipse.osgi.tests.bundles"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, "(objectClass=org.eclipse.osgi.tests.bundles.BundleInstaller)"); //$NON-NLS-1$
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testLinkSecurity01", null, linkManifest, true, true); //$NON-NLS-1$
-
-		startCompositeBundle(composite, false);
-
-		stopCompositeBundle(composite);
-
-		uninstallCompositeBundle(composite);
-	}
-
-	public void testLinkSecurity02() {
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testLinkSecurity02"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.eclipse.osgi.tests.bundles"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, "(objectClass=org.eclipse.osgi.tests.bundles.BundleInstaller)"); //$NON-NLS-1$
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testLinkSecurity02", null, linkManifest, true, true); //$NON-NLS-1$
-		Bundle linkD = installIntoChild(composite.getCompositeFramework(), "test.link.d"); //$NON-NLS-1$
-
-		ConditionInfo[] conditions = new ConditionInfo[] {new ConditionInfo(BundleLocationCondition.class.getName(), new String[] {linkD.getLocation()})};
-		ConditionalPermissionAdmin childCondAdmin = getCondPermAdmin(composite.getCompositeFramework().getBundleContext());
-		childCondAdmin.addConditionalPermissionInfo(conditions, new PermissionInfo[] {new PermissionInfo("(test)")}); //$NON-NLS-1$
-		try {
-			linkD.start();
-			fail("Should fail to start test.link.d"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Wrong exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-
-		ConditionalPermissionUpdate update = childCondAdmin.newConditionalPermissionUpdate();
-		List infos = update.getConditionalPermissionInfos();
-		assertEquals("Wrong number of infos", 1, infos.size()); //$NON-NLS-1$
-		infos.clear();
-
-		PermissionInfo packagePerm = new PermissionInfo(PackagePermission.class.getName(), "*", PackagePermission.IMPORT); //$NON-NLS-1$
-		PermissionInfo servicePerm = new PermissionInfo(ServicePermission.class.getName(), "*", ServicePermission.GET + ',' + ServicePermission.REGISTER); //$NON-NLS-1$
-		PermissionInfo allPerm = new PermissionInfo(AllPermission.class.getName(), "*", "*"); //$NON-NLS-1$ //$NON-NLS-2$
-		PermissionInfo[] permissions = new PermissionInfo[] {packagePerm};
-		infos.add(childCondAdmin.newConditionalPermissionInfo("test.link.d", conditions, permissions, ConditionalPermissionInfo.ALLOW)); //$NON-NLS-1$
-		update.commit();
-
-		try {
-			linkD.start();
-			fail("Should fail to start test.link.d"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Wrong exception type", BundleException.ACTIVATOR_ERROR, e.getType()); //$NON-NLS-1$
-			assertEquals("Unexpected exception message", "Missing Service Permission", e.getCause().getMessage()); //$NON-NLS-1$//$NON-NLS-2$
-		}
-
-		update = childCondAdmin.newConditionalPermissionUpdate();
-		infos = update.getConditionalPermissionInfos();
-		assertEquals("Wrong number of infos", 1, infos.size()); //$NON-NLS-1$
-		infos.clear();
-		permissions = new PermissionInfo[] {packagePerm, servicePerm};
-		infos.add(childCondAdmin.newConditionalPermissionInfo("test.link.d", conditions, permissions, ConditionalPermissionInfo.ALLOW)); //$NON-NLS-1$
-		update.commit();
-
-		try {
-			linkD.start();
-			fail("Should fail to start test.link.d"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Wrong exception type", BundleException.ACTIVATOR_ERROR, e.getType()); //$NON-NLS-1$
-			assertEquals("Unexpected exception message", "Missing AllPermissions", e.getCause().getMessage()); //$NON-NLS-1$//$NON-NLS-2$
-		}
-
-		update = childCondAdmin.newConditionalPermissionUpdate();
-		infos = update.getConditionalPermissionInfos();
-		assertEquals("Wrong number of infos", 1, infos.size()); //$NON-NLS-1$
-		infos.clear();
-		permissions = new PermissionInfo[] {allPerm};
-		infos.add(childCondAdmin.newConditionalPermissionInfo("test.link.d", conditions, permissions, ConditionalPermissionInfo.ALLOW)); //$NON-NLS-1$
-		update.commit();
-
-		try {
-			linkD.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		uninstallCompositeBundle(composite);
-	}
-
-	public void testLinkSecurity03() {
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testLinkSecurity03"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.eclipse.osgi.tests.bundles"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, "(objectClass=org.eclipse.osgi.tests.bundles.BundleInstaller)"); //$NON-NLS-1$
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testLinkSecurity03", null, linkManifest, true, true); //$NON-NLS-1$
-
-		Bundle conditionBundle = installIntoChild(composite.getCompositeFramework(), "test.link.postponed"); //$NON-NLS-1$
-		assertTrue("Condition bundle not resolved", getPackageAdmin(composite.getCompositeFramework()).resolveBundles(new Bundle[] {conditionBundle}));
-		Bundle linkD = installIntoChild(composite.getCompositeFramework(), "test.link.d"); //$NON-NLS-1$
-
-		ConditionInfo[] conditions = new ConditionInfo[] {new ConditionInfo(BundleLocationCondition.class.getName(), new String[] {linkD.getLocation()})};
-		ConditionalPermissionAdmin childCondAdmin = getCondPermAdmin(composite.getCompositeFramework().getBundleContext());
-		childCondAdmin.addConditionalPermissionInfo(conditions, new PermissionInfo[] {new PermissionInfo("(test)")}); //$NON-NLS-1$
-		try {
-			linkD.start();
-			fail("Should fail to start test.link.d"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Wrong exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-
-		ConditionalPermissionUpdate update = childCondAdmin.newConditionalPermissionUpdate();
-		List infos = update.getConditionalPermissionInfos();
-		assertEquals("Wrong number of infos", 1, infos.size()); //$NON-NLS-1$
-		infos.clear();
-
-		PermissionInfo packagePerm = new PermissionInfo(PackagePermission.class.getName(), "*", PackagePermission.IMPORT); //$NON-NLS-1$
-		PermissionInfo servicePerm = new PermissionInfo(ServicePermission.class.getName(), "*", ServicePermission.GET + ',' + ServicePermission.REGISTER); //$NON-NLS-1$
-		PermissionInfo allPerm = new PermissionInfo(AllPermission.class.getName(), "*", "*"); //$NON-NLS-1$ //$NON-NLS-2$
-		PermissionInfo[] permissions = new PermissionInfo[] {packagePerm};
-		infos.add(childCondAdmin.newConditionalPermissionInfo("test.link.d", conditions, permissions, ConditionalPermissionInfo.ALLOW)); //$NON-NLS-1$
-		update.commit();
-
-		try {
-			linkD.start();
-			fail("Should fail to start test.link.d"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Wrong exception type", BundleException.ACTIVATOR_ERROR, e.getType()); //$NON-NLS-1$
-			assertEquals("Unexpected exception message", "Missing Service Permission", e.getCause().getMessage()); //$NON-NLS-1$//$NON-NLS-2$
-		}
-
-		update = childCondAdmin.newConditionalPermissionUpdate();
-		infos = update.getConditionalPermissionInfos();
-		assertEquals("Wrong number of infos", 1, infos.size()); //$NON-NLS-1$
-		infos.clear();
-		permissions = new PermissionInfo[] {packagePerm, servicePerm};
-		infos.add(childCondAdmin.newConditionalPermissionInfo("test.link.d", conditions, permissions, ConditionalPermissionInfo.ALLOW)); //$NON-NLS-1$
-		update.commit();
-
-		try {
-			linkD.start();
-			fail("Should fail to start test.link.d"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Wrong exception type", BundleException.ACTIVATOR_ERROR, e.getType()); //$NON-NLS-1$
-			assertEquals("Unexpected exception message", "Missing AllPermissions", e.getCause().getMessage()); //$NON-NLS-1$//$NON-NLS-2$
-		}
-
-		update = childCondAdmin.newConditionalPermissionUpdate();
-		infos = update.getConditionalPermissionInfos();
-		assertEquals("Wrong number of infos", 1, infos.size()); //$NON-NLS-1$
-		infos.clear();
-		permissions = new PermissionInfo[] {allPerm};
-		infos.add(childCondAdmin.newConditionalPermissionInfo("test.link.d", conditions, permissions, ConditionalPermissionInfo.ALLOW)); //$NON-NLS-1$
-		update.commit();
-
-		try {
-			linkD.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e);
-		}
-
-		uninstallCompositeBundle(composite);
-	}
-
-	private ConditionalPermissionAdmin getCondPermAdmin(BundleContext context) {
-		ServiceReference permAdminRef = context.getServiceReference(ConditionalPermissionAdmin.class.getName());
-		if (permAdminRef == null) {
-			fail("No Conditional Permission Admin service"); //$NON-NLS-1$
-			return null;
-		}
-		try {
-			ConditionalPermissionAdmin permAdmin = (ConditionalPermissionAdmin) context.getService(permAdminRef);
-			if (permAdmin == null)
-				fail("No Conditional Permission Admin service"); //$NON-NLS-1$
-			return permAdmin;
-		} finally {
-			context.ungetService(permAdminRef);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java
deleted file mode 100644
index 462d27d..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/composites/CompositeShareTests.java
+++ /dev/null
@@ -1,962 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.composites;
-
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-import org.osgi.framework.launch.Framework;
-import org.osgi.service.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class CompositeShareTests extends AbstractCompositeTests {
-	public static Test suite() {
-		return new TestSuite(CompositeShareTests.class);
-	}
-
-	public void testCompositeShare01() {
-		// simple test to create an empty composite bundle
-		// sharing one package from the parent
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare01"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.osgi.service.application"); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare01", null, linkManifest, false, false); //$NON-NLS-1$
-		startCompositeBundle(compositeBundle, false);
-		SurrogateBundle surrogate = compositeBundle.getSurrogateBundle();
-		assertNotNull("Surrogate is null", surrogate); //$NON-NLS-1$
-		try {
-			surrogate.loadClass("org.osgi.service.application.ApplicationDescriptor"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected class load exception", e); //$NON-NLS-1$
-		}
-		// make sure missing classes do not endlessly loop
-		try {
-			surrogate.loadClass("does.not.exist.Here"); //$NON-NLS-1$
-			fail("Expected a loadClass exception"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare01a() {
-		// simple test to create an empty composite bundle
-		// sharing one package from the parent
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, getName());
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.osgi.service.application"); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, getName(), null, linkManifest, false, false);
-		startCompositeBundle(compositeBundle, false);
-
-		stopCompositeBundle(compositeBundle);
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare02() {
-		// simple test to create an empty composite bundle
-		// sharing one package from the parent and sharing one non-existing package from child
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare02"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.osgi.service.application"); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "foo"); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare02", null, linkManifest, false, false); //$NON-NLS-1$
-
-		startCompositeBundle(compositeBundle, true);
-		SurrogateBundle surrogate = compositeBundle.getSurrogateBundle();
-		assertNotNull("Companion is null", surrogate); //$NON-NLS-1$
-		try {
-			surrogate.loadClass("org.osgi.service.application.ApplicationDescriptor"); //$NON-NLS-1$
-			fail("Expected a loadClass exception"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare03() {
-		// create a composite bundle with one bundle that exports some api to parent
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare03"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare03", null, linkManifest, false, false); //$NON-NLS-1$
-		installIntoChild(compositeBundle.getCompositeFramework(), "test.link.a"); //$NON-NLS-1$
-
-		startCompositeBundle(compositeBundle, false);
-		try {
-			compositeBundle.loadClass("test.link.a.SomeAPI"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected a loadClass exception", e); //$NON-NLS-1$
-		}
-		//make sure missing classes do not endlessly loop
-		try {
-			compositeBundle.loadClass("does.not.exist.Here"); //$NON-NLS-1$
-			fail("Expected a loadClass exception"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected
-		}
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare04a() {
-		// create a composite bundle with one bundle that exports some api to parent
-		// install one bundle into parent that uses API from child
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare04a"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"bad value\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"bad value\""); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare04a", null, linkManifest, false, false); //$NON-NLS-1$
-		installIntoChild(compositeBundle.getCompositeFramework(), "test.link.a"); //$NON-NLS-1$
-		Bundle testClient = installIntoCurrent("test.link.a.client"); //$NON-NLS-1$
-
-		SurrogateBundle surrogate = compositeBundle.getSurrogateBundle();
-		assertNotNull("Companion is null", surrogate); //$NON-NLS-1$
-		startCompositeBundle(compositeBundle, true);
-		try {
-			testClient.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-		// put good value back
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-
-		startCompositeBundle(compositeBundle, false);
-		try {
-			testClient.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		// put bad value back
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"bad value\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"bad value\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-		installer.refreshPackages(new Bundle[] {compositeBundle});
-		startCompositeBundle(compositeBundle, true);
-		try {
-			testClient.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare04b() {
-		// create a composite bundle with one bundle that exports some api to parent
-		// install one bundle into parent that uses API from child
-		// test lazy uninstall
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare04b"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"bad value\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"bad value\""); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare04b", null, linkManifest, false, false); //$NON-NLS-1$
-		installIntoChild(compositeBundle.getCompositeFramework(), "test.link.a"); //$NON-NLS-1$
-		Bundle testClient = installIntoCurrent("test.link.a.client"); //$NON-NLS-1$
-
-		SurrogateBundle surrogate = compositeBundle.getSurrogateBundle();
-		assertNotNull("Surrogate is null", surrogate); //$NON-NLS-1$
-		startCompositeBundle(compositeBundle, true);
-		try {
-			testClient.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-		// put good value back
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-
-		startCompositeBundle(compositeBundle, false);
-		try {
-			testClient.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		// refresh client to clear class laoder
-		installer.refreshPackages(new Bundle[] {testClient});
-
-		// put bad value back
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"bad value\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"bad value\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-
-		// make sure testClient can still start before refresh
-		try {
-			testClient.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		installer.refreshPackages(new Bundle[] {compositeBundle});
-		startCompositeBundle(compositeBundle, true);
-		try {
-			testClient.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-
-		// put good value back
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.a; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.a.params\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-
-		startCompositeBundle(compositeBundle, false);
-		uninstallCompositeBundle(compositeBundle);
-		// make sure testClient can still start after uninstall
-		try {
-			testClient.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		installer.refreshPackages(new Bundle[] {compositeBundle});
-		try {
-			testClient.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-	}
-
-	public void testCompositeShare05() {
-		// create a composite bundle with one bundle that exports some api to child
-		// install one bundle into child that uses API from parent
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare05"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"bad value\", test.link.a.params;  attr2=\"bad value\""); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare03", null, linkManifest, false, false); //$NON-NLS-1$
-		installIntoCurrent("test.link.a"); //$NON-NLS-1$
-		Bundle testClient = installIntoChild(compositeBundle.getCompositeFramework(), "test.link.a.client"); //$NON-NLS-1$
-
-		SurrogateBundle surrogate = compositeBundle.getSurrogateBundle();
-		assertNotNull("Surrogate is null", surrogate); //$NON-NLS-1$
-		startCompositeBundle(compositeBundle, true);
-		assertFalse("Bundle should not be resolved", resolveBundle(compositeBundle.getCompositeFramework(), testClient));
-		try {
-			testClient.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception type", e); //$NON-NLS-1$
-		}
-
-		// put good value back
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"value1\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-
-		startCompositeBundle(compositeBundle, false);
-		try {
-			testClient.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		// put bad value back
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"bad value\", test.link.a.params;  attr2=\"bad value\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-		installer.refreshPackages(new Bundle[] {compositeBundle});
-		startCompositeBundle(compositeBundle, true);
-		try {
-			testClient.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare06() {
-		// simple test to create an empty composite bundle
-		// sharing one package from a bundle in the parent and 
-		// one package from the system bundle in the parent
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare06"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "org.osgi.service.application, org.osgi.framework"); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare06", null, linkManifest, false, false); //$NON-NLS-1$
-		startCompositeBundle(compositeBundle, false);
-		SurrogateBundle surrogate = compositeBundle.getSurrogateBundle();
-		assertNotNull("Surrogate is null", surrogate); //$NON-NLS-1$
-		try {
-			surrogate.loadClass("org.osgi.service.application.ApplicationDescriptor"); //$NON-NLS-1$
-			Class bundleClass = surrogate.loadClass("org.osgi.framework.Bundle"); //$NON-NLS-1$
-			assertEquals("Bundle classes are not the same", Bundle.class, bundleClass); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			fail("Unexpected class load exception", e); //$NON-NLS-1$
-		}
-
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare07a() {
-		// test two way sharing
-		// create a composite bundle with one bundle that exports some api to child
-		// install one bundle into child that uses API from parent
-		// install a child bundle that exports some api to parent
-		// install one bundle into parent that uses API from child
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare07a"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"value1\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.b; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.b.params\", test.link.b.params; attr2=\"value2\""); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare07a", null, linkManifest, false, false); //$NON-NLS-1$
-		installIntoCurrent("test.link.a"); //$NON-NLS-1$
-		Bundle testClientA = installIntoChild(compositeBundle.getCompositeFramework(), "test.link.a.client"); //$NON-NLS-1$
-		installIntoChild(compositeBundle.getCompositeFramework(), "test.link.b"); //$NON-NLS-1$
-		Bundle testClientB = installIntoCurrent("test.link.b.client"); //$NON-NLS-1$
-
-		startCompositeBundle(compositeBundle, false);
-		try {
-			testClientA.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			testClientB.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		// use bad import package value
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"bad value\", test.link.a.params;  attr2=\"bad value\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-		installer.refreshPackages(new Bundle[] {compositeBundle});
-		startCompositeBundle(compositeBundle, true);
-		try {
-			testClientA.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-		try {
-			testClientB.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-
-		// put good value back
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"value1\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-
-		startCompositeBundle(compositeBundle, false);
-		try {
-			testClientA.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			testClientB.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare07b() {
-		// test two way sharing AND lazy update
-		// create a composite bundle with one bundle that exports some api to child
-		// install one bundle into child that uses API from parent
-		// install a child bundle that exports some api to parent
-		// install one bundle into parent that uses API from child
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare07b"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"value1\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.b; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.b.params\", test.link.b.params; attr2=\"value2\""); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "testCompositeShare07b", null, linkManifest, false, false); //$NON-NLS-1$
-		installIntoCurrent("test.link.a"); //$NON-NLS-1$
-		Bundle testClientA = installIntoChild(compositeBundle.getCompositeFramework(), "test.link.a.client"); //$NON-NLS-1$
-		installIntoChild(compositeBundle.getCompositeFramework(), "test.link.b"); //$NON-NLS-1$
-		Bundle testClientB = installIntoCurrent("test.link.b.client"); //$NON-NLS-1$
-
-		startCompositeBundle(compositeBundle, false);
-		try {
-			testClientA.start();
-			testClientA.stop();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			testClientB.start();
-			testClientB.stop();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		// force a refresh packages of the composite to get new class loaders for the clients
-		installer.refreshPackages(new Bundle[] {compositeBundle});
-
-		// use bad import package value
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0.a"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"bad value\", test.link.a.params;  attr2=\"bad value\""); //$NON-NLS-1$
-		try {
-			compositeBundle.update(linkManifest);
-		} catch (BundleException e) {
-			fail("Unexpected composite update exception", e); //$NON-NLS-1$
-		}
-
-		// make sure we can still start the clients before a refresh; 
-		// they should still be wired to the old content
-		try {
-			testClientA.start();
-			testClientA.stop();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			testClientB.start();
-			testClientB.stop();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		installer.refreshPackages(new Bundle[] {compositeBundle});
-		startCompositeBundle(compositeBundle, true);
-		try {
-			testClientA.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-		try {
-			testClientB.start();
-			fail("Expected start failure"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			assertEquals("Unexpected exception type", BundleException.RESOLVE_ERROR, e.getType()); //$NON-NLS-1$
-		}
-
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	public void testCompositeShare08() {
-		// Create a child framework to install composites into to test persistence
-		CompositeBundle compositeLevel0 = createCompositeBundle(linkBundleFactory, "testCompositeShare08LV0", null, null, true, false); //$NON-NLS-1$
-		CompositeBundleFactory factoryLevel1 = getFactory(compositeLevel0.getCompositeFramework());
-		// create a level 1 composites
-		CompositeBundle compositeLevel1 = createCompositeBundle(factoryLevel1, "testCompositeShare08LV1", null, null, true, false); //$NON-NLS-1$
-		CompositeBundleFactory factoryLevel2 = getFactory(compositeLevel1.getCompositeFramework());
-		long level1ID = compositeLevel1.getBundleId();
-
-		// test two way sharing
-		// create a composite bundle with one bundle that exports some api to child
-		// install one bundle into child that uses API from parent
-		// install a child bundle that exports some api to parent
-		// install one bundle into parent that uses API from child
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare08LV2"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.a; attr1=\"value1\", test.link.a.params; attr2=\"value2\""); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.b; attr1=\"value1\"; uses:=\"org.osgi.framework, test.link.b.params\", test.link.b.params; attr2=\"value2\""); //$NON-NLS-1$
-		CompositeBundle compositeLevel2 = createCompositeBundle(factoryLevel2, "testCompositeShare08LV2", null, linkManifest, false, false); //$NON-NLS-1$
-		long level2ID = compositeLevel2.getBundleId();
-
-		installIntoChild(compositeLevel1.getCompositeFramework(), "test.link.a"); //$NON-NLS-1$
-		Bundle testClientA = installIntoChild(compositeLevel2.getCompositeFramework(), "test.link.a.client"); //$NON-NLS-1$
-		long clientAID = testClientA.getBundleId();
-		installIntoChild(compositeLevel2.getCompositeFramework(), "test.link.b"); //$NON-NLS-1$
-		Bundle testClientB = installIntoChild(compositeLevel1.getCompositeFramework(), "test.link.b.client"); //$NON-NLS-1$
-		long clientBID = testClientB.getBundleId();
-
-		startCompositeBundle(compositeLevel2, false);
-		try {
-			testClientA.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			testClientB.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-
-		// stop level 0 composite
-		stopCompositeBundle(compositeLevel0);
-
-		// check the state of bundles installed into composite frameworks
-		assertEquals("Wrong state for client A", Bundle.UNINSTALLED, testClientA.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for client B", Bundle.UNINSTALLED, testClientB.getState()); //$NON-NLS-1$
-
-		// start level 0 composite again
-		startCompositeBundle(compositeLevel0, false);
-
-		// get reified level 1 and 2 composites and client A and B bundles 
-		compositeLevel1 = (CompositeBundle) compositeLevel0.getCompositeFramework().getBundleContext().getBundle(level1ID);
-		compositeLevel2 = (CompositeBundle) compositeLevel1.getCompositeFramework().getBundleContext().getBundle(level2ID);
-		testClientA = compositeLevel2.getCompositeFramework().getBundleContext().getBundle(clientAID);
-		testClientB = compositeLevel1.getCompositeFramework().getBundleContext().getBundle(clientBID);
-
-		// check the state of bundles installed into composite frameworks
-		assertEquals("Wrong state for client A", Bundle.ACTIVE, testClientA.getState()); //$NON-NLS-1$
-		assertEquals("Wrong state for client B", Bundle.ACTIVE, testClientB.getState()); //$NON-NLS-1$
-
-		uninstallCompositeBundle(compositeLevel0);
-	}
-
-	public void testCompositeShare09a() {
-		// exports packages from a bundle installed into the parent
-		// and imports the packages from a bundle installed into the child
-		// and services registered in the parent are propagated to the child
-		Bundle cService = installIntoCurrent("test.link.c"); //$NON-NLS-1$
-		try {
-			cService.start();
-		} catch (BundleException e) {
-			fail("Failed to start test.link.c", e); //$NON-NLS-1$
-		}
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare09a"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.c.service1,test.link.c.service2,test.link.c.service3"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, "(objectClass=test.link.c.service1.Service1),(objectClass=test.link.c.service2.Service2),(objectClass=test.link.c.service3.Service3)"); //$NON-NLS-1$
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testCompositeShare09a", null, linkManifest, true, false); //$NON-NLS-1$
-
-		startCompositeBundle(composite, false);
-
-		ServiceReference[] targetServices = composite.getSurrogateBundle().getRegisteredServices();
-		assertNotNull("No target services found", targetServices); //$NON-NLS-1$
-		assertEquals("Wrong number of target services", 3, targetServices.length); //$NON-NLS-1$
-
-		Bundle cClient = installIntoChild(composite.getCompositeFramework(), "test.link.c.client"); //$NON-NLS-1$
-
-		try {
-			cClient.start();
-			cClient.stop();
-		} catch (BundleException e) {
-			fail("Failed to start/stop the client", e); //$NON-NLS-1$
-		}
-
-		try {
-			cService.stop();
-		} catch (BundleException e) {
-			fail("Failed to stop cService", e); //$NON-NLS-1$
-		}
-
-		try {
-			cClient.start();
-			fail("Should have failed to start cClient"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			// expected
-		}
-		try {
-			cService.start();
-		} catch (BundleException e) {
-			fail("Failed to start test.link.c", e); //$NON-NLS-1$
-		}
-		try {
-			cClient.start();
-			cClient.stop();
-		} catch (BundleException e) {
-			fail("Failed to start/stop the client", e); //$NON-NLS-1$
-		}
-		uninstallCompositeBundle(composite);
-	}
-
-	public void testCompositeShare09b() {
-		// two way package and service tests
-		// exports packages from a bundle installed into the parent
-		// and imports the packages from a bundle installed into the child
-		// and services registered in the parent are propagated to the child
-		// and services registered in the child are propagated to the parent
-		Bundle cService = installIntoCurrent("test.link.c"); //$NON-NLS-1$
-		try {
-			cService.start();
-		} catch (BundleException e) {
-			fail("Failed to start test.link.c", e); //$NON-NLS-1$
-		}
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare09b"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(Constants.IMPORT_PACKAGE, "test.link.c.service1,test.link.c.service2,test.link.c.service3"); //$NON-NLS-1$
-		linkManifest.put(Constants.EXPORT_PACKAGE, "test.link.e.service1; attr1=\"value1\", test.link.e.service2; attr2=\"value2\"; uses:=\"test.link.e.service1\", test.link.e.service3; attr3=\"value3\"; uses:=\"test.link.e.service2\""); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, "(objectClass=test.link.c.service1.Service1),(objectClass=test.link.c.service2.Service2),(objectClass=test.link.c.service3.Service3)"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_EXPORT, "(objectClass=test.link.e.service1.Service1),(objectClass=test.link.e.service2.Service2),(objectClass=test.link.e.service3.Service3)"); //$NON-NLS-1$
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testCompositeShare09b", null, linkManifest, false, false); //$NON-NLS-1$
-
-		Bundle eService = installIntoChild(composite.getCompositeFramework(), "test.link.e"); //$NON-NLS-1$
-		startCompositeBundle(composite, false);
-
-		try {
-			eService.start();
-		} catch (BundleException e) {
-			fail("Failed to start test.link.e", e); //$NON-NLS-1$
-		}
-
-		ServiceReference[] childServices = composite.getSurrogateBundle().getRegisteredServices();
-		assertNotNull("No child services found", childServices); //$NON-NLS-1$
-		assertEquals("Wrong number of child services", 3, childServices.length); //$NON-NLS-1$
-
-		ServiceReference[] parentServices = composite.getRegisteredServices();
-		assertNotNull("No parent services found", parentServices); //$NON-NLS-1$
-		assertEquals("Wrong number of parent services", 3, parentServices.length); //$NON-NLS-1$
-
-		Bundle cClient = installIntoChild(composite.getCompositeFramework(), "test.link.c.client"); //$NON-NLS-1$
-		Bundle eClient = installIntoCurrent("test.link.e.client"); //$NON-NLS-1$
-
-		try {
-			cClient.start();
-			cClient.stop();
-		} catch (BundleException e) {
-			fail("Failed to start/stop the client", e); //$NON-NLS-1$
-		}
-
-		try {
-			cService.stop();
-		} catch (BundleException e) {
-			fail("Failed to stop cService", e); //$NON-NLS-1$
-		}
-
-		try {
-			cClient.start();
-			fail("Should have failed to start cClient"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			// expected
-		}
-		try {
-			cService.start();
-		} catch (BundleException e) {
-			fail("Failed to start test.link.c", e); //$NON-NLS-1$
-		}
-		try {
-			cClient.start();
-			cClient.stop();
-		} catch (BundleException e) {
-			fail("Failed to start/stop the client", e); //$NON-NLS-1$
-		}
-
-		try {
-			eClient.start();
-			eClient.stop();
-		} catch (BundleException e) {
-			fail("Failed to start/stop the client", e); //$NON-NLS-1$
-		}
-
-		try {
-			eService.stop();
-		} catch (BundleException e) {
-			fail("Failed to stop eService", e); //$NON-NLS-1$
-		}
-
-		try {
-			eClient.start();
-			fail("Should have failed to start eClient"); //$NON-NLS-1$
-		} catch (BundleException e) {
-			// expected
-		}
-		try {
-			eService.start();
-		} catch (BundleException e) {
-			fail("Failed to start test.link.e", e); //$NON-NLS-1$
-		}
-		try {
-			eClient.start();
-			eClient.stop();
-		} catch (BundleException e) {
-			fail("Failed to start/stop the client", e); //$NON-NLS-1$
-		}
-		uninstallCompositeBundle(composite);
-	}
-
-	public void testCompositeShare10() {
-		// test service listeners with services shared to child
-		String filter1 = "(key1=1)"; //$NON-NLS-1$
-		String filter2 = "(key2=value1)"; //$NON-NLS-1$
-		String filter3 = "(key3=true)"; //$NON-NLS-1$
-
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare10"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, filter1 + ',' + filter2);
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testCompositeShare10", null, linkManifest, true, false); //$NON-NLS-1$
-
-		startCompositeBundle(composite, false);
-
-		Hashtable props = new Hashtable();
-		props.put("key1", new Integer(1)); //$NON-NLS-1$
-		props.put("key2", "value1"); //$NON-NLS-1$//$NON-NLS-2$
-		props.put("key3", Boolean.TRUE); //$NON-NLS-1$
-
-		// install listener to test with before registering the service so we can get the REGISTERED event
-		TestServiceListener resultListener = new TestServiceListener();
-		try {
-			composite.getCompositeFramework().getBundleContext().addServiceListener(resultListener, "(&" + filter1 + filter2 + filter3 + ")"); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (InvalidSyntaxException e) {
-			fail("failed to add listener", e); //$NON-NLS-1$
-		}
-
-		// register a service that should match the listener filter
-		ServiceRegistration registration = OSGiTestsActivator.getContext().registerService(new String[] {Object.class.getName()}, new Object(), props);
-		try {
-			// expecting to have gotten 1 REGISTERED event
-			int[] results = resultListener.getResults();
-			assertEquals("Wrong listener results", new int[] {1, 0, 0, 0}, results); //$NON-NLS-1$
-
-			ServiceReference[] targetServices = composite.getSurrogateBundle().getRegisteredServices();
-			assertNotNull("No target services found", targetServices); //$NON-NLS-1$
-			assertEquals("Wrong number of target services", 1, targetServices.length); //$NON-NLS-1$
-
-			// modify the service properties so they match both the link description
-			// and the test listener filter
-			props.put("key4", "value1"); //$NON-NLS-1$ //$NON-NLS-2$
-			registration.setProperties(props);
-			// expecting to get a MODIFIED event
-			assertEquals("Wrong listener results", new int[] {1, 1, 0, 0}, results); //$NON-NLS-1$
-
-			// modify the service properties so they match the link description
-			// but not the test listener filter
-			props.put("key3", Boolean.FALSE); //$NON-NLS-1$
-			registration.setProperties(props);
-			// expecting to get a MODIFIED_ENDMATCH event
-			assertEquals("Wrong listener results", new int[] {1, 1, 1, 0}, results); //$NON-NLS-1$
-
-			// modify the service properties so they still match teh link description
-			// but still do not match the test listener filter
-			props.put("key4", "value2"); //$NON-NLS-1$ //$NON-NLS-2$
-			registration.setProperties(props);
-			// expecting no new events
-			assertEquals("Wrong listener results", new int[] {1, 1, 1, 0}, results); //$NON-NLS-1$
-
-			// modify the service properties so they match the link description
-			// and again match the test listener filter
-			props.put("key3", Boolean.TRUE); //$NON-NLS-1$
-			registration.setProperties(props);
-			// expecting to get a MODIFIED event
-			assertEquals("Wrong listener results", new int[] {1, 2, 1, 0}, results); //$NON-NLS-1$
-
-			// modify the service properties so they do not match the link description
-			// or the test listener filter
-			props.put("key1", new Integer(2)); //$NON-NLS-1$
-			props.put("key2", "value2"); //$NON-NLS-1$ //$NON-NLS-2$
-			registration.setProperties(props);
-			// expecting to get an UNREGISTERING event 
-			assertEquals("Wrong listener results", new int[] {1, 2, 1, 1}, results); //$NON-NLS-1$
-
-		} finally {
-			composite.getCompositeFramework().getBundleContext().removeServiceListener(resultListener);
-			if (registration != null)
-				registration.unregister();
-		}
-
-		uninstallCompositeBundle(composite);
-	}
-
-	public void testCompositeShare11() {
-		// Test service trackers with shared services to child
-		String filter1 = "(key1=1)"; //$NON-NLS-1$
-		String filter2 = "(key2=value1)"; //$NON-NLS-1$
-		String filter3 = "(key3=true)"; //$NON-NLS-1$
-
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "testCompositeShare11"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		linkManifest.put(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT, filter1 + ',' + filter2);
-		CompositeBundle composite = createCompositeBundle(linkBundleFactory, "testCompositeShare10", null, linkManifest, true, false); //$NON-NLS-1$
-
-		startCompositeBundle(composite, false);
-
-		Hashtable props = new Hashtable();
-		props.put("key1", new Integer(1)); //$NON-NLS-1$
-		props.put("key2", "value1"); //$NON-NLS-1$//$NON-NLS-2$
-		props.put("key3", Boolean.TRUE); //$NON-NLS-1$
-
-		// open tracker to test with before registering the service so we can get the REGISTERED event
-		ServiceTracker tracker = null;
-		TestTrackerCustomizer resultListener = new TestTrackerCustomizer();
-		try {
-			tracker = new ServiceTracker(composite.getCompositeFramework().getBundleContext(), composite.getCompositeFramework().getBundleContext().createFilter("(&" + filter1 + filter2 + filter3 + ")"), resultListener); //$NON-NLS-1$ //$NON-NLS-2$
-			tracker.open();
-		} catch (InvalidSyntaxException e) {
-			fail("failed to add listener", e); //$NON-NLS-1$
-		}
-
-		// register a service that should match the listener filter
-		ServiceRegistration registration = OSGiTestsActivator.getContext().registerService(new String[] {Object.class.getName()}, new Object(), props);
-		try {
-			// expecting to have gotten 1 addingService call
-			int[] results = resultListener.getResults();
-			assertEquals("Wrong listener results", new int[] {1, 0, 0}, results); //$NON-NLS-1$
-
-			ServiceReference[] targetServices = composite.getSurrogateBundle().getRegisteredServices();
-			assertNotNull("No target services found", targetServices); //$NON-NLS-1$
-			assertEquals("Wrong number of target services", 1, targetServices.length); //$NON-NLS-1$
-
-			// modify the service properties so they match both the link description
-			// and the test tracker filter
-			props.put("key4", "value1"); //$NON-NLS-1$ //$NON-NLS-2$
-			registration.setProperties(props);
-			// expecting to get 1 modifiedService call
-			assertEquals("Wrong listener results", new int[] {1, 1, 0}, results); //$NON-NLS-1$
-
-			// modify the service properties so they match the link description
-			// but not the test tracker filter
-			props.put("key3", Boolean.FALSE); //$NON-NLS-1$
-			registration.setProperties(props);
-			// expecting to get a removedService call
-			assertEquals("Wrong listener results", new int[] {1, 1, 1}, results); //$NON-NLS-1$
-
-			// modify the service properties so they still match the link description
-			// but still do not match the test listener filter
-			props.put("key4", "value2"); //$NON-NLS-1$ //$NON-NLS-2$
-			registration.setProperties(props);
-			// expecting no new method calls
-			assertEquals("Wrong listener results", new int[] {1, 1, 1}, results); //$NON-NLS-1$
-
-			// modify the service properties so they match the link description
-			// and again match the test tracker filter
-			props.put("key3", Boolean.TRUE); //$NON-NLS-1$
-			registration.setProperties(props);
-			// expecting to get an addingService call
-			assertEquals("Wrong listener results", new int[] {2, 1, 1}, results); //$NON-NLS-1$
-
-			// modify the service properties so they do not match the link description
-			// or the test tracker filter
-			props.put("key1", new Integer(2)); //$NON-NLS-1$
-			props.put("key2", "value2"); //$NON-NLS-1$ //$NON-NLS-2$
-			registration.setProperties(props);
-			// expecting to get a removedService call 
-			assertEquals("Wrong listener results", new int[] {2, 1, 2}, results); //$NON-NLS-1$
-
-		} finally {
-			if (tracker != null)
-				tracker.close();
-			if (registration != null)
-				registration.unregister();
-		}
-
-		uninstallCompositeBundle(composite);
-	}
-
-	public void testBug258209_1() {
-		// create a composite bundle to test thread context class loaders
-		Map linkManifest = new HashMap();
-		linkManifest.put(Constants.BUNDLE_SYMBOLICNAME, "Bug258209.01"); //$NON-NLS-1$
-		linkManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		CompositeBundle compositeBundle = createCompositeBundle(linkBundleFactory, "Bug258209.01", null, linkManifest, false, false); //$NON-NLS-1$
-		Bundle testTCCL = installIntoChild(compositeBundle.getCompositeFramework(), "test.tccl"); //$NON-NLS-1$
-		assertTrue("Bundle should be resolved", resolveBundle(compositeBundle.getCompositeFramework(), testTCCL));
-		try {
-			testTCCL.start();
-		} catch (BundleException e) {
-			fail("Unexpected exception starting bundle", e); //$NON-NLS-1$
-		}
-		assertEquals("Unexpected state", Bundle.RESOLVED, testTCCL.getState()); //$NON-NLS-1$
-		// this will start the framework on the current thread; test that the correct tccl is used
-		startCompositeBundle(compositeBundle, false);
-		assertEquals("Unexpected state", Bundle.ACTIVE, testTCCL.getState()); //$NON-NLS-1$
-
-		// test that the correct tccl is used for framework update
-		Framework framework = compositeBundle.getCompositeFramework();
-		try {
-			framework.update();
-			checkActive(testTCCL);
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Unexpected state", Bundle.ACTIVE, testTCCL.getState()); //$NON-NLS-1$
-
-		// test that the correct tccl is used for refresh packages
-		PackageAdmin pa = getPackageAdmin(compositeBundle.getCompositeFramework());
-		pa.refreshPackages(new Bundle[] {testTCCL});
-		checkActive(testTCCL);
-		assertEquals("Unexpected state", Bundle.ACTIVE, testTCCL.getState()); //$NON-NLS-1$
-
-		// use the tccl service to start the test bundle.
-		BundleContext context = compositeBundle.getCompositeFramework().getBundleContext();
-		ClassLoader serviceTCCL = null;
-		try {
-			serviceTCCL = (ClassLoader) context.getService(context.getServiceReferences(ClassLoader.class.getName(), "(equinox.classloader.type=contextClassLoader)")[0]);//$NON-NLS-1$
-		} catch (InvalidSyntaxException e) {
-			fail("Unexpected", e);//$NON-NLS-1$
-		}
-		ClassLoader current = Thread.currentThread().getContextClassLoader();
-		Thread.currentThread().setContextClassLoader(serviceTCCL);
-		try {
-			testTCCL.stop();
-			testTCCL.start();
-		} catch (BundleException e) {
-			fail("Unepected", e); //$NON-NLS-1$
-		} finally {
-			Thread.currentThread().setContextClassLoader(current);
-		}
-		// test that starting directly works
-		try {
-			testTCCL.stop();
-			testTCCL.start();
-		} catch (BundleException e) {
-			fail("Unepected", e); //$NON-NLS-1$
-		}
-		uninstallCompositeBundle(compositeBundle);
-	}
-
-	private void checkActive(Bundle b) {
-		try {
-			// just a hack to make sure we are restarted
-			Thread.sleep(500);
-			if (b.getState() != Bundle.ACTIVE)
-				Thread.sleep(500);
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	private boolean resolveBundle(Bundle framework, Bundle bundle) {
-		PackageAdmin pa = getPackageAdmin(framework);
-		return pa.resolveBundles(new Bundle[] {bundle});
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/AllTests.java
deleted file mode 100644
index 7a6d6eb..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/AllTests.java
+++ /dev/null
@@ -1,23 +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.osgi.tests.configuration;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllTests.class.getName());
-		suite.addTest(ReadOnlyConfigurationAreaTest.suite());
-		suite.addTest(MovableConfigurationAreaTest.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/MovableConfigurationAreaTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/MovableConfigurationAreaTest.java
deleted file mode 100644
index d147a33..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/MovableConfigurationAreaTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.configuration;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import junit.framework.*;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.tests.harness.*;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.osgi.tests.OSGiTest;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class MovableConfigurationAreaTest extends OSGiTest {
-
-	static void doMove(final IPath sourcePath, final IPath destinationPath) {
-		assertTrue("Failed moving " + sourcePath + " to " + destinationPath, sourcePath.toFile().renameTo(destinationPath.toFile()));
-	}
-
-	static void doTakeSnapshot(final IPath destinationPath) {
-		// compute and save tree image
-		File configurationDir = destinationPath.toFile();
-		FileSystemComparator comparator = new FileSystemComparator();
-		Object snapshot = comparator.takeSnapshot(configurationDir, true);
-		try {
-			comparator.saveSnapshot(snapshot, configurationDir);
-		} catch (IOException e) {
-			fail("1.0");
-		}
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(MovableConfigurationAreaTest.class.getName());
-
-		ConfigurationSessionTestSuite initialization = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, MovableConfigurationAreaTest.class.getName());
-		String[] ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET;
-		for (int i = 0; i < ids.length; i++)
-			initialization.addBundle(ids[i]);
-		initialization.addBundle(PI_OSGI_TESTS);
-		initialization.setReadOnly(true);
-		// disable clean-up, we want to reuse the configuration
-		initialization.setCleanup(false);
-		initialization.addTest(new MovableConfigurationAreaTest("testInitialization"));
-		suite.addTest(initialization);
-
-		// add a helper test that just moves the configuration area
-		final IPath sourcePath = initialization.getConfigurationPath();
-		final IPath destinationPath = FileSystemHelper.getRandomLocation(FileSystemHelper.getTempDir());
-		suite.addTest(new TestCase("testMove") {
-			public void runBare() throws Throwable {
-				doMove(sourcePath, destinationPath);
-			}
-		});
-		suite.addTest(new TestCase("testTakeSnapshot") {
-			public void runBare() throws Throwable {
-				doTakeSnapshot(destinationPath);
-			}
-		});
-
-		ConfigurationSessionTestSuite afterMoving = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, MovableConfigurationAreaTest.class.getName());
-		afterMoving.setConfigurationPath(destinationPath);
-		for (int i = 0; i < ids.length; i++)
-			afterMoving.addBundle(ids[i]);
-		afterMoving.setReadOnly(true);
-		// make sure we don't allow priming for the first run
-		afterMoving.setPrime(false);
-		afterMoving.addTest(new MovableConfigurationAreaTest("testAfterMoving"));
-		afterMoving.addTest(new MovableConfigurationAreaTest("testVerifySnapshot"));
-		suite.addTest(afterMoving);
-		return suite;
-	}
-
-	public MovableConfigurationAreaTest(String name) {
-		super(name);
-	}
-
-	/**
-	 * Tries to install a plug-in that has no manifest. Should fail because by default the manifest generation area
-	 * is under the configuration area (which is read-only here)
-	 */
-	public void testAfterMoving() throws MalformedURLException, IOException, BundleException {
-		// try to install plug-in
-		// ensure it is not installed		
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle(getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle02");
-			// should have failed with BundleException, does not have a bundle manifest
-			fail("1.0");
-		} catch (BundleException be) {
-			// success
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	public void testInitialization() throws MalformedURLException, IOException {
-		// initialization session		
-		try {
-			Bundle installed = BundleTestingHelper.installBundle("1.0", getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle01");
-			// not read-only yet, should work fine
-			if (!BundleTestingHelper.resolveBundles(getContext(), new Bundle[] {installed}))
-				fail("1.1");
-		} catch (BundleException be) {
-			fail("1.2", be);
-		}
-	}
-
-	public void testVerifySnapshot() throws IOException {
-		FileSystemComparator comparator = new FileSystemComparator();
-		File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir();
-		Object oldSnaphot = comparator.loadSnapshot(configurationDir);
-		Object newSnapshot = comparator.takeSnapshot(configurationDir, true);
-		comparator.compareSnapshots("1.0", oldSnaphot, newSnapshot);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/ReadOnlyConfigurationAreaTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/ReadOnlyConfigurationAreaTest.java
deleted file mode 100644
index 51a234f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/ReadOnlyConfigurationAreaTest.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.configuration;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import junit.framework.Test;
-import org.eclipse.core.tests.harness.BundleTestingHelper;
-import org.eclipse.core.tests.harness.FileSystemComparator;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.osgi.tests.OSGiTest;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class ReadOnlyConfigurationAreaTest extends OSGiTest {
-
-	public static Test suite() {
-		ConfigurationSessionTestSuite suite = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, ReadOnlyConfigurationAreaTest.class);
-		suite.setReadOnly(true);
-		String[] ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET;
-		for (int i = 0; i < ids.length; i++)
-			suite.addBundle(ids[i]);
-		suite.addBundle(PI_OSGI_TESTS);
-		return suite;
-	}
-
-	public ReadOnlyConfigurationAreaTest(String name) {
-		super(name);
-	}
-
-	public void test0thSession() throws MalformedURLException, IOException {
-		// initialization session		
-		try {
-			Bundle installed = BundleTestingHelper.installBundle("1.0", getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle01");
-			// not read-only yet, should work fine
-			if (!BundleTestingHelper.resolveBundles(getContext(), new Bundle[] {installed}))
-				fail("1.1");
-		} catch (BundleException be) {
-			fail("1.2", be);
-		}
-	}
-
-	/**
-	 * Takes a snapshot of the file system.
-	 */
-	public void test1stSession() {
-		// compute and save tree image
-		File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir();
-		FileSystemComparator comparator = new FileSystemComparator();
-		Object snapshot = comparator.takeSnapshot(configurationDir, true);
-		try {
-			comparator.saveSnapshot(snapshot, configurationDir);
-		} catch (IOException e) {
-			fail("1.0");
-		}
-	}
-
-	public void test1stSessionFollowUp() throws IOException {
-		FileSystemComparator comparator = new FileSystemComparator();
-		File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir();
-		Object oldSnaphot = comparator.loadSnapshot(configurationDir);
-		Object newSnapshot = comparator.takeSnapshot(configurationDir, true);
-		comparator.compareSnapshots("1.0", oldSnaphot, newSnapshot);
-	}
-
-	/**
-	 * Tries to install a plug-in that has no manifest. Should fail because by default the manifest generation area
-	 * is under the configuration area (which is read-only here)
-	 */
-	public void test2ndSession() throws BundleException, IOException {
-		// try to install plug-in
-		// ensure it is not installed		
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle(getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle02");
-			// should have failed with BundleException, does not have a bundle manifest
-			fail("1.0");
-		} catch (BundleException be) {
-			// success
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	public void test2ndSessionFollowUp() throws IOException {
-		FileSystemComparator comparator = new FileSystemComparator();
-		File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir();
-		Object oldSnaphot = comparator.loadSnapshot(configurationDir);
-		Object newSnapshot = comparator.takeSnapshot(configurationDir, true);
-		comparator.compareSnapshots("1.0", oldSnaphot, newSnapshot);
-	}
-
-	/**
-	 * Tries to install a plug-in that has manifest. Should fail because by default the manifest generation area
-	 * is under the configuration area (which is read-only here)
-	 */
-	public void test3rdSession() throws BundleException, IOException {
-		// install plug-in
-		// ensure it is not installed		
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle(getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "configuration/bundle03");
-			// should have failed - cannot install a bundle in read-only mode
-			fail("1.0");
-		} catch (BundleException be) {
-			// success 
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	public void test3rdSessionFollowUp() throws IOException {
-		FileSystemComparator comparator = new FileSystemComparator();
-		File configurationDir = ConfigurationSessionTestSuite.getConfigurationDir();
-		Object oldSnaphot = comparator.loadSnapshot(configurationDir);
-		Object newSnapshot = comparator.takeSnapshot(configurationDir, true);
-		comparator.compareSnapshots("1.0", oldSnaphot, newSnapshot);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/debugoptions/DebugOptionsTestCase.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/debugoptions/DebugOptionsTestCase.java
deleted file mode 100644
index c3a6b33..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/debugoptions/DebugOptionsTestCase.java
+++ /dev/null
@@ -1,1329 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.osgi.tests.debugoptions;
-
-import java.io.*;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.Map.Entry;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.framework.debug.FrameworkDebugTraceEntry;
-import org.eclipse.osgi.service.debug.*;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-
-public class DebugOptionsTestCase extends CoreTest {
-	public static Test suite() {
-		return new TestSuite(DebugOptionsTestCase.class);
-	}
-
-	DebugOptions debugOptions;
-	ServiceReference ref;
-	Dictionary props = null;
-	TestDebugOptionsListener listener = null;
-	ServiceRegistration reg = null;
-	private final static String TRACE_ELEMENT_DELIMITER = "|"; //$NON-NLS-1$ // this value needs to match EclipseDebugTrace#TRACE_ELEMENT_DELIMITER
-	private final static String TRACE_ELEMENT_DELIMITER_ENCODED = "&#124;"; //$NON-NLS-1$ // this value needs to match EclipseDebugTrace#TRACE_ELEMENT_DELIMITER_ENCODED
-	private final static SimpleDateFormat TRACE_FILE_DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); //$NON-NLS-1$
-	private final static String LINE_SEPARATOR;
-	private boolean verboseDebug = true; // default is true
-	static {
-		String s = System.getProperty("line.separator"); //$NON-NLS-1$
-		LINE_SEPARATOR = s == null ? "\n" : s; //$NON-NLS-1$
-	}
-	private final static String TAB_CHARACTER = "\t"; //$NON-NLS-1$
-
-	protected void setUp() throws Exception {
-		ref = OSGiTestsActivator.getContext().getServiceReference(DebugOptions.class.getName());
-		assertNotNull("DebugOptions service is not available", ref); //$NON-NLS-1$
-		debugOptions = (DebugOptions) OSGiTestsActivator.getContext().getService(ref);
-		assertNotNull("DebugOptions service is not available", debugOptions); //$NON-NLS-1$
-		props = new Hashtable();
-		props.put(DebugOptions.LISTENER_SYMBOLICNAME, getName());
-		listener = new TestDebugOptionsListener();
-		reg = OSGiTestsActivator.getContext().registerService(DebugOptionsListener.class.getName(), listener, props);
-	}
-
-	protected void tearDown() throws Exception {
-		if (debugOptions == null)
-			return;
-		debugOptions.setDebugEnabled(false);
-		debugOptions = null;
-		OSGiTestsActivator.getContext().ungetService(ref);
-		if (reg != null)
-			reg.unregister();
-	}
-
-	public void testRegistration01() {
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-	}
-
-	/**
-	 * Test that a new {@link FrameworkDebugTraceEntry} object created without a trace class
-	 * has 'org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase' as the class name and
-	 * 'testTracingEntry01' as the method name that it determined as the caller of it.
-	 * 
-	 * This test mimics the tracing framework to ensure that the correct class name and method name
-	 * are returned and written to the trace file.
-	 */
-	public void testTracingEntry01() {
-
-		String bundleName = OSGiTestsActivator.getContext().getBundle().getSymbolicName();
-		String optionPath = "/debug"; //$NON-NLS-1$
-		String message = "Test message"; //$NON-NLS-1$
-		FrameworkDebugTraceEntry traceEntry = new FrameworkDebugTraceEntry(bundleName, optionPath, message, null);
-		String correctClassName = "org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase"; //$NON-NLS-1$
-		String correctMethodName = "testTracingEntry01"; //$NON-NLS-1$
-		assertEquals("The class calling the trace API does not match the expected value.", correctClassName, traceEntry.getClassName()); //$NON-NLS-1$  
-		assertEquals("The method calling the trace API does not match the expected value.", correctMethodName, traceEntry.getMethodName()); //$NON-NLS-1$
-	}
-
-	/**
-	 * Test that a new {@link FrameworkDebugTraceEntry} object created with a trace class
-	 * of 'org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase' has the correct class name and
-	 * method name of the caller.
-	 * 
-	 * This test mimics the tracing framework to ensure that the correct class name and method name
-	 * are returned and written to the trace file.
-	 */
-	public void testTracingEntry02() {
-
-		String correctClassName = Runner1.class.getName();
-		String correctMethodName = "run"; //$NON-NLS-1$
-		FrameworkDebugTraceEntry traceEntry = new Runner1().run();
-		assertEquals("The class calling the trace API does not match the expected value.", correctClassName, traceEntry.getClassName()); //$NON-NLS-1$  
-		assertEquals("The method calling the trace API does not match the expected value.", correctMethodName, traceEntry.getMethodName()); //$NON-NLS-1$
-	}
-
-	static class Runner1 {
-		public FrameworkDebugTraceEntry run() {
-			return new Runner2().run();
-		}
-	}
-
-	static class Runner2 {
-		public FrameworkDebugTraceEntry run() {
-			String bundleName = OSGiTestsActivator.getContext().getBundle().getSymbolicName();
-			String optionPath = "/debug"; //$NON-NLS-1$
-			String message = "Test message"; //$NON-NLS-1$
-			String tracingClass = this.getClass().getName();
-			return new FrameworkDebugTraceEntry(bundleName, optionPath, message, tracingClass);
-		}
-	}
-
-	public void testDyanmicEnablement01() {
-		if (debugOptions.isDebugEnabled())
-			return; // cannot test
-		debugOptions.setDebugEnabled(true);
-		assertTrue("Debug is not enabled", debugOptions.isDebugEnabled()); //$NON-NLS-1$
-		listener.clear();
-		Map checkValues = new HashMap();
-		checkValues.put(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		listener.setCheckValues(checkValues);
-		debugOptions.setOption(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-		assertNull("Found bad value: " + listener.getIncorrectValue(), listener.getIncorrectValue()); //$NON-NLS-1$
-	}
-
-	public void testDyanmicEnablement02() {
-		if (debugOptions.isDebugEnabled())
-			return; // cannot test
-		debugOptions.setDebugEnabled(true);
-		assertTrue("Debug is not enabled", debugOptions.isDebugEnabled()); //$NON-NLS-1$
-		listener.clear();
-		Map checkValues = new HashMap();
-		checkValues.put(getName() + "/debug", "false"); //$NON-NLS-1$ //$NON-NLS-2$
-		listener.setCheckValues(checkValues);
-		debugOptions.setOption(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-		assertNotNull("Should find bad value: " + listener.getIncorrectValue(), listener.getIncorrectValue()); //$NON-NLS-1$
-	}
-
-	public void testDyanmicEnablement03() {
-		listener.clear();
-		if (debugOptions.isDebugEnabled())
-			return; // cannot test
-		TestDebugOptionsListener anotherListener = new TestDebugOptionsListener();
-		Dictionary anotherProps = new Hashtable();
-		anotherProps.put(DebugOptions.LISTENER_SYMBOLICNAME, "anotherListener"); //$NON-NLS-1$
-		ServiceRegistration anotherReg = OSGiTestsActivator.getContext().registerService(DebugOptionsListener.class.getName(), anotherListener, anotherProps);
-		assertTrue("Not called", anotherListener.gotCalled()); //$NON-NLS-1$
-
-		debugOptions.setDebugEnabled(true);
-		assertTrue("Debug is not enabled", debugOptions.isDebugEnabled()); //$NON-NLS-1$
-
-		listener.clear();
-		anotherListener.clear();
-
-		Map checkValues = new HashMap();
-		checkValues.put(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		listener.setCheckValues(checkValues);
-		debugOptions.setOption(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertFalse("Should not call wrong listener", anotherListener.gotCalled()); //$NON-NLS-1$
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-		assertNull("Found bad value: " + listener.getIncorrectValue(), listener.getIncorrectValue()); //$NON-NLS-1$
-		listener.clear();
-		anotherListener.clear();
-		debugOptions.setOption("anotherListener/test", "blah"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertFalse("Listener should not have been called", listener.gotCalled()); //$NON-NLS-1$
-		assertTrue("Another listener should have been called", anotherListener.gotCalled()); //$NON-NLS-1$
-
-		listener.clear();
-		anotherListener.clear();
-		anotherProps.put(DebugOptions.LISTENER_SYMBOLICNAME, getName());
-		anotherReg.setProperties(anotherProps);
-		debugOptions.setOption(getName() + "/debug", "false"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-		assertTrue("Another listener did not get called", anotherListener.gotCalled()); //$NON-NLS-1$
-
-		anotherReg.unregister();
-	}
-
-	public void testDyanmicEnablement04() {
-		if (debugOptions.isDebugEnabled())
-			return; // cannot test
-		debugOptions.setDebugEnabled(true);
-		listener.clear();
-		assertTrue("Debug is not enabled", debugOptions.isDebugEnabled()); //$NON-NLS-1$
-		Map checkValues = new HashMap();
-		checkValues.put(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		listener.setCheckValues(checkValues);
-		debugOptions.setOption(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-		assertNull("Found bad value: " + listener.getIncorrectValue(), listener.getIncorrectValue()); //$NON-NLS-1$
-
-		listener.clear();
-		checkValues.put(getName() + "/debug", null); //$NON-NLS-1$ 
-		listener.setCheckValues(checkValues);
-		debugOptions.setDebugEnabled(false);
-		assertFalse("Debug is enabled", debugOptions.isDebugEnabled()); //$NON-NLS-1$
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-		assertNull("Found bad value: " + listener.getIncorrectValue(), listener.getIncorrectValue()); //$NON-NLS-1$
-
-		listener.clear();
-		checkValues.put(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		listener.setCheckValues(checkValues);
-		debugOptions.setDebugEnabled(true);
-		assertTrue("Debug is not enabled", debugOptions.isDebugEnabled()); //$NON-NLS-1$
-		assertTrue("Listener did not get called", listener.gotCalled()); //$NON-NLS-1$
-		assertNull("Found bad value: " + listener.getIncorrectValue(), listener.getIncorrectValue()); //$NON-NLS-1$
-
-	}
-
-	public void testBatchSetOptionsWhenEnabled() {
-
-		if (!debugOptions.isDebugEnabled()) {
-			debugOptions.setDebugEnabled(true);
-		}
-		String key1 = getName() + "/debug/disableCheck1";
-		String key2 = getName() + "/debug/disableCheck2";
-		String key3 = getName() + "/debug/disableCheck3";
-		Map /* <String, String> */newOptions = new HashMap();
-		newOptions.put(key1, "ok1");
-		newOptions.put(key2, "ok2");
-		newOptions.put(key3, "ok3");
-		// create the new set of options
-		listener.clear();
-		// create the new set of options
-		debugOptions.setOptions(newOptions);
-		// make sure the listener got called
-		assertTrue("Listener did not get called when setting batch options when tracing is enabled", listener.gotCalled()); //$NON-NLS-1$
-		// get all of the options
-		Map/* <String, String> */currentOptions = debugOptions.getOptions();
-		// make sure the Map object returned is not the same Map object that was set
-		assertNotSame("The Map object set is the exact same Map object returned", newOptions, currentOptions);
-		// make sure the size is correct (it should be the same as the original Map)
-		assertEquals("The amount of options retrieved is not correct", newOptions.size(), currentOptions.size());
-		// make sure the values are correct
-		String actualValue = (String) currentOptions.get(key1);
-		assertEquals("The original option for key1 does not match the retrieved option when tracing is enabled", "ok1", actualValue);
-		actualValue = (String) currentOptions.get(key2);
-		assertEquals("The original option for key1 does not match the retrieved option when tracing is enabled", "ok2", actualValue);
-		actualValue = (String) currentOptions.get(key3);
-		assertEquals("The original option for key1 does not match the retrieved option when tracing is enabled", "ok3", actualValue);
-		// add a new batch of options
-		String key4 = getName() + "/debug/disableCheck4";
-		String key5 = getName() + "/debug/disableCheck5";
-		String key6 = getName() + "/debug/disableCheck6";
-		Map /* <String, String> */newOptions2 = new HashMap();
-		newOptions2.put(key4, "ok4");
-		newOptions2.put(key5, "ok5");
-		newOptions2.put(key6, "ok6");
-		listener.clear();
-		// create the new set of options
-		debugOptions.setOptions(newOptions2);
-		// make sure the listener got called
-		assertTrue("Listener did not get called when setting batch options when tracing is enabled", listener.gotCalled()); //$NON-NLS-1$
-		// make sure the Map object returned is not the same Map object that was set
-		Map currentOptions2 = debugOptions.getOptions();
-		assertNotSame("The Map object set is the exact same Map object returned", newOptions, currentOptions2);
-		// make sure the size is correct (it should be the same as the original Map)
-		assertEquals("The amount of options retrieved is not correct", newOptions.size(), currentOptions2.size());
-		// make sure the old values do not exist
-		actualValue = (String) currentOptions2.get(key1);
-		assertNull("The original option for key1 is in the returned options (it should not be there)", actualValue);
-		actualValue = (String) currentOptions2.get(key2);
-		assertNull("The original option for key2 is in the returned options (it should not be there)", actualValue);
-		actualValue = (String) currentOptions2.get(key3);
-		assertNull("The original option for key3 is in the returned options (it should not be there)", actualValue);
-		// make sure the new values are correct
-		actualValue = (String) currentOptions2.get(key4);
-		assertEquals("The new option for key4 does not match the retrieved option when tracing is enabled", "ok4", actualValue);
-		actualValue = (String) currentOptions2.get(key5);
-		assertEquals("The new option for key5 does not match the retrieved option when tracing is enabled", "ok5", actualValue);
-		actualValue = (String) currentOptions2.get(key6);
-		assertEquals("The new option for key6 does not match the retrieved option when tracing is enabled", "ok6", actualValue);
-	}
-
-	public void testSetNullOptions() {
-
-		// make sure setOptions() doesn't like an empty Map
-		boolean exceptionThrown = false;
-		try {
-			debugOptions.setOptions(null);
-		} catch (Exception ex) {
-			exceptionThrown = true;
-		}
-		assertTrue("An exception was not thrown when calling setOptions() with a null parameter", exceptionThrown);
-		// make sure setOption(key,value) doesn't like a null key or value
-		exceptionThrown = false;
-		try {
-			debugOptions.setOption("key", null);
-		} catch (Exception ex) {
-			exceptionThrown = true;
-		}
-		assertTrue("An exception was not thrown when calling setOption() with a null value", exceptionThrown);
-		exceptionThrown = false;
-		try {
-			debugOptions.setOption(null, "value");
-		} catch (Exception ex) {
-			exceptionThrown = true;
-		}
-		assertTrue("An exception was not thrown when calling setOption() with a null key", exceptionThrown);
-	}
-
-	public void testBatchSetOptionsWhenDisabled() {
-
-		// enable tracing initially.
-		if (!debugOptions.isDebugEnabled()) {
-			debugOptions.setDebugEnabled(true);
-		}
-
-		String key1 = getName() + "/debug/disableCheck1";
-		String key2 = getName() + "/debug/disableCheck2";
-		String key3 = getName() + "/debug/disableCheck3";
-		Map /* <String, String> */newOptions = new HashMap();
-		newOptions.put(key1, "ok1");
-		newOptions.put(key2, "ok2");
-		newOptions.put(key3, "ok3");
-		listener.clear();
-		// create the new set of options
-		debugOptions.setOptions(newOptions);
-		// make sure the listener got called
-		assertTrue("Listener did not get called when setting batch options when tracing is enabled", listener.gotCalled()); //$NON-NLS-1$
-		// disable tracing
-		debugOptions.setDebugEnabled(false);
-		// get all of the options (should be the disabled option set - which should contain only the recently set options)
-		Map currentOptions = debugOptions.getOptions();
-		// make sure the Map returned is not the same Map object that was set
-		assertNotSame("The Map object retrieved is the exact same Map object returned when tracing is disabled.", newOptions, currentOptions);
-		// make sure the size is correct (it should be the same as the original Map)
-		assertEquals("The amount of options retrieved is not the same after tracing is disabled", newOptions.size(), currentOptions.size());
-		// make sure the values are correct - check key1
-		String actualValue = (String) currentOptions.get(key1);
-		assertNotNull("The value for key1 is null", actualValue);
-		assertEquals("The original option for key1 does not match the retrieved option when tracing is disabled", "ok1", actualValue);
-		// check key2
-		actualValue = (String) currentOptions.get(key2);
-		assertNotNull("The value for key2 is null", actualValue);
-		assertEquals("The original option for key2 does not match the retrieved option when tracing is disabled", "ok2", actualValue);
-		// check key3
-		actualValue = (String) currentOptions.get(key3);
-		assertNotNull("The value for key3 is null", actualValue);
-		assertEquals("The original option for key3 does not match the retrieved option when tracing is disabled", "ok3", actualValue);
-		// add a new batch of options when tracing is disabled
-		String key4 = getName() + "/debug/disableCheck4";
-		String key5 = getName() + "/debug/disableCheck5";
-		String key6 = getName() + "/debug/disableCheck6";
-		Map /* <String, String> */newOptions2 = new HashMap();
-		newOptions2.put(key4, "ok4");
-		newOptions2.put(key5, "ok5");
-		newOptions2.put(key6, "ok6");
-		listener.clear();
-		// create the new set of options
-		debugOptions.setOptions(newOptions2);
-		// make sure the listener did not get called
-		assertFalse("Listener got called when settings batch options with tracing disabled", listener.gotCalled()); //$NON-NLS-1$
-		// make sure the Map object returned is not the same Map object that was set
-		Map currentOptions2 = debugOptions.getOptions();
-		assertNotSame("The Map object set is the exact same Map object returned", newOptions, currentOptions2);
-		// make sure the size is correct (it should be the same as the original Map)
-		assertEquals("The amount of options retrieved is not correct", newOptions.size(), currentOptions2.size());
-		// make sure the old values do not exist
-		actualValue = (String) currentOptions2.get(key1);
-		assertNull("The original option for key1 is in the returned options (it should not be there)", actualValue);
-		actualValue = (String) currentOptions2.get(key2);
-		assertNull("The original option for key2 is in the returned options (it should not be there)", actualValue);
-		actualValue = (String) currentOptions2.get(key3);
-		assertNull("The original option for key3 is in the returned options (it should not be there)", actualValue);
-		// make sure the new values are correct
-		actualValue = (String) currentOptions2.get(key4);
-		assertEquals("The new option for key4 does not match the retrieved option when tracing is disabled", "ok4", actualValue);
-		actualValue = (String) currentOptions2.get(key5);
-		assertEquals("The new option for key5 does not match the retrieved option when tracing is disabled", "ok5", actualValue);
-		actualValue = (String) currentOptions2.get(key6);
-		assertEquals("The new option for key6 does not match the retrieved option when tracing is disabled", "ok6", actualValue);
-		// testing of options when tracing is re-enabled is done in testSetOptionsWhenDisabled so it is not needed here
-	}
-
-	public void testSetOptionsWhenDisabled() {
-
-		// enable tracing initially.
-		if (!debugOptions.isDebugEnabled()) {
-			debugOptions.setDebugEnabled(true);
-		}
-		// create a new key to add.
-		String testKey = getName() + "/debug/disableCheck";
-		// set its value to 'ok'
-		debugOptions.setOption(testKey, "ok");
-		// make sure the right value is added
-		String actualValue = debugOptions.getOption(testKey, "not ok");
-		assertEquals("The correct option value was not returned from the debug option: " + testKey, "ok", actualValue);
-		// disable tracing
-		debugOptions.setDebugEnabled(false);
-		// check for the value
-		actualValue = debugOptions.getOption(testKey, "not ok");
-		assertEquals("The 'default' value supplied was not returned when tracing is disabled.", "not ok", actualValue);
-		// try setting the value to "ok" (this should be a no-op and return the 'default' value)
-		debugOptions.setOption(testKey, "ok");
-		actualValue = debugOptions.getOption(testKey, "not ok");
-		assertEquals("The 'default' value supplied was not returned when tracing is disabled.", "not ok", actualValue);
-		// remove the option and check for the value (it should still exist after re-enabling tracing)
-		debugOptions.removeOption(testKey);
-		// re-enable tracing
-		debugOptions.setDebugEnabled(true);
-		// check that the value is still the initial "ok"
-		actualValue = debugOptions.getOption(testKey, "not ok");
-		assertEquals("The value after re-enabling tracing is invalid.", "ok", actualValue);
-	}
-
-	public void testStringValues() {
-
-		if (!debugOptions.isDebugEnabled()) {
-			debugOptions.setDebugEnabled(true);
-		}
-		// create a new key to add.
-		String testKey = getName() + "/debug/stringValue";
-		// set its value to 'test'
-		debugOptions.setOption(testKey, "test");
-		// check to make sure the value returned is correct
-		String actualValue = debugOptions.getOption(testKey, "default");
-		assertEquals("The correct option value was not returned from the debug option: " + testKey, "test", actualValue);
-		// remove the option and check for the value (it should not exist so the default value should be returned)
-		debugOptions.removeOption(testKey);
-		actualValue = debugOptions.getOption(testKey, "default");
-		assertEquals("The 'default' value supplied was not returned when the key does not exist in the DebugOptions.", "default", actualValue);
-	}
-
-	public void testIntegerValues() {
-
-		if (!debugOptions.isDebugEnabled()) {
-			debugOptions.setDebugEnabled(true);
-		}
-		// create a new key to add.
-		String testKey = getName() + "/debug/intValue";
-		// set its value to 42.
-		debugOptions.setOption(testKey, "42");
-		// check to make sure the value returned is correct
-		int actualValue = debugOptions.getIntegerOption(testKey, 0);
-		assertEquals("The correct option value was not returned from the debug option: " + testKey, 42, actualValue);
-		// set the value of this key so that a NumberFormatException will occur
-		debugOptions.setOption(testKey, "test");
-		actualValue = debugOptions.getIntegerOption(testKey, 0);
-		assertEquals("The 'default' value supplied was not returned when a NumberFormatException occurs.", 0, actualValue);
-		// remove the option and check for the value (it should not exist so the default value should be returned)
-		debugOptions.removeOption(testKey);
-		actualValue = debugOptions.getIntegerOption(testKey, 0);
-		assertEquals("The 'default' value supplied was not returned when the key does not exist in the DebugOptions.", 0, actualValue);
-	}
-
-	public void testBooleanValues() {
-		if (!debugOptions.isDebugEnabled()) {
-			debugOptions.setDebugEnabled(true);
-		}
-		String testKey = getName() + "/debug";
-		boolean testValue = debugOptions.getBooleanOption(testKey, false);
-		assertFalse(testKey + " is true", testValue);
-		debugOptions.setOption(testKey, "false");
-		testValue = debugOptions.getBooleanOption(testKey, true);
-		assertFalse(testKey + " is true", testValue);
-
-		debugOptions.setOption(testKey, "true");
-		testValue = debugOptions.getBooleanOption(testKey, false);
-		assertTrue(testKey + " is false", testValue);
-		testValue = debugOptions.getBooleanOption(testKey, true);
-		assertTrue(testKey + " is false", testValue);
-	}
-
-	private TestDebugTrace createDebugTrace(final File traceFile) {
-
-		TestDebugTrace debugTrace = null;
-		if (!debugOptions.isDebugEnabled()) {
-			/** Setup the DebugOptions */
-			debugOptions.setDebugEnabled(true);
-			assertTrue("Debug is not enabled", debugOptions.isDebugEnabled()); //$NON-NLS-1$
-		}
-		debugOptions.setOption(getName() + "/debug", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-		debugOptions.setFile(traceFile);
-		DebugTrace wrapped = debugOptions.newDebugTrace(getName(), TestDebugTrace.class);
-		debugTrace = new TestDebugTrace(wrapped);
-		return debugTrace;
-	}
-
-	/**
-	 * Test all DebugTrace.trace*() API when verbose debugging is disabled
-	 */
-	public void testVerboseDebugging() {
-
-		// TODO: Convert this back to {@link DebugOptions} once is/setVerbose becomes API
-		FrameworkDebugOptions fwDebugOptions = (FrameworkDebugOptions) debugOptions;
-		if (!debugOptions.isDebugEnabled()) {
-			debugOptions.setDebugEnabled(true);
-		}
-		// create a tracing record
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		final String exceptionMessage1 = "An error 1"; //$NON-NLS-1$
-		try {
-			fwDebugOptions.setVerbose(false);
-			debugTrace.trace("/debug", "testing 1", new Exception(exceptionMessage1)); //$NON-NLS-1$ //$NON-NLS-2$
-			fwDebugOptions.setVerbose(true);
-			debugTrace.trace("/debug", "testing 2"); //$NON-NLS-1$ //$NON-NLS-2$
-			fwDebugOptions.setVerbose(false);
-			debugTrace.trace("/debug", "testing 3"); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.traceEntry("/debug"); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.traceEntry("/debug", "arg"); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.traceEntry("/debug", new String[] {"arg1", "arg2"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			debugTrace.traceExit("/debug"); //$NON-NLS-1$
-			debugTrace.traceExit("/debug", "returnValue"); //$NON-NLS-1$ //$NON-NLS-2$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.trace(option, message)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		// make sure all 3 entries exist
-		assertEquals("Wrong number of trace entries", 8, traceOutput.length); //$NON-NLS-1$
-		// validate the trace("/debug", "testing 1", new Exception(exceptionMessage1)) call when verbose tracing is disabled
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertNull("A bundle was found when it should be null", traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertNull("A class name was found when it should be null", traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertNull("A method name was found when it should be null", traceOutput[0].getMethodName()); //$NON-NLS-1$
-		assertTrue("A line number other than -1 was read in", traceOutput[0].getLineNumber() == -1); //$NON-NLS-1$
-		assertEquals("trace message is incorrect", "testing 1", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		final StringBuffer expectedThrowableText1 = new StringBuffer("java.lang.Exception: "); //$NON-NLS-1$
-		expectedThrowableText1.append(exceptionMessage1);
-		expectedThrowableText1.append(DebugOptionsTestCase.LINE_SEPARATOR);
-		expectedThrowableText1.append(DebugOptionsTestCase.TAB_CHARACTER);
-		expectedThrowableText1.append("at org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase.testVerboseDebugging(DebugOptionsTestCase.java:"); //$NON-NLS-1$		
-		if (!traceOutput[0].getThrowableText().startsWith(expectedThrowableText1.toString())) {
-			final StringBuffer errorMessage = new StringBuffer("The expected throwable text does not start with the actual throwable text."); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("Expected"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("--------"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(expectedThrowableText1.toString());
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("Actual"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("--------"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(traceOutput[0].getThrowableText());
-			fail(errorMessage.toString());
-		}
-		// validate the trace("/debug", "testing 2") call when verbose tracing is re-enabled
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testVerboseDebugging", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("trace message is incorrect", "testing 2", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("The throwable text was found when it should be null", traceOutput[1].getThrowableText());
-		// validate the trace("/debug", "testing 3") call when verbose is disabled
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[2].getThreadName()); //$NON-NLS-1$
-		assertNull("A bundle was found when it should be null", traceOutput[2].getBundleSymbolicName()); //$NON-NLS-1$
-		assertNull("A class name was found when it should be null", traceOutput[2].getClassName()); //$NON-NLS-1$
-		assertNull("A method name was found when it should be null", traceOutput[2].getMethodName()); //$NON-NLS-1$
-		assertTrue("A line number other than -1 was read in", traceOutput[2].getLineNumber() == -1); //$NON-NLS-1$
-		assertEquals("trace message is incorrect", "testing 3", traceOutput[2].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("The throwable text was found when it should be null", traceOutput[2].getThrowableText());
-		// validate the traceEntry("/debug") call when verbose is disabled
-		assertEquals("trace message is incorrect", "Entering method org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase#testVerboseDebugging with no parameters", traceOutput[3].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		// validate the traceEntry("/debug", "arg") call when verbose is disabled
-		assertEquals("trace message is incorrect", "Entering method org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase#testVerboseDebugging with parameters: (arg)", traceOutput[4].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		// validate the traceEntry("/debug", new String[] {"arg1", "arg2"}) call when verbose is disabled
-		assertEquals("trace message is incorrect", "Entering method org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase#testVerboseDebugging with parameters: (arg1 arg2)", traceOutput[5].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		// validate the traceExit("/debug") call when verbose is disabled
-		assertEquals("trace message is incorrect", "Exiting method org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase#testVerboseDebugging with a void return", traceOutput[6].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		// validate the traceExit("/debug", "returnValue") call when verbose is disabled
-		assertEquals("trace message is incorrect", "Exiting method org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase#testVerboseDebugging with result: returnValue", traceOutput[7].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		// make sure the file is deleted
-		traceFile.delete();
-		// reset verbose debugging to the default (true)
-		fwDebugOptions.setVerbose(true);
-	}
-
-	/**
-	 * test DebugTrace.trace(option, message);
-	*/
-	public void testTraceFile01() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.trace("/debug", "testing 1"); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.trace("/notset", "testing 2"); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.trace("/debug", "testing 3"); //$NON-NLS-1$ //$NON-NLS-2$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.trace(option, message)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile01", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("trace message is incorrect", "testing 1", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile01", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("trace message is incorrect", "testing 3", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * test DebugTrace.trace(option, message, Throwable)
-	 */
-	public void testTraceFile02() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		final String exceptionMessage1 = "An error 1"; //$NON-NLS-1$
-		final String exceptionMessage2 = "An error 2"; //$NON-NLS-1$
-		final String exceptionMessage3 = "An error 3"; //$NON-NLS-1$
-		try {
-			debugTrace.trace("/debug", "testing 1", new Exception(exceptionMessage1)); //$NON-NLS-1$ //$NON-NLS-2$ 
-			debugTrace.trace("/notset", "testing 2", new Exception(exceptionMessage2)); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.trace("/debug", "testing 3", new Exception(exceptionMessage3)); //$NON-NLS-1$ //$NON-NLS-2$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.trace(option, message, Throwable)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		final StringBuffer expectedThrowableText1 = new StringBuffer("java.lang.Exception: "); //$NON-NLS-1$
-		expectedThrowableText1.append(exceptionMessage1);
-		expectedThrowableText1.append(DebugOptionsTestCase.LINE_SEPARATOR);
-		expectedThrowableText1.append(DebugOptionsTestCase.TAB_CHARACTER);
-		expectedThrowableText1.append("at org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase.testTraceFile02(DebugOptionsTestCase.java:"); //$NON-NLS-1$		
-
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile02", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("trace message is incorrect", "testing 1", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNotNull("throwable text should not be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		if (!traceOutput[0].getThrowableText().startsWith(expectedThrowableText1.toString())) {
-			final StringBuffer errorMessage = new StringBuffer("The expected throwable text does not start with the actual throwable text."); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("Expected"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("--------"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(expectedThrowableText1.toString());
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("Actual"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("--------"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(traceOutput[0].getThrowableText());
-			fail(errorMessage.toString());
-		}
-		assertNotNull("throwable should not be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-
-		final StringBuffer expectedThrowableText2 = new StringBuffer("java.lang.Exception: "); //$NON-NLS-1$
-		expectedThrowableText2.append(exceptionMessage3);
-		expectedThrowableText2.append(DebugOptionsTestCase.LINE_SEPARATOR);
-		expectedThrowableText2.append(DebugOptionsTestCase.TAB_CHARACTER);
-		expectedThrowableText2.append("at org.eclipse.osgi.tests.debugoptions.DebugOptionsTestCase.testTraceFile02(DebugOptionsTestCase.java:"); //$NON-NLS-1$		
-
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile02", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("trace message is incorrect", "testing 3", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNotNull("throwable text should not be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		if (!traceOutput[1].getThrowableText().startsWith(expectedThrowableText2.toString())) {
-			final StringBuffer errorMessage = new StringBuffer("The expected throwable text does not start with the actual throwable text."); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("Expected"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("--------"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(expectedThrowableText2.toString());
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("Actual"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append("--------"); //$NON-NLS-1$
-			errorMessage.append(DebugOptionsTestCase.LINE_SEPARATOR);
-			errorMessage.append(traceOutput[1].getThrowableText());
-			fail(errorMessage.toString());
-		}
-		assertNotNull("throwable should not be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * test DebugTrace.traceDumpStack(option)
-	*/
-	public void testTraceFile03() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.traceDumpStack("/debug"); //$NON-NLS-1$
-			debugTrace.traceDumpStack("/notset"); //$NON-NLS-1$
-			debugTrace.traceDumpStack("/debug"); //$NON-NLS-1$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.traceDumpStack(option)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile03", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("Trace message is not a stack dump", traceOutput[0].getMessage().startsWith("Thread Stack dump: ")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile03", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("Trace message is not a stack dump", traceOutput[1].getMessage().startsWith("Thread Stack dump: ")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * test DebugTrace.traceEntry(option)
-	*/
-	public void testTraceFile04() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.traceEntry("/debug"); //$NON-NLS-1$
-			debugTrace.traceEntry("/notset"); //$NON-NLS-1$
-			debugTrace.traceEntry("/debug"); //$NON-NLS-1$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.traceEntry(option)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile04", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Entering method with no parameters", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile04", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Entering method with no parameters", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * test DebugTrace.traceEntry(option, methodArgument)
-	 */
-	public void testTraceFile05() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.traceEntry("/debug", new String("arg1")); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.traceEntry("/notset", new String("arg2")); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.traceEntry("/debug", new String("arg3")); //$NON-NLS-1$ //$NON-NLS-2$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.traceEntry(option, methodArgument)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile05", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Entering method with parameters: (arg1)", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile05", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Entering method with parameters: (arg3)", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * test DebugTrace.traceEntry(option, methodArgument[])
-	 */
-	public void testTraceFile06() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.traceEntry("/debug", new String[] {"arg1", "arg2"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			debugTrace.traceEntry("/notset", new String[] {"arg3", "arg4"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			debugTrace.traceEntry("/debug", new String[] {"arg5", "arg6"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.traceEntry(option, methodArgument[])' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile06", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Entering method with parameters: (arg1 arg2)", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile06", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Entering method with parameters: (arg5 arg6)", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * test DebugTrace.traceExit(option)
-	*/
-	public void testTraceFile07() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.traceExit("/debug"); //$NON-NLS-1$
-			debugTrace.traceExit("/notset"); //$NON-NLS-1$
-			debugTrace.traceExit("/debug"); //$NON-NLS-1$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.traceExit(option)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile07", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Exiting method with a void return", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile07", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Exiting method with a void return", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * test DebugTrace.traceExit(option, result)
-	*/
-	public void testTraceFile08() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.traceExit("/debug", new String("returnValue1")); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.traceExit("/notset", new String("returnValue2")); //$NON-NLS-1$ //$NON-NLS-2$
-			debugTrace.traceExit("/debug", new String("returnValue3")); //$NON-NLS-1$ //$NON-NLS-2$
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.traceExit(option, result)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of trace entries", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[0].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[0].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[0].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[0].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile08", traceOutput[0].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Exiting method with result: returnValue1", traceOutput[0].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[0].getThrowableText()); //$NON-NLS-1$
-		assertEquals("Wrong number of trace entries for trace without an exception", 2, traceOutput.length); //$NON-NLS-1$
-		assertEquals("Thread name is incorrect", Thread.currentThread().getName(), traceOutput[1].getThreadName()); //$NON-NLS-1$
-		assertEquals("Bundle name is incorrect", getName(), traceOutput[1].getBundleSymbolicName()); //$NON-NLS-1$
-		assertEquals("option-path value is incorrect", "/debug", traceOutput[1].getOptionPath()); //$NON-NLS-1$//$NON-NLS-2$
-		assertEquals("class name value is incorrect", DebugOptionsTestCase.class.getName(), traceOutput[1].getClassName()); //$NON-NLS-1$
-		assertEquals("method name value is incorrect", "testTraceFile08", traceOutput[1].getMethodName()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "Exiting method with result: returnValue3", traceOutput[1].getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNull("throwable should be null", traceOutput[1].getThrowableText()); //$NON-NLS-1$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	/**
-	 * tests DebugTrace.trace(option, message) where the 'option' and 'message contain a '|' character (the delimiter).
-	*/
-	public void testTraceFile09() {
-
-		final File traceFile = OSGiTestsActivator.getContext().getDataFile(getName() + ".trace"); //$NON-NLS-1$
-		TestDebugTrace debugTrace = this.createDebugTrace(traceFile);
-		debugOptions.setOption(getName() + "/debug|path", "true");
-		TraceEntry[] traceOutput = null;
-		try {
-			debugTrace.trace("/debug|path", "A message with a | character.");
-			debugTrace.trace("/debug|path", "|A message with | multiple || characters.|");
-			traceOutput = readTraceFile(traceFile); // Note: this call will also delete the trace file
-		} catch (InvalidTraceEntry invalidEx) {
-			fail("Failed 'DebugTrace.trace(option, message)' test as an invalid trace entry was found.  Actual Value: '" + invalidEx.getActualValue() + "'.", invalidEx); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		assertEquals("Wrong number of entries", 2, traceOutput.length);
-		String optionPath = decodeString(traceOutput[0].getOptionPath());
-		String message = decodeString(traceOutput[0].getMessage());
-		assertEquals("option-path value is incorrect", "/debug|path", optionPath); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "A message with a | character.", message); //$NON-NLS-1$ //$NON-NLS-2$
-		optionPath = decodeString(traceOutput[1].getOptionPath());
-		message = decodeString(traceOutput[1].getMessage());
-		assertEquals("option-path value is incorrect", "/debug|path", optionPath); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Trace message is not correct", "|A message with | multiple || characters.|", message); //$NON-NLS-1$ //$NON-NLS-2$
-		// delete the trace file
-		traceFile.delete();
-	}
-
-	private static String decodeString(final String inputString) {
-		if (inputString == null || inputString.indexOf(TRACE_ELEMENT_DELIMITER_ENCODED) < 0)
-			return inputString;
-		final StringBuffer tempBuffer = new StringBuffer(inputString);
-		int currentIndex = tempBuffer.indexOf(TRACE_ELEMENT_DELIMITER_ENCODED);
-		while (currentIndex >= 0) {
-			tempBuffer.replace(currentIndex, currentIndex + TRACE_ELEMENT_DELIMITER_ENCODED.length(), TRACE_ELEMENT_DELIMITER);
-			currentIndex = tempBuffer.indexOf(TRACE_ELEMENT_DELIMITER_ENCODED);
-		}
-		return tempBuffer.toString();
-	}
-
-	private TraceEntry[] readTraceFile(File traceFile) throws InvalidTraceEntry {
-
-		BufferedReader traceReader = null;
-		List traceEntries = new ArrayList();
-		this.verboseDebug = true; // default is true
-		try {
-			traceReader = new BufferedReader(new InputStreamReader(new FileInputStream(traceFile), "UTF-8")); //$NON-NLS-1$
-			TraceEntry entry = null;
-			while ((entry = this.readMessage(traceReader)) != null) {
-				traceEntries.add(entry);
-			}
-		} catch (IOException ex) {
-			fail("Failed to read trace file", ex); //$NON-NLS-1$
-		} finally {
-			if (traceReader != null) {
-				try {
-					traceReader.close();
-				} catch (Exception ex) {
-					// do nothing
-				}
-			}
-		}
-		return (TraceEntry[]) traceEntries.toArray(new TraceEntry[traceEntries.size()]);
-	}
-
-	private TraceEntry readMessage(final BufferedReader traceReader) throws IOException, InvalidTraceEntry {
-
-		TraceEntry result = null;
-		int input = traceReader.read();
-		while (input != -1) {
-			char inputChar = (char) input;
-			if (inputChar == '#') {
-				String comment = traceReader.readLine();
-				if (comment != null) {
-					comment = comment.trim();
-				}
-				if (comment.startsWith("verbose")) {
-					int splitIndex = comment.indexOf(':');
-					String verboseValue = comment.substring(splitIndex + 1, comment.length()).trim();
-					this.verboseDebug = Boolean.valueOf(verboseValue).booleanValue();
-				}
-			}
-			if (inputChar == DebugOptionsTestCase.TRACE_ELEMENT_DELIMITER.charAt(0)) {
-				// first entry - thread name (valid if verbose debugging is off)
-				final String threadName = this.readEntry(traceReader);
-				if ((threadName == null) || (threadName.length() == 0)) {
-					throw new InvalidTraceEntry("The thread name in a trace entry is null or empty", threadName); //$NON-NLS-1$
-				}
-				// second entry - timestamp (valid if verbose debugging is off)
-				final String date = this.readEntry(traceReader);
-				if ((date == null) || (date.length() == 0)) {
-					throw new InvalidTraceEntry("The timestamp in a trace entry is null or empty", date); //$NON-NLS-1$
-				}
-				long timestamp = 0;
-				try {
-					timestamp = DebugOptionsTestCase.TRACE_FILE_DATE_FORMATTER.parse(date).getTime();
-				} catch (ParseException parseEx) {
-					throw new InvalidTraceEntry("The date in a trace entry '" + date + "' could not be parsed.", date); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				String symbolicName = null;
-				String optionPath = null;
-				String className = null;
-				String methodName = null;
-				int lineNumber = -1;
-				if (this.verboseDebug) {
-					// third entry - bundle symbolic name
-					symbolicName = this.readEntry(traceReader);
-					if ((symbolicName == null) || (symbolicName.length() == 0)) {
-						throw new InvalidTraceEntry("The bundle symbolic name in a trace entry is null or empty", symbolicName); //$NON-NLS-1$
-					}
-					// fourth entry - option path
-					optionPath = this.readEntry(traceReader);
-					if ((optionPath == null) || (optionPath.length() == 0)) {
-						throw new InvalidTraceEntry("The option-path in a trace entry is null or empty", optionPath); //$NON-NLS-1$
-					}
-					// fifth entry - class name
-					className = this.readEntry(traceReader);
-					if ((className == null) || (className.length() == 0)) {
-						throw new InvalidTraceEntry("The class name in a trace entry is null or empty", className); //$NON-NLS-1$
-					}
-					// sixth entry - method name
-					methodName = this.readEntry(traceReader);
-					if ((methodName == null) || (methodName.length() == 0)) {
-						throw new InvalidTraceEntry("The method name in a trace entry is null or empty", methodName); //$NON-NLS-1$
-					}
-					// seventh entry - line number
-					final String lineNumberString = this.readEntry(traceReader);
-					if ((lineNumberString == null) || (lineNumberString.length() == 0)) {
-						throw new InvalidTraceEntry("The line number in a trace entry is null or empty", lineNumberString); //$NON-NLS-1$
-					}
-					lineNumber = Integer.valueOf(lineNumberString).intValue();
-				}
-				// eighth entry - message  (valid if verbose debugging is off)
-				final String message = this.readEntry(traceReader);
-				// read in the next character. if it is \r or \n then the throwable was not supplied  (valid if verbose debugging is off)
-				traceReader.mark(1);
-				inputChar = (char) traceReader.read();
-				String throwable = null;
-				if (inputChar != '\n' && inputChar != '\r') {
-					traceReader.reset();
-					// ninth entry (optional) - throwable
-					throwable = this.readEntry(traceReader);
-					if ((throwable == null) || (throwable.length() == 0)) {
-						throw new InvalidTraceEntry("The throwable in a trace entry is null or empty", throwable); //$NON-NLS-1$
-					}
-				}
-				// create the entry
-				result = new TraceEntry(threadName, timestamp, symbolicName, optionPath, className, methodName, lineNumber, message, throwable);
-				break; // no point in reading any more information since the TraceEntry is created
-			}
-			// read the next character
-			input = traceReader.read();
-		}
-		return result;
-	}
-
-	private String readEntry(final Reader traceReader) throws IOException {
-
-		char inputChar = (char) traceReader.read();
-		StringBuffer buffer = new StringBuffer();
-		while (inputChar != DebugOptionsTestCase.TRACE_ELEMENT_DELIMITER.charAt(0)) {
-			inputChar = (char) traceReader.read();
-			if (inputChar != DebugOptionsTestCase.TRACE_ELEMENT_DELIMITER.charAt(0)) {
-				buffer.append(inputChar);
-			}
-		}
-		return buffer.toString().trim();
-	}
-
-	static public class TraceEntry {
-		/** If a bundles symbolic name is not specified then the default value of /debug can be used */
-		public final static String DEFAULT_OPTION_PATH = "/debug"; //$NON-NLS-1$
-
-		/**
-		 * The name of the thread executing the code
-		 */
-		private final String threadName;
-
-		/**
-		 * The date and time when the trace occurred.
-		 * 
-		 */
-		private final long timestamp;
-
-		/**
-		 * The trace option-path
-		 */
-		private final String optionPath;
-
-		/**
-		 * The symbolic name of the bundle being traced
-		 */
-		private final String bundleSymbolicName;
-
-		/**
-		 * The class being traced
-		 */
-		private final String className;
-
-		/**
-		 * The method being traced
-		 */
-		private String methodName = null;
-
-		/**
-		 * The line number
-		 */
-		private final int lineNumber;
-
-		/**
-		 * The trace message
-		 */
-		private final String message;
-
-		/**
-		 * The trace exception
-		 */
-		private final String throwableText;
-
-		public TraceEntry(final String traceThreadName, final long traceTimestamp, final String traceBundleName, final String traceOptionPath, final String traceClassName, final String traceMethodName, final int traceLineNumber, final String traceMessage) {
-
-			this.threadName = traceThreadName;
-			this.bundleSymbolicName = traceBundleName;
-			this.optionPath = traceOptionPath;
-			this.className = traceClassName;
-			this.methodName = traceMethodName;
-			this.lineNumber = traceLineNumber;
-			this.message = traceMessage;
-			this.timestamp = traceTimestamp;
-			this.throwableText = null;
-		}
-
-		public TraceEntry(final String traceThreadName, final long traceTimestamp, final String traceBundleName, final String traceOptionPath, final String traceClassName, final String traceMethodName, final int traceLineNumber, final String traceMessage, final String traceThrowable) {
-
-			this.threadName = traceThreadName;
-			this.bundleSymbolicName = traceBundleName;
-			this.optionPath = traceOptionPath;
-			this.className = traceClassName;
-			this.methodName = traceMethodName;
-			this.lineNumber = traceLineNumber;
-			this.message = traceMessage;
-			this.timestamp = traceTimestamp;
-			this.throwableText = traceThrowable;
-		}
-
-		public final String getThreadName() {
-
-			return threadName;
-		}
-
-		public final long getTimestamp() {
-
-			return timestamp;
-		}
-
-		public final String getBundleSymbolicName() {
-
-			return bundleSymbolicName;
-		}
-
-		public final String getMessage() {
-
-			return message;
-		}
-
-		public final String getThrowableText() {
-
-			return throwableText;
-		}
-
-		public final String getClassName() {
-
-			return className;
-		}
-
-		public final String getMethodName() {
-
-			return methodName;
-		}
-
-		public final String getOptionPath() {
-
-			return optionPath;
-		}
-
-		public final int getLineNumber() {
-
-			return lineNumber;
-		}
-	}
-
-	static class InvalidTraceEntry extends Exception {
-
-		private static final long serialVersionUID = -63837787081750344L;
-
-		public InvalidTraceEntry(String message, String actual) {
-			super(message);
-			this.actualValue = actual;
-		}
-
-		public final String getActualValue() {
-			return this.actualValue;
-		}
-
-		String actualValue;
-		String expectedValue;
-	}
-
-	static class TestDebugTrace implements DebugTrace {
-		private final DebugTrace wrapped;
-
-		public TestDebugTrace(DebugTrace wrapped) {
-			this.wrapped = wrapped;
-		}
-
-		public void trace(String option, String message) {
-			wrapped.trace(option, message);
-		}
-
-		public void trace(String option, String message, Throwable error) {
-			wrapped.trace(option, message, error);
-		}
-
-		public void traceDumpStack(String option) {
-			wrapped.traceDumpStack(option);
-		}
-
-		public void traceEntry(String option) {
-			wrapped.traceEntry(option);
-		}
-
-		public void traceEntry(String option, Object methodArgument) {
-			wrapped.traceEntry(option, methodArgument);
-		}
-
-		public void traceEntry(String option, Object[] methodArguments) {
-			wrapped.traceEntry(option, methodArguments);
-		}
-
-		public void traceExit(String option) {
-			wrapped.traceExit(option);
-		}
-
-		public void traceExit(String option, Object result) {
-			wrapped.traceExit(option, result);
-		}
-	}
-
-	class TestDebugOptionsListener implements DebugOptionsListener {
-		boolean called = false;
-		String incorrectValue;
-		Map checkValues;
-
-		public void optionsChanged(DebugOptions options) {
-			called = true;
-			if (checkValues == null)
-				return;
-			for (Iterator entries = checkValues.entrySet().iterator(); entries.hasNext();) {
-				Map.Entry entry = (Entry) entries.next();
-				String debugValue = options.getOption((String) entry.getKey());
-				String error = "Value is incorrect for key: " + entry.getKey() + " " + debugValue; //$NON-NLS-1$//$NON-NLS-2$
-				if (debugValue == null) {
-					if (entry.getValue() != null) {
-						incorrectValue = error;
-						return;
-					}
-					continue;
-				}
-				if (!debugValue.equals(entry.getValue())) {
-					incorrectValue = error;
-					return;
-				}
-			}
-		}
-
-		public boolean gotCalled() {
-			return called;
-		}
-
-		public void clear() {
-			called = false;
-			checkValues = null;
-			incorrectValue = null;
-		}
-
-		public void setCheckValues(Map checkValues) {
-			this.checkValues = checkValues;
-		}
-
-		public String getIncorrectValue() {
-			return incorrectValue;
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/AllTests.java
deleted file mode 100644
index cc28476..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/AllTests.java
+++ /dev/null
@@ -1,23 +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.osgi.tests.eclipseadaptor;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllTests.class.getName());
-		suite.addTest(EnvironmentInfoTest.suite());
-		suite.addTest(FilePathTest.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/EnvironmentInfoTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/EnvironmentInfoTest.java
deleted file mode 100644
index d26bd7b..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/EnvironmentInfoTest.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.eclipseadaptor;
-
-import junit.framework.*;
-import org.eclipse.core.runtime.internal.adaptor.EclipseEnvironmentInfo;
-import org.eclipse.osgi.service.environment.Constants;
-
-public class EnvironmentInfoTest extends TestCase {
-
-	public static Test suite() {
-		return new TestSuite(EnvironmentInfoTest.class);
-	}
-
-	public EnvironmentInfoTest(String name) {
-		super(name);
-	}
-
-	public void testAIX() {
-		assertEquals("1.0", Constants.OS_AIX, EclipseEnvironmentInfo.guessOS("AIX"));
-		assertEquals("1.1", Constants.OS_AIX, EclipseEnvironmentInfo.guessOS("aix"));
-		assertEquals("1.2", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("aix xyz"));
-		assertEquals("2.0", Constants.WS_MOTIF, EclipseEnvironmentInfo.guessWS(Constants.OS_AIX));
-	}
-
-	public void testHPUX() {
-		assertEquals("1.0", Constants.OS_HPUX, EclipseEnvironmentInfo.guessOS("HP-UX"));
-		assertEquals("1.1", Constants.OS_HPUX, EclipseEnvironmentInfo.guessOS("hp-ux"));
-		assertEquals("1.2", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("hp-ux xyz"));
-		assertEquals("2.0", Constants.WS_MOTIF, EclipseEnvironmentInfo.guessWS(Constants.OS_HPUX));
-	}
-
-	public void testLinux() {
-		assertEquals("1.0", Constants.OS_LINUX, EclipseEnvironmentInfo.guessOS("Linux"));
-		assertEquals("1.1", Constants.OS_LINUX, EclipseEnvironmentInfo.guessOS("linux"));
-		assertEquals("1.2", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("linux xyz"));
-		assertEquals("2.0", Constants.WS_GTK, EclipseEnvironmentInfo.guessWS(Constants.OS_LINUX));
-	}
-
-	public void testMacOSX() {
-		assertEquals("1.0", Constants.OS_MACOSX, EclipseEnvironmentInfo.guessOS("Mac OS"));
-		assertEquals("1.1", Constants.OS_MACOSX, EclipseEnvironmentInfo.guessOS("Mac OS X"));
-		assertEquals("1.2", Constants.OS_MACOSX, EclipseEnvironmentInfo.guessOS("mac os x"));
-		assertEquals("2.0", Constants.WS_COCOA, EclipseEnvironmentInfo.guessWS(Constants.OS_MACOSX));
-	}
-
-	public void testQNX() {
-		assertEquals("1.0", Constants.OS_QNX, EclipseEnvironmentInfo.guessOS("QNX"));
-		assertEquals("1.1", Constants.OS_QNX, EclipseEnvironmentInfo.guessOS("qnx"));
-		assertEquals("1.2", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("qnx xyz"));
-		assertEquals("2.0", Constants.WS_PHOTON, EclipseEnvironmentInfo.guessWS(Constants.OS_QNX));
-	}
-
-	public void testSolaris() {
-		assertEquals("1.0", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("Solaris"));
-		assertEquals("1.1", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("solaris"));
-		assertEquals("1.2", Constants.OS_SOLARIS, EclipseEnvironmentInfo.guessOS("SunOS"));
-		assertEquals("1.3", Constants.OS_SOLARIS, EclipseEnvironmentInfo.guessOS("sunos"));
-		assertEquals("1.4", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("solaris xyz"));
-		assertEquals("1.4", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("sunos xyz"));
-		assertEquals("2.0", Constants.WS_GTK, EclipseEnvironmentInfo.guessWS(Constants.OS_SOLARIS));
-	}
-
-	public void testWindows() {
-		assertEquals("1.0", Constants.OS_WIN32, EclipseEnvironmentInfo.guessOS("Windows XP"));
-		assertEquals("1.1", Constants.OS_WIN32, EclipseEnvironmentInfo.guessOS("Windows 98"));
-		assertEquals("1.2", Constants.OS_WIN32, EclipseEnvironmentInfo.guessOS("Windows 2000"));
-		assertEquals("1.3", Constants.OS_WIN32, EclipseEnvironmentInfo.guessOS("Windows NT"));
-		assertEquals("1.4", Constants.OS_WIN32, EclipseEnvironmentInfo.guessOS("Windows 95"));
-		assertEquals("2.0", Constants.WS_WIN32, EclipseEnvironmentInfo.guessWS(Constants.OS_WIN32));
-	}
-
-	public void testISeries() {
-		assertEquals("1.0", Constants.OS_OS400, EclipseEnvironmentInfo.guessOS("OS/400"));
-		assertEquals("1.1", Constants.OS_OS400, EclipseEnvironmentInfo.guessOS("os/400"));
-		assertEquals("1.2", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("OS/400 xyz"));
-		assertEquals("2.0", Constants.WS_UNKNOWN, EclipseEnvironmentInfo.guessWS(Constants.OS_OS400));
-	}
-
-	public void testZSeries() {
-		assertEquals("1.0", Constants.OS_OS390, EclipseEnvironmentInfo.guessOS("OS/390"));
-		assertEquals("1.1", Constants.OS_OS390, EclipseEnvironmentInfo.guessOS("os/390"));
-		assertEquals("1.1", Constants.OS_ZOS, EclipseEnvironmentInfo.guessOS("z/os"));
-		assertEquals("1.1", Constants.OS_ZOS, EclipseEnvironmentInfo.guessOS("Z/OS"));
-		assertEquals("1.2", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("OS/400 xyz"));
-		assertEquals("1.2", Constants.OS_UNKNOWN, EclipseEnvironmentInfo.guessOS("z/os xyz"));
-		assertEquals("2.0", Constants.WS_UNKNOWN, EclipseEnvironmentInfo.guessWS(Constants.OS_OS390));
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/FilePathTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/FilePathTest.java
deleted file mode 100644
index 003eaa3..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/FilePathTest.java
+++ /dev/null
@@ -1,50 +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.osgi.tests.eclipseadaptor;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.framework.adaptor.FilePath;
-import org.eclipse.osgi.tests.OSGiTest;
-
-public class FilePathTest extends OSGiTest {
-
-	public static Test suite() {
-		return new TestSuite(FilePathTest.class);
-	}
-
-	public FilePathTest(String name) {
-		super(name);
-	}
-
-	public void testColonOnPath() {
-		FilePath path = new FilePath("/c:b/a");
-		if (Platform.getOS().equals(Platform.OS_WIN32)) {
-			// Windows-specific testing
-			assertTrue("1.0", !path.isAbsolute());
-			assertEquals("2.0", "c:", path.getDevice());
-			String[] segments = path.getSegments();
-			assertEquals("3.0", 2, segments.length);
-			assertEquals("3.1", "b", segments[0]);
-			assertEquals("3.2", "a", segments[1]);
-			return;
-		}
-		// this runs on non-Windows platforms		
-		assertTrue("1.0", path.isAbsolute());
-		assertNull("2.0", path.getDevice());
-		String[] segments = path.getSegments();
-		assertEquals("3.0", 2, segments.length);
-		assertEquals("3.1", "c:b", segments[0]);
-		assertEquals("3.2", "a", segments[1]);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eventmgr/EventManagerTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eventmgr/EventManagerTests.java
deleted file mode 100644
index 7439061..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eventmgr/EventManagerTests.java
+++ /dev/null
@@ -1,489 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.eventmgr;
-
-import java.util.*;
-import junit.framework.*;
-import org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap;
-
-public class EventManagerTests extends TestCase {
-	public static Test suite() {
-		return new TestSuite(EventManagerTests.class);
-	}
-
-	public void testCopyOnWriteIdentityMap() {
-		Object l1 = new Object();
-		Object l2 = new Object();
-		Object l3 = new Object();
-		Object l4 = new Object();
-		Object c1 = new Object();
-		Object c2 = new Object();
-		Object c3 = new Object();
-		Object c4 = new Object();
-
-		CopyOnWriteIdentityMap el1 = new CopyOnWriteIdentityMap();
-
-		assertTrue("not empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 0, el1.size()); //$NON-NLS-1$
-
-		assertNull("non null", el1.put(l1, c1)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 1, el1.size()); //$NON-NLS-1$
-
-		assertNull("non null", el1.put(l2, c2)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 2, el1.size()); //$NON-NLS-1$
-
-		assertNull("non null", el1.put(l3, c3)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 3, el1.size()); //$NON-NLS-1$
-
-		assertNull("non null", el1.put(l4, c4)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, el1.size()); //$NON-NLS-1$
-
-		assertEquals("wrong value", c1, el1.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c2, el1.get(l2)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el1.get(l3)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el1.get(l4)); //$NON-NLS-1$
-
-		CopyOnWriteIdentityMap el2 = new CopyOnWriteIdentityMap(el1);
-		assertFalse("empty", el2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, el2.size()); //$NON-NLS-1$
-
-		assertEquals("wrong value", c1, el2.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c2, el2.get(l2)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el2.get(l3)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el2.get(l4)); //$NON-NLS-1$
-
-		assertEquals("wrong value", c2, el1.remove(l2)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 3, el1.size()); //$NON-NLS-1$
-		assertEquals("not null", null, el1.remove(l2)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 3, el1.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el1.remove(l4)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 2, el1.size()); //$NON-NLS-1$
-		assertEquals("not null", null, el1.remove(l4)); //$NON-NLS-1$
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 2, el1.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c1, el1.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el1.get(l3)); //$NON-NLS-1$
-
-		assertFalse("empty", el2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, el2.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c1, el2.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c2, el2.get(l2)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el2.get(l3)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el2.get(l4)); //$NON-NLS-1$
-
-		assertEquals("wrong value", c1, el2.remove(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el2.remove(l3)); //$NON-NLS-1$
-
-		el1.putAll(el2);
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, el1.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c1, el1.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c2, el1.get(l2)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el1.get(l3)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el1.get(l4)); //$NON-NLS-1$
-		assertFalse("empty", el2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 2, el2.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c2, el2.get(l2)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el2.get(l4)); //$NON-NLS-1$
-
-		el2.putAll(el1);
-		assertFalse("empty", el1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, el1.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c1, el1.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c2, el1.get(l2)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el1.get(l3)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el1.get(l4)); //$NON-NLS-1$
-		assertFalse("empty", el2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, el2.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c1, el2.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c2, el2.get(l2)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el2.get(l3)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el2.get(l4)); //$NON-NLS-1$
-
-		el2.clear();
-		assertTrue("not empty", el2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 0, el2.size()); //$NON-NLS-1$
-
-		assertNull("non null", el2.put(l1, c1)); //$NON-NLS-1$
-		assertEquals("wrong value", c1, el2.put(l1, c3)); //$NON-NLS-1$
-		assertEquals("wrong value", c3, el2.get(l1)); //$NON-NLS-1$
-		assertTrue("missed key", el2.containsKey(l1)); //$NON-NLS-1$
-		assertTrue("missed value", el2.containsValue(c3)); //$NON-NLS-1$
-		assertFalse("invalid key", el2.containsKey(l2)); //$NON-NLS-1$
-		assertFalse("invalid value", el2.containsValue(c1)); //$NON-NLS-1$
-
-		el2.clear();
-		Map source = new HashMap();
-		source.put(l1, c1);
-		source.put(l4, c4);
-		el2.putAll(source);
-		assertFalse("empty", el2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 2, el2.size()); //$NON-NLS-1$
-		assertEquals("wrong value", c1, el2.get(l1)); //$NON-NLS-1$
-		assertEquals("wrong value", c4, el2.get(l4)); //$NON-NLS-1$
-
-		el2.clear();
-		Set k1 = el1.keySet();
-		Set k2 = el2.keySet();
-		Collection v1 = el1.values();
-		Collection v2 = el2.values();
-		Set e2 = el2.entrySet();
-		Set e1 = el1.entrySet();
-		el1.clear();
-
-		assertFalse("empty", k1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, k1.size()); //$NON-NLS-1$
-		assertTrue("missed key", k1.contains(l1)); //$NON-NLS-1$
-		assertTrue("missed key", k1.contains(l2)); //$NON-NLS-1$
-		assertTrue("missed key", k1.contains(l3)); //$NON-NLS-1$
-		assertTrue("missed key", k1.contains(l4)); //$NON-NLS-1$
-		assertTrue("missed key", k1.containsAll(Arrays.asList(new Object[] {l1, l2, l3, l4}))); //$NON-NLS-1$
-
-		Iterator i1 = k1.iterator();
-		assertTrue("missing next", i1.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", l1, i1.next()); //$NON-NLS-1$
-		try {
-			i1.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i1.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", l3, i1.next()); //$NON-NLS-1$
-		try {
-			i1.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i1.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", l2, i1.next()); //$NON-NLS-1$
-		try {
-			i1.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i1.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", l4, i1.next()); //$NON-NLS-1$
-		try {
-			i1.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertFalse("extra next", i1.hasNext()); //$NON-NLS-1$
-		try {
-			i1.next();
-			fail("next did not throw exception"); //$NON-NLS-1$
-		} catch (NoSuchElementException e) {
-			//expected
-		}
-
-		assertTrue("not empty", k2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 0, k2.size()); //$NON-NLS-1$
-
-		Iterator i2 = k2.iterator();
-		assertFalse("extra next", i2.hasNext()); //$NON-NLS-1$
-		try {
-			i2.next();
-			fail("next did not throw exception"); //$NON-NLS-1$
-		} catch (NoSuchElementException e) {
-			//expected
-		}
-
-		try {
-			k2.add(l1);
-			fail("add did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			k2.addAll(Arrays.asList(new Object[] {l1, l2}));
-			fail("addAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			k1.clear();
-			fail("clear did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			k1.remove(l1);
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			k1.removeAll(Arrays.asList(new Object[] {l1, l2}));
-			fail("removeAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			k1.retainAll(Arrays.asList(new Object[] {l1, l2}));
-			fail("retainAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-
-		assertTrue("array unequal", Arrays.equals(new Object[] {l1, l3, l2, l4}, k1.toArray())); //$NON-NLS-1$
-		assertTrue("array unequal", Arrays.equals(new Object[] {l1, l3, l2, l4}, k1.toArray(new Object[4]))); //$NON-NLS-1$
-
-		assertFalse("empty", v1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, v1.size()); //$NON-NLS-1$
-		assertTrue("missed key", v1.contains(c1)); //$NON-NLS-1$
-		assertTrue("missed key", v1.contains(c2)); //$NON-NLS-1$
-		assertTrue("missed key", v1.contains(c3)); //$NON-NLS-1$
-		assertTrue("missed key", v1.contains(c4)); //$NON-NLS-1$
-		assertTrue("missed key", v1.containsAll(Arrays.asList(new Object[] {c1, c2, c3, c4}))); //$NON-NLS-1$
-
-		Iterator i3 = v1.iterator();
-		assertTrue("missing next", i3.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", c1, i3.next()); //$NON-NLS-1$
-		try {
-			i3.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i3.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", c3, i3.next()); //$NON-NLS-1$
-		try {
-			i3.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i3.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", c2, i3.next()); //$NON-NLS-1$
-		try {
-			i3.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i3.hasNext()); //$NON-NLS-1$
-		assertEquals("wrong key", c4, i3.next()); //$NON-NLS-1$
-		try {
-			i3.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertFalse("extra next", i3.hasNext()); //$NON-NLS-1$
-		try {
-			i3.next();
-			fail("next did not throw exception"); //$NON-NLS-1$
-		} catch (NoSuchElementException e) {
-			//expected
-		}
-
-		assertTrue("not empty", v2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 0, v2.size()); //$NON-NLS-1$
-
-		Iterator i4 = v2.iterator();
-		assertFalse("extra next", i4.hasNext()); //$NON-NLS-1$
-		try {
-			i4.next();
-			fail("next did not throw exception"); //$NON-NLS-1$
-		} catch (NoSuchElementException e) {
-			//expected
-		}
-
-		try {
-			v2.add(c1);
-			fail("add did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			v2.addAll(Arrays.asList(new Object[] {c1, c2}));
-			fail("addAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			v1.clear();
-			fail("clear did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			v1.remove(c1);
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			v1.removeAll(Arrays.asList(new Object[] {c1, c2}));
-			fail("removeAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			v1.retainAll(Arrays.asList(new Object[] {c1, c2}));
-			fail("retainAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-
-		assertTrue("array unequal", Arrays.equals(new Object[] {c1, c3, c2, c4}, v1.toArray())); //$NON-NLS-1$
-		assertTrue("array unequal", Arrays.equals(new Object[] {c1, c3, c2, c4}, v1.toArray(new Object[4]))); //$NON-NLS-1$
-
-		assertFalse("empty", e1.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 4, e1.size()); //$NON-NLS-1$
-
-		Iterator i5 = e1.iterator();
-		assertTrue("missing next", i5.hasNext()); //$NON-NLS-1$
-		Map.Entry me1 = (Map.Entry) i5.next();
-		assertEquals("wrong key", l1, me1.getKey()); //$NON-NLS-1$
-		assertEquals("wrong value", c1, me1.getValue()); //$NON-NLS-1$
-		try {
-			i5.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			me1.setValue(c2);
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i5.hasNext()); //$NON-NLS-1$
-		Map.Entry me3 = (Map.Entry) i5.next();
-		assertEquals("wrong key", l3, me3.getKey()); //$NON-NLS-1$
-		assertEquals("wrong value", c3, me3.getValue()); //$NON-NLS-1$
-		try {
-			i5.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			me3.setValue(c2);
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i5.hasNext()); //$NON-NLS-1$
-		Map.Entry me2 = (Map.Entry) i5.next();
-		assertEquals("wrong key", l2, me2.getKey()); //$NON-NLS-1$
-		assertEquals("wrong value", c2, me2.getValue()); //$NON-NLS-1$
-		try {
-			i5.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			me2.setValue(c3);
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertTrue("missing next", i5.hasNext()); //$NON-NLS-1$
-		Map.Entry me4 = (Map.Entry) i5.next();
-		assertEquals("wrong key", l4, me4.getKey()); //$NON-NLS-1$
-		assertEquals("wrong value", c4, me4.getValue()); //$NON-NLS-1$
-		try {
-			i5.remove();
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			me4.setValue(c2);
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		assertFalse("extra next", i5.hasNext()); //$NON-NLS-1$
-		try {
-			i1.next();
-			fail("next did not throw exception"); //$NON-NLS-1$
-		} catch (NoSuchElementException e) {
-			//expected
-		}
-
-		assertTrue("not empty", e2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 0, e2.size()); //$NON-NLS-1$
-
-		Iterator i6 = e2.iterator();
-		assertFalse("extra next", i6.hasNext()); //$NON-NLS-1$
-		try {
-			i6.next();
-			fail("next did not throw exception"); //$NON-NLS-1$
-		} catch (NoSuchElementException e) {
-			//expected
-		}
-
-		try {
-			e2.add(me1);
-			fail("add did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			e2.addAll(Arrays.asList(new Map.Entry[] {me2, me4}));
-			fail("addAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			e1.clear();
-			fail("clear did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			e1.remove(me1);
-			fail("remove did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			e1.removeAll(Arrays.asList(new Map.Entry[] {me1, me2}));
-			fail("removeAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-		try {
-			e1.retainAll(Arrays.asList(new Map.Entry[] {me1, me2}));
-			fail("retainAll did not throw exception"); //$NON-NLS-1$
-		} catch (UnsupportedOperationException e) {
-			//expected
-		}
-
-		assertTrue("array unequal", Arrays.equals(new Map.Entry[] {me1, me3, me2, me4}, e1.toArray())); //$NON-NLS-1$
-		assertTrue("array unequal", Arrays.equals(new Map.Entry[] {me1, me3, me2, me4}, e1.toArray(new Map.Entry[4]))); //$NON-NLS-1$
-
-		el2.clear();
-		el2.putAll(new Object[] {l1, l3});
-		assertFalse("empty", el2.isEmpty()); //$NON-NLS-1$
-		assertEquals("wrong size", 2, el2.size()); //$NON-NLS-1$
-		assertTrue("missed key", el2.containsKey(l1)); //$NON-NLS-1$
-		assertTrue("missed key", el2.containsKey(l3)); //$NON-NLS-1$
-		assertNull("value not null", el2.get(l1)); //$NON-NLS-1$
-		assertNull("value not null", el2.get(l3)); //$NON-NLS-1$
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/BundleContextFilterTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/BundleContextFilterTests.java
deleted file mode 100644
index b85b822..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/BundleContextFilterTests.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.filter;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-
-public class BundleContextFilterTests extends FilterTests {
-	public static Test suite() {
-		return new TestSuite(BundleContextFilterTests.class);
-	}
-
-	public Filter createFilter(String filterString) throws InvalidSyntaxException {
-		return OSGiTestsActivator.getContext().createFilter(filterString);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java
deleted file mode 100644
index f71d7bc..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FilterTests.java
+++ /dev/null
@@ -1,438 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.filter;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.*;
-import junit.framework.*;
-import org.osgi.framework.*;
-
-public abstract class FilterTests extends TestCase {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(FilterTests.class.getName());
-		suite.addTest(BundleContextFilterTests.suite());
-		suite.addTest(FrameworkUtilFilterTests.suite());
-		return suite;
-	}
-
-	/**
-	 * Fail with cause t.
-	 * 
-	 * @param message Failure message.
-	 * @param t Cause of the failure.
-	 */
-	public static void fail(String message, Throwable t) {
-		AssertionFailedError e = new AssertionFailedError(message + ": " + t.getMessage());
-		e.initCause(t);
-		throw e;
-	}
-
-	static final int ISTRUE = 1;
-	static final int ISFALSE = 2;
-	static final int ISILLEGAL = 3;
-
-	public abstract Filter createFilter(String filterString) throws InvalidSyntaxException;
-
-	private Dictionary getProperties() {
-		Dictionary props = new Hashtable();
-		props.put("room", "bedroom");
-		props.put("channel", new Object[] {new Integer(34), "101"});
-		props.put("status", "(on\\)*");
-		List vec = new ArrayList(10);
-		vec.add(new Long(150));
-		vec.add("100");
-		props.put("max record time", vec);
-		props.put("canrecord", "true(x)");
-		props.put("shortvalue", new Short((short) 1000));
-		props.put("intvalue", new Integer(100000));
-		props.put("longvalue", new Long(10000000000L));
-		props.put("bytevalue", new Byte((byte) 10));
-		props.put("floatvalue", new Float(1.01));
-		props.put("doublevalue", new Double(2.01));
-		props.put("charvalue", new Character('A'));
-		props.put("booleanvalue", new Boolean(true));
-		props.put("weirdvalue", new Hashtable());
-		props.put("primintarrayvalue", new int[] {1, 2, 3});
-		props.put("primlongarrayvalue", new long[] {1, 2, 3});
-		props.put("primbytearrayvalue", new byte[] {(byte) 1, (byte) 2, (byte) 3});
-		props.put("primshortarrayvalue", new short[] {(short) 1, (short) 2, (short) 3});
-		props.put("primfloatarrayvalue", new float[] {(float) 1.1, (float) 2.2, (float) 3.3});
-		props.put("primdoublearrayvalue", new double[] {1.1, 2.2, 3.3});
-		props.put("primchararrayvalue", new char[] {'A', 'b', 'C', 'd'});
-		props.put("primbooleanarrayvalue", new boolean[] {false});
-		props.put("bigintvalue", new BigInteger("4123456"));
-		props.put("bigdecvalue", new BigDecimal("4.123456"));
-		props.put("*", "foo");
-		props.put("!  ab", "b");
-		props.put("|   ab", "b");
-		props.put("&    ab", "b");
-		props.put("!", "c");
-		props.put("|", "c");
-		props.put("&", "c");
-		props.put("empty", "");
-		props.put("space", new Character(' '));
-		return props;
-	}
-
-	public void testFilter() {
-		Dictionary props = getProperties();
-		testFilter("(room=*)", props, ISTRUE);
-		testFilter("(room=bedroom)", props, ISTRUE);
-		testFilter("(room~= B E D R O O M )", props, ISTRUE);
-		testFilter("(room=abc)", props, ISFALSE);
-		testFilter(" ( room >=aaaa)", props, ISTRUE);
-		testFilter("(room <=aaaa)", props, ISFALSE);
-		testFilter("  ( room =b*) ", props, ISTRUE);
-		testFilter("  ( room =*m) ", props, ISTRUE);
-		testFilter("(room=bed*room)", props, ISTRUE);
-		testFilter("  ( room =b*oo*m) ", props, ISTRUE);
-		testFilter("  ( room =*b*oo*m*) ", props, ISTRUE);
-		testFilter("  ( room =b*b*  *m*) ", props, ISFALSE);
-		testFilter("  (& (room =bedroom) (channel ~=34))", props, ISTRUE);
-		testFilter("  (&  (room =b*)  (room =*x) (channel=34))", props, ISFALSE);
-		testFilter("(| (room =bed*)(channel=222)) ", props, ISTRUE);
-		testFilter("(| (room =boom*)(channel=101)) ", props, ISTRUE);
-		testFilter("  (! (room =ab*b*oo*m*) ) ", props, ISTRUE);
-		testFilter("  (status =\\(o*\\\\\\)\\*) ", props, ISTRUE);
-		testFilter("  (canRecord =true\\(x\\)) ", props, ISTRUE);
-		testFilter("(max Record Time <=140) ", props, ISTRUE);
-		testFilter("(shortValue >=100) ", props, ISTRUE);
-		testFilter("(intValue <=100001) ", props, ISTRUE);
-		testFilter("(longValue >=10000000000) ", props, ISTRUE);
-		testFilter("  (  &  (  byteValue <=100)  (  byteValue >=10)  )  ", props, ISTRUE);
-		testFilter("(weirdValue =100) ", props, ISFALSE);
-		testFilter("(bigIntValue =4123456) ", props, ISTRUE);
-		testFilter("(bigDecValue =4.123456) ", props, ISTRUE);
-		testFilter("(floatValue >=1.0) ", props, ISTRUE);
-		testFilter("(doubleValue <=2.011) ", props, ISTRUE);
-		testFilter("(charValue ~=a) ", props, ISTRUE);
-		testFilter("(booleanValue =true) ", props, ISTRUE);
-		testFilter("(primIntArrayValue =1) ", props, ISTRUE);
-		testFilter("(primLongArrayValue =2) ", props, ISTRUE);
-		testFilter("(primByteArrayValue =3) ", props, ISTRUE);
-		testFilter("(primShortArrayValue =1) ", props, ISTRUE);
-		testFilter("(primFloatArrayValue =1.1) ", props, ISTRUE);
-		testFilter("(primDoubleArrayValue =2.2) ", props, ISTRUE);
-		testFilter("(primCharArrayValue ~=D) ", props, ISTRUE);
-		testFilter("(primBooleanArrayValue =false) ", props, ISTRUE);
-		testFilter("(& (| (room =d*m) (room =bed*) (room=abc)) (! (channel=999)))", props, ISTRUE);
-		testFilter("(room=bedroom)", null, ISFALSE);
-		testFilter("(*=foo)", props, ISTRUE);
-		testFilter("(!  ab=b)", props, ISTRUE);
-		testFilter("(|   ab=b)", props, ISTRUE);
-		testFilter("(&=c)", props, ISTRUE);
-		testFilter("(!=c)", props, ISTRUE);
-		testFilter("(|=c)", props, ISTRUE);
-		testFilter("(&    ab=b)", props, ISTRUE);
-		testFilter("(!ab=*)", props, ISFALSE);
-		testFilter("(|ab=*)", props, ISFALSE);
-		testFilter("(&ab=*)", props, ISFALSE);
-		testFilter("(empty=)", props, ISTRUE);
-		testFilter("(empty=*)", props, ISTRUE);
-		testFilter("(space= )", props, ISTRUE);
-		testFilter("(space=*)", props, ISTRUE);
-	}
-
-	public void testInvalidValues() {
-		Dictionary props = getProperties();
-		testFilter("(intvalue=*)", props, ISTRUE);
-		testFilter("(intvalue=b)", props, ISFALSE);
-		testFilter("(intvalue=)", props, ISFALSE);
-		testFilter("(longvalue=*)", props, ISTRUE);
-		testFilter("(longvalue=b)", props, ISFALSE);
-		testFilter("(longvalue=)", props, ISFALSE);
-		testFilter("(shortvalue=*)", props, ISTRUE);
-		testFilter("(shortvalue=b)", props, ISFALSE);
-		testFilter("(shortvalue=)", props, ISFALSE);
-		testFilter("(bytevalue=*)", props, ISTRUE);
-		testFilter("(bytevalue=b)", props, ISFALSE);
-		testFilter("(bytevalue=)", props, ISFALSE);
-		testFilter("(charvalue=*)", props, ISTRUE);
-		testFilter("(charvalue=)", props, ISFALSE);
-		testFilter("(floatvalue=*)", props, ISTRUE);
-		testFilter("(floatvalue=b)", props, ISFALSE);
-		testFilter("(floatvalue=)", props, ISFALSE);
-		testFilter("(doublevalue=*)", props, ISTRUE);
-		testFilter("(doublevalue=b)", props, ISFALSE);
-		testFilter("(doublevalue=)", props, ISFALSE);
-		testFilter("(booleanvalue=*)", props, ISTRUE);
-		testFilter("(booleanvalue=b)", props, ISFALSE);
-		testFilter("(booleanvalue=)", props, ISFALSE);
-	}
-
-	public void testIllegal() {
-		Dictionary props = getProperties();
-		testFilter("", props, ISILLEGAL);
-		testFilter("()", props, ISILLEGAL);
-		testFilter("(=foo)", props, ISILLEGAL);
-		testFilter("(", props, ISILLEGAL);
-		testFilter("(abc = ))", props, ISILLEGAL);
-		testFilter("(& (abc = xyz) (& (345))", props, ISILLEGAL);
-		testFilter("  (room = b**oo!*m*) ) ", props, ISILLEGAL);
-		testFilter("  (room = b**oo)*m*) ) ", props, ISILLEGAL);
-		testFilter("  (room = *=b**oo*m*) ) ", props, ISILLEGAL);
-		testFilter("  (room = =b**oo*m*) ) ", props, ISILLEGAL);
-	}
-
-	public void testScalarSubstring() {
-		Dictionary props = getProperties();
-		testFilter("(shortValue =100*) ", props, ISFALSE);
-		testFilter("(intValue =100*) ", props, ISFALSE);
-		testFilter("(longValue =100*) ", props, ISFALSE);
-		testFilter("(  byteValue =1*00  )", props, ISFALSE);
-		testFilter("(bigIntValue =4*23456) ", props, ISFALSE);
-		testFilter("(bigDecValue =4*123456) ", props, ISFALSE);
-		testFilter("(floatValue =1*0) ", props, ISFALSE);
-		testFilter("(doubleValue =2*011) ", props, ISFALSE);
-		testFilter("(charValue =a*) ", props, ISFALSE);
-		testFilter("(booleanValue =t*ue) ", props, ISFALSE);
-	}
-
-	public void testNormalization() {
-		try {
-			Filter f1 = createFilter("( a = bedroom  )");
-			Filter f2 = createFilter(" (a= bedroom  ) ");
-			assertEquals("not equal", "(a= bedroom  )", f1.toString());
-			assertEquals("not equal", "(a= bedroom  )", f2.toString());
-			assertEquals("not equal", f1, f2);
-			assertEquals("not equal", f2, f1);
-			assertEquals("not equal", f1.hashCode(), f2.hashCode());
-		} catch (InvalidSyntaxException e) {
-			fail("unexpected invalid syntax", e);
-		}
-
-	}
-
-	private void testFilter(String query, Dictionary props, int expect) {
-		final ServiceReference ref = new DictionaryServiceReference(props);
-		Filter f1;
-		try {
-			f1 = createFilter(query);
-
-			if (expect == ISILLEGAL) {
-				fail("expected exception");
-			}
-		} catch (InvalidSyntaxException e) {
-			if (expect != ISILLEGAL) {
-				fail("exception", e);
-			}
-			return;
-		}
-
-		boolean val = f1.match(props);
-		assertEquals("wrong result", expect == ISTRUE, val);
-
-		val = f1.match(ref);
-		assertEquals("wrong result", expect == ISTRUE, val);
-
-		String normalized = f1.toString();
-		Filter f2;
-		try {
-			f2 = createFilter(normalized);
-		} catch (InvalidSyntaxException e) {
-			fail("exception", e);
-			return;
-		}
-
-		val = f2.match(props);
-		assertEquals("wrong result", expect == ISTRUE, val);
-
-		val = f2.match(ref);
-		assertEquals("wrong result", expect == ISTRUE, val);
-
-		assertEquals("normalized not equal", normalized, f2.toString());
-
-	}
-
-	public void testComparable() {
-		Filter f1 = null;
-		Object comp42 = new SampleComparable("42");
-		Object comp43 = new SampleComparable("43");
-		Hashtable hash = new Hashtable();
-
-		try {
-			f1 = createFilter("(comparable=42)");
-		} catch (InvalidSyntaxException e) {
-			fail("invalid syntax", e);
-		}
-
-		hash.put("comparable", comp42);
-		assertTrue("does not match filter", f1.match(hash));
-		assertTrue("does not match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		hash.put("comparable", comp43);
-		assertFalse("does match filter", f1.match(hash));
-		assertFalse("does match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		try {
-			f1 = createFilter("(comparable<=42)");
-		} catch (InvalidSyntaxException e) {
-			fail("invalid syntax", e);
-		}
-
-		hash.put("comparable", comp42);
-		assertTrue("does not match filter", f1.match(hash));
-		assertTrue("does not match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		hash.put("comparable", comp43);
-		assertFalse("does match filter", f1.match(hash));
-		assertFalse("does match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		try {
-			f1 = createFilter("(comparable>=42)");
-		} catch (InvalidSyntaxException e) {
-			fail("invalid syntax", e);
-		}
-
-		hash.put("comparable", comp42);
-		assertTrue("does not match filter", f1.match(hash));
-		assertTrue("does not match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		hash.put("comparable", comp43);
-		assertTrue("does not match filter", f1.match(hash));
-		assertTrue("does not match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		try {
-			f1 = createFilter("(comparable=4*2)");
-		} catch (InvalidSyntaxException e) {
-			fail("invalid syntax", e);
-		}
-
-		hash.put("comparable", comp42);
-		assertFalse("does match filter", f1.match(hash));
-		assertFalse("does match filter", f1.match(new DictionaryServiceReference(hash)));
-	}
-
-	public void testObject() {
-		Filter f1 = null;
-		Object obj42 = new SampleObject("42");
-		Object obj43 = new SampleObject("43");
-		Hashtable hash = new Hashtable();
-
-		try {
-			f1 = createFilter("(object=42)");
-		} catch (InvalidSyntaxException e) {
-			fail("invalid syntax", e);
-		}
-
-		hash.put("object", obj42);
-		assertTrue("does not match filter", f1.match(hash));
-		assertTrue("does not match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		hash.put("object", obj43);
-		assertFalse("does match filter", f1.match(hash));
-		assertFalse("does match filter", f1.match(new DictionaryServiceReference(hash)));
-
-		try {
-			f1 = createFilter("(object=4*2)");
-		} catch (InvalidSyntaxException e) {
-			fail("invalid syntax", e);
-		}
-
-		hash.put("object", obj42);
-		assertFalse("does match filter", f1.match(hash));
-		assertFalse("does match filter", f1.match(new DictionaryServiceReference(hash)));
-	}
-
-	public static class SampleComparable implements Comparable {
-		private int value = -1;
-
-		public SampleComparable(String value) {
-			this.value = Integer.parseInt(value);
-		}
-
-		public int compareTo(Object o) {
-			return value - ((SampleComparable) o).value;
-		}
-
-		public String toString() {
-			return String.valueOf(value);
-		}
-	}
-
-	public static class SampleObject {
-		private int value = -1;
-
-		public SampleObject(String value) {
-			this.value = Integer.parseInt(value);
-		}
-
-		public boolean equals(Object o) {
-			if (o instanceof SampleObject) {
-				return value == ((SampleObject) o).value;
-			}
-			return false;
-		}
-
-		public String toString() {
-			return String.valueOf(value);
-		}
-	}
-
-	private static class DictionaryServiceReference implements ServiceReference {
-		private final Dictionary dictionary;
-		private final String[] keys;
-
-		DictionaryServiceReference(Dictionary dictionary) {
-			if (dictionary == null) {
-				this.dictionary = null;
-				this.keys = new String[] {};
-				return;
-			}
-			this.dictionary = dictionary;
-			List keyList = new ArrayList(dictionary.size());
-			for (Enumeration e = dictionary.keys(); e.hasMoreElements();) {
-				Object k = e.nextElement();
-				if (k instanceof String) {
-					String key = (String) k;
-					for (Iterator i = keyList.iterator(); i.hasNext();) {
-						if (key.equalsIgnoreCase((String) i.next())) {
-							throw new IllegalArgumentException();
-						}
-					}
-					keyList.add(key);
-				}
-			}
-			this.keys = (String[]) keyList.toArray(new String[keyList.size()]);
-		}
-
-		public Object getProperty(String k) {
-			for (int i = 0, length = keys.length; i < length; i++) {
-				String key = keys[i];
-				if (key.equalsIgnoreCase(k)) {
-					return dictionary.get(key);
-				}
-			}
-			return null;
-		}
-
-		public String[] getPropertyKeys() {
-			return (String[]) keys.clone();
-		}
-
-		public int compareTo(Object reference) {
-			throw new UnsupportedOperationException();
-		}
-
-		public Bundle getBundle() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Bundle[] getUsingBundles() {
-			throw new UnsupportedOperationException();
-		}
-
-		public boolean isAssignableTo(Bundle bundle, String className) {
-			throw new UnsupportedOperationException();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FrameworkUtilFilterTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FrameworkUtilFilterTests.java
deleted file mode 100644
index 0d6fe44..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/filter/FrameworkUtilFilterTests.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.filter;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.*;
-
-public class FrameworkUtilFilterTests extends FilterTests {
-	public static Test suite() {
-		return new TestSuite(FrameworkUtilFilterTests.class);
-	}
-
-	public Filter createFilter(String filterString) throws InvalidSyntaxException {
-		return FrameworkUtil.createFilter(filterString);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/internal/plugins/InstallTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/internal/plugins/InstallTests.java
deleted file mode 100644
index edce4b3..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/internal/plugins/InstallTests.java
+++ /dev/null
@@ -1,346 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.internal.plugins;
-
-import java.io.IOException;
-import org.eclipse.core.tests.harness.BundleTestingHelper;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-/**
- * Provisory home for tests that install plugins.
- */
-public class InstallTests extends CoreTest {
-
-	public InstallTests() {
-		super();
-	}
-
-	public InstallTests(String name) {
-		super(name);
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-	}
-
-	public void testInstallInvalidManifest01() throws BundleException, IOException {
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle03"); //$NON-NLS-1$
-			// should have failed with BundleException
-			fail("1.0"); //$NON-NLS-1$
-		} catch (BundleException be) {
-			// success - the manifest was invalid
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	/**
-	 * Test invalid manifest; missing Bundle-SymbolicName
-	 */
-	public void testInstallInvalidManifest02() throws IOException, BundleException {
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle("testInstallInvalidManifest02", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle11"); //$NON-NLS-1$ //$NON-NLS-2$
-			// should have failed with BundleException
-			fail("Expected a failure with no Bundle-SymbolicName header"); //$NON-NLS-1$
-		} catch (BundleException be) {
-			// success - the manifest was invalid
-			assertEquals("Expected manifest error", BundleException.MANIFEST_ERROR, be.getType()); //$NON-NLS-1$
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	/**
-	 * Test invalid manifest; duplicate directive
-	 */
-	public void testInstallInvalidManifest03() throws IOException, BundleException {
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle("testInstallInvalidManifest03", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle12"); //$NON-NLS-1$ //$NON-NLS-2$
-			// should have failed with BundleException
-			fail("Expected a failure with duplicate directives"); //$NON-NLS-1$
-		} catch (BundleException be) {
-			// success - the manifest was invalid
-			assertEquals("Expected manifest error", BundleException.MANIFEST_ERROR, be.getType()); //$NON-NLS-1$
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	/**
-	 * Test invalid manifest; use attributes bundle-version and bundle-symbolic-name in Export-Package
-	 */
-	public void testInstallInvalidManifest04() throws IOException, BundleException {
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle("testInstallInvalidManifest04", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle13"); //$NON-NLS-1$ //$NON-NLS-2$
-			// should have failed with BundleException
-			fail("Expected a failure with duplicate attributes"); //$NON-NLS-1$
-		} catch (BundleException be) {
-			// success - the manifest was invalid
-			assertEquals("Expected manifest error", BundleException.MANIFEST_ERROR, be.getType()); //$NON-NLS-1$
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	/**
-	 * Test invalid manifest; imports same package twice
-	 */
-	public void testInstallInvalidManifest05() throws IOException, BundleException {
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle("testInstallInvalidManifest05", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle14"); //$NON-NLS-1$ //$NON-NLS-2$
-			// should have failed with BundleException
-			fail("Expected a failure with duplicate imports"); //$NON-NLS-1$
-		} catch (BundleException be) {
-			// success - the manifest was invalid
-			assertEquals("Expected manifest error", BundleException.MANIFEST_ERROR, be.getType()); //$NON-NLS-1$
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	/**
-	 * Test unresolvable
-	 */
-	public void testStartError01() throws IOException, BundleException {
-		Bundle installed = null;
-		try {
-			try {
-				installed = BundleTestingHelper.installBundle("testStartError01", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle15"); //$NON-NLS-1$ //$NON-NLS-2$
-				// should be able to install
-			} catch (BundleException be) {
-				// failed to install unresolvable bundle
-				fail("Unexpected installation error", be); //$NON-NLS-1$
-			}
-			try {
-				installed.start();
-				// expected exception starting
-				fail("Expected a failure to start unresolved bundle"); //$NON-NLS-1$
-			} catch (BundleException be) {
-				// success - the bundle can not resolve
-				assertEquals("Expected manifest error", BundleException.RESOLVE_ERROR, be.getType()); //$NON-NLS-1$
-			}
-
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	/**
-	 * Test start fragment
-	 */
-	public void testStartError02() throws IOException, BundleException {
-		Bundle host = null;
-		Bundle fragment = null;
-		try {
-			try {
-				host = BundleTestingHelper.installBundle("testStartError02_host", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle16"); //$NON-NLS-1$ //$NON-NLS-2$
-				fragment = BundleTestingHelper.installBundle("testStartError02_frag", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle17"); //$NON-NLS-1$ //$NON-NLS-2$
-				// should be able to install host
-			} catch (BundleException be) {
-				// failed to install unresolvable bundle
-				fail("Unexpected installation error", be); //$NON-NLS-1$
-			}
-			try {
-				host.start();
-			} catch (BundleException be) {
-				fail("Unexpected start host error", be); //$NON-NLS-1$
-			}
-			try {
-				fragment.start();
-				// expected exception starting
-				fail("Expected a failure to start fragment bundle"); //$NON-NLS-1$
-			} catch (BundleException be) {
-				// success - the bundle can not resolve
-				assertEquals("Expected manifest error", BundleException.INVALID_OPERATION, be.getType()); //$NON-NLS-1$
-			}
-
-		} finally {
-			if (host != null)
-				host.uninstall();
-			if (fragment != null)
-				fragment.uninstall();
-
-		}
-	}
-
-	/**
-	 * Test unsupported operation with boot classpath extension
-	 */
-	public void testUnsupportedOperation01() throws IOException, BundleException {
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle("testUnsupportedOperation01", OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle18"); //$NON-NLS-1$ //$NON-NLS-2$
-			// should have failed with BundleException
-			fail("Expected an unsupported operation exception"); //$NON-NLS-1$
-		} catch (BundleException be) {
-			// success - the manifest was invalid
-			assertEquals("Expected unsupported error", BundleException.UNSUPPORTED_OPERATION, be.getType()); //$NON-NLS-1$
-		} finally {
-			if (installed != null)
-				// clean-up - only runs if we end-up accepting an invalid manifest				
-				installed.uninstall();
-		}
-	}
-
-	public void testInstallLocationWithSpaces() throws BundleException, IOException {
-		Bundle installed = null;
-		installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle 01"); //$NON-NLS-1$
-		try {
-			assertEquals("1.0", "bundle01", installed.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState()); //$NON-NLS-1$
-		} finally {
-			// clean-up
-			installed.uninstall();
-		}
-	}
-
-	public void testInstallLocationWithUnderscores() throws BundleException, IOException {
-		Bundle installed = null;
-		installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle02_1.0.0"); //$NON-NLS-1$
-		try {
-			assertEquals("1.0", "bundle02", installed.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState()); //$NON-NLS-1$
-			assertEquals("1.2", new Version("2.0"), new Version((String) installed.getHeaders().get(Constants.BUNDLE_VERSION))); //$NON-NLS-1$ //$NON-NLS-2$
-		} finally {
-			// clean-up
-			installed.uninstall();
-		}
-	}
-
-	/** Ensures we see a bundle with only a extension point as a singleton */
-	public void testInstallBundleWithExtensionPointOnly() throws BundleException, IOException {
-		Bundle installed = null;
-		installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle04"); //$NON-NLS-1$
-		try {
-			assertEquals("1.0", "bundle04", installed.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState()); //$NON-NLS-1$
-			assertEquals("1.2", "1.3.7", installed.getHeaders().get(Constants.BUNDLE_VERSION)); //$NON-NLS-1$ //$NON-NLS-2$
-			String symbolicNameString = (String) installed.getHeaders().get(Constants.BUNDLE_SYMBOLICNAME);
-			assertNotNull("1.3", symbolicNameString); //$NON-NLS-1$
-			ManifestElement[] symbolicNameHeader = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, symbolicNameString);
-			assertEquals("1.4", 1, symbolicNameHeader.length); //$NON-NLS-1$
-			assertEquals("1.5", "true", symbolicNameHeader[0].getDirective(Constants.SINGLETON_DIRECTIVE)); //$NON-NLS-1$ //$NON-NLS-2$
-
-		} finally {
-			// clean-up
-			installed.uninstall();
-		}
-	}
-
-	/** Ensures we see a bundle with only a extension as a singleton */
-	public void testInstallBundleWithExtensionOnly() throws BundleException, IOException {
-		Bundle installed = null;
-		installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle05"); //$NON-NLS-1$
-		try {
-			assertEquals("1.0", "bundle05", installed.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState()); //$NON-NLS-1$
-			assertEquals("1.2", "1.3.8", installed.getHeaders().get(Constants.BUNDLE_VERSION)); //$NON-NLS-1$ //$NON-NLS-2$
-			String symbolicNameString = (String) installed.getHeaders().get(Constants.BUNDLE_SYMBOLICNAME);
-			assertNotNull("1.3", symbolicNameString); //$NON-NLS-1$
-			ManifestElement[] symbolicNameHeader = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, symbolicNameString);
-			assertEquals("1.4", 1, symbolicNameHeader.length); //$NON-NLS-1$
-			assertEquals("1.5", "true", symbolicNameHeader[0].getDirective(Constants.SINGLETON_DIRECTIVE)); //$NON-NLS-1$ //$NON-NLS-2$
-
-		} finally {
-			// clean-up
-			installed.uninstall();
-		}
-	}
-
-	/** Ensures we see a bundle with only extension and extension point as a singleton */
-	public void testInstallBundleWithExtensionAndExtensionPoint() throws BundleException, IOException {
-		Bundle installed = null;
-		installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle06"); //$NON-NLS-1$
-		try {
-			assertEquals("1.0", "bundle06", installed.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState()); //$NON-NLS-1$
-			assertEquals("1.2", "1.3.9", installed.getHeaders().get(Constants.BUNDLE_VERSION)); //$NON-NLS-1$ //$NON-NLS-2$
-			String symbolicNameString = (String) installed.getHeaders().get(Constants.BUNDLE_SYMBOLICNAME);
-			assertNotNull("1.3", symbolicNameString); //$NON-NLS-1$
-			ManifestElement[] symbolicNameHeader = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, symbolicNameString);
-			assertEquals("1.4", 1, symbolicNameHeader.length); //$NON-NLS-1$
-			assertEquals("1.5", "true", symbolicNameHeader[0].getDirective(Constants.SINGLETON_DIRECTIVE)); //$NON-NLS-1$ //$NON-NLS-2$
-
-		} finally {
-			// clean-up
-			installed.uninstall();
-		}
-	}
-
-	/** Ensures two versions of a non-singleton bundle are accepted */
-	public void testInstall2NonSingletonBundles() throws BundleException, IOException {
-		Bundle installed1 = org.eclipse.core.tests.harness.BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle07"); //$NON-NLS-1$
-		ServiceReference packageAdminSR = OSGiTestsActivator.getContext().getServiceReference(PackageAdmin.class.getName());
-		PackageAdmin packageAdmin = (PackageAdmin) OSGiTestsActivator.getContext().getService(packageAdminSR);
-		packageAdmin.resolveBundles(null);
-		Bundle installed2 = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle07b"); //$NON-NLS-1$
-		packageAdmin.resolveBundles(null);
-		OSGiTestsActivator.getContext().ungetService(packageAdminSR);
-		try {
-			assertEquals("1.0", "bundle07", installed2.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.1", Bundle.RESOLVED, installed2.getState()); //$NON-NLS-1$
-			assertEquals("1.2", "1.0.0.b", installed2.getHeaders().get(Constants.BUNDLE_VERSION)); //$NON-NLS-1$ //$NON-NLS-2$
-
-			assertEquals("1.3", "bundle07", installed1.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.4", Bundle.RESOLVED, installed1.getState()); //$NON-NLS-1$
-			assertEquals("1.5", "1.0.0", installed1.getHeaders().get(Constants.BUNDLE_VERSION)); //$NON-NLS-1$ //$NON-NLS-2$
-		} finally {
-			installed1.uninstall();
-			installed2.uninstall();
-		}
-	}
-
-	/** Ensures two versions of a singleton bundle are accepted */
-	public void testInstall2SingletonBundles() throws BundleException, IOException {
-		Bundle installed1 = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle08"); //$NON-NLS-1$
-		ServiceReference packageAdminSR = OSGiTestsActivator.getContext().getServiceReference(PackageAdmin.class.getName());
-		PackageAdmin packageAdmin = (PackageAdmin) OSGiTestsActivator.getContext().getService(packageAdminSR);
-		packageAdmin.resolveBundles(null);
-		Bundle installed2 = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle08b"); //$NON-NLS-1$
-		packageAdmin.resolveBundles(null);
-		OSGiTestsActivator.getContext().ungetService(packageAdminSR);
-		try {
-			assertEquals("1.0", "bundle08", installed1.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.1", Bundle.RESOLVED, installed1.getState()); //$NON-NLS-1$
-			assertEquals("1.2", "1.0.0", installed1.getHeaders().get(Constants.BUNDLE_VERSION)); //$NON-NLS-1$ //$NON-NLS-2$
-
-			assertEquals("1.3", "bundle08", installed2.getSymbolicName()); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("1.4", Bundle.INSTALLED, installed2.getState()); //$NON-NLS-1$
-			assertEquals("1.5", "1.0.0.b", installed2.getHeaders().get(Constants.BUNDLE_VERSION)); //$NON-NLS-1$ //$NON-NLS-2$
-		} finally {
-			installed1.uninstall();
-			installed2.uninstall();
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/listeners/ExceptionHandlerTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/listeners/ExceptionHandlerTests.java
deleted file mode 100644
index e365700..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/listeners/ExceptionHandlerTests.java
+++ /dev/null
@@ -1,117 +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.osgi.tests.listeners;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import junit.framework.Assert;
-import junit.framework.TestCase;
-import org.eclipse.core.tests.harness.BundleTestingHelper;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-
-public class ExceptionHandlerTests extends TestCase {
-	//These tests exercise the code change for bug 73111.
-	
-	class FrameworkEventListenerWithResult implements FrameworkListener {
-		FrameworkEvent event = null;
-		
-		public synchronized void frameworkEvent(FrameworkEvent newEvent) {
-			if (newEvent.getType() != FrameworkEvent.ERROR)
-				return;
-			
-			if (this.event != null)
-				return;
-			event = newEvent;
-			notify();
-		}
-		
-		public synchronized FrameworkEvent getResult(long timeout) {
-			if (event != null) {
-				FrameworkEvent tmp = event;
-				event = null;
-				return tmp;
-			}
-			try {
-				wait(timeout);
-			} catch (InterruptedException e) {
-			}
-			FrameworkEvent tmp = event;
-			event = null;
-			return tmp;
-		}
-	};
-
-	
-	protected void setUp() throws Exception {
-		super.setUp();
-	}
-	
-	
-	public void testNonFatalException() {	
-		FrameworkEventListenerWithResult fwkListener = new FrameworkEventListenerWithResult();
-		OSGiTestsActivator.getContext().addFrameworkListener(fwkListener);
-
-		BundleListener npeGenerator = new BundleListener() {
-			public void bundleChanged(BundleEvent event) {
-				throw new NullPointerException("Generated exception");
-			}
-		};	
-		OSGiTestsActivator.getContext().addBundleListener(npeGenerator);
-		
-		try {
-			BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle09");
-			FrameworkEvent eventReceived = fwkListener.getResult(60000);
-			Assert.assertEquals(FrameworkEvent.ERROR, eventReceived.getType());
-			Assert.assertEquals(true, eventReceived.getThrowable() instanceof NullPointerException);
-		} catch (MalformedURLException e) {
-			//Does not happen
-		} catch (BundleException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		OSGiTestsActivator.getContext().removeFrameworkListener(fwkListener);
-		OSGiTestsActivator.getContext().removeBundleListener(npeGenerator);
-	}
-	
-	
-	public void testFatalException() {	
-		FrameworkEventListenerWithResult fwkListener = new FrameworkEventListenerWithResult();
-		OSGiTestsActivator.getContext().addFrameworkListener(fwkListener);
-
-		BundleListener fatalException = new BundleListener() {
-			public void bundleChanged(BundleEvent event) {
-				throw new OutOfMemoryError("Generated exception");
-			}
-		};
-		OSGiTestsActivator.getContext().addBundleListener(fatalException);
-		
-	
-		try {
-			System.setProperty("eclipse.exitOnError","false"); //Here we set the value to false, because otherwise we would simply exit
-			BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle10");
-			FrameworkEvent eventReceived = fwkListener.getResult(10000);
-			Assert.assertEquals(FrameworkEvent.ERROR, eventReceived.getType());
-			Assert.assertEquals(true, eventReceived.getThrowable() instanceof VirtualMachineError);
-			System.setProperty("eclipse.exitOnError","true");
-		} catch (MalformedURLException e) {
-			//Does not happen
-		} catch (BundleException e) {
-			e.printStackTrace();
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-		OSGiTestsActivator.getContext().removeFrameworkListener(fwkListener);
-		OSGiTestsActivator.getContext().removeBundleListener(fatalException);
-	}
- 
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/misc/MiscTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/misc/MiscTests.java
deleted file mode 100644
index bb88304..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/misc/MiscTests.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.misc;
-
-import junit.framework.*;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.framework.internal.core.BundleHost;
-import org.eclipse.osgi.internal.loader.SingleSourcePackage;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-
-public class MiscTests extends TestCase {
-	public static Test suite() {
-		return new TestSuite(MiscTests.class);
-	}
-
-	public void testBug251427() {
-		BundleHost testsBundle = (BundleHost) OSGiTestsActivator.getContext().getBundle();
-		assertNotNull("tests bundle is null", testsBundle); //$NON-NLS-1$
-		BundleHost harnessBundle = (BundleHost) Platform.getBundle("org.eclipse.core.tests.harness"); //$NON-NLS-1$
-		assertNotNull("harness bundle is null", harnessBundle); //$NON-NLS-1$
-
-		SingleSourcePackage p111 = new SingleSourcePackage("pkg1", testsBundle.getLoaderProxy()); //$NON-NLS-1$
-		SingleSourcePackage p121 = new SingleSourcePackage("pkg1", testsBundle.getLoaderProxy()); //$NON-NLS-1$
-		SingleSourcePackage p112 = new SingleSourcePackage("pkg1", harnessBundle.getLoaderProxy()); //$NON-NLS-1$
-
-		SingleSourcePackage p212 = new SingleSourcePackage("pkg2", harnessBundle.getLoaderProxy()); //$NON-NLS-1$
-		SingleSourcePackage p222 = new SingleSourcePackage("pkg2", harnessBundle.getLoaderProxy()); //$NON-NLS-1$
-		SingleSourcePackage p211 = new SingleSourcePackage("pkg2", testsBundle.getLoaderProxy()); //$NON-NLS-1$
-
-		assertEquals("sources not equal", p111, p121); //$NON-NLS-1$
-		assertEquals("sources hashCode not equal", p111.hashCode(), p121.hashCode()); //$NON-NLS-1$
-		assertEquals("sources not equal", p212, p222); //$NON-NLS-1$
-		assertEquals("sources hashCode not equal", p212.hashCode(), p222.hashCode()); //$NON-NLS-1$
-
-		assertFalse("sources are equal", p111.equals(p112)); //$NON-NLS-1$
-		assertFalse("sources are equal", p212.equals(p211)); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/AllTests.java
deleted file mode 100644
index aae34c8..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/AllTests.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.perf;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests extends TestSuite {
-
-	public AllTests() {
-		super();
-	}
-
-	public AllTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllTests.class.getName());
-		suite.addTest(StatePerformanceTest.suite());
-		suite.addTest(StateUsesPerformanceTest.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/BasePerformanceTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/BasePerformanceTest.java
deleted file mode 100644
index 78b6073..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/BasePerformanceTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.perf;
-
-import java.util.Random;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.Version;
-
-public class BasePerformanceTest extends AbstractStateTest {
-	private Random random;
-
-	public static Test suite() {
-		return new TestSuite(BasePerformanceTest.class);
-	}
-
-	public BasePerformanceTest(String name) {
-		super(name);
-	}
-
-	protected State buildRandomState(int size) {
-		State state = buildEmptyState();
-		StateObjectFactory stateFactory = state.getFactory();
-		BundleDescription[] bundles = new BundleDescription[size];
-		int exportedPackages = 0;
-		for (int i = 0; i < bundles.length; i++) {
-			long bundleId = i;
-			String symbolicName = "bundle" + i;
-			Version version = new Version(1, 0, 0);
-
-			int exportPackageCount = random.nextInt(5);
-			ExportPackageDescription[] exportPackages = new ExportPackageDescription[exportPackageCount];
-			for (int j = 0; j < exportPackages.length; j++) {
-				String packageName = "package." + exportedPackages++;
-				Version packageVersion = Version.parseVersion("1.0.0");
-				exportPackages[j] = stateFactory.createExportPackageDescription(packageName, packageVersion, null, null, true, null);
-			}
-			int importPackageCount = Math.min(exportPackageCount, random.nextInt(5));
-			int importedPackageIndex = random.nextInt(exportPackageCount + 1);
-			ImportPackageSpecification[] importPackages = new ImportPackageSpecification[importPackageCount];
-			for (int j = 0; j < importPackages.length; j++) {
-				int index = importedPackageIndex++;
-				if (importedPackageIndex > exportPackageCount)
-					importedPackageIndex = 1;
-				String packageName = "package." + index;
-				importPackages[j] = stateFactory.createImportPackageSpecification(packageName, new VersionRange("1.0.0"), null, null, null, null, null);
-			}
-
-			BundleSpecification[] requiredBundles = new BundleSpecification[Math.min(i, random.nextInt(5))];
-			for (int j = 0; j < requiredBundles.length; j++) {
-				int requiredIndex = random.nextInt(i);
-				String requiredName = bundles[requiredIndex].getSymbolicName();
-				Version requiredVersion = bundles[requiredIndex].getVersion();
-				boolean export = random.nextInt(10) > 6;
-				boolean optional = random.nextInt(10) > 8;
-				requiredBundles[j] = stateFactory.createBundleSpecification(requiredName, new VersionRange(requiredVersion.toString()), export, optional);
-			}
-
-			bundles[i] = stateFactory.createBundleDescription(bundleId, symbolicName, version, symbolicName, requiredBundles, (HostSpecification) null, importPackages, exportPackages, null, random.nextDouble() > 0.05);
-			state.addBundle(bundles[i]);
-		}
-		return state;
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		// uses a constant seed to prevent variation on results
-		this.random = new Random(0);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StatePerformanceTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StatePerformanceTest.java
deleted file mode 100644
index f592456..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StatePerformanceTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.perf;
-
-import java.io.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.harness.PerformanceTestRunner;
-import org.eclipse.osgi.service.resolver.State;
-
-public class StatePerformanceTest extends BasePerformanceTest {
-
-	// TODO this should be removed in 3.7
-	public final static String PERFORMANCE_BUG311546_EXPLANATION = "Performance decrease caused improvements in memory usage. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=269185 for details."; //$NON-NLS-1$
-
-	public static Test suite() {
-		return new TestSuite(StatePerformanceTest.class);
-	}
-
-	public StatePerformanceTest(String name) {
-		super(name);
-	}
-
-	private State storeAndRetrieve(State toStore) throws IOException {
-		ByteArrayOutputStream baos = new ByteArrayOutputStream();
-		toStore.getFactory().writeState(toStore, baos);
-		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-		return toStore.getFactory().readState(bais);
-	}
-
-	public void testCreation() {
-		final int stateSize = 5000;
-		new PerformanceTestRunner() {
-			protected void test() {
-				buildRandomState(stateSize);
-			}
-		}.run(this, 10, 10);
-	}
-
-	private void testResolution(int stateSize, int repetitions, String localName, String degradation) {
-		final State originalState = buildRandomState(stateSize);
-		PerformanceTestRunner runner = new PerformanceTestRunner() {
-			protected void test() {
-				originalState.resolve(false);
-			}
-		};
-		runner.setRegressionReason(degradation);
-		runner.run(this, localName, 10, repetitions);
-	}
-
-	public void testResolution100() throws IOException {
-		testResolution(100, 500, null, PERFORMANCE_BUG311546_EXPLANATION);
-	}
-
-	public void testResolution1000() throws IOException {
-		testResolution(1000, 15, "State Resolution", null);
-	}
-
-	public void testResolution500() throws IOException {
-		testResolution(500, 50, null, PERFORMANCE_BUG311546_EXPLANATION);
-	}
-
-	public void testResolution5000() throws IOException {
-		testResolution(5000, 1, null, null);
-	}
-
-	public void testStoreAndRetrieve() {
-		int stateSize = 5000;
-		final State originalState = buildRandomState(stateSize);
-		new PerformanceTestRunner() {
-			protected void test() {
-				try {
-					storeAndRetrieve(originalState);
-				} catch (IOException e) {
-					CoreTest.fail("", e);
-				}
-			}
-		}.run(this, 10, 10);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StateUsesPerformanceTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StateUsesPerformanceTest.java
deleted file mode 100644
index 6a985ee..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StateUsesPerformanceTest.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.perf;
-
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.tests.harness.PerformanceTestRunner;
-import org.eclipse.osgi.service.resolver.State;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-
-public class StateUsesPerformanceTest extends BasePerformanceTest {
-
-	public static Test suite() {
-		return new TestSuite(StateUsesPerformanceTest.class);
-	}
-
-	public StateUsesPerformanceTest(String name) {
-		super(name);
-	}
-
-	private void doUsesResolution(int stateSize, int repetitions, String localName, String degradation) throws BundleException {
-		final State originalState = buildRandomState(stateSize);
-		addUsesBundles(originalState);
-		PerformanceTestRunner runner = new PerformanceTestRunner() {
-			protected void test() {
-				originalState.resolve(false);
-			}
-		};
-		runner.setRegressionReason(degradation);
-		runner.run(this, localName, 10, repetitions);
-
-	}
-
-	public void testUsesResolution00100() throws BundleException {
-		doUsesResolution(100, 100, null, StatePerformanceTest.PERFORMANCE_BUG311546_EXPLANATION);
-	}
-
-	public void testUsesResolution00500() throws BundleException {
-		doUsesResolution(500, 10, null, StatePerformanceTest.PERFORMANCE_BUG311546_EXPLANATION);
-	}
-
-	public void testUsesResolution01000() throws BundleException {
-		doUsesResolution(1000, 10, null, null);
-	}
-
-	public void testUsesResolution05000() throws BundleException {
-		doUsesResolution(5000, 1, null, null);
-	}
-
-	private void addUsesBundles(State state) throws BundleException {
-		int id = state.getBundles().length + 500;
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "3.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "4.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "5.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[1.0.0,2.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[1.0.0,2.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "3.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[1.0.0,2.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "4.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[1.0.0,2.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "5.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[1.0.0,2.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[2.0.0,3.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[2.0.0,3.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "3.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[2.0.0,3.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "4.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[2.0.0,3.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "5.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[2.0.0,3.0.0)\"; visibility:=reexport");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "f; uses:=b");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A, B, C");
-		state.addBundle(state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), id++));
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/AdminPermissionTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/AdminPermissionTests.java
deleted file mode 100644
index b21526a..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/AdminPermissionTests.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.permissions;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.PropertyPermission;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.AdminPermission;
-
-public class AdminPermissionTests extends PermissionTests {
-
-	public static Test suite() {
-		return new TestSuite(AdminPermissionTests.class);
-	}
-
-	public void testAdminPermission() {
-		AdminPermission p1 = new AdminPermission();
-		AdminPermission p2 = new AdminPermission("*", "*"); //$NON-NLS-1$ //$NON-NLS-2$
-		Permission op = new PropertyPermission("java.home", "read"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		shouldImply(p1, p2);
-		shouldImply(p1, p1);
-		shouldNotImply(p1, op);
-
-		shouldEqual(p1, p2);
-		shouldNotEqual(p1, op);
-
-		PermissionCollection pc = p1.newPermissionCollection();
-
-		checkEnumeration(pc.elements(), true);
-
-		shouldNotImply(pc, p1);
-
-		shouldAdd(pc, p1);
-		shouldAdd(pc, p2);
-		shouldNotAdd(pc, op);
-
-		pc.setReadOnly();
-
-		shouldNotAdd(pc, new AdminPermission());
-
-		shouldImply(pc, p1);
-		shouldImply(pc, p2);
-		shouldNotImply(pc, op);
-
-		checkEnumeration(pc.elements(), false);
-
-		testSerialization(p1);
-		testSerialization(p2);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PackagePermissionTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PackagePermissionTests.java
deleted file mode 100644
index 860d17f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PackagePermissionTests.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.permissions;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.PropertyPermission;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.PackagePermission;
-
-public class PackagePermissionTests extends PermissionTests {
-
-	public static Test suite() {
-		return new TestSuite(PackagePermissionTests.class);
-	}
-
-	public void testPackagePermission() {
-		badPackagePermission("a.b.c", "x"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "   get  ,  x   "); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "      "); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", null); //$NON-NLS-1$
-		badPackagePermission("a.b.c", ","); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", ",xxx"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "xxx,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "import,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "export,   "); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "importme,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "exportme,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", ",import"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", ",export"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "   importme   "); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "   exportme     "); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "   impor"); //$NON-NLS-1$ //$NON-NLS-2$
-		badPackagePermission("a.b.c", "   expor"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		Permission op = new PropertyPermission("java.home", "read"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		PackagePermission p11 = new PackagePermission("com.foo.service1", "    IMPORT,export   "); //$NON-NLS-1$ //$NON-NLS-2$
-		PackagePermission p12 = new PackagePermission("com.foo.service1", "EXPORT  ,   import"); //$NON-NLS-1$ //$NON-NLS-2$
-		PackagePermission p13 = new PackagePermission("com.foo.service1", "expORT   "); //$NON-NLS-1$ //$NON-NLS-2$
-		PackagePermission p14 = new PackagePermission("com.foo.service1", "    Import    "); //$NON-NLS-1$ //$NON-NLS-2$
-
-		shouldImply(p11, p11);
-		shouldImply(p11, p12);
-		shouldImply(p11, p13);
-		shouldImply(p11, p14);
-
-		shouldImply(p12, p11);
-		shouldImply(p12, p12);
-		shouldImply(p12, p13);
-		shouldImply(p12, p14);
-
-		shouldImply(p13, p11);
-		shouldImply(p13, p12);
-		shouldImply(p13, p13);
-		shouldImply(p13, p14);
-
-		shouldImply(p14, p14);
-
-		shouldNotImply(p14, p11);
-		shouldNotImply(p14, p12);
-		shouldNotImply(p14, p13);
-
-		shouldNotImply(p11, op);
-
-		shouldEqual(p11, p11);
-		shouldEqual(p11, p12);
-		shouldEqual(p11, p13);
-		shouldEqual(p12, p11);
-		shouldEqual(p12, p12);
-		shouldEqual(p12, p13);
-		shouldEqual(p13, p11);
-		shouldEqual(p13, p12);
-		shouldEqual(p13, p13);
-
-		shouldNotEqual(p11, p14);
-		shouldNotEqual(p12, p14);
-		shouldNotEqual(p13, p14);
-		shouldNotEqual(p14, p11);
-		shouldNotEqual(p14, p12);
-		shouldNotEqual(p14, p13);
-
-		PermissionCollection pc = p13.newPermissionCollection();
-
-		checkEnumeration(pc.elements(), true);
-
-		shouldNotImply(pc, p11);
-
-		shouldAdd(pc, p14);
-		shouldImply(pc, p14);
-		shouldNotImply(pc, p11);
-		shouldNotImply(pc, p12);
-		shouldNotImply(pc, p13);
-
-		shouldAdd(pc, p13);
-		shouldImply(pc, p11);
-		shouldImply(pc, p12);
-		shouldImply(pc, p13);
-		shouldImply(pc, p14);
-
-		shouldNotAdd(pc, op);
-
-		pc = p13.newPermissionCollection();
-
-		shouldAdd(pc, p13);
-		shouldImply(pc, p11);
-		shouldImply(pc, p12);
-		shouldImply(pc, p13);
-		shouldImply(pc, p14);
-
-		pc = p11.newPermissionCollection();
-
-		shouldAdd(pc, p11);
-		shouldImply(pc, p11);
-		shouldImply(pc, p12);
-		shouldImply(pc, p13);
-		shouldImply(pc, p14);
-
-		pc.setReadOnly();
-
-		shouldNotAdd(pc, p12);
-
-		checkEnumeration(pc.elements(), false);
-
-		PackagePermission p21 = new PackagePermission("com.foo.service2", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-		PackagePermission p22 = new PackagePermission("com.foo.*", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-		PackagePermission p23 = new PackagePermission("com.*", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-		PackagePermission p24 = new PackagePermission("*", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		shouldImply(p21, p21);
-		shouldImply(p22, p21);
-		shouldImply(p23, p21);
-		shouldImply(p24, p21);
-
-		shouldImply(p22, p22);
-		shouldImply(p23, p22);
-		shouldImply(p24, p22);
-
-		shouldImply(p23, p23);
-		shouldImply(p24, p23);
-
-		shouldImply(p24, p24);
-
-		shouldNotImply(p21, p22);
-		shouldNotImply(p21, p23);
-		shouldNotImply(p21, p24);
-
-		shouldNotImply(p22, p23);
-		shouldNotImply(p22, p24);
-
-		shouldNotImply(p23, p24);
-
-		pc = p21.newPermissionCollection();
-
-		shouldAdd(pc, p21);
-		shouldImply(pc, p21);
-		shouldNotImply(pc, p22);
-		shouldNotImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		shouldAdd(pc, p22);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldNotImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		shouldAdd(pc, p23);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		shouldAdd(pc, p24);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldImply(pc, p24);
-
-		pc = p22.newPermissionCollection();
-
-		shouldAdd(pc, p22);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldNotImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		pc = p23.newPermissionCollection();
-
-		shouldAdd(pc, p23);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		pc = p24.newPermissionCollection();
-
-		shouldAdd(pc, p24);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldImply(pc, p24);
-
-		testSerialization(p11);
-		testSerialization(p12);
-		testSerialization(p13);
-		testSerialization(p14);
-		testSerialization(p21);
-		testSerialization(p22);
-		testSerialization(p23);
-		testSerialization(p24);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PermissionTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PermissionTests.java
deleted file mode 100644
index df196cd..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/PermissionTests.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.permissions;
-
-import java.io.*;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-import junit.framework.*;
-import org.osgi.framework.PackagePermission;
-import org.osgi.framework.ServicePermission;
-
-public class PermissionTests extends TestCase {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(PermissionTests.class.getName());
-		suite.addTest(AdminPermissionTests.suite());
-		suite.addTest(ServicePermissionTests.suite());
-		suite.addTest(PackagePermissionTests.suite());
-		return suite;
-	}
-
-	protected void badServicePermission(String name, String actions) {
-		try {
-			ServicePermission p = new ServicePermission(name, actions);
-			fail(p + " created with invalid actions"); //$NON-NLS-1$
-		} catch (IllegalArgumentException e) {
-			// expected
-		}
-	}
-
-	protected void badPackagePermission(String name, String actions) {
-		try {
-			PackagePermission p = new PackagePermission(name, actions);
-			fail(p + " created with invalid actions"); //$NON-NLS-1$
-		} catch (IllegalArgumentException e) {
-			// expected
-		}
-	}
-
-	protected void checkEnumeration(Enumeration en, boolean isEmpty) {
-		assertEquals(en + " empty state is invalid", !isEmpty, en.hasMoreElements()); //$NON-NLS-1$
-		try {
-			while (en.hasMoreElements()) {
-				en.nextElement();
-			}
-		} catch (NoSuchElementException e) {
-			fail(en + " threw NoSuchElementException"); //$NON-NLS-1$
-		}
-
-		try {
-			en.nextElement();
-			fail(en + " is empty but didn't throw NoSuchElementException"); //$NON-NLS-1$
-		} catch (NoSuchElementException e) {
-			// expected
-		}
-	}
-
-	protected void shouldImply(Permission p1, Permission p2) {
-		assertTrue(p1 + " does not imply " + p2, p1.implies(p2)); //$NON-NLS-1$
-	}
-
-	protected void shouldNotImply(Permission p1, Permission p2) {
-		assertFalse(p1 + " does imply " + p2, p1.implies(p2)); //$NON-NLS-1$
-	}
-
-	protected void shouldImply(PermissionCollection p1, Permission p2) {
-		assertTrue(p1 + " does not imply " + p2, p1.implies(p2)); //$NON-NLS-1$
-	}
-
-	protected void shouldNotImply(PermissionCollection p1, Permission p2) {
-		assertFalse(p1 + " does imply " + p2, p1.implies(p2)); //$NON-NLS-1$
-	}
-
-	protected void shouldEqual(Permission p1, Permission p2) {
-		assertTrue(p1 + " does not equal " + p2, p1.equals(p2)); //$NON-NLS-1$
-		assertTrue(p2 + " does not equal " + p1, p2.equals(p1)); //$NON-NLS-1$
-	}
-
-	protected void shouldNotEqual(Permission p1, Permission p2) {
-		assertFalse(p1 + " does equal " + p2, p1.equals(p2)); //$NON-NLS-1$
-	}
-
-	protected void shouldAdd(PermissionCollection p1, Permission p2) {
-		try {
-			p1.add(p2);
-		} catch (Exception e) {
-			fail(p1 + " will not add " + p2); //$NON-NLS-1$
-		}
-	}
-
-	protected void shouldNotAdd(PermissionCollection p1, Permission p2) {
-		try {
-			p1.add(p2);
-			fail(p1 + " will add " + p2); //$NON-NLS-1$
-		} catch (Exception e) {
-			// expected
-		}
-	}
-
-	protected void testSerialization(Permission p1) {
-		try {
-			ByteArrayOutputStream baos = new ByteArrayOutputStream();
-			ObjectOutputStream out = new ObjectOutputStream(baos);
-
-			out.writeObject(p1);
-			out.flush();
-			out.close();
-
-			ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-			ObjectInputStream in = new ObjectInputStream(bais);
-
-			Permission p2 = (Permission) in.readObject();
-
-			shouldEqual(p1, p2);
-			shouldImply(p1, p2);
-			shouldImply(p2, p1);
-		} catch (Exception e) {
-			fail(e.toString());
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/ServicePermissionTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/ServicePermissionTests.java
deleted file mode 100644
index 6122430..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/permissions/ServicePermissionTests.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.permissions;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.PropertyPermission;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.osgi.framework.ServicePermission;
-
-public class ServicePermissionTests extends PermissionTests {
-
-	public static Test suite() {
-		return new TestSuite(ServicePermissionTests.class);
-	}
-
-	public void testServicePermission() {
-		badServicePermission("a.b.c", "x"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "   get  ,  x   "); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", ""); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "      "); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", null); //$NON-NLS-1$
-		badServicePermission("a.b.c", ","); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", ",xxx"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "xxx,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "get,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "register,   "); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "getme,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "registerme,"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", ",get"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", ",register"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "   getme   "); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "   registerme     "); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "   ge"); //$NON-NLS-1$ //$NON-NLS-2$
-		badServicePermission("a.b.c", "   registe"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		Permission op = new PropertyPermission("java.home", "read"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		ServicePermission p11 = new ServicePermission("com.foo.service1", "    GET,register   "); //$NON-NLS-1$ //$NON-NLS-2$
-		ServicePermission p12 = new ServicePermission("com.foo.service1", "REGISTER  ,   get"); //$NON-NLS-1$ //$NON-NLS-2$
-		ServicePermission p13 = new ServicePermission("com.foo.service1", "regisTER   "); //$NON-NLS-1$ //$NON-NLS-2$
-		ServicePermission p14 = new ServicePermission("com.foo.service1", "    Get    "); //$NON-NLS-1$ //$NON-NLS-2$
-
-		shouldImply(p11, p11);
-		shouldImply(p11, p12);
-		shouldImply(p11, p13);
-		shouldImply(p11, p14);
-
-		shouldImply(p12, p11);
-		shouldImply(p12, p12);
-		shouldImply(p12, p13);
-		shouldImply(p12, p14);
-
-		shouldImply(p13, p13);
-		shouldImply(p14, p14);
-
-		shouldNotImply(p13, p11);
-		shouldNotImply(p13, p12);
-
-		shouldNotImply(p14, p11);
-		shouldNotImply(p14, p12);
-
-		shouldNotImply(p13, p14);
-		shouldNotImply(p14, p13);
-
-		shouldNotImply(p11, op);
-
-		shouldEqual(p11, p11);
-		shouldEqual(p11, p12);
-		shouldEqual(p12, p11);
-		shouldEqual(p12, p12);
-		shouldEqual(p13, p13);
-		shouldEqual(p14, p14);
-
-		shouldNotEqual(p11, p13);
-		shouldNotEqual(p11, p14);
-		shouldNotEqual(p12, p13);
-		shouldNotEqual(p12, p14);
-		shouldNotEqual(p13, p11);
-		shouldNotEqual(p13, p12);
-		shouldNotEqual(p13, p14);
-		shouldNotEqual(p14, p11);
-		shouldNotEqual(p14, p12);
-		shouldNotEqual(p14, p13);
-
-		PermissionCollection pc = p13.newPermissionCollection();
-
-		checkEnumeration(pc.elements(), true);
-
-		shouldNotImply(pc, p11);
-
-		shouldAdd(pc, p14);
-		shouldImply(pc, p14);
-		shouldNotImply(pc, p11);
-		shouldNotImply(pc, p12);
-		shouldNotImply(pc, p13);
-
-		shouldAdd(pc, p13);
-		shouldImply(pc, p11);
-		shouldImply(pc, p12);
-		shouldImply(pc, p13);
-		shouldImply(pc, p14);
-
-		shouldNotAdd(pc, op);
-
-		pc = p13.newPermissionCollection();
-
-		shouldAdd(pc, p13);
-		shouldImply(pc, p13);
-		shouldNotImply(pc, p11);
-		shouldNotImply(pc, p12);
-		shouldNotImply(pc, p14);
-
-		shouldAdd(pc, p14);
-		shouldImply(pc, p11);
-		shouldImply(pc, p12);
-		shouldImply(pc, p13);
-		shouldImply(pc, p14);
-
-		pc = p11.newPermissionCollection();
-
-		shouldAdd(pc, p11);
-		shouldImply(pc, p11);
-		shouldImply(pc, p12);
-		shouldImply(pc, p13);
-		shouldImply(pc, p14);
-
-		pc.setReadOnly();
-
-		shouldNotAdd(pc, p12);
-
-		checkEnumeration(pc.elements(), false);
-
-		ServicePermission p21 = new ServicePermission("com.foo.service2", "get"); //$NON-NLS-1$ //$NON-NLS-2$
-		ServicePermission p22 = new ServicePermission("com.foo.*", "get"); //$NON-NLS-1$ //$NON-NLS-2$
-		ServicePermission p23 = new ServicePermission("com.*", "get"); //$NON-NLS-1$ //$NON-NLS-2$
-		ServicePermission p24 = new ServicePermission("*", "get"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		shouldImply(p21, p21);
-		shouldImply(p22, p21);
-		shouldImply(p23, p21);
-		shouldImply(p24, p21);
-
-		shouldImply(p22, p22);
-		shouldImply(p23, p22);
-		shouldImply(p24, p22);
-
-		shouldImply(p23, p23);
-		shouldImply(p24, p23);
-
-		shouldImply(p24, p24);
-
-		shouldNotImply(p21, p22);
-		shouldNotImply(p21, p23);
-		shouldNotImply(p21, p24);
-
-		shouldNotImply(p22, p23);
-		shouldNotImply(p22, p24);
-
-		shouldNotImply(p23, p24);
-
-		pc = p21.newPermissionCollection();
-
-		shouldAdd(pc, p21);
-		shouldImply(pc, p21);
-		shouldNotImply(pc, p22);
-		shouldNotImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		shouldAdd(pc, p22);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldNotImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		shouldAdd(pc, p23);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		shouldAdd(pc, p24);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldImply(pc, p24);
-
-		pc = p22.newPermissionCollection();
-
-		shouldAdd(pc, p22);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldNotImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		pc = p23.newPermissionCollection();
-
-		shouldAdd(pc, p23);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldNotImply(pc, p24);
-
-		pc = p24.newPermissionCollection();
-
-		shouldAdd(pc, p24);
-		shouldImply(pc, p21);
-		shouldImply(pc, p22);
-		shouldImply(pc, p23);
-		shouldImply(pc, p24);
-
-		testSerialization(p11);
-		testSerialization(p12);
-		testSerialization(p13);
-		testSerialization(p14);
-		testSerialization(p21);
-		testSerialization(p22);
-		testSerialization(p23);
-		testSerialization(p24);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestAttributes_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestAttributes_001.java
deleted file mode 100644
index 3d90617..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestAttributes_001.java
+++ /dev/null
@@ -1,201 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.osgi.framework.BundleException;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-
-
-public class TestAttributes_001 extends AbstractStateTest {
-	public TestAttributes_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-	BundleDescription bundle_5 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		bundle_5 = create_bundle_5(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("foo")) {
-				assertNotNull("Package [foo] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [foo] is wired incorrectly ", exp.getExporter(), bundle_1);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("foo")) {
-				assertNotNull("Package [foo] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [foo] is wired incorrectly ", exp.getExporter(), bundle_1);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_4() {} // end method
-
-	public void checkWiringState_5() {} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-		checkWiringState_5();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_5);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_4.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_5.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "foo; version=1.0; a=x; b=y");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Import-Package", "foo; version=1.0; a=x");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Import-Package", "foo; version=1.0; b=y");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Import-Package", "foo; version=1.0; c=z");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_5(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_5 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_5.put("Bundle-ManifestVersion", "2");
-		dictionary_5.put("Bundle-SymbolicName", "E");
-		dictionary_5.put("Import-Package", "foo; version=1.0; a=y");
-		try {
-			bundle = sof.createBundleDescription(dictionary_5, "bundle_5", 5);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestBSN_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestBSN_001.java
deleted file mode 100644
index fab62b1..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestBSN_001.java
+++ /dev/null
@@ -1,145 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestBSN_001 extends AbstractStateTest {
-	public TestBSN_001(String testName) {
-		super(testName);
-	}
-	
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-		
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("foo")) {
-				assertNotNull("Package [foo] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [foo] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "foo; version=\"1.0\"; bundle-symbolic-name=\"C\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Import-Package", "foo; version=\"1.0\"; bundle-symbolic-name=\"A\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "foo; version=\"1.0\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_001.java
deleted file mode 100644
index 26059f8..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_001.java
+++ /dev/null
@@ -1,131 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestCycle_001  extends AbstractStateTest {
-	public TestCycle_001(String testName) {
-		super(testName);
-	}
-	
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		BundleDescription[] requires = bundle_2.getResolvedRequires();
-		assertNotNull("requires array is unexpectedly null", requires);
-		assertTrue("requires array is unexpectedly empty", requires.length > 0);
-		for (int i = 0; i<requires.length; i++) {
-			String requiresName = requires[i].getName();
-			assertNotNull("package name is null", requiresName);
-			if(requiresName.equals("B")) {
-				assertNotNull("Require [B] is not wired when it should be ", requires[i]);
-				assertEquals("Require [B] is wired incorrectly ", requires[i], bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		BundleDescription[] requires = bundle_2.getResolvedRequires();
-		assertNotNull("requires array is unexpectedly null", requires);
-		assertTrue("requires array is unexpectedly empty", requires.length > 0);
-		for (int i = 0; i<requires.length; i++) {
-			String requiresName = requires[i].getName();
-			assertNotNull("package name is null", requiresName);
-			if(requiresName.equals("A")) {
-				assertNotNull("Require [A] is not wired when it should be ", requires[i]);
-				assertEquals("Require [A] is wired incorrectly ", requires[i], bundle_1);
-			}
-		} // end for
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Require-Bundle", "B");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Require-Bundle", "A");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_002.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_002.java
deleted file mode 100644
index 310aee6..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_002.java
+++ /dev/null
@@ -1,175 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestCycle_002 extends AbstractStateTest {
-	public TestCycle_002(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		BundleDescription[] requires = bundle_1.getResolvedRequires();
-		assertNotNull("requires array is unexpectedly null", requires);
-		assertTrue("requires array is unexpectedly empty", requires.length > 0);
-		for (int i = 0; i<requires.length; i++) {
-			String requiresName = requires[i].getName();
-			assertNotNull("package name is null", requiresName);
-			if(requiresName.equals("B")) {
-				assertNotNull("Require [B] is not wired when it should be ", requires[i]);
-				assertEquals("Require [B] is wired incorrectly ", requires[i], bundle_2);
-			} else if(requiresName.equals("C")) {
-				assertNotNull("Require [C] is not wired when it should be ", requires[i]);
-				assertEquals("Require [C] is wired incorrectly ", requires[i], bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		BundleDescription[] requires = bundle_2.getResolvedRequires();
-		assertNotNull("requires array is unexpectedly null", requires);
-		assertTrue("requires array is unexpectedly empty", requires.length > 0);
-		for (int i = 0; i<requires.length; i++) {
-			String requiresName = requires[i].getName();
-			assertNotNull("package name is null", requiresName);
-			if(requiresName.equals("A")) {
-				assertNotNull("Require [A] is not wired when it should be ", requires[i]);
-				assertEquals("Require [A] is wired incorrectly ", requires[i], bundle_1);
-			} else if(requiresName.equals("C")) {
-				assertNotNull("Require [C] is not wired when it should be ", requires[i]);
-				assertEquals("Require [C] is wired incorrectly ", requires[i], bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-		BundleDescription[] requires = bundle_3.getResolvedRequires();
-		assertNotNull("requires array is unexpectedly null", requires);
-		assertTrue("requires array is unexpectedly empty", requires.length > 0);
-		for (int i = 0; i<requires.length; i++) {
-			String requiresName = requires[i].getName();
-			assertNotNull("package name is null", requiresName);
-			if(requiresName.equals("A")) {
-				assertNotNull("Require [A] is not wired when it should be ", requires[i]);
-				assertEquals("Require [A] is wired incorrectly ", requires[i], bundle_1);
-			} else if(requiresName.equals("B")) {
-				assertNotNull("Require [B] is not wired when it should be ", requires[i]);
-				assertEquals("Require [B] is wired incorrectly ", requires[i], bundle_2);
-			}
-		} // end for
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Require-Bundle", "B, C");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Require-Bundle", "A, C");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Require-Bundle", "A, B");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_003.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_003.java
deleted file mode 100644
index 0a2620f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_003.java
+++ /dev/null
@@ -1,132 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestCycle_003 extends AbstractStateTest {
-	public TestCycle_003(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_003() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", !bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Require-Bundle", "B, D");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Require-Bundle", "C");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Require-Bundle", "A");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_004.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_004.java
deleted file mode 100644
index 53cf2a9..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_004.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestCycle_004 extends AbstractStateTest {
-	public TestCycle_004(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_1);
-			}
-		} // end for
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "q; version=1.0");
-		dictionary_1.put("Import-Package", "p; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; version=1.0");
-		dictionary_2.put("Import-Package", "q; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_005.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_005.java
deleted file mode 100644
index 0db7a52..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_005.java
+++ /dev/null
@@ -1,161 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestCycle_005 extends AbstractStateTest {
-	public TestCycle_005(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("r")) {
-				assertNotNull("Package [r] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [r] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", !bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "r; version=2.0");
-		dictionary_1.put("Import-Package", "p; version=1.0, z; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; version=1.0, r; version=1.0");
-		dictionary_2.put("Import-Package", "q; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "q; version=1.0");
-		dictionary_3.put("Import-Package", "r; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_006.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_006.java
deleted file mode 100644
index 7f12d61..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestCycle_006.java
+++ /dev/null
@@ -1,134 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestCycle_006 extends AbstractStateTest {
-	public TestCycle_006(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_003() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", !bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "s");
-		dictionary_1.put("Import-Package", "p, q, r");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; q; uses:=\"p,q\"");
-		dictionary_2.put("Import-Package", "s");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p; r; uses:=\"p,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_001.java
deleted file mode 100644
index cececd4..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_001.java
+++ /dev/null
@@ -1,116 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestDynamic_001 extends AbstractStateTest {
-	public TestDynamic_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-
-		// Dynamics
-		ExportPackageDescription exp = state.linkDynamicImport(bundle_1, "p");
-		assertNotNull("Package [p] is not wired when it should be ", exp);
-		assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_2);
-		
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("DynamicImport-Package", "p");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_002.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_002.java
deleted file mode 100644
index ec48b70..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_002.java
+++ /dev/null
@@ -1,154 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestDynamic_002 extends AbstractStateTest {
-	public TestDynamic_002(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-		
-		// Dynamics
-		ExportPackageDescription exp = state.linkDynamicImport(bundle_1, "r");
-		assertNull("Package [r] is wired when it should not be ", exp);
-		
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} else if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p, q");
-		dictionary_1.put("DynamicImport-Package", "r");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; q; uses:=\"p,q\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "q; r; uses:=\"q,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_003.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_003.java
deleted file mode 100644
index 8eb4523..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_003.java
+++ /dev/null
@@ -1,155 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestDynamic_003 extends AbstractStateTest {
-	public TestDynamic_003(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_003() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-		
-		// Dynamics
-		ExportPackageDescription exp = state.linkDynamicImport(bundle_1, "r");
-		assertNotNull("Package [r] is not wired when it should be ", exp);
-		assertEquals("Package [r] is wired incorrectly ", exp.getExporter(), bundle_3);
-		
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p, q");
-		dictionary_1.put("DynamicImport-Package", "r");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "r");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p; q; r; uses:=\"p,q,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_004.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_004.java
deleted file mode 100644
index d348530..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_004.java
+++ /dev/null
@@ -1,188 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestDynamic_004 extends AbstractStateTest {
-	public TestDynamic_004(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-
-	
-	public void testTest_003() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-		
-		// Dynamics
-		ExportPackageDescription exp = state.linkDynamicImport(bundle_1, "q");
-		assertNotNull("Package [q] is not wired when it should be ", exp);
-		assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_3);
-		
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	public void checkWiringState_4() {
-	} // end method
-
-	
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p");
-		dictionary_1.put("DynamicImport-Package", "q");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; uses:=q");
-		dictionary_2.put("Import-Package", "q; bundle-symbolic-name=C");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "q");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Export-Package", "q; version=2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_005.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_005.java
deleted file mode 100644
index 2fb2e5f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_005.java
+++ /dev/null
@@ -1,139 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestDynamic_005 extends AbstractStateTest {
-	public TestDynamic_005(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_005() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-		
-		// Dynamics
-		ExportPackageDescription exp = state.linkDynamicImport(bundle_1, "q");
-		assertNotNull("Package [q] is not wired when it should be ", exp);
-		assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_3);
-		
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("DynamicImport-Package", "*");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "q");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_006.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_006.java
deleted file mode 100644
index 2e6cba1..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_006.java
+++ /dev/null
@@ -1,139 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestDynamic_006 extends AbstractStateTest {
-	public TestDynamic_006(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_005() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-		
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-		
-		// Dynamics
-		ExportPackageDescription exp = state.linkDynamicImport(bundle_1, "p.b");
-		assertNotNull("Package [p.b] is not wired when it should be ", exp);
-		assertEquals("Package [p.b] is wired incorrectly ", exp.getExporter(), bundle_3);
-		
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("DynamicImport-Package", "p.*");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p.a");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p.b");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGenerated_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGenerated_001.java
deleted file mode 100644
index 1bef86c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGenerated_001.java
+++ /dev/null
@@ -1,373 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-
-public class TestGenerated_001 extends AbstractStateTest {
-	public TestGenerated_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-	BundleDescription bundle_5 = null;
-	BundleDescription bundle_6 = null;
-	BundleDescription bundle_7 = null;
-	BundleDescription bundle_8 = null;
-	BundleDescription bundle_9 = null;
-	BundleDescription bundle_10 = null;
-
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		bundle_5 = create_bundle_5(sof);
-		bundle_6 = create_bundle_6(sof);
-		bundle_7 = create_bundle_7(sof);
-		bundle_8 = create_bundle_8(sof);
-		bundle_9 = create_bundle_9(sof);
-		bundle_10 = create_bundle_10(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = null;
-		exports = null;
-		exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("a2")) {
-				assertNotNull("Package [a2] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a2] is  wired incorrectly ", exp.getExporter(), bundle_8);
-			} else if (exportPackageName.equals("a1")) {
-				assertNotNull("Package [a1] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a1] is  wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("a3")) {
-				assertNotNull("Package [a3] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a3] is  wired incorrectly ", exp.getExporter(), bundle_6);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_4() {
-	} // end method
-
-	public void checkWiringState_5() {
-	} // end method
-
-	public void checkWiringState_6() {
-		ExportPackageDescription[] exports = null;
-		exports = null;
-		exports = bundle_6.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("a2")) {
-				assertNotNull("Package [a2] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a2] is  wired incorrectly ", exp.getExporter(), bundle_8);
-			} else if (exportPackageName.equals("a1")) {
-				assertNotNull("Package [a1] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a1] is  wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("a3")) {
-				assertNotNull("Package [a3] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a3] is  wired incorrectly ", exp.getExporter(), bundle_6);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_7() {
-		ExportPackageDescription[] exports = null;
-		exports = null;
-		exports = bundle_7.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("a2")) {
-				assertNotNull("Package [a2] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a2] is  wired incorrectly ", exp.getExporter(), bundle_8);
-			} else if (exportPackageName.equals("a1")) {
-				assertNotNull("Package [a1] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a1] is  wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("a3")) {
-				assertNotNull("Package [a3] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a3] is  wired incorrectly ", exp.getExporter(), bundle_6);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_8() {
-		ExportPackageDescription[] exports = null;
-		exports = null;
-		exports = bundle_8.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("a2")) {
-				assertNotNull("Package [a2] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a2] is  wired incorrectly ", exp.getExporter(), bundle_8);
-			} else if (exportPackageName.equals("a1")) {
-				assertNotNull("Package [a1] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a1] is  wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("a3")) {
-				assertNotNull("Package [a3] is not wired when it should  be ", exp.getExporter());
-				assertEquals("Package [a3] is  wired incorrectly ", exp.getExporter(), bundle_6);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_9() {
-	} // end method
-
-	public void checkWiringState_10() {
-	} // end method
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-		checkWiringState_5();
-		checkWiringState_6();
-		checkWiringState_7();
-		checkWiringState_8();
-		checkWiringState_9();
-		checkWiringState_10();
-	} // end method
-
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_5);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_6);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_7);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_8);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_9);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_10);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", !bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_4.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_5.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_6.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_7.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_8.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_9.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_10.isResolved());
-	} // end method
-
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "a1; version=\"[2, 3]\", a2; version=8, a3; version=\"[5, 13]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Import-Package", "a1; version=\"[3, 3.9]\", a2; version=\"[8, 8.9]\", a3; version=0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "a1; version=7");
-		dictionary_3.put("Import-Package", "a1; version=3, a2; version=8, a3; version=0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Import-Package", "a1; version=\"[3, 3.9]\", a2; version=8, a3; version=5");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_5(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_5 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_5.put("Bundle-ManifestVersion", "2");
-		dictionary_5.put("Bundle-SymbolicName", "E");
-		dictionary_5.put("Import-Package", "a1; version=7, a2; version=8, a3; version=5");
-		try {
-			bundle = sof.createBundleDescription(dictionary_5, "bundle_5", 5);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_6(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_6 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_6.put("Bundle-ManifestVersion", "2");
-		dictionary_6.put("Bundle-SymbolicName", "F");
-		dictionary_6.put("Export-Package", "a3; version=0");
-		dictionary_6.put("Import-Package", "a1; version=7, a2; version=\"[7, 8]\", a3; version=\"[0, 0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_6, "bundle_6", 6);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_7(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_7 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_7.put("Bundle-ManifestVersion", "2");
-		dictionary_7.put("Bundle-SymbolicName", "G");
-		dictionary_7.put("Export-Package", "a1; version=3");
-		dictionary_7.put("Import-Package", "a1; version=\"[7, 7.9]\", a2; version=8, a3; version=0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_7, "bundle_7", 7);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_8(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_8 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_8.put("Bundle-ManifestVersion", "2");
-		dictionary_8.put("Bundle-SymbolicName", "H");
-		dictionary_8.put("Export-Package", "a2; version=8");
-		dictionary_8.put("Import-Package", "a1; version=3, a2; version=8, a3; version=0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_8, "bundle_8", 8);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_9(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_9 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_9.put("Bundle-ManifestVersion", "2");
-		dictionary_9.put("Bundle-SymbolicName", "I");
-		dictionary_9.put("Export-Package", "a3; version=5");
-		dictionary_9.put("Import-Package", "a1; version=\"[3, 3.9]\", a2; version=\"[8, 16]\", a3; version=5");
-		try {
-			bundle = sof.createBundleDescription(dictionary_9, "bundle_9", 9);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_10(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_10 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_10.put("Bundle-ManifestVersion", "2");
-		dictionary_10.put("Bundle-SymbolicName", "J");
-		dictionary_10.put("Import-Package", "a1; version=7, a2; version=\"[7, 8]\", a3; version=5");
-		try {
-			bundle = sof.createBundleDescription(dictionary_10, "bundle_10", 10);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_001.java
deleted file mode 100644
index b71045d..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_001.java
+++ /dev/null
@@ -1,148 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestGrouping_001 extends AbstractStateTest {
-	public TestGrouping_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} else if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p; version=2.0, q; version=\"[2.0, 2.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; q; version=2.0; uses:=\"p,q\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p; q; version=2.1; uses:=\"p,q\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_002.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_002.java
deleted file mode 100644
index 2a719e5..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_002.java
+++ /dev/null
@@ -1,132 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestGrouping_002 extends AbstractStateTest {
-	public TestGrouping_002(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", !bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p, q, r");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; r; uses:=\"p,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "q; r; uses:=\"q,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_003.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_003.java
deleted file mode 100644
index d51e800..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_003.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestGrouping_003 extends AbstractStateTest {
-	public TestGrouping_003(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-	BundleDescription bundle_5 = null;
-
-	
-	public void testTest_003() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		bundle_5 = create_bundle_5(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("r")) {
-				assertNotNull("Package [r] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [r] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} else if (exportPackageName.equals("s")) {
-				assertNotNull("Package [s] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [s] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_4);
-			} else if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_4);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_4() {
-	} // end method
-
-	public void checkWiringState_5() {
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-		checkWiringState_5();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_5);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_5.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "foo; version=\"1.0\"; a=x; b=y");
-		dictionary_1.put("Import-Package", "r; version=2.0, s; version=\"[2.0, 2.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "r; s; version=2.0; uses:=\"r,s\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "r; s; version=2.1; uses:=\"r,s\"");
-		dictionary_3.put("Import-Package", "p; version=2.0, q; version=\"[2.0, 2.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Export-Package", "p; q; version=2.0; uses:=\"p,q\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_5(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_5 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_5.put("Bundle-ManifestVersion", "2");
-		dictionary_5.put("Bundle-SymbolicName", "E");
-		dictionary_5.put("Export-Package", "p; q; version=2.1; uses:=\"p,q\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_5, "bundle_5", 5);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_006.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_006.java
deleted file mode 100644
index 5d30a75..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_006.java
+++ /dev/null
@@ -1,133 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestGrouping_006 extends AbstractStateTest {
-	public TestGrouping_006(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", !bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Require-Bundle", "B");
-		dictionary_1.put("Import-Package", "y");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "x");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "x; y; uses:=\"x,y\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_008.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_008.java
deleted file mode 100644
index c352236..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_008.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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.osgi.framework.BundleException;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-
-
-public class TestGrouping_008 extends AbstractStateTest {
-	public TestGrouping_008(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_008() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		BundleDescription[] requires = bundle_1.getResolvedRequires();
-		assertNotNull("requires array is unexpectedly null", requires);
-		assertTrue("requires array is unexpectedly empty", requires.length > 0);
-		for (int i = 0; i < requires.length; i++) {
-			BundleDescription bd = requires[i];
-			String requiresName = bd.getName();
-			assertNotNull("bundle name is null", requiresName);
-			if (requiresName.equals("B")) {
-				assertNotNull("Require [B] is not wired when it should be ", bd);
-				assertEquals("Require [B] is wired incorrectly ", bundle_2, bd);
-			}
-		} // end for
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", bundle_3, exp.getExporter());
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Require-Bundle", "B");
-		dictionary_1.put("Import-Package", "p");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p; version=2");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_001.java
deleted file mode 100644
index 2bee868..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_001.java
+++ /dev/null
@@ -1,150 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestOptional_001 extends AbstractStateTest {
-	public TestOptional_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("r")) {
-				assertNotNull("Package [r] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [r] is wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("p")) {
-				assertNull("Package [p] is wired when it should not be ", exp);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p; resolution:=optional, q, r");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; r; uses:=\"p,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "q; r; uses:=\"q,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_002.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_002.java
deleted file mode 100644
index ba1986b..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestOptional_002.java
+++ /dev/null
@@ -1,150 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestOptional_002 extends AbstractStateTest {
-	public TestOptional_002(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("q")) {
-				assertNotNull("Package [r] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [r] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} else if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} else if (exportPackageName.equals("q")) {
-				assertNull("Package [q] is wired when it should not be ", exp);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p; q; r; resolution:=optional");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; r; uses:=\"p,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "q; r; uses:=\"q,r\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_001.java
deleted file mode 100644
index b7c3ddf..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_001.java
+++ /dev/null
@@ -1,184 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestPropagation_001 extends AbstractStateTest {
-	public TestPropagation_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("y")) {
-				assertNotNull("Package [y] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [y] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	public void checkWiringState_4() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "x, y");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "y; uses:=x");
-		dictionary_2.put("Import-Package", "x; bundle-symbolic-name=C");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "x");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Export-Package", "x; version=2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_003.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_003.java
deleted file mode 100644
index 053ce45..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_003.java
+++ /dev/null
@@ -1,169 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestPropagation_003 extends AbstractStateTest {
-	public TestPropagation_003(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_4);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	public void checkWiringState_4() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", !bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Require-Bundle", "B, C");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "q; uses:=p");
-		dictionary_2.put("Import-Package", "p; bundle-symbolic-name=D");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Export-Package", "p; version=2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_001.java
deleted file mode 100644
index 1f894bd..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_001.java
+++ /dev/null
@@ -1,196 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestRFC79_001 extends AbstractStateTest {
-	public TestRFC79_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "javax.servlet; version=2.1.0");
-		dictionary_1.put("Import-Package", "javax.servlet; version=2.1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "javax.servlet; version=2.2.0");
-		dictionary_2.put("Import-Package", "javax.servlet; version=2.2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Import-Package", "javax.servlet; version=2.1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Import-Package", "foo; version=1.0; c=z");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_5(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_5 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_5.put("Bundle-ManifestVersion", "2");
-		dictionary_5.put("Bundle-SymbolicName", "E");
-		dictionary_5.put("Import-Package", "foo; version=1.0; a=y");
-		try {
-			bundle = sof.createBundleDescription(dictionary_5, "bundle_5", 5);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_002.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_002.java
deleted file mode 100644
index 179d842..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_002.java
+++ /dev/null
@@ -1,242 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestRFC79_002 extends AbstractStateTest {
-	public TestRFC79_002(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-	BundleDescription bundle_5 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		bundle_5 = create_bundle_5(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.foo.impl")) {
-				assertNotNull("Package [org.foo.impl] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.foo.impl] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			} else if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_4() {
-		ExportPackageDescription[] exports = bundle_4.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.foo.impl")) {
-				assertNotNull("Package [org.foo.impl] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.foo.impl] is wired incorrectly ", exports[i].getExporter(), bundle_1);
-			} else if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_5() {
-		ExportPackageDescription[] exports = bundle_5.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.foo.impl")) {
-				assertNotNull("Package [org.foo.impl] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.foo.impl] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-		checkWiringState_5();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_5);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_5.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "org.foo.impl; version=1.0.0, javax.servlet; version=2.1.0");
-		dictionary_1.put("Import-Package", "javax.servlet; version=2.1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "org.foo.impl; version=1.1.0, javax.servlet; version=2.2.0");
-		dictionary_2.put("Import-Package", "javax.servlet; version=2.2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Import-Package", "javax.servlet; version=2.1.0, org.foo.impl; version=\"[1.1.0, 1.1.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Import-Package", "javax.servlet; version=2.1.0, org.foo.impl; version=\"[1.0.0, 1.0.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_5(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_5 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_5.put("Bundle-ManifestVersion", "2");
-		dictionary_5.put("Bundle-SymbolicName", "E");
-		dictionary_5.put("Import-Package", "org.foo.impl; version=\"[1.0.0, 1.1.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_5, "bundle_5", 5);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_003.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_003.java
deleted file mode 100644
index a310c6c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_003.java
+++ /dev/null
@@ -1,210 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestRFC79_003 extends AbstractStateTest {
-	public TestRFC79_003(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-
-	
-	public void testTest_003() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.foo.impl")) {
-				assertNotNull("Package [org.foo.impl] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.foo.impl] is wired incorrectly ", exports[i].getExporter(), bundle_1);
-			} else if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_4() {
-		ExportPackageDescription[] exports = bundle_4.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.foo.impl")) {
-				assertNotNull("Package [org.foo.impl] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.foo.impl] is wired incorrectly ", exports[i].getExporter(), bundle_1);
-			} else if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "org.foo.impl; version=1.0.0, javax.servlet; version=2.1.0");
-		dictionary_1.put("Import-Package", "javax.servlet; version=2.1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "org.foo.impl; version=1.0.0, javax.servlet; version=2.2.0");
-		dictionary_2.put("Import-Package", "javax.servlet; version=2.2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Import-Package", "javax.servlet; version=2.1.0, org.foo.impl; version=\"[1.0.0, 1.0.0]\"; bundle-symbolic-name=A");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Import-Package", "javax.servlet; version=2.1.0, org.foo.impl; version=\"[1.0.0, 1.0.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_004.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_004.java
deleted file mode 100644
index 46e334d..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_004.java
+++ /dev/null
@@ -1,186 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestRFC79_004 extends AbstractStateTest {
-	public TestRFC79_004(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-
-	
-	public void testTest_004() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.apache.commons.logging")) {
-				assertNotNull("Package [org.apache.commons.logging] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.apache.commons.logging] is wired incorrectly ", exports[i].getExporter(), bundle_4);
-			} else if (exportPackageName.equals("org.apache.commons.io")) {
-				assertNotNull("Package [org.apache.commons.io] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.apache.commons.io] is wired incorrectly ", exports[i].getExporter(), bundle_4);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.apache.commons.logging")) {
-				assertNotNull("Package [org.apache.commons.logging] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.apache.commons.logging] is wired incorrectly ", exports[i].getExporter(), bundle_3);
-			} else if (exportPackageName.equals("org.apache.commons.io")) {
-				assertNotNull("Package [org.apache.commons.io] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [org.apache.commons.io] is wired incorrectly ", exports[i].getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	public void checkWiringState_4() {
-	} // end method
-
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "org.apache.commons.logging; org.apache.commons.io; version=2.0.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Import-Package", "org.apache.commons.logging; version=2.0.0, org.apache.commons.io; version=\"[2.0.0, 2.0.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "ApacheCommons");
-		dictionary_3.put("Export-Package", "org.apache.commons.logging; org.apache.commons.io; version=2.0.0; uses:=\"org.apache.commons.logging,org.apache.commons.io\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "ApacheCommons'");
-		dictionary_4.put("Export-Package", "org.apache.commons.logging; org.apache.commons.io; version=2.1.0; uses:=\"org.apache.commons.logging,org.apache.commons.io\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_005.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_005.java
deleted file mode 100644
index f0f7cba..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_005.java
+++ /dev/null
@@ -1,157 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestRFC79_005 extends AbstractStateTest {
-	public TestRFC79_005(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_005() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			String exportPackageName = exports[i].getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("javax.servlet")) {
-				assertNotNull("Package [javax.servlet] is not wired when it should be ", exports[i].getExporter());
-				assertEquals("Package [javax.servlet] is wired incorrectly ", exports[i].getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-	
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "javax.servlet; version=2.1.0");
-		dictionary_1.put("Import-Package", "javax.servlet; version=2.1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "javax.servlet; version=2.2.0");
-		dictionary_2.put("Import-Package", "javax.servlet; version=2.2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Import-Package", "javax.servlet; version=\"[2.1.0, 2.1.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_006.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_006.java
deleted file mode 100644
index 58592d4..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_006.java
+++ /dev/null
@@ -1,235 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestRFC79_006 extends AbstractStateTest {
-	public TestRFC79_006(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-	BundleDescription bundle_5 = null;
-	BundleDescription bundle_6 = null;
-
-	
-	public void testTest_006() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		bundle_5 = create_bundle_5(sof);
-		bundle_6 = create_bundle_6(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.xml.sax")) {
-				assertNotNull("Package [org.xml.sax] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [org.xml.sax] is wired incorrectly ", exp.getExporter(), bundle_3);
-			} else if (exportPackageName.equals("org.w3c.dom")) {
-				assertNotNull("Package [org.w3c.dom] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [org.w3c.dom] is wired incorrectly ", exp.getExporter(), bundle_4);
-			} else if (exportPackageName.equals("javax.xml.parsers")) {
-				assertNotNull("Package [javax] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [javax] is wired incorrectly ", exp.getExporter(), bundle_6);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	public void checkWiringState_4() {
-	} // end method
-
-	public void checkWiringState_5() {
-	} // end method
-
-	public void checkWiringState_6() {
-		ExportPackageDescription[] exports = bundle_6.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("org.w3c.dom")) {
-				assertNotNull("Package [org.w3c.dom] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [org.w3c.dom] is wired incorrectly ", exp.getExporter(), bundle_4);
-			} else if (exportPackageName.equals("org.xml.sax")) {
-				assertNotNull("Package [org.xml.sax] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [org.xml.sax] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-		checkWiringState_5();
-		checkWiringState_6();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_5);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_6);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_5.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_6.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "Client A");
-		dictionary_1.put("Import-Package", "org.xml.sax; version=\"[1.3.0, 1.3.0]\", org.w3c.dom; version=\"[2.1.0, 2.1.0]\", javax.xml.parsers; version=\"[1.1.0, 1.1.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "Client B");
-		dictionary_2.put("Import-Package", "org.xml.sax; version=\"[1.3.0, 1.3.0]\", org.w3c.dom; version=\"[2.2.0, 2.2.0]\", javax.xml.parsers; version=\"[1.1.0, 1.1.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "SAX");
-		dictionary_3.put("Export-Package", "org.xml.sax; version=1.3.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "DOM A");
-		dictionary_4.put("Export-Package", "org.w3c.dom; version=2.1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_5(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_5 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_5.put("Bundle-ManifestVersion", "2");
-		dictionary_5.put("Bundle-SymbolicName", "DOM B");
-		dictionary_5.put("Export-Package", "org.w3c.dom; version=2.2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_5, "bundle_5", 5);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_6(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_6 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_6.put("Bundle-ManifestVersion", "2");
-		dictionary_6.put("Bundle-SymbolicName", "JAXP");
-		dictionary_6.put("Export-Package", "javax.xml.parsers; version=1.1.0; uses:=\"org.w3c.dom,org.xml.sax\"");
-		dictionary_6.put("Import-Package", "org.w3c.dom; version=\"[2.1.0, 2.1.0]\", org.xml.sax; version=\"[1.3.0, 1.3.0]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_6, "bundle_6", 6);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-	
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_007.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_007.java
deleted file mode 100644
index 0434a38..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_007.java
+++ /dev/null
@@ -1,207 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestRFC79_007 extends AbstractStateTest {
-	public TestRFC79_007(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = null;
-	BundleDescription bundle_5 = null;
-
-	
-	public void testTest_007() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		bundle_4 = create_bundle_4(sof);
-		bundle_5 = create_bundle_5(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("Q")) {
-				assertNotNull("Package [Q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [Q] is wired incorrectly ", exp.getExporter(), bundle_2);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-	public void checkWiringState_4() {
-		ExportPackageDescription[] exports = bundle_4.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("R")) {
-				assertNotNull("Package [R] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [R] is wired incorrectly ", exp.getExporter(), bundle_1);
-			} else if (exportPackageName.equals("Q")) {
-				assertNotNull("Package [Q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [Q] is wired incorrectly ", exp.getExporter(), bundle_5);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_5() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-		checkWiringState_4();
-		checkWiringState_5();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_4);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_5);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_3.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_4.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_5.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "P; uses:=Q, R");
-		dictionary_1.put("Import-Package", "Q; version=\"[1, 1]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "Q; version=1");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Import-Package", "P, Q; version=\"[2, 2]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_4(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_4 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_4.put("Bundle-ManifestVersion", "2");
-		dictionary_4.put("Bundle-SymbolicName", "D");
-		dictionary_4.put("Import-Package", "R, Q; version=\"[2, 2]\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_4, "bundle_4", 4);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_5(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_5 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_5.put("Bundle-ManifestVersion", "2");
-		dictionary_5.put("Bundle-SymbolicName", "E");
-		dictionary_5.put("Export-Package", "Q; version=2");
-		try {
-			bundle = sof.createBundleDescription(dictionary_5, "bundle_5", 5);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-	
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_001.java
deleted file mode 100644
index 0c9b5c1..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_001.java
+++ /dev/null
@@ -1,172 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestVersion_001 extends AbstractStateTest {
-	public TestVersion_001(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_001() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-		ExportPackageDescription[] exports = bundle_3.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "p; version=1.0");
-		dictionary_1.put("Import-Package", "p; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Import-Package", "p; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p; version=2.0");
-		dictionary_3.put("Import-Package", "p; version=2.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_002.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_002.java
deleted file mode 100644
index 6da3e89..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_002.java
+++ /dev/null
@@ -1,159 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestVersion_002 extends AbstractStateTest {
-	public TestVersion_002(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_002() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-		ExportPackageDescription[] exports = bundle_2.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("r")) {
-				assertNotNull("Package [r] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [r] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Export-Package", "r; version=2.5");
-		dictionary_1.put("Import-Package", "p; version=\"[2.0, 3.0)\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Import-Package", "r; version=\"(1.5, 2.5)\"");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p; version=2.2, r; version=2.2");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_003.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_003.java
deleted file mode 100644
index 44abd75..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestVersion_003.java
+++ /dev/null
@@ -1,146 +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.osgi.tests.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateObjectFactory;
-import org.eclipse.osgi.tests.services.resolver.AbstractStateTest;
-import org.osgi.framework.BundleException;
-
-
-public class TestVersion_003 extends AbstractStateTest {
-	public TestVersion_003(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-
-	
-	public void testTest_003() {
-		State state = buildEmptyState();
-		StateObjectFactory sof = platformAdmin.getFactory();
-
-		bundle_1 = create_bundle_1(sof);
-		bundle_2 = create_bundle_2(sof);
-		bundle_3 = create_bundle_3(sof);
-		//***************************************************
-		// stage a
-		// expect to pass =true
-		//***************************************************
-		addBundlesToState_a(state);
-		//***************************************************
-		try {
-			state.resolve();
-		} catch (Throwable t) {
-			fail("unexpected exception class=" + t.getClass().getName()
-					+ " message=" + t.getMessage());
-			return;
-		}
-		checkBundlesResolved_a();
-		checkWiring_a();
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-		ExportPackageDescription[] exports = bundle_1.getResolvedImports();
-		assertNotNull("export array is unexpectedly null", exports);
-		assertTrue("export array is unexpectedly empty", exports.length > 0);
-		for (int i = 0; i < exports.length; i++) {
-			ExportPackageDescription exp = exports[i];
-			String exportPackageName = exp.getName();
-			assertNotNull("package name is null", exportPackageName);
-			if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_3);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_2() {
-	} // end method
-
-	public void checkWiringState_3() {
-	} // end method
-
-
-	public void checkWiring_a() {
-		checkWiringState_1();
-		checkWiringState_2();
-		checkWiringState_3();
-	} // end method
-
-	
-	public void addBundlesToState_a(State state) {
-		boolean added = false;
-		added = state.addBundle(bundle_1);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_2);
-		assertTrue("failed to add bundle ", added);
-		added = state.addBundle(bundle_3);
-		assertTrue("failed to add bundle ", added);
-	} // end method
-
-	
-	public void checkBundlesResolved_a() {
-		assertTrue("unexpected bundle resolution state", bundle_1.isResolved());
-		assertTrue("unexpected bundle resolution state", !bundle_2.isResolved());
-		assertTrue("unexpected bundle resolution state", bundle_3.isResolved());
-	} // end method
-
-	
-	public BundleDescription create_bundle_1(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_1 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_1.put("Bundle-ManifestVersion", "2");
-		dictionary_1.put("Bundle-SymbolicName", "A");
-		dictionary_1.put("Import-Package", "p");
-		try {
-			bundle = sof.createBundleDescription(dictionary_1, "bundle_1", 1);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_2(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_2 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_2.put("Bundle-ManifestVersion", "2");
-		dictionary_2.put("Bundle-SymbolicName", "B");
-		dictionary_2.put("Export-Package", "p; version=2.0");
-		dictionary_2.put("Import-Package", "q");
-		try {
-			bundle = sof.createBundleDescription(dictionary_2, "bundle_2", 2);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-	public BundleDescription create_bundle_3(StateObjectFactory sof) {
-		java.util.Dictionary dictionary_3 = new java.util.Properties();
-		BundleDescription bundle = null;
-		dictionary_3.put("Bundle-ManifestVersion", "2");
-		dictionary_3.put("Bundle-SymbolicName", "C");
-		dictionary_3.put("Export-Package", "p; version=1.0");
-		try {
-			bundle = sof.createBundleDescription(dictionary_3, "bundle_3", 3);
-		} catch (BundleException be) {
-			fail(be.getMessage());
-		}
-		return bundle;
-	} // end of method
-
-} // end of testcase
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeAnyTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeAnyTest.java
deleted file mode 100644
index 41992ad..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeAnyTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import junit.framework.Test;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.osgi.internal.provisional.service.security.AuthorizationEvent;
-import org.eclipse.osgi.internal.provisional.service.security.AuthorizationListener;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.Bundle;
-
-// set any allowed
-// ensure unsigned, signed, and trusted all pass
-// ensure corrupt and expired fail
-public class AuthorizeAnyTest extends BaseSecurityTest {
-
-	protected void setUp() throws Exception {
-		registerEclipseTrustEngine();
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-
-	public static Test suite() {
-		ConfigurationSessionTestSuite suite = new ConfigurationSessionTestSuite(BUNDLE_SECURITY_TESTS, "Unit tests for AuthorizationEngine with 'any' policy");
-		addDefaultSecurityBundles(suite);
-		setAuthorizationEnabled(suite);
-		setAuthorizationPolicy(suite, "any");
-		//for (int i = 0; i < s_tests.length; i++) {
-		//	suite.addTest(s_tests[i]);
-		suite.addTestSuite(AuthorizeAnyTest.class);
-		//}
-		return suite;
-	}
-
-	//test01: unsigned (allowed)
-	static boolean s_test01called = false;
-
-	public void testAuthorize01() {
-
-		Bundle testBundle = null;
-		try {
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					assertEquals("Content is not allowed!", AuthorizationEvent.ALLOWED, event.getResult());
-					s_test01called = true;
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("unsigned")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test01called);
-		} catch (Throwable t) {
-			fail("unexpected exception", t);
-		} finally {
-			try {
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("unexpected exception", t);
-			}
-		}
-	}
-
-	//test02: signed (allowed)
-	static boolean s_test02called = false;
-
-	public void testAuthorize02() {
-
-		Bundle testBundle = null;
-		try {
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					assertEquals("Content is not allowed!", AuthorizationEvent.ALLOWED, event.getResult());
-					s_test02called = true;
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test02called);
-		} catch (Throwable t) {
-			fail("unexpected exception", t);
-		} finally {
-			try {
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("unexpected exception", t);
-			}
-		}
-	}
-
-	//test03: trusted (allowed)
-	static boolean s_test03called = false;
-
-	public void testAuthorize03() {
-
-		Bundle testBundle = null;
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					assertEquals("Content is not allowed!", AuthorizationEvent.ALLOWED, event.getResult());
-					s_test03called = true;
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test03called);
-		} catch (Throwable t) {
-			fail("unexpected exception", t);
-		} finally {
-			try {
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("unexpected exception", t);
-			}
-		}
-	}
-
-	//test04: corrupt (allowed, explodes on load)
-	static boolean s_test04called = false;
-
-	public void testAuthorize04() {
-
-		Bundle testBundle = null;
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					assertEquals("Content is not allowed!", AuthorizationEvent.ALLOWED, event.getResult());
-					s_test04called = true;
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed_with_corrupt")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test04called);
-		} catch (Throwable t) {
-			fail("unexpected exception", t);
-		} finally {
-			try {
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("unexpected exception", t);
-			}
-		}
-	}
-
-	//test05: expired (denied) TODO!
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeSignedTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeSignedTest.java
deleted file mode 100644
index a27422a..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeSignedTest.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import junit.framework.Test;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.osgi.internal.provisional.service.security.*;
-import org.eclipse.osgi.internal.service.security.DefaultAuthorizationEngine;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-
-public class AuthorizeSignedTest extends BaseSecurityTest {
-
-	protected void setUp() throws Exception {
-		registerEclipseTrustEngine();
-		AuthorizationEngine authEngine = getAuthorizationEngine();
-		if (authEngine instanceof DefaultAuthorizationEngine) {
-			((DefaultAuthorizationEngine) authEngine).setLoadPolicy(DefaultAuthorizationEngine.ENFORCE_SIGNED);
-		}
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		AuthorizationEngine authEngine = getAuthorizationEngine();
-		if (authEngine instanceof DefaultAuthorizationEngine) {
-			((DefaultAuthorizationEngine) authEngine).setLoadPolicy(0);
-		}
-	}
-
-	public static Test suite() {
-		ConfigurationSessionTestSuite suite = new ConfigurationSessionTestSuite(BUNDLE_SECURITY_TESTS, "Unit tests for AuthorizationEngine with 'signed' policy");
-		addDefaultSecurityBundles(suite);
-		setAuthorizationEnabled(suite);
-		//setAuthorizationPolicy(suite, "signed");
-		//for (int i = 0; i < s_tests.length; i++) {
-		//	suite.addTest(s_tests[i]);
-		suite.addTestSuite(AuthorizeSignedTest.class);
-		//}
-		return suite;
-	}
-
-	//test01: signed (allow)
-	public void testAuthorize01() {
-		Bundle testBundle = null;
-		ServiceRegistration registration = null;
-		final int[] s_test01called = new int[] {-1};
-		try {
-			registration = OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test01called[0] = event.getResult();
-				}
-			}, null);
-			testBundle = installBundle(getTestJarPath("signed")); //signed by ca1_leafa
-			assertTrue("Handler not called!", s_test01called[0] != -1);
-			assertEquals("Content was not allowed!", AuthorizationEvent.ALLOWED, s_test01called[0]);
-		} finally {
-			try {
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-			if (registration != null)
-				registration.unregister();
-		}
-	}
-
-	//test02: trusted (allow)
-	public void testAuthorize02() {
-
-		Bundle testBundle = null;
-		ServiceRegistration registration = null;
-		final int[] s_test02called = new int[] {-1};
-		try {
-			try {
-				getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-			} catch (Throwable e) {
-				fail("Unexpected exception", e);
-			}
-
-			registration = OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test02called[0] = event.getResult();
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test02called[0] != -1);
-			assertEquals("Content was not allowed!", AuthorizationEvent.ALLOWED, s_test02called[0]);
-		} finally {
-			try {
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("Failed to uninstall bundle", t);
-			}
-			if (registration != null)
-				registration.unregister();
-		}
-	}
-
-	//test03: unsigned (deny)
-	public void testAuthorize03() {
-
-		Bundle testBundle = null;
-		ServiceRegistration registration = null;
-		final int[] s_test03called = new int[] {-1};
-		try {
-			registration = OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test03called[0] = event.getResult();
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("unsigned")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test03called[0] != -1);
-			assertEquals("Content was  allowed!", AuthorizationEvent.DENIED, s_test03called[0]);
-		} finally {
-			try {
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("Failed to uninstall bundle", t);
-			}
-			if (registration != null)
-				registration.unregister();
-		}
-	}
-
-	//test04: corrupted (allow, then explode later)
-	public void testAuthorize04() {
-
-		Bundle testBundle = null;
-		ServiceRegistration registration = null;
-		final int[] s_test04called = new int[] {-1};
-		try {
-			try {
-				getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-			} catch (Throwable e) {
-				fail("Unexpected exception", e);
-			}
-
-			registration = OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test04called[0] = event.getResult();
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed_with_corrupt")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test04called[0] != -1);
-			assertEquals("Content was not allowed!", AuthorizationEvent.ALLOWED, s_test04called[0]);
-		} finally {
-			try {
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("Failed to uninstall bundle", t);
-			}
-			if (registration != null)
-				registration.unregister();
-		}
-	}
-	//test05: expired (deny) //TODO!
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeTrustedTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeTrustedTest.java
deleted file mode 100644
index 18e92c5..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/AuthorizeTrustedTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import junit.framework.Test;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.osgi.internal.provisional.service.security.*;
-import org.eclipse.osgi.internal.service.security.DefaultAuthorizationEngine;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class AuthorizeTrustedTest extends BaseSecurityTest {
-
-	protected void setUp() throws Exception {
-		registerEclipseTrustEngine();
-		AuthorizationEngine authEngine = getAuthorizationEngine();
-		if (authEngine instanceof DefaultAuthorizationEngine) {
-			((DefaultAuthorizationEngine) authEngine).setLoadPolicy(DefaultAuthorizationEngine.ENFORCE_SIGNED | DefaultAuthorizationEngine.ENFORCE_TRUSTED);
-		}
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		AuthorizationEngine authEngine = getAuthorizationEngine();
-		if (authEngine instanceof DefaultAuthorizationEngine) {
-			((DefaultAuthorizationEngine) authEngine).setLoadPolicy(0);
-		}
-	}
-
-	public static Test suite() {
-		ConfigurationSessionTestSuite suite = new ConfigurationSessionTestSuite(BUNDLE_SECURITY_TESTS, "Unit tests for AuthorizationEngine with 'trusted' policy");
-		addDefaultSecurityBundles(suite);
-		setEclipseTrustEngine(suite);
-		setAuthorizationEnabled(suite);
-		//setAuthorizationPolicy(suite, "trusted");
-		//for (int i = 0; i < s_tests.length; i++) {
-		//	suite.addTest(s_tests[i]);
-		suite.addTestSuite(AuthorizeTrustedTest.class);
-		//}
-		return suite;
-	}
-
-	//test01: trusted, should pass
-	public void testAuthorize01() {
-
-		Bundle testBundle = null;
-		final int[] s_test01called = new int[] {-1};
-		try {
-			try {
-				getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-			} catch (Throwable e) {
-				fail("Unexpected exception", e);
-			}
-
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test01called[0] = event.getResult();
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test01called[0] != -1);
-			assertEquals("Content was not allowed!", AuthorizationEvent.ALLOWED, s_test01called[0]);
-		} finally {
-			try {
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (Throwable t) {
-				fail("unexpected exception", t);
-			}
-		}
-	}
-
-	//test02: unsigned, should fail
-	public void testAuthorize02() {
-
-		Bundle testBundle = null;
-		final int[] s_test02called = new int[] {-1};
-		try {
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test02called[0] = event.getResult();
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("unsigned"));
-			//Thread.sleep(100);
-			assertTrue("Handler not called!", s_test02called[0] != -1);
-			assertEquals("Content was allowed!", AuthorizationEvent.DENIED, s_test02called[0]);
-		} finally {
-			try {
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//test03: untrusted, should fail
-	public void testAuthorize03() {
-
-		Bundle testBundle = null;
-		final int[] s_test03called = new int[] {-1};
-		try {
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test03called[0] = event.getResult();
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test03called[0] != -1);
-			assertEquals("Content was allowed!", AuthorizationEvent.DENIED, s_test03called[0]);
-		} finally {
-			try {
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//test04: corrupt, should fail
-	public void testAuthorize04() {
-
-		Bundle testBundle = null;
-		final int[] s_test04called = new int[] {-1};
-		try {
-			OSGiTestsActivator.getContext().registerService(AuthorizationListener.class.getName(), new AuthorizationListener() {
-				public void authorizationEvent(AuthorizationEvent event) {
-					s_test04called[0] = event.getResult();
-				}
-			}, null);
-
-			testBundle = installBundle(getTestJarPath("signed_with_corrupt")); //signed by ca1_leafa
-
-			assertTrue("Handler not called!", s_test04called[0] != -1);
-			assertEquals("Content was  allowed!", AuthorizationEvent.DENIED, s_test04called[0]);
-		} finally {
-			try {
-				if (testBundle != null) {
-					testBundle.uninstall();
-				}
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//test05: TODO: expired, should fail //TODO!
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/BaseSecurityTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/BaseSecurityTest.java
deleted file mode 100644
index f9e2f5c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/BaseSecurityTest.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import java.io.*;
-import java.net.URL;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.cert.Certificate;
-import java.util.ArrayList;
-import java.util.Hashtable;
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.internal.provisional.service.security.AuthorizationEngine;
-import org.eclipse.osgi.internal.service.security.KeyStoreTrustEngine;
-import org.eclipse.osgi.service.security.TrustEngine;
-import org.eclipse.osgi.signedcontent.SignedContentFactory;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-
-public class BaseSecurityTest extends CoreTest {
-
-	private static char[] PASSWORD_DEFAULT = {'c', 'h', 'a', 'n', 'g', 'e', 'i', 't'};
-	private static String TYPE_DEFAULT = "JKS";
-
-	protected static final String BUNDLE_SECURITY_TESTS = "org.eclipse.osgi.tests"; //$NON-NLS-1$
-
-	public BaseSecurityTest() {
-		super();
-	}
-
-	public BaseSecurityTest(String name) {
-		super(name);
-	}
-
-	private static KeyStore supportStore;
-	static {
-		try {
-			URL supportUrl = OSGiTestsActivator.getContext().getBundle().getEntry("test_files/security/keystore.jks");
-			supportStore = KeyStore.getInstance(TYPE_DEFAULT);
-			supportStore.load(supportUrl.openStream(), PASSWORD_DEFAULT);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private ServiceRegistration trustReg = null;
-
-	protected static void addDefaultSecurityBundles(ConfigurationSessionTestSuite suite) {
-		String[] ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET;
-		for (int i = 0; i < ids.length; i++) {
-			suite.addBundle(ids[i]);
-		}
-		suite.addBundle(BUNDLE_SECURITY_TESTS);
-	}
-
-	protected static Certificate getTestCertificate(String alias) throws KeyStoreException {
-		return supportStore.getCertificate(alias);
-	}
-
-	protected static Certificate[] getTestCertificateChain(String[] aliases) throws KeyStoreException {
-		ArrayList certs = new ArrayList(aliases.length);
-		for (int i = 0; i < aliases.length; i++) {
-			certs.add(getTestCertificate(aliases[i]));
-		}
-		return (Certificate[]) certs.toArray(new Certificate[] {});
-	}
-
-	protected void registerEclipseTrustEngine() throws Exception {
-		// make a copy of cacerts file and use that at runtime
-		URL eclipseURL = OSGiTestsActivator.getContext().getBundle().getEntry("test_files/security/eclipse.jks");
-		File tempEngine = OSGiTestsActivator.getContext().getDataFile("temp.jks");
-
-		copy(eclipseURL.openStream(), tempEngine);
-
-		KeyStoreTrustEngine dummyTE = new KeyStoreTrustEngine(tempEngine.getAbsolutePath(), "JKS", "changeit".toCharArray(), "temp.jks");
-		Hashtable properties = new Hashtable(7);
-		properties.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-
-		trustReg = OSGiTestsActivator.getContext().registerService(TrustEngine.class.getName(), dummyTE, properties);
-	}
-
-	protected void tearDown() throws Exception {
-		if (trustReg != null)
-			trustReg.unregister();
-	}
-
-	public static void copy(InputStream in, File dst) throws IOException {
-		//		InputStream in = new FileInputStream(src);
-		OutputStream out = new FileOutputStream(dst);
-
-		byte[] buf = new byte[1024];
-		int len;
-		while ((len = in.read(buf)) > 0) {
-			out.write(buf, 0, len);
-		}
-		in.close();
-		out.close();
-	}
-
-	protected SignedContentFactory getSignedContentFactory() {
-		ServiceReference ref = OSGiTestsActivator.getContext().getServiceReference(SignedContentFactory.class.getName());
-		assertNotNull("No SignedContentFactory service", ref);
-		SignedContentFactory factory = (SignedContentFactory) OSGiTestsActivator.getContext().getService(ref);
-		OSGiTestsActivator.getContext().ungetService(ref);
-		return factory;
-	}
-
-	protected TrustEngine getTrustEngine() {
-		ServiceReference ref = OSGiTestsActivator.getContext().getServiceReference(TrustEngine.class.getName());
-		assertNotNull("No TrustEngine available", ref);
-		TrustEngine engine = (TrustEngine) OSGiTestsActivator.getContext().getService(ref);
-		OSGiTestsActivator.getContext().ungetService(ref);
-		return engine;
-	}
-
-	protected AuthorizationEngine getAuthorizationEngine() {
-		ServiceReference ref = OSGiTestsActivator.getContext().getServiceReference(AuthorizationEngine.class.getName());
-		assertNotNull("No AuthorizationEngine available", ref);
-		AuthorizationEngine engine = (AuthorizationEngine) OSGiTestsActivator.getContext().getService(ref);
-		OSGiTestsActivator.getContext().ungetService(ref);
-		return engine;
-	}
-
-	protected Bundle installBundle(String bundlePath) {
-		URL bundleURL = OSGiTestsActivator.getContext().getBundle().getEntry(bundlePath);
-		assertNotNull("Bundle URL is null " + bundlePath, bundleURL);
-		try {
-			return OSGiTestsActivator.getContext().installBundle(bundlePath, bundleURL.openStream());
-		} catch (Exception e) {
-			fail("unexpected install exception", e);
-		}
-		return null;
-	}
-
-	protected File getEntryFile(String entryPath) throws IOException {
-		URL entryURL = OSGiTestsActivator.getContext().getBundle().getEntry(entryPath);
-		if (entryURL == null)
-			return null;
-		return new File(FileLocator.toFileURL(entryURL).toExternalForm().substring(5));
-	}
-
-	protected File copyEntryFile(String entryPath) throws IOException {
-		URL entryURL = OSGiTestsActivator.getContext().getBundle().getEntry(entryPath);
-		if (entryURL == null)
-			return null;
-		File tempFolder = OSGiTestsActivator.getContext().getDataFile("temp");
-		tempFolder.mkdirs();
-		File result = File.createTempFile("entry", ".jar", tempFolder);
-		readFile(entryURL.openStream(), result);
-		return result;
-	}
-
-	protected static String getTestJarPath(String jarName) {
-		return "test_files/security/bundles/" + jarName + ".jar";
-	}
-
-	protected static void setAuthorizationEnabled(ConfigurationSessionTestSuite suite) {
-		try {
-			suite.getSetup().setSystemProperty("osgi.signedcontent.support", "all"); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (Exception e) {
-			throw new RuntimeException(e);
-		}
-	}
-
-	protected static void setAuthorizationPolicy(ConfigurationSessionTestSuite suite, String policy) {
-		try {
-			suite.getSetup().setSystemProperty("osgi.signedcontent.authorization.engine.policy", policy); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (Exception e) {
-			throw new RuntimeException(e);
-		}
-	}
-
-	protected static void setEclipseTrustEngine(ConfigurationSessionTestSuite suite) {
-		try {
-			URL eclipseURL = OSGiTestsActivator.getContext().getBundle().getEntry("test_files/security/eclipse.jks");
-			File tempFile = File.createTempFile("keystore", ".jks");
-
-			copy(eclipseURL.openStream(), tempFile);
-
-			suite.getSetup().setSystemProperty("osgi.framework.keystore", tempFile.toURL().toExternalForm()); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (Exception e) {
-			throw new RuntimeException(e);
-		}
-	}
-
-	public static void readFile(InputStream in, File file) throws IOException {
-		FileOutputStream fos = null;
-		try {
-			fos = new FileOutputStream(file);
-
-			byte buffer[] = new byte[1024];
-			int count;
-			while ((count = in.read(buffer, 0, buffer.length)) > 0) {
-				fos.write(buffer, 0, count);
-			}
-
-			fos.close();
-			fos = null;
-
-			in.close();
-			in = null;
-		} catch (IOException e) {
-			// close open streams
-			if (fos != null) {
-				try {
-					fos.close();
-				} catch (IOException ee) {
-					// nothing to do here
-				}
-			}
-
-			if (in != null) {
-				try {
-					in.close();
-				} catch (IOException ee) {
-					// nothing to do here
-				}
-			}
-
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Unable to read file"); //$NON-NLS-1$
-				Debug.printStackTrace(e);
-			}
-
-			throw e;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/KeyStoreTrustEngineTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/KeyStoreTrustEngineTest.java
deleted file mode 100644
index f21e9c8..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/KeyStoreTrustEngineTest.java
+++ /dev/null
@@ -1,477 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import java.io.*;
-import java.net.URL;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import java.util.ArrayList;
-import junit.framework.*;
-import org.eclipse.osgi.internal.service.security.KeyStoreTrustEngine;
-import org.eclipse.osgi.service.security.TrustEngine;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-
-public class KeyStoreTrustEngineTest extends TestCase {
-
-	private static char[] PASSWORD_DEFAULT = {'c', 'h', 'a', 'n', 'g', 'e', 'i', 't'};
-	private static String TYPE_DEFAULT = "JKS"; //$NON-NLS-1$
-
-	private static TestCase[] s_tests = {
-	/* findTrustAnchor tests */
-	new KeyStoreTrustEngineTest("findTrustAnchor positive test: self signed trusted", new String[] {"ca1_root"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testFindTrustAnchor0();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor positive test: chain with root trusted", new String[] {"ca1_root"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testFindTrustAnchor1();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor positive test: chain with intermediate trusted", new String[] {"ca1_ou"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testFindTrustAnchor2();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor positive test: chain with leaf trusted", new String[] {"ca1_leafb"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testFindTrustAnchor3();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor negative test: untrusted self signed", null) { //$NON-NLS-1$
-				public void runTest() {
-					testFindTrustAnchor4();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor negative test: untrusted chain", null) { //$NON-NLS-1$
-				public void runTest() {
-					testFindTrustAnchor5();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor negative test: invalid chain", null) { //$NON-NLS-1$
-				public void runTest() {
-					testFindTrustAnchor6();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor negative test: incomplete-able chain", null) { //$NON-NLS-1$
-				public void runTest() {
-					testFindTrustAnchor7();
-				}
-			}, new KeyStoreTrustEngineTest("findTrustAnchor negative test: null chain", null) { //$NON-NLS-1$
-				public void runTest() {
-					testFindTrustAnchor8();
-				}
-			},
-			/* addTrustAnchor tests */
-			new KeyStoreTrustEngineTest("addTrustAnchor positive test: add with alias", null) { //$NON-NLS-1$
-				public void runTest() {
-					testAddTrustAnchor0();
-				}
-			},/*, new KeyStoreTrustEngineTest("addTrustAnchor positive test: add with autogenerated alias", null) {
-																																																																																																																																														public void runTest() {
-																																																																																																																																															testAddTrustAnchor1();
-																																																																																																																																														}
-																																																																																																																																													}*/
-			new KeyStoreTrustEngineTest("addTrustAnchor negative test: null cert specified", null) { //$NON-NLS-1$
-				public void runTest() {
-					testAddTrustAnchor2();
-				}
-			}, new KeyStoreTrustEngineTest("addTrustAnchor negative test: existing cert specified", new String[] {"ca1_root"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testAddTrustAnchor3();
-				}
-			}, new KeyStoreTrustEngineTest("addTrustAnchor negative test: existing alias specified", new String[] {"ca1_root"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testAddTrustAnchor4();
-				}
-			}
-			/* removeTrustAnchor tests */
-			, new KeyStoreTrustEngineTest("removeTrustAnchor positive test: remove by alias", new String[] {"ca1_root"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testRemoveTrustAnchor0();
-				}
-			}, new KeyStoreTrustEngineTest("removeTrustAnchor positive test: remove by cert", new String[] {"ca1_root"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testRemoveTrustAnchor1();
-				}
-			}, new KeyStoreTrustEngineTest("removeTrustAnchor negative test: cert not found", null) { //$NON-NLS-1$
-				public void runTest() {
-					testRemoveTrustAnchor2();
-				}
-			}, new KeyStoreTrustEngineTest("removeTrustAnchor negative test: by alias not found", null) { //$NON-NLS-1$
-				public void runTest() {
-					testRemoveTrustAnchor3();
-				}
-			}, new KeyStoreTrustEngineTest("removeTrustAnchor negative test: remove by null alias", null) { //$NON-NLS-1$
-				public void runTest() {
-					testRemoveTrustAnchor4();
-				}
-			}, new KeyStoreTrustEngineTest("removeTrustAnchor negative test: remove by null certificate", null) { //$NON-NLS-1$
-				public void runTest() {
-					testRemoveTrustAnchor5();
-				}
-			},
-			/* getTrustAnchor tests*/
-			new KeyStoreTrustEngineTest("getTrustAnchor positive test: get by alias", new String[] {"ca1_root"}) { //$NON-NLS-1$ //$NON-NLS-2$
-				public void runTest() {
-					testGetTrustAnchor0();
-				}
-			}, new KeyStoreTrustEngineTest("getTrustAnchor negative test: get by null alias", null) { //$NON-NLS-1$
-				public void runTest() {
-					testGetTrustAnchor1();
-				}
-			}, new KeyStoreTrustEngineTest("getTrustAnchor negative test: does not exist", null) { //$NON-NLS-1$
-				public void runTest() {
-					testGetTrustAnchor2();
-				}
-			},
-			/* getAliases tests */
-			new KeyStoreTrustEngineTest("getAliases positive test: get the alias list", new String[] {"ca1_root", "ca2_root"}) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				public void runTest() {
-					testGetAliases0();
-				}
-			}};
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite("Unit tests for TrustEngine"); //$NON-NLS-1$
-		for (int i = 0; i < s_tests.length; i++) {
-			suite.addTest(s_tests[i]);
-		}
-		return suite;
-	}
-
-	private static KeyStore supportStore;
-	static {
-		try {
-			URL supportUrl = OSGiTestsActivator.getContext().getBundle().getEntry("test_files/security/keystore.jks"); //$NON-NLS-1$
-			supportStore = KeyStore.getInstance(TYPE_DEFAULT);
-			supportStore.load(supportUrl.openStream(), PASSWORD_DEFAULT);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	private String[] aliases;
-	private KeyStore testStore;
-	private File testStoreFile;
-	TrustEngine engine;
-
-	public KeyStoreTrustEngineTest() {
-		//placeholder
-	}
-
-	public KeyStoreTrustEngineTest(String name, String[] aliases) {
-		super(name);
-		this.aliases = aliases;
-	}
-
-	protected void setUp() throws Exception {
-		if (supportStore == null) {
-			fail("Could not open keystore with test certificates!"); //$NON-NLS-1$
-		}
-
-		testStore = KeyStore.getInstance(TYPE_DEFAULT);
-		testStore.load(null, PASSWORD_DEFAULT);
-		if (aliases != null) {
-			for (int i = 0; i < aliases.length; i++) {
-				testStore.setCertificateEntry(aliases[i], getTestCertificate(aliases[i]));
-			}
-		}
-		testStoreFile = File.createTempFile("teststore", "jks"); //$NON-NLS-1$ //$NON-NLS-2$
-		final FileOutputStream out = new FileOutputStream(testStoreFile);
-		try {
-			testStore.store(out, PASSWORD_DEFAULT);
-		} finally {
-			safeClose(out);
-		}
-		engine = new KeyStoreTrustEngine(testStoreFile.getPath(), TYPE_DEFAULT, PASSWORD_DEFAULT, "teststore"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Closes a stream and ignores any resulting exception. This is useful
-	 * when doing stream cleanup in a finally block where secondary exceptions
-	 * are not worth logging.
-	 */
-	protected static void safeClose(OutputStream out) {
-		try {
-			if (out != null)
-				out.close();
-		} catch (IOException e) {
-			//ignore
-		}
-	}
-
-	protected void tearDown() {
-		engine = null;
-		testStore = null;
-		testStoreFile.delete();
-	}
-
-	private static Certificate getTestCertificate(String alias) throws KeyStoreException {
-		return supportStore.getCertificate(alias);
-	}
-
-	private static Certificate[] getTestCertificateChain(String[] aliases) throws KeyStoreException {
-		ArrayList certs = new ArrayList(aliases.length);
-		for (int i = 0; i < aliases.length; i++) {
-			certs.add(getTestCertificate(aliases[i]));
-		}
-		return (Certificate[]) certs.toArray(new Certificate[] {});
-	}
-
-	//findTrustAnchor positive test: self signed trusted
-	public void testFindTrustAnchor0() {
-		try {
-			Certificate cert = engine.findTrustAnchor(new Certificate[] {getTestCertificate("ca1_root")}); //$NON-NLS-1$
-			assertNotNull("Did not return a cert for self-signed case", cert); //$NON-NLS-1$
-			assertEquals("Input and output certs not equal for self-signed case", cert, getTestCertificate("ca1_root")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (Throwable t) {
-			fail("Unexpected exception testing trusted self-signed cert: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor positive test: chain with root trusted
-	public void testFindTrustAnchor1() {
-		try {
-			Certificate cert = engine.findTrustAnchor(getTestCertificateChain(new String[] {"ca1_leafb", "ca1_ou", "ca1_root"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			assertNotNull("Certificate did not come back in trusted root case", cert); //$NON-NLS-1$
-			assertEquals("Output cert is not root trusted cert", cert, getTestCertificate("ca1_root")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (Throwable t) {
-			fail("Unexpected exception testing trusted root from complete chain: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor positive test: chain with intermediate trusted
-	public void testFindTrustAnchor2() {
-		try {
-			Certificate cert = engine.findTrustAnchor(getTestCertificateChain(new String[] {"ca1_leafb", "ca1_ou", "ca1_root"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			assertNotNull("Certificate did not come back in trusted intermediate case", cert); //$NON-NLS-1$
-			assertEquals("Output cert is not intermediate trusted cert", cert, getTestCertificate("ca1_ou")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (Throwable t) {
-			fail("Unexpected exception testing trusted root from complete chain: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor positive test: chain with leaf trusted
-	public void testFindTrustAnchor3() {
-		try {
-			Certificate cert = engine.findTrustAnchor(getTestCertificateChain(new String[] {"ca1_leafb", "ca1_ou", "ca1_root"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			assertNotNull("Certificate did not come back in trusted leaf case", cert); //$NON-NLS-1$
-			assertEquals("Output cert is not leaf trusted cert", cert, getTestCertificate("ca1_leafb")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (Throwable t) {
-			fail("Unexpected exception testing trusted root from complete chain: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor negative test: untrusted self signed
-	public void testFindTrustAnchor4() {
-		try {
-			Certificate cert = engine.findTrustAnchor(new Certificate[] {getTestCertificate("ca2_root")}); //$NON-NLS-1$
-			assertNull("Incorrectly returned a certificate for untrusted self-signed case", cert); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Unexpected exception testing untrusted self-signed cert: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor negative test: untrusted chain
-	public void testFindTrustAnchor5() {
-		try {
-			Certificate cert = engine.findTrustAnchor(getTestCertificateChain(new String[] {"ca2_leafb", "ca2_ou", "ca2_root"})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			assertNull("Incorrectly returned a certificate for untrusted chain case", cert); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Unexpected exception testing untrusted chain: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor negative test: invalid chain
-	public void testFindTrustAnchor6() {
-		try {
-			Certificate cert = engine.findTrustAnchor(getTestCertificateChain(new String[] {"ca2_leafa", "ca1_root"})); //$NON-NLS-1$ //$NON-NLS-2$
-			assertNull("Incorrectly returned a certificate on invalid certificate chain", cert); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertNull("Incorrectly thrown exception thrown on invalid certificate chain", t); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor negative test: incomplete-able chain
-	public void testFindTrustAnchor7() {
-		try {
-			Certificate cert = engine.findTrustAnchor(getTestCertificateChain(new String[] {"ca1_leafb", "ca1_root"})); //$NON-NLS-1$ //$NON-NLS-2$
-			assertNull("Incorrectly returned a certificate on incomplete-able certificate chain", cert); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertNull("Incorrectly thrown exception thrown on incomplete-able certificate chain", t); //$NON-NLS-1$
-		}
-	}
-
-	//findTrustAnchor negative test: null chain
-	public void testFindTrustAnchor8() {
-		try {
-			engine.findTrustAnchor(null);
-			fail("Did not throw IllegalArgumentException on NULL certificate"); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on NULL certificate", t instanceof IllegalArgumentException); //$NON-NLS-1$
-		}
-	}
-
-	//testAddTrustAnchor positive test: add with alias
-	public void testAddTrustAnchor0() {
-		try {
-			String alias = engine.addTrustAnchor(getTestCertificate("ca1_root"), "ca1_root"); //$NON-NLS-1$ //$NON-NLS-2$
-			assertEquals("Alias returned does not equal alias input", alias, "ca1_root"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		} catch (Throwable t) {
-			fail("Unexpected exception adding trusted root: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//testAddTrustAnchor positive test: add with autogenerated alias
-	public void testAddTrustAnchor1() {
-		try {
-			String alias = engine.addTrustAnchor(getTestCertificate("ca1_root"), null); //$NON-NLS-1$
-			assertNotNull("Generated alias was not correctly returned", alias); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Unexpected exception adding trusted root (autogen alias): " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//testAddTrustAnchor negative test: null cert specified
-	public void testAddTrustAnchor2() {
-		try {
-			engine.addTrustAnchor(null, "ca1_root"); //$NON-NLS-1$
-			fail("Did not throw IllegalArgumentException on NULL certificate"); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on NULL certificate", t instanceof IllegalArgumentException); //$NON-NLS-1$
-		}
-	}
-
-	//testAddTrustAnchor negative test: existing cert specified
-	public void testAddTrustAnchor3() {
-		try {
-			engine.addTrustAnchor(getTestCertificate("ca1_root"), "new_root"); //$NON-NLS-1$ //$NON-NLS-2$
-			assertTrue("Did not throw CertificateException on duplicate cert", false); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on duplicate cert", t instanceof CertificateException); //$NON-NLS-1$
-			return;
-		}
-		fail("Expected exception when adding trust anchor"); //$NON-NLS-1$
-	}
-
-	//testAddTrustAnchor negative test: existing alias specified
-	public void testAddTrustAnchor4() {
-		try {
-			engine.addTrustAnchor(getTestCertificate("ca2_root"), "ca1_root"); //$NON-NLS-1$ //$NON-NLS-2$
-			assertTrue("Did not throw CertificateException on duplicate alias", false); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on duplicate alias", t instanceof CertificateException); //$NON-NLS-1$
-			return;
-		}
-		fail("Expected exception when adding trust anchor"); //$NON-NLS-1$
-	}
-
-	//removeTrustAnchor positive test: remove by alias
-	public void testRemoveTrustAnchor0() {
-		try {
-			engine.removeTrustAnchor("ca1_root"); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Unexpected exception thrown when removing by alias: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//removeTrustAnchor positive test: remove by cert
-	public void testRemoveTrustAnchor1() {
-		try {
-			engine.removeTrustAnchor(getTestCertificate("ca1_root")); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Unexpected exception thrown when removing by cert: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//removeTrustAnchor negative test: cert not found
-	public void testRemoveTrustAnchor2() {
-		try {
-			engine.removeTrustAnchor(getTestCertificate("ca1_root")); //$NON-NLS-1$
-			fail("Did not throw CertificateException on cert not found"); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on remove by cert", t instanceof CertificateException); //$NON-NLS-1$
-		}
-	}
-
-	//removeTrustAnchor negative test: by alias not found
-	public void testRemoveTrustAnchor3() {
-		try {
-			engine.removeTrustAnchor("ca2_root"); //$NON-NLS-1$
-			assertTrue("Did not throw CertificateException on alias not found", false); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on remove by alias", t instanceof CertificateException); //$NON-NLS-1$
-			return;
-		}
-		fail("Expected exception when removing trust anchor"); //$NON-NLS-1$
-	}
-
-	//removeTrustAnchor negative test: remove by null alias
-	public void testRemoveTrustAnchor4() {
-		try {
-			engine.removeTrustAnchor((String) null);
-			fail("Did not throw CertificateException on alias null"); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on remove by null alias", t instanceof IllegalArgumentException); //$NON-NLS-1$
-		}
-	}
-
-	//removeTrustAnchor negative test: remove by null certificate
-	public void testRemoveTrustAnchor5() {
-		try {
-			engine.removeTrustAnchor((Certificate) null);
-			fail("Did not throw IllegalArgumentException on remove by cert null"); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on remove by null cert", t instanceof IllegalArgumentException); //$NON-NLS-1$
-		}
-	}
-
-	//getTrustAnchor positive test: get by alias
-	public void testGetTrustAnchor0() {
-		try {
-			Certificate cert = engine.getTrustAnchor("ca1_root"); //$NON-NLS-1$
-			assertEquals("Did not get expected certificate", getTestCertificate("ca1_root"), cert); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (Throwable t) {
-			fail("Unexpected exception when retrieving trust anchor: " + t.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	//getTrustAnchor negative test: get by null alias
-	public void testGetTrustAnchor1() {
-		try {
-			engine.getTrustAnchor(null);
-			fail("Did not throw IllegalArgumentException on get by alias null"); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertTrue("Incorrect exception thrown on remove by null alias", t instanceof IllegalArgumentException); //$NON-NLS-1$
-		}
-	}
-
-	//getTrustAnchor negative test: does not exist
-	public void testGetTrustAnchor2() {
-		try {
-			Certificate cert = engine.getTrustAnchor("ca2_root"); //$NON-NLS-1$
-			assertNull("Incorrectly returned a certificate on certificate does not exist", cert); //$NON-NLS-1$
-		} catch (Throwable t) {
-			assertNull("Incorrectly thrown exception on alias does not exist", t); //$NON-NLS-1$
-			return;
-		}
-	}
-
-	//getAliases positive test: get the alias list
-	public void testGetAliases0() {
-		try {
-			engine.getAliases();
-		} catch (Throwable t) {
-			fail("Unexpected exception when retrieving alias list: " + t.getMessage()); //$NON-NLS-1$
-		}
-
-	}
-	//TODO: thread safety tests
-	//TODO: performance tests
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/OSGiAPICertificateTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/OSGiAPICertificateTest.java
deleted file mode 100644
index 02eddcd..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/OSGiAPICertificateTest.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import junit.framework.TestSuite;
-import org.osgi.framework.AdminPermission;
-import org.osgi.framework.Bundle;
-import org.osgi.service.condpermadmin.*;
-
-public class OSGiAPICertificateTest extends BaseSecurityTest {
-	private static String dn1 = "CN=CA1 LeafA, O=CA1, L=Boston, ST=Massachusetts, C=US"; //$NON-NLS-1$
-	private static String dn2 = "CN=CA1 Root, O=CA1, L=Boston, ST=Massachusetts, C=US"; //$NON-NLS-1$
-	private static String dn3 = "CN=CA1 LeafA, O=CA1, L=Austin, ST=Texas, C=US"; //$NON-NLS-1$
-	private static String dn4 = "CN=CA1 Root, O=CA1, L=Austin, ST=Texas, C=US"; //$NON-NLS-1$
-	private static String dn5 = "CN=CA1 LeafA, O=CA1, L=*, ST=*, C=US"; //$NON-NLS-1$
-	private static String dn6 = "CN=CA1 Root, O=CA1, L=*, ST=*, C=US"; //$NON-NLS-1$
-	private static String dn7 = "*, L=*, ST=*, C=US"; //$NON-NLS-1$
-
-	private static String dnChain01True = dn1 + ';' + dn2;
-	private static String dnChain02True = "*;" + dn2; //$NON-NLS-1$
-	private static String dnChain03True = dn1 + ";*"; //$NON-NLS-1$
-	private static String dnChain04False = dn1 + ';' + dn4;
-	private static String dnChain05False = dn3 + ';' + dn2;
-	private static String dnChain06True = dn5 + ';' + dn6;
-	private static String dnChain07True = dn7 + ';' + dn6;
-	private static String dnChain08True = dn5 + ';' + dn7;
-
-	private static String dnChain01TrueEscaped = escapeStar(dnChain01True);
-	private static String dnChain02TrueEscaped = escapeStar(dnChain02True);
-	private static String dnChain03TrueEscaped = escapeStar(dnChain03True);
-	private static String dnChain04FalseEscaped = escapeStar(dnChain04False);
-	private static String dnChain05FalseEscaped = escapeStar(dnChain05False);
-	private static String dnChain06TrueEscaped = escapeStar(dnChain06True);
-	private static String dnChain07TrueEscaped = escapeStar(dnChain07True);
-	private static String dnChain08TrueEscaped = escapeStar(dnChain08True);
-
-	private static ConditionInfo info01True = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {"-"}); //$NON-NLS-1$
-	private static ConditionInfo info02False = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {"-", "!"}); //$NON-NLS-1$ //$NON-NLS-2$
-	private static ConditionInfo info03True = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain01True});
-	private static ConditionInfo info04True = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain02True});
-	private static ConditionInfo info05True = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain03True});
-	private static ConditionInfo info06False = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain04False});
-	private static ConditionInfo info07False = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain05False});
-	private static ConditionInfo info08True = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain06True});
-	private static ConditionInfo info09True = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain07True});
-	private static ConditionInfo info10True = new ConditionInfo(BundleSignerCondition.class.getName(), new String[] {dnChain08True});
-
-	public static TestSuite suite() {
-		return new TestSuite(OSGiAPICertificateTest.class);
-	}
-
-	private static String escapeStar(String dnChain) {
-		if (dnChain == null || dnChain.length() == 0)
-			return dnChain;
-		for (int star = dnChain.indexOf('*'); star >= 0; star = dnChain.indexOf('*', star + 2))
-			dnChain = dnChain.substring(0, star) + '\\' + dnChain.substring(star);
-		return dnChain;
-	}
-
-	public OSGiAPICertificateTest() {
-		super();
-	}
-
-	public OSGiAPICertificateTest(String name, String jarname, String[] aliases) {
-		super(name);
-	}
-
-	protected void setUp() throws Exception {
-		registerEclipseTrustEngine();
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-
-	public void testBundleSignerCondition01() {
-		// test trusted cert with all signed match
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info01True);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition02() {
-		// test trusted cert with all signed match + "!" not operation
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info02False);
-			assertEquals("Unexpected condition value", Condition.FALSE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition03() {
-		// test untrusted cert with all signed match
-		try {
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info01True);
-			assertEquals("Unexpected condition value", Condition.FALSE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition04() {
-		// test untrusted cert with all signed match + "!" not operation
-		try {
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info02False);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition05() {
-		// test trusted cert with exact match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info03True);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition06() {
-		// test trusted cert with prefix wildcard match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info04True);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition07() {
-		// test trusted cert with postfix wildcard match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info05True);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition08() {
-		// test trusted cert with wrong prefix dn
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info06False);
-			assertEquals("Unexpected condition value", Condition.FALSE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition09() {
-		// test trusted cert with wrong postfix dn
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info07False);
-			assertEquals("Unexpected condition value", Condition.FALSE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition10() {
-		// test trusted cert with RDN wildcard match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info08True);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition11() {
-		// test trusted cert with RDN wildcard match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info09True);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testBundleSignerCondition12() {
-		// test trusted cert with RDN wildcard match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			Condition condition = BundleSignerCondition.getCondition(testBundle, info10True);
-			assertEquals("Unexpected condition value", Condition.TRUE, condition); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission01() {
-		// test trusted cert with exact match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=-)", AdminPermission.CONTEXT); //$NON-NLS-1$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertTrue("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission02() {
-		// test trusted cert with exact match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain01TrueEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertTrue("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission03() {
-		// test trusted cert with exact match pattern + ! operation 
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(!(signer=-))", AdminPermission.CONTEXT); //$NON-NLS-1$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertFalse("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission04() {
-		// test trusted cert with exact match pattern + ! operation
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(!(signer=" + dnChain01TrueEscaped + "))", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertFalse("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission05() {
-		// test trusted cert with prefix wildcard match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain02TrueEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertTrue("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission06() {
-		// test trusted cert with postfix wildcard match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain03TrueEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertTrue("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission07() {
-		// test trusted cert with bad postfix dn match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain04FalseEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertFalse("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission08() {
-		// test trusted cert with bad prefix dn match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain05FalseEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertFalse("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission09() {
-		// test trusted cert with RDN match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain06TrueEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertTrue("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission10() {
-		// test trusted cert with RDN match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain07TrueEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertTrue("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAdminPermission11() {
-		// test trusted cert with RDN match pattern
-		try {
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa"); //$NON-NLS-1$ //$NON-NLS-2$
-			Bundle testBundle = installBundle(getTestJarPath("signed")); //$NON-NLS-1$
-			AdminPermission declaredPerm = new AdminPermission("(signer=" + dnChain08TrueEscaped + ")", AdminPermission.CONTEXT); //$NON-NLS-1$ //$NON-NLS-2$
-			AdminPermission checkedPerm = new AdminPermission(testBundle, AdminPermission.CONTEXT);
-			assertTrue("Security check failed", declaredPerm.implies(checkedPerm)); //$NON-NLS-1$
-		} catch (Exception e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SecurityTestSuite.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SecurityTestSuite.java
deleted file mode 100644
index ed72aca..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SecurityTestSuite.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import junit.framework.*;
-
-public class SecurityTestSuite extends TestCase {
-	public static Test suite() {
-		TestSuite suite = new TestSuite("Unit tests for Equinox security");
-		//trust engine tests
-		suite.addTest(KeyStoreTrustEngineTest.suite());
-		//signed bundle tests - *uses* trust engine
-		suite.addTest(SignedBundleTest.suite());
-		suite.addTest(SignedBundleTest.localSuite());
-		//authorization tests - *uses* signed content tests
-		suite.addTest(AuthorizeAnyTest.suite());
-		suite.addTest(AuthorizeSignedTest.suite());
-		suite.addTest(AuthorizeTrustedTest.suite());
-		suite.addTest(OSGiAPICertificateTest.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SignedBundleTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SignedBundleTest.java
deleted file mode 100644
index e396222..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/security/SignedBundleTest.java
+++ /dev/null
@@ -1,835 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.security;
-
-import java.io.File;
-import java.security.SignatureException;
-import java.security.cert.Certificate;
-import java.security.cert.X509Certificate;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.osgi.signedcontent.*;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class SignedBundleTest extends BaseSecurityTest {
-
-	/*
-	private static Test[] s_tests = {
-	// positive tests 
-	new SignedBundleTest("testSignedContent01", "unsigned", new String[] {}) {
-		public void runTest() {
-			testSignedContent01();
-		}
-	}, new SignedBundleTest("SignedContent positive test: signed jar, 1 trusted signer", "signed", new String[] {"ca1_leafa"}) {
-		public void runTest() {
-			testSignedContent02();
-		}
-	}
-	, new SignedBundleTest("SignedContent positive test: signed jar, 2 trusted signers", "multiply_signed", new String[] {"ca1_leafa", "ca1_leafb"}) {(non-Javadoc)
-	  @see junit.framework.TestCase#runTest()
-	 	public void runTest() {
-			testSignedContent03();
-		}
-	}};
-	*/
-
-	/*
-	//positive tests
-	signer1	signer2	valid
-	n/a		n/a		n/a		= positive, unsigned				('unsigned.jar')
-	yes		n/a		yes		= positive, 1 signer				('signed.jar','ca1_leafa')
-	yes		yes		yes		= positive, 2 signers				('multiply_signed.jar','ca1_leafa,'ca1_leafb')
-
-	//negative = untrusted tests
-	no		n/a		yes		= negative, 1 signer, 1 untrusted	('signed.jar')		
-	no		no		yes		= negative, 2 signers, 2 untrusted  ('multiply_signed.jar')
-	yes		no		yes		= negative, 2 signers, 1 untrusted	('multiply_signed.jar', 'ca1_leafa')
-
-	//negative = validity tests
-	yes		n/a		no		= negative, 1 signer, 1 corrupt		('signed_with_corrupt.jar','ca1_leafa')
-	yes		yes		no		= negative, 2 signers, 2 corrupt
-	
-	//TODO: OSGi-specific partial signer cases
-	//TODO: TSA tests (w/TSA signer trusted, untrusted, etc)
-	//TODO: More? NESTED JARS? 		
-	*/
-
-	//private String jarName;
-	//private String[] aliases;
-	public SignedBundleTest() {
-		super();
-	}
-
-	public SignedBundleTest(String name, String jarname, String[] aliases) {
-		super(name);
-		//this.jarName = jarname;
-		//this.aliases = aliases;
-	}
-
-	public static Test suite() {
-		ConfigurationSessionTestSuite suite = new ConfigurationSessionTestSuite(BUNDLE_SECURITY_TESTS, "Unit session tests for SignedContent");
-		addDefaultSecurityBundles(suite);
-		setAuthorizationEnabled(suite);
-		suite.addTestSuite(SignedBundleTest.class);
-		return suite;
-	}
-
-	public static Test localSuite() {
-		return new TestSuite(SignedBundleTest.class, "Unit local tests for SignedContent");
-	}
-
-	protected void setUp() throws Exception {
-		registerEclipseTrustEngine();
-		/*
-				TrustEngine engine = getTrustEngine();
-
-				if (supportStore == null) {
-					fail("Could not open keystore with test certificates!");
-				}
-
-				// get the certs from the support store and add
-				for (int i = 0; i < aliases.length; i++) {
-					Certificate cert = supportStore.getCertificate(aliases[i]);
-					engine.addTrustAnchor(cert, aliases[i]);
-				}
-		*/
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-
-	//	SignedContent positive test: unsigned jar
-	public void testSignedContent01() {
-
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("unsigned"));
-			assertNotNull("Test bundle not installed!", testBundle);
-			//getTrustEngine().addTrustAnchor(anchor, alias);
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			assertFalse("Content is signed!!", signedContent.isSigned());
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//SignedContent positive test: signed jar, 1 trusted signer
-	public void testSignedContent02() {
-
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("signed"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-			// check the signer validity
-			signedContent.checkValidity(infos[0]);
-			// check the signer trust
-			assertTrue("Signer is not trusted", infos[0].isTrusted());
-			// check the trust anchor
-			assertNotNull("Trust anchor is null", infos[0].getTrustAnchor());
-			// verify and validate the entries
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			assertNotNull("Entries is null", entries);
-			for (int i = 0; i < entries.length; i++) {
-				entries[i].verify();
-				SignerInfo[] entryInfos = entries[i].getSignerInfos();
-				assertNotNull("SignerInfo is null", entryInfos);
-				assertEquals("wrong number of entry signers", 1, entryInfos.length);
-				assertEquals("Entry signer does not equal content signer", infos[0], entryInfos[0]);
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-			} catch (Exception e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//SignedContent positive test: signed jar, 2 trusted signers
-	public void testSignedContent03() {
-
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("multiply_signed"));
-			this.getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-			this.getTrustEngine().addTrustAnchor(getTestCertificate("ca2_leafa"), "ca2_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 2, infos.length);
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				signedContent.checkValidity(infos[i]);
-				signedContent.checkValidity(infos[i]);
-				// check the signer trust
-				assertTrue("Signer is not trusted: " + infos[i].getCertificateChain()[0], infos[i].isTrusted());
-				// check the trust anchor
-				assertNotNull("Trust anchor is null", infos[i].getTrustAnchor());
-			}
-			// verify and validate the entries
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			assertNotNull("Entries is null", entries);
-			for (int i = 0; i < entries.length; i++) {
-				entries[i].verify();
-				SignerInfo[] entryInfos = entries[i].getSignerInfos();
-				assertNotNull("SignerInfo is null", entryInfos);
-				assertEquals("wrong number of entry signers", 2, entryInfos.length);
-				assertEquals("Entry signer does not equal content signer", infos[0], entryInfos[0]);
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-				getTrustEngine().removeTrustAnchor("ca2_leafa");
-			} catch (Exception e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//SignedContent negative, 1 signer, 1 untrusted
-	public void testSignedContent04() {
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("signed"));
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				// check the signer trust
-				assertTrue("Signer is trusted: " + infos[i].getCertificateChain()[0], !(infos[i].isTrusted()));
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//SignedContent negative, 2 signers, 2 untrusted
-	public void testSignedContent05() {
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("multiply_signed"));
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 2, infos.length);
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				// check the signer trust
-				assertTrue("Signer is trusted: " + infos[i].getCertificateChain()[0], !(infos[i].isTrusted()));
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//SignedContent negative, 2 signers, 1 untrusted
-	public void testSignedContent06() {
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("multiply_signed"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 2, infos.length);
-
-			// make sure ca1 signer is trusted
-
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				Certificate certs[] = infos[i].getCertificateChain();
-
-				if (infos[i].isTrusted()) {
-					X509Certificate x509Cert = (X509Certificate) certs[0];
-					assertTrue("CA1 LeafA signer is not trusted", x509Cert.getSubjectDN().getName().indexOf("CA1 LeafA") >= 0);
-				}
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-			} catch (Exception e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	// negative, 1 signer, 1 corrupt signed_with_corrupt.jar
-	public void testSignedContent07() {
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("signed_with_corrupt"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			assertNotNull("Entries is null", entries);
-			for (int i = 0; i < entries.length; i++) {
-				try {
-					entries[i].verify();
-					if ("org/eclipse/equinox/security/junit/CorruptClass.class".equals(entries[i].getName()))
-						fail("Expected a corruption for: " + entries[i].getName());
-				} catch (InvalidContentException e) {
-					if (!"org/eclipse/equinox/security/junit/CorruptClass.class".equals(entries[i].getName()))
-						fail("Unexpected corruption in: " + entries[i].getName(), e);
-				}
-				SignerInfo[] entryInfos = entries[i].getSignerInfos();
-				assertNotNull("SignerInfo is null", entryInfos);
-				assertEquals("wrong number of entry signers", 1, entryInfos.length);
-				assertEquals("Entry signer does not equal content signer", infos[0], entryInfos[0]);
-			}
-
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-			} catch (Exception e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	// positve 1 signer, 1 tsa
-	public void testSignedContent08() {
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("signed_tsa"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(testBundle);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-
-			assertNotNull("Signing time is null!", signedContent.getSigningTime(infos[0]));
-
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				testBundle.uninstall();
-				getTrustEngine().removeTrustAnchor("ca1_leafa");
-			} catch (Exception e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-
-	//	SignedContent positive test: unsigned jar
-	public void testSignedContent09() {
-		try {
-			File unsignedFile = getEntryFile(getTestJarPath("unsigned"));
-
-			assertNotNull("Could not find unsigned file!", unsignedFile);
-			//getTrustEngine().addTrustAnchor(anchor, alias);
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(unsignedFile);
-			assertNotNull("SignedContent is null", signedContent);
-			assertFalse("Content is signed!!", signedContent.isSigned());
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	//SignedContent positive test: signed jar, 1 trusted signer
-	public void testSignedContent10() {
-		try {
-			File signedFile = getEntryFile(getTestJarPath("signed"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(signedFile);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-			// check the signer validity
-			signedContent.checkValidity(infos[0]);
-			// check the signer trust
-			assertTrue("Signer is not trusted", infos[0].isTrusted());
-			// check the trust anchor
-			assertNotNull("Trust anchor is null", infos[0].getTrustAnchor());
-			// verify and validate the entries
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			assertNotNull("Entries is null", entries);
-			for (int i = 0; i < entries.length; i++) {
-				entries[i].verify();
-				SignerInfo[] entryInfos = entries[i].getSignerInfos();
-				assertNotNull("SignerInfo is null", entryInfos);
-				assertEquals("wrong number of entry signers", 1, entryInfos.length);
-				assertEquals("Entry signer does not equal content signer", infos[0], entryInfos[0]);
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	//SignedContent positive test: signed jar, 2 trusted signers
-	public void testSignedContent11() {
-		try {
-			File multipleSigned = getEntryFile(getTestJarPath("multiply_signed"));
-			this.getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-			this.getTrustEngine().addTrustAnchor(getTestCertificate("ca2_leafa"), "ca2_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(multipleSigned);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 2, infos.length);
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				signedContent.checkValidity(infos[i]);
-				signedContent.checkValidity(infos[i]);
-				// check the signer trust
-				assertTrue("Signer is not trusted: " + infos[i].getCertificateChain()[0], infos[i].isTrusted());
-				// check the trust anchor
-				assertNotNull("Trust anchor is null", infos[i].getTrustAnchor());
-			}
-			// verify and validate the entries
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			assertNotNull("Entries is null", entries);
-			for (int i = 0; i < entries.length; i++) {
-				entries[i].verify();
-				SignerInfo[] entryInfos = entries[i].getSignerInfos();
-				assertNotNull("SignerInfo is null", entryInfos);
-				assertEquals("wrong number of entry signers", 2, entryInfos.length);
-				assertEquals("Entry signer does not equal content signer", infos[0], entryInfos[0]);
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	//SignedContent negative, 1 signer, 1 untrusted
-	public void testSignedContent12() {
-		try {
-			File signedFile = getEntryFile(getTestJarPath("signed"));
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(signedFile);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				// check the signer trust
-				assertTrue("Signer is trusted: " + infos[i].getCertificateChain()[0], !(infos[i].isTrusted()));
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	//SignedContent negative, 2 signers, 2 untrusted
-	public void testSignedContent13() {
-		try {
-			File multipleSigned = getEntryFile(getTestJarPath("multiply_signed"));
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(multipleSigned);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 2, infos.length);
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				// check the signer trust
-				assertTrue("Signer is trusted: " + infos[i].getCertificateChain()[0], !(infos[i].isTrusted()));
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	//SignedContent negative, 2 signers, 1 untrusted
-	public void testSignedContent14() {
-		try {
-			File multipleSigned = getEntryFile(getTestJarPath("multiply_signed"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(multipleSigned);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 2, infos.length);
-
-			// make sure ca1 signer is trusted
-
-			// check the signer validity
-			for (int i = 0; i < infos.length; i++) {
-				Certificate certs[] = infos[i].getCertificateChain();
-
-				if (infos[i].isTrusted()) {
-					X509Certificate x509Cert = (X509Certificate) certs[0];
-					assertTrue("CA1 LeafA signer is not trusted", x509Cert.getSubjectDN().getName().indexOf("CA1 LeafA") >= 0);
-				}
-			}
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	// negative, 1 signer, 1 corrupt signed_with_corrupt.jar
-	public void testSignedContent15() {
-		try {
-			File corruptedFile = getEntryFile(getTestJarPath("signed_with_corrupt"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(corruptedFile);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			assertNotNull("Entries is null", entries);
-			for (int i = 0; i < entries.length; i++) {
-				try {
-					entries[i].verify();
-					if ("org/eclipse/equinox/security/junit/CorruptClass.class".equals(entries[i].getName()))
-						fail("Expected a corruption for: " + entries[i].getName());
-				} catch (InvalidContentException e) {
-					if (!"org/eclipse/equinox/security/junit/CorruptClass.class".equals(entries[i].getName()))
-						fail("Unexpected corruption in: " + entries[i].getName(), e);
-				}
-				SignerInfo[] entryInfos = entries[i].getSignerInfos();
-				assertNotNull("SignerInfo is null", entryInfos);
-				assertEquals("wrong number of entry signers", 1, entryInfos.length);
-				assertEquals("Entry signer does not equal content signer", infos[0], entryInfos[0]);
-			}
-
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	// positve 1 signer, 1 tsa
-	public void testSignedContent16() {
-		try {
-			File signedTsaFile = getEntryFile(getTestJarPath("signed_tsa"));
-			getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-			// get the signed content for the bundle
-			SignedContent signedContent = getSignedContentFactory().getSignedContent(signedTsaFile);
-			assertNotNull("SignedContent is null", signedContent);
-			// check if it is signed
-			assertTrue("Should be signed", signedContent.isSigned());
-			// get the signer infos
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			assertNotNull("SignerInfo is null", infos);
-			assertEquals("wrong number of signers", 1, infos.length);
-
-			assertNotNull("Signing time is null!", signedContent.getSigningTime(infos[0]));
-
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		}
-	}
-
-	//SignedContent positive test: signed jar, 1 trusted signer
-	public void testBug225090_01() throws Exception {
-		File signedFile = copyEntryFile(getTestJarPath("signed"));
-		getTrustEngine().addTrustAnchor(getTestCertificate("ca1_leafa"), "ca1_leafa");
-
-		// get the signed content for the bundle
-		SignedContent signedContent = getSignedContentFactory().getSignedContent(signedFile);
-		assertNotNull("SignedContent is null", signedContent);
-		// check if it is signed
-		assertTrue("Should be signed", signedContent.isSigned());
-		// get the signer infos
-		SignerInfo[] infos = signedContent.getSignerInfos();
-		assertNotNull("SignerInfo is null", infos);
-		assertEquals("wrong number of signers", 1, infos.length);
-		// check the signer validity
-		signedContent.checkValidity(infos[0]);
-		// check the signer trust
-		assertTrue("Signer is not trusted", infos[0].isTrusted());
-		// check the trust anchor
-		assertNotNull("Trust anchor is null", infos[0].getTrustAnchor());
-		// verify and validate the entries
-		SignedContentEntry[] entries = signedContent.getSignedEntries();
-		assertNotNull("Entries is null", entries);
-		for (int i = 0; i < entries.length; i++) {
-			entries[i].verify();
-			SignerInfo[] entryInfos = entries[i].getSignerInfos();
-			assertNotNull("SignerInfo is null", entryInfos);
-			assertEquals("wrong number of entry signers", 1, entryInfos.length);
-			assertEquals("Entry signer does not equal content signer", infos[0], entryInfos[0]);
-		}
-		signedFile.delete();
-		assertFalse("File should not exist", signedFile.exists());
-	}
-
-	//	SignedContent positive test: unsigned jar
-	public void testBug225090_02() throws Exception {
-		File unsignedFile = copyEntryFile(getTestJarPath("unsigned"));
-
-		assertNotNull("Could not find unsigned file!", unsignedFile);
-		//getTrustEngine().addTrustAnchor(anchor, alias);
-
-		// get the signed content for the bundle
-		SignedContent signedContent = getSignedContentFactory().getSignedContent(unsignedFile);
-		assertNotNull("SignedContent is null", signedContent);
-		assertFalse("Content is signed!!", signedContent.isSigned());
-		SignedContentEntry[] entries = signedContent.getSignedEntries();
-		assertNotNull("Entries is null", entries);
-		for (int i = 0; i < entries.length; i++) {
-			entries[i].verify();
-			SignerInfo[] entryInfos = entries[i].getSignerInfos();
-			assertNotNull("SignerInfo is null", entryInfos);
-			assertEquals("wrong number of entry signers", 0, entryInfos.length);
-		}
-		unsignedFile.delete();
-		assertFalse("File should not exist", unsignedFile.exists());
-	}
-
-	public void testBug228427_01() throws Exception {
-		File signedFile = copyEntryFile(getTestJarPath("signed_with_metadata"));
-
-		assertNotNull("Could not find signed file!", signedFile);
-		//getTrustEngine().addTrustAnchor(anchor, alias);
-
-		// get the signed content for the bundle
-		SignedContent signedContent = getSignedContentFactory().getSignedContent(signedFile);
-		assertNotNull("SignedContent is null", signedContent);
-		assertTrue("Content is not signed!!", signedContent.isSigned());
-		SignedContentEntry[] entries = signedContent.getSignedEntries();
-		assertNotNull("Entries is null", entries);
-		assertEquals("Incorrect number of signed entries", 4, entries.length);
-		for (int i = 0; i < entries.length; i++) {
-			entries[i].verify();
-			SignerInfo[] entryInfos = entries[i].getSignerInfos();
-			assertNotNull("SignerInfo is null", entryInfos);
-			assertEquals("wrong number of entry signers", 1, entryInfos.length);
-		}
-		signedFile.delete();
-		assertFalse("File should not exist", signedFile.exists());
-	}
-
-	public void testBug228427_02() throws Exception {
-		File signedFile = copyEntryFile(getTestJarPath("signed_with_metadata_added"));
-
-		assertNotNull("Could not find signed file!", signedFile);
-		//getTrustEngine().addTrustAnchor(anchor, alias);
-
-		// get the signed content for the bundle
-		SignedContent signedContent = getSignedContentFactory().getSignedContent(signedFile);
-		assertNotNull("SignedContent is null", signedContent);
-		assertTrue("Content is not signed!!", signedContent.isSigned());
-		SignedContentEntry[] entries = signedContent.getSignedEntries();
-		assertNotNull("Entries is null", entries);
-		assertEquals("Incorrect number of signed entries", 4, entries.length);
-		for (int i = 0; i < entries.length; i++) {
-			entries[i].verify();
-			SignerInfo[] entryInfos = entries[i].getSignerInfos();
-			assertNotNull("SignerInfo is null", entryInfos);
-			assertEquals("wrong number of entry signers", 1, entryInfos.length);
-		}
-		signedFile.delete();
-		assertFalse("File should not exist", signedFile.exists());
-	}
-
-	public void testBug228427_03() throws Exception {
-		File signedFile = copyEntryFile(getTestJarPath("signed_with_metadata_corrupt"));
-
-		assertNotNull("Could not find signed file!", signedFile);
-		//getTrustEngine().addTrustAnchor(anchor, alias);
-
-		// get the signed content for the bundle
-		SignedContent signedContent = getSignedContentFactory().getSignedContent(signedFile);
-		assertNotNull("SignedContent is null", signedContent);
-		assertTrue("Content is not signed!!", signedContent.isSigned());
-		SignedContentEntry[] entries = signedContent.getSignedEntries();
-		assertNotNull("Entries is null", entries);
-		assertEquals("Incorrect number of signed entries", 4, entries.length);
-		for (int i = 0; i < entries.length; i++) {
-			try {
-				entries[i].verify();
-				assertFalse("Wrong entry is validated: " + entries[i].getName(), "META-INF/test/test1.file".equals(entries[i].getName()));
-			} catch (InvalidContentException e) {
-				assertEquals("Wrong entry is corrupted", "META-INF/test/test1.file", entries[i].getName());
-			}
-			SignerInfo[] entryInfos = entries[i].getSignerInfos();
-			assertNotNull("SignerInfo is null", entryInfos);
-			assertEquals("wrong number of entry signers", 1, entryInfos.length);
-		}
-		signedFile.delete();
-		assertFalse("File should not exist", signedFile.exists());
-	}
-
-	public void testBug228427_04() throws Exception {
-		File signedFile = copyEntryFile(getTestJarPath("signed_with_metadata_removed"));
-
-		assertNotNull("Could not find signed file!", signedFile);
-		//getTrustEngine().addTrustAnchor(anchor, alias);
-
-		// get the signed content for the bundle
-		SignedContent signedContent = getSignedContentFactory().getSignedContent(signedFile);
-		assertNotNull("SignedContent is null", signedContent);
-		assertTrue("Content is not signed!!", signedContent.isSigned());
-		SignedContentEntry[] entries = signedContent.getSignedEntries();
-		assertNotNull("Entries is null", entries);
-		assertEquals("Incorrect number of signed entries", 4, entries.length);
-		for (int i = 0; i < entries.length; i++) {
-			try {
-				entries[i].verify();
-				assertFalse("Wrong entry is validated: " + entries[i].getName(), "META-INF/test.file".equals(entries[i].getName()));
-			} catch (InvalidContentException e) {
-				assertEquals("Wrong entry is corrupted", "META-INF/test.file", entries[i].getName());
-			}
-			SignerInfo[] entryInfos = entries[i].getSignerInfos();
-			assertNotNull("SignerInfo is null", entryInfos);
-			assertEquals("wrong number of entry signers", 1, entryInfos.length);
-		}
-		signedFile.delete();
-		assertFalse("File should not exist", signedFile.exists());
-	}
-
-	public void testBug236329_01() throws Exception {
-		File signedFile = copyEntryFile(getTestJarPath("signed_with_sf_corrupted"));
-
-		assertNotNull("Could not find signed file!", signedFile);
-		//getTrustEngine().addTrustAnchor(anchor, alias);
-
-		// get the signed content for the bundle
-		try {
-			getSignedContentFactory().getSignedContent(signedFile);
-			fail("Should have gotten a SignatureException for file: " + signedFile);
-		} catch (SignatureException e) {
-			// expected
-		}
-	}
-
-	public void testBug252098() {
-
-		Bundle testBundle = null;
-		try {
-			testBundle = installBundle(getTestJarPath("test.bug252098"));
-			assertNotNull("Test bundle not installed!", testBundle);
-			testBundle.start();
-		} catch (Exception e) {
-			fail("Unexpected exception", e);
-		} finally {
-			try {
-				if (testBundle != null)
-					testBundle.uninstall();
-			} catch (BundleException e) {
-				fail("Failed to uninstall bundle", e);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/AllSecurityAdminTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/AllSecurityAdminTests.java
deleted file mode 100644
index bbf56d9..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/AllSecurityAdminTests.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.securityadmin;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllSecurityAdminTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllSecurityAdminTests.class.getName());
-		suite.addTest(SecurityAdminUnitTests.suite());
-		suite.addTest(SecurityManagerTests.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityAdminUnitTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityAdminUnitTests.java
deleted file mode 100644
index 03d1c8b..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityAdminUnitTests.java
+++ /dev/null
@@ -1,1015 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.securityadmin;
-
-import ext.framework.b.TestCondition;
-import java.io.FilePermission;
-import java.io.IOException;
-import java.net.SocketPermission;
-import java.security.*;
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.internal.permadmin.EquinoxSecurityManager;
-import org.eclipse.osgi.internal.permadmin.SecurityAdmin;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.service.condpermadmin.*;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public class SecurityAdminUnitTests extends AbstractBundleTests {
-
-	private static final PermissionInfo[] SOCKET_INFOS = new PermissionInfo[] {new PermissionInfo("java.net.SocketPermission", "localhost", "accept")}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	private static final PermissionInfo[] READONLY_INFOS = new PermissionInfo[] {new PermissionInfo("java.io.FilePermission", "<<ALL FILES>>", "read")}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	private static final PermissionInfo[] READWRITE_INFOS = new PermissionInfo[] {
-	// multiple permission infos
-			new PermissionInfo("java.io.FilePermission", "<<ALL FILES>>", "read"), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			new PermissionInfo("java.io.FilePermission", "<<ALL FILES>>", "write") //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	};
-
-	private static final PermissionInfo[] RUNTIME_INFOS = new PermissionInfo[] {new PermissionInfo("java.lang.RuntimePermission", "exitVM", null)}; //$NON-NLS-1$ //$NON-NLS-2$
-
-	private static final ConditionInfo[] ALLLOCATION_CONDS = new ConditionInfo[] {new ConditionInfo("org.osgi.service.condpermadmin.BundleLocationCondition", new String[] {"*"})}; //$NON-NLS-1$ //$NON-NLS-2$
-	private static final ConditionInfo POST_MUT_SAT = new ConditionInfo("ext.framework.b.TestCondition", new String[] {"POST_MUT_SAT", "true", "true", "true"}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	private static final ConditionInfo POST_MUT_UNSAT = new ConditionInfo("ext.framework.b.TestCondition", new String[] {"POST_MUT_UNSAT", "true", "true", "false"}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-
-	private static final ConditionInfo SIGNER_CONDITION1 = new ConditionInfo("org.osgi.service.condpermadmin.BundleSignerCondition", new String[] {"*;cn=test1,c=US"}); //$NON-NLS-1$//$NON-NLS-2$
-	private static final ConditionInfo SIGNER_CONDITION2 = new ConditionInfo("org.osgi.service.condpermadmin.BundleSignerCondition", new String[] {"*;cn=test2,c=US"}); //$NON-NLS-1$//$NON-NLS-2$
-	private static final ConditionInfo NOT_SIGNER_CONDITION1 = new ConditionInfo("org.osgi.service.condpermadmin.BundleSignerCondition", new String[] {"*;cn=test1,c=US", "!"}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-	private static final String TEST_BUNDLE = "test"; //$NON-NLS-1$
-	private static final String TEST2_BUNDLE = "test2"; //$NON-NLS-1$
-
-	//private static final ConditionInfo POST_MUT_NOTSAT = new ConditionInfo("ext.framework.b.TestCondition", new String[] {"POST_MUT_NOTSAT", "true", "true", "false"}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	//private static final ConditionInfo POST_NOTMUT_SAT = new ConditionInfo("ext.framework.b.TestCondition", new String[] {"POST_NOTMUT_SAT", "true", "false", "true"}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-	//private static final ConditionInfo POST_NOTMUT_NOTSAT = new ConditionInfo("ext.framework.b.TestCondition", new String[] {"POST_NOTMUT_NOTSAT", "true", "false", "false"}); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-
-	public static Test suite() {
-		return new TestSuite(SecurityAdminUnitTests.class);
-	}
-
-	private SecurityAdmin createSecurityAdmin(EquinoxSecurityManager sm) {
-		return createSecurityAdmin(sm, null);
-	}
-
-	private SecurityAdmin createSecurityAdmin(EquinoxSecurityManager sm, String[] condPermInfos) {
-		try {
-			return new SecurityAdmin(sm, null, new TestPermissionStorage(condPermInfos));
-		} catch (IOException e) {
-			fail("unexpected exception creating SecuirtyAdmin", e); //$NON-NLS-1$;
-		}
-		return null;
-	}
-
-	public void testCreateSecurityAdmin() {
-		createSecurityAdmin(null);
-	}
-
-	public void testCreateDomain() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		if (!pd.implies(new AllPermission()))
-			fail("test bundle should have AllPermission"); //$NON-NLS-1$
-	}
-
-	public void testLocationPermission01() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		securityAdmin.setPermissions(test.getLocation(), READONLY_INFOS);
-
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-
-		securityAdmin.setPermissions(test.getLocation(), null);
-
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-	}
-
-	public void testLocationPermission02() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		securityAdmin.setPermissions(test.getLocation(), READWRITE_INFOS);
-
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-
-		securityAdmin.setPermissions(test.getLocation(), null);
-
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-	}
-
-	public void testLocationPermission03() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-
-		securityAdmin.setDefaultPermissions(READONLY_INFOS);
-		securityAdmin.setPermissions(test.getLocation(), READWRITE_INFOS);
-		ConditionalPermissionInfo condPermInfo = securityAdmin.addConditionalPermissionInfo(ALLLOCATION_CONDS, SOCKET_INFOS);
-
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		securityAdmin.setPermissions(test.getLocation(), null);
-
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo.delete();
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		securityAdmin.setDefaultPermissions(null);
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-	}
-
-	public void testDefaultPermissions01() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		securityAdmin.setDefaultPermissions(READONLY_INFOS);
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-
-		securityAdmin.setDefaultPermissions(null);
-
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-	}
-
-	public void testDefaultPermissions02() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		securityAdmin.setDefaultPermissions(READONLY_INFOS);
-
-		securityAdmin.setPermissions(test.getLocation(), SOCKET_INFOS);
-
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		securityAdmin.setPermissions(test.getLocation(), null);
-
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		securityAdmin.setDefaultPermissions(null);
-
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-	}
-
-	public void testNotLocationCondition01() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-
-		ConditionalPermissionInfo condPermInfo = securityAdmin.addConditionalPermissionInfo(getLocationConditions("xxx", true), SOCKET_INFOS); //$NON-NLS-1$
-		testPermission(pd, new AllPermission(), false);
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo.delete();
-		testPermission(pd, new AllPermission(), true);
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testNotLocationCondition02() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-
-		ConditionalPermissionInfo condPermInfo = securityAdmin.addConditionalPermissionInfo(getLocationConditions(test.getLocation(), true), SOCKET_INFOS);
-		testPermission(pd, new AllPermission(), false);
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo.delete();
-		testPermission(pd, new AllPermission(), true);
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testMultipleLocationConditions01() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-
-		ConditionalPermissionInfo condPermInfo1 = securityAdmin.addConditionalPermissionInfo(getLocationConditions("xxx", false), SOCKET_INFOS); //$NON-NLS-1$
-		ConditionalPermissionInfo condPermInfo2 = securityAdmin.addConditionalPermissionInfo(ALLLOCATION_CONDS, READONLY_INFOS);
-
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo1.delete();
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo2.delete();
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testMultipleLocationConditions02() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-
-		ConditionalPermissionInfo condPermInfo1 = securityAdmin.addConditionalPermissionInfo(getLocationConditions("xxx", false), SOCKET_INFOS); //$NON-NLS-1$
-		ConditionalPermissionInfo condPermInfo2 = securityAdmin.addConditionalPermissionInfo(ALLLOCATION_CONDS, READONLY_INFOS);
-		ConditionalPermissionInfo condPermInfo3 = securityAdmin.addConditionalPermissionInfo(getLocationConditions(test.getLocation(), false), RUNTIME_INFOS);
-
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new RuntimePermission("exitVM", null), true); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo1.delete();
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new RuntimePermission("exitVM", null), true); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo2.delete();
-		testPermission(pd, new SocketPermission("localhost", "accept"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new RuntimePermission("exitVM", null), true); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		condPermInfo3.delete();
-		testPermission(pd, new SocketPermission("localhost", "accept"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new RuntimePermission("exitVM", null), true); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testUpdate01() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		assertTrue("table is not empty", rows.isEmpty()); //$NON-NLS-1$
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-	}
-
-	public void testUpdate02() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		ConditionalPermissionInfo info = securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.ALLOW);
-		rows.add(info);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.clear();
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-	}
-
-	public void testUpdate03() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		ConditionalPermissionInfo info1 = securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READWRITE_INFOS, ConditionalPermissionInfo.DENY);
-		ConditionalPermissionInfo info2 = securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.ALLOW);
-		rows.add(info1);
-		rows.add(info2);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.remove(0);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.remove(0);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-	}
-
-	public void testUpdate04() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		ConditionalPermissionInfo info1 = securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READWRITE_INFOS, ConditionalPermissionInfo.DENY);
-		ConditionalPermissionInfo info2 = securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.ALLOW);
-		rows.add(info1);
-		rows.add(info2);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		ConditionalPermissionUpdate update1 = securityAdmin.newConditionalPermissionUpdate();
-		List rows1 = update1.getConditionalPermissionInfos();
-		rows1.remove(0);
-
-		ConditionalPermissionUpdate update2 = securityAdmin.newConditionalPermissionUpdate();
-		List rows2 = update2.getConditionalPermissionInfos();
-		rows2.remove(0);
-		assertTrue("failed to commit", update2.commit()); //$NON-NLS-1$
-
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		testPermission(pd, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-
-		assertFalse("succeeded commit", update1.commit()); //$NON-NLS-1$
-
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.remove(0);
-
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-		testPermission(pd, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), true);
-	}
-
-	public void testSecurityManager01() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		ConditionalPermissionInfo info = securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.ALLOW);
-		rows.add(info);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		EquinoxSecurityManager sm = new EquinoxSecurityManager();
-		Bundle test = installTestBundle(TEST_BUNDLE);
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		ProtectionDomain[] pds = new ProtectionDomain[] {pd};
-		testSMPermission(sm, pds, new FilePermission("test", "write"), false); //$NON-NLS-1$ //$NON-NLS-2$
-		testSMPermission(sm, pds, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testSMPermission(sm, pds, new AllPermission(), false);
-
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.clear();
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-		testSMPermission(sm, pds, new FilePermission("test", "write"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testSMPermission(sm, pds, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testSMPermission(sm, pds, new AllPermission(), true);
-	}
-
-	public void testPostponedConditions01() {
-		installConditionBundle();
-		TestCondition.clearConditions();
-		EquinoxSecurityManager sm = new EquinoxSecurityManager();
-		SecurityAdmin securityAdmin = createSecurityAdmin(sm);
-		Bundle test1 = installTestBundle(TEST_BUNDLE);
-		Bundle test2 = installTestBundle(TEST2_BUNDLE);
-		ProtectionDomain pd1 = securityAdmin.createProtectionDomain(test1);
-		ProtectionDomain pd2 = securityAdmin.createProtectionDomain(test2);
-		ProtectionDomain[] pds = new ProtectionDomain[] {pd1, pd2};
-
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_UNSAT}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$);
-
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		TestCondition tc1sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test2.getBundleId()); //$NON-NLS-1$
-		TestCondition tc1unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test2.getBundleId()); //$NON-NLS-1$
-
-		assertNotNull("tc1sat", tc1sat); //$NON-NLS-1$
-		assertNotNull("tc2sat", tc2sat); //$NON-NLS-1$
-		assertNotNull("tc1unsat", tc1unsat); //$NON-NLS-1$
-		assertNotNull("tc2unsat", tc2unsat); //$NON-NLS-1$
-
-		tc1sat.setSatisfied(false);
-		tc2sat.setSatisfied(false);
-		tc1unsat.setSatisfied(true);
-		tc2unsat.setSatisfied(true);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		tc1sat.setSatisfied(true);
-		tc2sat.setSatisfied(true);
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.remove(0);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		tc1unsat.setSatisfied(false);
-		tc2unsat.setSatisfied(false);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.remove(0);
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testPostponedConditions02() {
-		installConditionBundle();
-		TestCondition.clearConditions();
-		EquinoxSecurityManager sm = new EquinoxSecurityManager();
-		SecurityAdmin securityAdmin = createSecurityAdmin(sm);
-		Bundle test1 = installTestBundle(TEST_BUNDLE);
-		Bundle test2 = installTestBundle(TEST2_BUNDLE);
-		ProtectionDomain pd1 = securityAdmin.createProtectionDomain(test1);
-		ProtectionDomain pd2 = securityAdmin.createProtectionDomain(test2);
-		ProtectionDomain[] pds = new ProtectionDomain[] {pd1, pd2};
-
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_UNSAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$);
-
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		TestCondition tc1sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test2.getBundleId()); //$NON-NLS-1$
-		TestCondition tc1unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test2.getBundleId()); //$NON-NLS-1$
-
-		// Note that we need to avoid an ordering assumption on the order in which
-		// ProtectionDomains are processed by the AccessControlContext (bug 269917)
-		// Just make sure both tc1 and tc2 are not non-null at the same time.
-		assertTrue("tc1sat and tc2sat are either both null or both non-null", (tc1sat == null) ^ (tc2sat == null)); //$NON-NLS-1$
-		assertTrue("tc1unsat and tc2unsat are either both null or both non-null", (tc1unsat == null) ^ (tc2unsat == null)); //$NON-NLS-1$
-
-		TestCondition modifySat = tc1sat != null ? tc1sat : tc2sat;
-		TestCondition modifyUnsat = tc1unsat != null ? tc1unsat : tc2unsat;
-		modifySat.setSatisfied(false);
-		modifyUnsat.setSatisfied(true);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testPostponedConditions03() {
-		installConditionBundle();
-		TestCondition.clearConditions();
-		EquinoxSecurityManager sm = new EquinoxSecurityManager();
-		SecurityAdmin securityAdmin = createSecurityAdmin(sm);
-		Bundle test1 = installTestBundle(TEST_BUNDLE);
-		Bundle test2 = installTestBundle(TEST2_BUNDLE);
-		ProtectionDomain pd1 = securityAdmin.createProtectionDomain(test1);
-		ProtectionDomain pd2 = securityAdmin.createProtectionDomain(test2);
-		ProtectionDomain[] pds = new ProtectionDomain[] {pd1, pd2};
-
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_UNSAT}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$);
-
-		testSMPermission(sm, pds, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-
-		TestCondition tc1sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test2.getBundleId()); //$NON-NLS-1$
-		TestCondition tc1unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test2.getBundleId()); //$NON-NLS-1$
-
-		assertNotNull("tc1sat", tc1sat); //$NON-NLS-1$
-		assertNotNull("tc2sat", tc2sat); //$NON-NLS-1$
-		assertNotNull("tc1unsat", tc1unsat); //$NON-NLS-1$
-		assertNotNull("tc2unsat", tc2unsat); //$NON-NLS-1$
-
-		tc1sat.setSatisfied(false);
-		tc2sat.setSatisfied(false);
-		tc1unsat.setSatisfied(true);
-		tc2unsat.setSatisfied(true);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testPostponedConditions04() {
-		installConditionBundle();
-		TestCondition.clearConditions();
-		EquinoxSecurityManager sm = new EquinoxSecurityManager();
-		SecurityAdmin securityAdmin = createSecurityAdmin(sm);
-		Bundle test1 = installTestBundle(TEST_BUNDLE);
-		Bundle test2 = installTestBundle(TEST2_BUNDLE);
-		ProtectionDomain pd1 = securityAdmin.createProtectionDomain(test1);
-		ProtectionDomain pd2 = securityAdmin.createProtectionDomain(test2);
-		ProtectionDomain[] pds = new ProtectionDomain[] {pd1, pd2};
-
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_UNSAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$);
-
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		TestCondition tc1sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test2.getBundleId()); //$NON-NLS-1$
-		TestCondition tc1unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test2.getBundleId()); //$NON-NLS-1$
-
-		// Note that we need to avoid an ordering assumption on the order in which
-		// ProtectionDomains are processed by the AccessControlContext (bug 269917)
-		// Just make sure both tc1 and tc2 are not non-null at the same time.
-		assertTrue("tc1sat and tc2sat are either both null or both non-null", (tc1sat == null) ^ (tc2sat == null)); //$NON-NLS-1$
-		assertTrue("tc1unsat and tc2unsat are either both null or both non-null", (tc1unsat == null) ^ (tc2unsat == null)); //$NON-NLS-1$
-
-		TestCondition modifySat = tc1sat != null ? tc1sat : tc2sat;
-		TestCondition modifyUnsat = tc1unsat != null ? tc1unsat : tc2unsat;
-		modifySat.setSatisfied(false);
-		modifyUnsat.setSatisfied(true);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testPostponedConditions05() {
-		installConditionBundle();
-		TestCondition.clearConditions();
-		EquinoxSecurityManager sm = new EquinoxSecurityManager();
-		SecurityAdmin securityAdmin = createSecurityAdmin(sm);
-		Bundle test1 = installTestBundle(TEST_BUNDLE);
-		Bundle test2 = installTestBundle(TEST2_BUNDLE);
-		ProtectionDomain pd1 = securityAdmin.createProtectionDomain(test1);
-		ProtectionDomain pd2 = securityAdmin.createProtectionDomain(test2);
-		ProtectionDomain[] pds = new ProtectionDomain[] {pd1, pd2};
-
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_UNSAT}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_SAT}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {POST_MUT_UNSAT}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, ALLLOCATION_CONDS, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$);
-
-		testSMPermission(sm, pds, new FilePermission("test", "read"), false); //$NON-NLS-1$ //$NON-NLS-2$
-
-		TestCondition tc1sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2sat = TestCondition.getTestCondition("POST_MUT_SAT_" + test2.getBundleId()); //$NON-NLS-1$
-		TestCondition tc1unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test1.getBundleId()); //$NON-NLS-1$
-		TestCondition tc2unsat = TestCondition.getTestCondition("POST_MUT_UNSAT_" + test2.getBundleId()); //$NON-NLS-1$
-
-		assertNotNull("tc1sat", tc1sat); //$NON-NLS-1$
-		assertNotNull("tc2sat", tc2sat); //$NON-NLS-1$
-		assertNotNull("tc1unsat", tc1unsat); //$NON-NLS-1$
-		assertNotNull("tc2unsat", tc2unsat); //$NON-NLS-1$
-
-		tc1sat.setSatisfied(false);
-		tc2sat.setSatisfied(false);
-		testSMPermission(sm, pds, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testAccessControlContext01() {
-		// test single row with signer condition
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test1,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAccessControlContext01a() {
-		// test single row with signer condition
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=test1,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAccessControlContext02() {
-		// test with DENY row
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READWRITE_INFOS, ConditionalPermissionInfo.DENY));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READWRITE_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test1,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAccessControlContext03() {
-		// test multiple signer conditions
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-
-		update = securityAdmin.newConditionalPermissionUpdate();
-		rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION2}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-		acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAccessControlContext04() {
-		// test multiple signer conditions
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1, SIGNER_CONDITION2}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READWRITE_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-
-		acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test1,c=US", "cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testAccessControlContext05() {
-		// test with empty rows
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-			acc.checkPermission(new AllPermission());
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-		// set the default permissions
-		securityAdmin.setDefaultPermissions(READWRITE_INFOS);
-		acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-		try {
-			acc.checkPermission(new AllPermission());
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-	}
-
-	public void testAccessControlContext06() {
-		// test with empty condition rows
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {SIGNER_CONDITION1}, READWRITE_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-	}
-
-	public void testAccessControlContext07() {
-		// test ! signer condition
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {NOT_SIGNER_CONDITION1}, READONLY_INFOS, ConditionalPermissionInfo.ALLOW));
-		assertTrue("failed to commit", update.commit()); //$NON-NLS-1$
-		AccessControlContext acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test1,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-
-		acc = securityAdmin.getAccessControlContext(new String[] {"cn=t1,c=FR;cn=test2,c=US"}); //$NON-NLS-1$
-		try {
-			acc.checkPermission(new FilePermission("test", "write")); //$NON-NLS-1$ //$NON-NLS-2$
-			fail("expecting AccessControlExcetpion"); //$NON-NLS-1$
-		} catch (AccessControlException e) {
-			// expected
-		}
-		try {
-			acc.checkPermission(new FilePermission("test", "read")); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (AccessControlException e) {
-			fail("Unexpected AccessControlExcetpion", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testEncodingInfos01() {
-		String info1 = "ALLOW { [Test1] (Type1 \"name1\" \"action1\") } \"name1\""; //$NON-NLS-1$
-		String info2 = "ALLOW { [Test2] (Type2 \"name2\" \"action2\") } \"name2\""; //$NON-NLS-1$
-		String info3 = "deny { [Test3] (Type3 \"name3\" \"action3\") } \"name3\""; //$NON-NLS-1$
-
-		String[] condPermInfos = new String[] {info1, info2};
-		SecurityAdmin securityAdmin = createSecurityAdmin(null, condPermInfos);
-		ArrayList infos = new ArrayList();
-		for (Enumeration eInfos = securityAdmin.getConditionalPermissionInfos(); eInfos.hasMoreElements();)
-			infos.add(eInfos.nextElement());
-		assertEquals("Wrong number of infos", 2, infos.size()); //$NON-NLS-1$
-		assertTrue("Missing info1", infos.contains(securityAdmin.newConditionalPermissionInfo(info1))); //$NON-NLS-1$
-		assertTrue("Missing info2", infos.contains(securityAdmin.newConditionalPermissionInfo(info2))); //$NON-NLS-1$
-		assertEquals("Wrong index of info1", 0, infos.indexOf(securityAdmin.newConditionalPermissionInfo(info1))); //$NON-NLS-1$
-		assertEquals("Wrong index of info2", 1, infos.indexOf(securityAdmin.newConditionalPermissionInfo(info2))); //$NON-NLS-1$
-
-		ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-		List updateInfos = update.getConditionalPermissionInfos();
-		assertTrue("Info lists are not equal", updateInfos.equals(infos)); //$NON-NLS-1$
-		updateInfos.add(securityAdmin.newConditionalPermissionInfo(info3));
-		assertTrue("Failed commit", update.commit()); //$NON-NLS-1$
-
-		infos = new ArrayList();
-		for (Enumeration eInfos = securityAdmin.getConditionalPermissionInfos(); eInfos.hasMoreElements();)
-			infos.add(eInfos.nextElement());
-		assertTrue("Info lists are not equal", updateInfos.equals(infos)); //$NON-NLS-1$
-	}
-
-	public void testEncodingInfos02() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-
-		ConditionInfo cond1 = new ConditionInfo("Test1", new String[] {"arg1", "arg2"}); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-		ConditionInfo cond2 = new ConditionInfo("Test1", new String[] {"arg1", "arg2", "arg3"}); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$
-		ConditionInfo cond3 = new ConditionInfo("Test1", new String[] {"test } test", "} test"}); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-
-		PermissionInfo perm1 = new PermissionInfo("Type1", "name1", "action1"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-		PermissionInfo perm2 = new PermissionInfo("Type1", "}", "test }"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-
-		// good info; mix case decision
-		ConditionalPermissionInfo testInfo1 = securityAdmin.newConditionalPermissionInfo("name1", new ConditionInfo[] {cond1}, new PermissionInfo[] {perm1}, "allow"); //$NON-NLS-1$ //$NON-NLS-2$
-		ConditionalPermissionInfo testInfo2 = checkGoodInfo("AlLoW { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") } \"name1\"", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-		testInfo1 = securityAdmin.newConditionalPermissionInfo("name1", new ConditionInfo[] {cond2}, new PermissionInfo[] {perm1}, "deny"); //$NON-NLS-1$ //$NON-NLS-2$
-		testInfo2 = checkGoodInfo("dEnY { [Test1 \"arg1\" \"arg2\" \"arg3\"] (Type1 \"name1\" \"action1\") } \"name1\"", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-
-		// good info; no conditions
-		testInfo1 = securityAdmin.newConditionalPermissionInfo("name1", null, new PermissionInfo[] {perm1}, "deny"); //$NON-NLS-1$ //$NON-NLS-2$
-		testInfo2 = checkGoodInfo("dEnY { (Type1 \"name1\" \"action1\") } \"name1\"", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-
-		// good info; no name
-		testInfo1 = securityAdmin.newConditionalPermissionInfo(null, new ConditionInfo[] {cond1}, new PermissionInfo[] {perm1}, "allow"); //$NON-NLS-1$
-		testInfo2 = checkGoodInfo("allow { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") }", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-
-		// good info; empty name
-		testInfo1 = securityAdmin.newConditionalPermissionInfo("", new ConditionInfo[] {cond1}, new PermissionInfo[] {perm1}, "allow"); //$NON-NLS-1$ //$NON-NLS-2$
-		testInfo2 = checkGoodInfo("allow { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") } \"\"", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-
-		// good info; no white space
-		testInfo1 = securityAdmin.newConditionalPermissionInfo("name1", new ConditionInfo[] {cond1}, new PermissionInfo[] {perm1}, "allow"); //$NON-NLS-1$ //$NON-NLS-2$
-		testInfo2 = checkGoodInfo("allow{[Test1 \"arg1\" \"arg2\"](Type1 \"name1\" \"action1\")}\"name1\"", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-
-		// good info; '}' in quoted value
-		testInfo1 = securityAdmin.newConditionalPermissionInfo("name", new ConditionInfo[] {cond3}, new PermissionInfo[] {perm2}, "allow"); //$NON-NLS-1$ //$NON-NLS-2$
-		testInfo2 = checkGoodInfo("allow { [Test1 \"test } test\" \"} test\"] (Type1 \"}\" \"test }\") } \"name\"", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-
-		// good info; '}' in quoted value
-		testInfo1 = securityAdmin.newConditionalPermissionInfo("na } me", new ConditionInfo[] {cond3}, new PermissionInfo[] {perm2}, "allow"); //$NON-NLS-1$ //$NON-NLS-2$
-		testInfo2 = checkGoodInfo("allow { [Test1 \"test } test\" \"} test\"] (Type1 \"}\" \"test }\") } \"na } me\"", securityAdmin); //$NON-NLS-1$
-		checkInfos(testInfo1, testInfo2);
-
-		// bad decision test
-		checkBadInfo("invalid { [Test1] (Type1 \"name1\" \"action1\") } \"name1\"", securityAdmin); //$NON-NLS-1$
-		// bad condition; missing type
-		checkBadInfo("allow { [] (Type1 \"name1\" \"action1\") } \"name1\"", securityAdmin); //$NON-NLS-1$
-		checkBadInfo("deny { [\"arg1\"] (Type1 \"name1\" \"action1\") } \"name1\"", securityAdmin); //$NON-NLS-1$
-		// bad permission (none)
-		checkBadInfo("ALLOW { [Test1 \"arg1\" \"arg2\"] } \"name1\"", securityAdmin); //$NON-NLS-1$
-		// bad permission; missing type
-		checkBadInfo("ALLOW { [Test1 \"arg1\" \"arg2\"] () } \"name1\"", securityAdmin); //$NON-NLS-1$
-		checkBadInfo("ALLOW { [Test1 \"arg1\" \"arg2\"] (\"name1\" \"action1\") } \"name1\"", securityAdmin); //$NON-NLS-1$
-		// bad name; no quotes
-		checkBadInfo("AlLoW { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") } name1", securityAdmin); //$NON-NLS-1$
-		// bad name; missing end quote
-		checkBadInfo("AlLoW { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") } \"name1", securityAdmin); //$NON-NLS-1$
-		// bad name; missing start quote
-		checkBadInfo("AlLoW { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") } name1\"", securityAdmin); //$NON-NLS-1$
-		// bad name; single quote
-		checkBadInfo("AlLoW { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") } \"", securityAdmin); //$NON-NLS-1$
-		// bad name; extra stuff
-		checkBadInfo("AlLoW { [Test1 \"arg1\" \"arg2\"] (Type1 \"name1\" \"action1\") } \"name1\" extrajunk", securityAdmin); //$NON-NLS-1$
-
-	}
-
-	public void testBug286307() {
-		SecurityAdmin securityAdmin = createSecurityAdmin(null);
-		Bundle test = installTestBundle("test.bug286307"); //$NON-NLS-1$
-		ProtectionDomain pd = securityAdmin.createProtectionDomain(test);
-		testPermission(pd, new FilePermission("test", "read"), true); //$NON-NLS-1$ //$NON-NLS-2$
-		testPermission(pd, new AllPermission(), false);
-	}
-
-	private void checkInfos(ConditionalPermissionInfo testInfo1, ConditionalPermissionInfo testInfo2) {
-		assertTrue("Infos are not equal: " + testInfo1.getEncoded() + " " + testInfo2.getEncoded(), testInfo1.equals(testInfo2)); //$NON-NLS-1$ //$NON-NLS-2$
-		assertEquals("Info hash code is not equal", testInfo1.hashCode(), testInfo2.hashCode()); //$NON-NLS-1$
-	}
-
-	private void checkBadInfo(String encoded, SecurityAdmin securityAdmin) {
-		try {
-			securityAdmin.newConditionalPermissionInfo(encoded);
-			fail("Expecting fail with bad info: " + encoded); //$NON-NLS-1$
-		} catch (IllegalArgumentException e) {
-			// expected
-		}
-	}
-
-	private ConditionalPermissionInfo checkGoodInfo(String encoded, SecurityAdmin securityAdmin) {
-		try {
-			return securityAdmin.newConditionalPermissionInfo(encoded);
-		} catch (IllegalArgumentException e) {
-			fail("Unexpected failure with good info: " + encoded, e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	private void testSMPermission(EquinoxSecurityManager sm, ProtectionDomain[] pds, Permission permission, boolean expectedToPass) {
-		AccessControlContext acc = new AccessControlContext(pds);
-		try {
-			sm.checkPermission(permission, acc);
-			if (!expectedToPass)
-				fail("test should not have the permission " + permission); //$NON-NLS-1$
-		} catch (SecurityException e) {
-			if (expectedToPass)
-				fail("test should have the permission " + permission); //$NON-NLS-1$
-		}
-	}
-
-	private void testPermission(ProtectionDomain pd, Permission permission, boolean expectedToPass) {
-		if (expectedToPass ^ pd.implies(permission))
-			fail("test should" + (expectedToPass ? "" : " not") + " have the permission " + permission); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-	}
-
-	private ConditionInfo[] getLocationConditions(String location, boolean not) {
-		String[] args = not ? new String[] {location, "!"} : new String[] {location}; //$NON-NLS-1$
-		return new ConditionInfo[] {new ConditionInfo("org.osgi.service.condpermadmin.BundleLocationCondition", args)}; //$NON-NLS-1$
-	}
-
-	private Bundle installTestBundle(String name) {
-		try {
-			return installer.installBundle(name);
-		} catch (BundleException e) {
-			fail("failed to install bundle: " + name, e); //$NON-NLS-1$
-		}
-		return null;
-	}
-
-	private Bundle installConditionBundle() {
-		try {
-			Bundle bundle = installer.installBundle("ext.framework.b", false); //$NON-NLS-1$
-			installer.resolveBundles(new Bundle[] {bundle});
-			return bundle;
-		} catch (BundleException e) {
-			fail("failed to install bundle", e); //$NON-NLS-1$
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityManagerTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityManagerTests.java
deleted file mode 100644
index 0098a0e..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/SecurityManagerTests.java
+++ /dev/null
@@ -1,576 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.securityadmin;
-
-import java.io.File;
-import java.security.*;
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.framework.internal.core.Framework;
-import org.eclipse.osgi.launch.Equinox;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-import org.osgi.service.condpermadmin.*;
-import org.osgi.service.packageadmin.*;
-import org.osgi.service.permissionadmin.PermissionInfo;
-import org.osgi.service.startlevel.StartLevel;
-
-public class SecurityManagerTests extends AbstractBundleTests {
-	private static final PermissionInfo hostFragmentPermission = new PermissionInfo(BundlePermission.class.getName(), "*", "host,fragment"); //$NON-NLS-1$ //$NON-NLS-2$
-	private static final PermissionInfo hostFragmentProvidePermission = new PermissionInfo(BundlePermission.class.getName(), "*", "host,fragment,provide"); //$NON-NLS-1$ //$NON-NLS-2$
-	private static final PermissionInfo allPackagePermission = new PermissionInfo(PackagePermission.class.getName(), "*", "import,export"); //$NON-NLS-1$ //$NON-NLS-2$
-	private static final PermissionInfo importPackagePermission = new PermissionInfo(PackagePermission.class.getName(), "*", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-	private static final PermissionInfo importFrameworkPackagePermission = new PermissionInfo(PackagePermission.class.getName(), "org.osgi.framework", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-	private Policy previousPolicy;
-
-	public static Test suite() {
-		return new TestSuite(SecurityManagerTests.class);
-	}
-
-	protected void setUp() throws Exception {
-		if (System.getSecurityManager() != null)
-			fail("Cannot test with security manager set"); //$NON-NLS-1$
-		previousPolicy = Policy.getPolicy();
-		final Permission allPermission = new AllPermission();
-		final PermissionCollection allPermissions = new PermissionCollection() {
-			private static final long serialVersionUID = 3258131349494708277L;
-
-			// A simple PermissionCollection that only has AllPermission
-			public void add(Permission permission) {
-				//no adding to this policy
-			}
-
-			public boolean implies(Permission permission) {
-				return true;
-			}
-
-			public Enumeration elements() {
-				return new Enumeration() {
-					int cur = 0;
-
-					public boolean hasMoreElements() {
-						return cur < 1;
-					}
-
-					public Object nextElement() {
-						if (cur == 0) {
-							cur = 1;
-							return allPermission;
-						}
-						throw new NoSuchElementException();
-					}
-				};
-			}
-		};
-
-		Policy.setPolicy(new Policy() {
-
-			public PermissionCollection getPermissions(CodeSource codesource) {
-				return allPermissions;
-			}
-
-			public void refresh() {
-				// nothing
-			}
-
-		});
-		super.setUp();
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (System.getSecurityManager() != null)
-			System.setSecurityManager(null);
-		Policy.setPolicy(previousPolicy);
-	}
-
-	public void testEnableSecurityManager01() {
-		File config = OSGiTestsActivator.getContext().getDataFile("testEnableSecurityManager01"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-	public void testEnableSecurityManager02() throws BundleException {
-		// create/start/stop/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testEnableSecurityManager02"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing host and fragment to test bug 245678
-		String locationSecurityA = installer.getBundleLocation("security.a"); //$NON-NLS-1$
-		String locationSecurityAFragA = installer.getBundleLocation("security.a.frag.a"); //$NON-NLS-1$
-		// set the security for the host and fragment
-		ConditionalPermissionAdmin ca = (ConditionalPermissionAdmin) systemContext.getService(systemContext.getServiceReference(ConditionalPermissionAdmin.class.getName()));
-		ConditionalPermissionUpdate update = ca.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(ca.newConditionalPermissionInfo(null, null, new PermissionInfo[] {hostFragmentPermission, allPackagePermission}, ConditionalPermissionInfo.ALLOW));
-		assertTrue("Cannot commit rows", update.commit()); //$NON-NLS-1$
-
-		Bundle securityA = systemContext.installBundle(locationSecurityA);
-		systemContext.installBundle(locationSecurityAFragA);
-
-		equinox.start();
-
-		try {
-			securityA.start();
-		} catch (BundleException e) {
-			fail("Failed to start securityA", e); //$NON-NLS-1$
-		} finally {
-			// put the framework back to the RESOLVED state
-			equinox.stop();
-
-			try {
-				equinox.waitForStop(10000);
-			} catch (InterruptedException e) {
-				fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-			}
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-	public void testEnableSecurityManager03() throws BundleException {
-		File config = OSGiTestsActivator.getContext().getDataFile("testEnableSecurityManager03"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing a bundle to tests bug 
-		String locationSecurityA = installer.getBundleLocation("security.a"); //$NON-NLS-1$
-		// set the security for the bundle
-		ConditionalPermissionAdmin ca = (ConditionalPermissionAdmin) systemContext.getService(systemContext.getServiceReference(ConditionalPermissionAdmin.class.getName()));
-		ConditionalPermissionUpdate update = ca.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(ca.newConditionalPermissionInfo(null, null, new PermissionInfo[] {hostFragmentPermission, importPackagePermission}, ConditionalPermissionInfo.ALLOW));
-		assertTrue("Cannot commit rows", update.commit()); //$NON-NLS-1$
-
-		Bundle securityA = systemContext.installBundle(locationSecurityA);
-
-		equinox.start();
-		PackageAdmin pa = (PackageAdmin) systemContext.getService(systemContext.getServiceReference(PackageAdmin.class.getName()));
-
-		try {
-			assertTrue(pa.resolveBundles(new Bundle[] {securityA}));
-			ExportedPackage[] eps = pa.getExportedPackages(securityA);
-			assertNull("Found unexpected exports", eps); //$NON-NLS-1$
-			RequiredBundle[] rbs = pa.getRequiredBundles(securityA.getSymbolicName());
-			assertNull("Found unexpected required bundle", rbs); //$NON-NLS-1$
-			// grant export permission
-			update = ca.newConditionalPermissionUpdate();
-			rows = update.getConditionalPermissionInfos();
-			rows.clear();
-			rows.add(ca.newConditionalPermissionInfo(null, null, new PermissionInfo[] {hostFragmentProvidePermission, allPackagePermission}, ConditionalPermissionInfo.ALLOW));
-			assertTrue("Cannot commit rows", update.commit()); //$NON-NLS-1$
-
-			securityA.uninstall();
-			securityA = systemContext.installBundle(locationSecurityA);
-			assertTrue(pa.resolveBundles(new Bundle[] {securityA}));
-			eps = pa.getExportedPackages(securityA);
-			assertNotNull("Did not find expected exports", eps); //$NON-NLS-1$
-			assertEquals("Wrong number of exports found", 1, eps.length); //$NON-NLS-1$
-			rbs = pa.getRequiredBundles(securityA.getSymbolicName());
-			assertNotNull("Did not find required bundle", eps); //$NON-NLS-1$
-			assertEquals("Wrong number of required bundles found", 1, rbs.length); //$NON-NLS-1$
-
-		} finally {
-			// put the framework back to the RESOLVED state
-			equinox.stop();
-
-			try {
-				equinox.waitForStop(10000);
-			} catch (InterruptedException e) {
-				fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-			}
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-	public void testEnableSecurityManager04() throws BundleException {
-		File config = OSGiTestsActivator.getContext().getDataFile("testEnableSecurityManager04"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing a bundle to tests bug 
-		String locationLinkA = installer.getBundleLocation("test.link.a"); //$NON-NLS-1$
-		String locationLinkAClient = installer.getBundleLocation("test.link.a.client"); //$NON-NLS-1$
-
-		// set the security for the bundles
-		ConditionInfo linkACondition = new ConditionInfo(BundleLocationCondition.class.getName(), new String[] {locationLinkA});
-		ConditionInfo linkAClientCondition = new ConditionInfo(BundleLocationCondition.class.getName(), new String[] {locationLinkAClient});
-		PermissionInfo filterPermission = new PermissionInfo(PackagePermission.class.getName(), "(&(name=test.link.a)(package.name=test.link.*))", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-		ConditionalPermissionAdmin ca = (ConditionalPermissionAdmin) systemContext.getService(systemContext.getServiceReference(ConditionalPermissionAdmin.class.getName()));
-		ConditionalPermissionUpdate update = ca.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(ca.newConditionalPermissionInfo(null, new ConditionInfo[] {linkACondition}, new PermissionInfo[] {hostFragmentProvidePermission, allPackagePermission}, ConditionalPermissionInfo.ALLOW));
-		rows.add(ca.newConditionalPermissionInfo(null, new ConditionInfo[] {linkAClientCondition}, new PermissionInfo[] {importFrameworkPackagePermission, filterPermission}, ConditionalPermissionInfo.ALLOW));
-		assertTrue("Cannot commit rows", update.commit()); //$NON-NLS-1$
-
-		Bundle linkA = systemContext.installBundle(locationLinkA);
-		Bundle linkAClient = systemContext.installBundle(locationLinkAClient);
-		equinox.start();
-		PackageAdmin pa = (PackageAdmin) systemContext.getService(systemContext.getServiceReference(PackageAdmin.class.getName()));
-
-		try {
-			assertTrue(pa.resolveBundles(new Bundle[] {linkA, linkAClient}));
-			// change import permission to fail filter match
-			filterPermission = new PermissionInfo(PackagePermission.class.getName(), "(&(name=fail.match)(package.name=test.link.*))", "import"); //$NON-NLS-1$ //$NON-NLS-2$
-			update = ca.newConditionalPermissionUpdate();
-			rows = update.getConditionalPermissionInfos();
-			rows.clear();
-			rows.add(ca.newConditionalPermissionInfo(null, new ConditionInfo[] {linkACondition}, new PermissionInfo[] {hostFragmentProvidePermission, allPackagePermission}, ConditionalPermissionInfo.ALLOW));
-			rows.add(ca.newConditionalPermissionInfo(null, new ConditionInfo[] {linkAClientCondition}, new PermissionInfo[] {importFrameworkPackagePermission, filterPermission}, ConditionalPermissionInfo.ALLOW));
-			assertTrue("Cannot commit rows", update.commit()); //$NON-NLS-1$
-			pa.refreshPackages(new Bundle[] {linkA, linkAClient});
-			// hack to wait for refresh to end
-			Thread.sleep(2000);
-			assertEquals("linkA has wrong state", Bundle.RESOLVED, linkA.getState()); //$NON-NLS-1$
-			assertEquals("linkAClient has wrong state", Bundle.INSTALLED, linkAClient.getState()); //$NON-NLS-1$
-		} catch (InterruptedException e) {
-			// fail
-			fail("interrupted", e); //$NON-NLS-1$
-		} finally {
-			// put the framework back to the RESOLVED state
-			equinox.stop();
-
-			try {
-				equinox.waitForStop(10000);
-			} catch (InterruptedException e) {
-				fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-			}
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-	public void testEnableSecurityManager05() throws BundleException {
-		File config = OSGiTestsActivator.getContext().getDataFile(getName()); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing a bundle to tests bug 
-		String locationLinkA = installer.getBundleLocation("test.link.a"); //$NON-NLS-1$
-		String locationLinkAClient = installer.getBundleLocation("test.link.a.client"); //$NON-NLS-1$
-
-		Bundle linkA = systemContext.installBundle(locationLinkA);
-		Bundle linkAClient = systemContext.installBundle(locationLinkAClient);
-		equinox.start();
-
-		try {
-			PackageAdmin pa = (PackageAdmin) systemContext.getService(systemContext.getServiceReference(PackageAdmin.class.getName()));
-			assertTrue(pa.resolveBundles(new Bundle[] {linkA, linkAClient}));
-			linkA.uninstall();
-			linkAClient.uninstall();
-
-			linkA = systemContext.installBundle(locationLinkA);
-			linkAClient = systemContext.installBundle(locationLinkAClient);
-			assertTrue(pa.resolveBundles(new Bundle[] {linkA, linkAClient}));
-		} finally {
-			// put the framework back to the RESOLVED state
-			equinox.stop();
-
-			try {
-				equinox.waitForStop(10000);
-			} catch (InterruptedException e) {
-				fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-			}
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-	public void testLocalization01() throws BundleException {
-		// create/start/stop/start/stop test
-		File config = OSGiTestsActivator.getContext().getDataFile("testLocalization01"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		// try installing host and fragment to test bug 245678
-		String locationSecurityA = installer.getBundleLocation("security.a"); //$NON-NLS-1$
-		String locationSecurityAFragA = installer.getBundleLocation("security.a.frag.a"); //$NON-NLS-1$
-		// set the security for the host and fragment
-		ConditionalPermissionAdmin ca = (ConditionalPermissionAdmin) systemContext.getService(systemContext.getServiceReference(ConditionalPermissionAdmin.class.getName()));
-		ConditionalPermissionUpdate update = ca.newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		rows.add(ca.newConditionalPermissionInfo(null, null, new PermissionInfo[] {hostFragmentPermission, allPackagePermission}, ConditionalPermissionInfo.ALLOW));
-		assertTrue("Cannot commit rows", update.commit()); //$NON-NLS-1$
-
-		Bundle securityA = systemContext.installBundle(locationSecurityA);
-		systemContext.installBundle(locationSecurityAFragA);
-
-		equinox.start();
-
-		try {
-			securityA.start();
-			Dictionary headers = securityA.getHeaders("en_US"); //$NON-NLS-1$
-			String name = (String) headers.get(Constants.BUNDLE_NAME);
-			assertEquals("Wrong Bundle-Name", "en_US", name); //$NON-NLS-1$ //$NON-NLS-2$
-
-			headers = securityA.getHeaders("en"); //$NON-NLS-1$
-			name = (String) headers.get(Constants.BUNDLE_NAME);
-			assertEquals("Wrong Bundle-Name", "default", name); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (BundleException e) {
-			fail("Failed to start securityA", e); //$NON-NLS-1$
-		} finally {
-			// put the framework back to the RESOLVED state
-			equinox.stop();
-
-			try {
-				equinox.waitForStop(10000);
-			} catch (InterruptedException e) {
-				fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-			}
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-	public void testBug254600() {
-		File config = OSGiTestsActivator.getContext().getDataFile("testBug254600"); //$NON-NLS-1$
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-
-		Bundle securityB = null;
-		long idB = -1;
-		try {
-			String locationSecurityA = installer.getBundleLocation("security.a"); //$NON-NLS-1$
-			String locationSecurityB = installer.getBundleLocation("security.b"); //$NON-NLS-1$
-			systemContext.installBundle(locationSecurityA);
-			securityB = systemContext.installBundle(locationSecurityB);
-			idB = securityB.getBundleId();
-		} catch (BundleException e) {
-			fail("Failed to install security test bundles", e); //$NON-NLS-1$
-		}
-
-		try {
-			securityB.start();
-			securityB.stop();
-		} catch (BundleException e) {
-			fail("Failed to start security.b bundle", e); //$NON-NLS-1$
-		}
-
-		// put the framework back to the RESOLVED state
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-
-		systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-		securityB = systemContext.getBundle(idB);
-
-		try {
-			securityB.start();
-			securityB.stop();
-		} catch (BundleException e) {
-			fail("Failed to start security.b bundle", e); //$NON-NLS-1$
-		}
-
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-	public void testBug287750() {
-		File config = OSGiTestsActivator.getContext().getDataFile(getName());
-		Properties configuration = new Properties();
-		configuration.put(Constants.FRAMEWORK_STORAGE, config.getAbsolutePath());
-		configuration.put(Constants.FRAMEWORK_SECURITY, Framework.SECURITY_OSGI);
-		Equinox equinox = new Equinox(configuration);
-		try {
-			equinox.init();
-		} catch (BundleException e) {
-			fail("Unexpected exception on init()", e); //$NON-NLS-1$
-		}
-		assertNotNull("SecurityManager is null", System.getSecurityManager()); //$NON-NLS-1$
-		// should be in the STARTING state
-		assertEquals("Wrong state for SystemBundle", Bundle.STARTING, equinox.getState()); //$NON-NLS-1$
-		try {
-			equinox.start();
-		} catch (BundleException e) {
-			fail("Failed to start the framework", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.ACTIVE, equinox.getState()); //$NON-NLS-1$
-
-		BundleContext systemContext = equinox.getBundleContext();
-		assertNotNull("System context is null", systemContext); //$NON-NLS-1$
-
-		Bundle testBundle = null;
-		try {
-			String locationTestBundle = installer.getBundleLocation("test.bug287750"); //$NON-NLS-1$
-			testBundle = systemContext.installBundle(locationTestBundle);
-		} catch (BundleException e) {
-			fail("Failed to install security test bundles", e); //$NON-NLS-1$
-		}
-
-		try {
-			testBundle.start();
-		} catch (BundleException e) {
-			fail("Failed to start security.b bundle", e); //$NON-NLS-1$
-		}
-		StartLevel sl = (StartLevel) systemContext.getService(systemContext.getServiceReference(StartLevel.class.getName()));
-		if (sl.getStartLevel() != 10)
-			try {
-				Thread.sleep(1000);
-			} catch (InterruptedException e1) {
-				// nothing
-			}
-		assertEquals("Wrong startlevel", 10, sl.getStartLevel()); //$NON-NLS-1$
-		try {
-			equinox.stop();
-		} catch (BundleException e) {
-			fail("Unexpected erorr stopping framework", e); //$NON-NLS-1$
-		}
-		try {
-			equinox.waitForStop(10000);
-		} catch (InterruptedException e) {
-			fail("Unexpected interrupted exception", e); //$NON-NLS-1$
-		}
-		assertEquals("Wrong state for SystemBundle", Bundle.RESOLVED, equinox.getState()); //$NON-NLS-1$
-		assertNull("SecurityManager is not null", System.getSecurityManager()); //$NON-NLS-1$
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/TestPermissionStorage.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/TestPermissionStorage.java
deleted file mode 100644
index 627d9b7..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/securityadmin/TestPermissionStorage.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package org.eclipse.osgi.tests.securityadmin;
-
-import java.io.IOException;
-import org.eclipse.osgi.framework.adaptor.PermissionStorage;
-
-public class TestPermissionStorage implements PermissionStorage {
-
-	private String[] conditionPermissionInfo;
-
-	public TestPermissionStorage(String[] conditionPermissionInfo) {
-		this.conditionPermissionInfo = conditionPermissionInfo;
-	}
-
-	public String[] getConditionalPermissionInfos() throws IOException {
-		return conditionPermissionInfo;
-	}
-
-	public String[] getLocations() throws IOException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public String[] getPermissionData(String location) throws IOException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public void saveConditionalPermissionInfos(String[] infos) throws IOException {
-		conditionPermissionInfo = infos;
-
-	}
-
-	public void setPermissionData(String location, String[] data) throws IOException {
-		// TODO Auto-generated method stub
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceExceptionTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceExceptionTests.java
deleted file mode 100644
index a7c735f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceExceptionTests.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.serviceregistry;
-
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class ServiceExceptionTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(ServiceExceptionTests.class);
-	}
-
-	public void testServiceException01() {
-		final String testMethodName = "testServiceException01"; //$NON-NLS-1$
-		// test a service factory which returns wrong object types
-		ServiceExceptionServiceFactory wrongObjectFactory = new ServiceExceptionServiceFactory("A String"); //$NON-NLS-1$
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$ 
-		ServiceRegistration reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), wrongObjectFactory, props);
-		ServiceExceptionFrameworkListener listener = new ServiceExceptionFrameworkListener(OSGiTestsActivator.getContext().getBundle(), null, ServiceException.FACTORY_ERROR);
-		OSGiTestsActivator.getContext().addFrameworkListener(listener);
-		try {
-			ServiceReference[] refs = null;
-			try {
-				refs = OSGiTestsActivator.getContext().getServiceReferences(Runnable.class.getName(), "(name=" + testMethodName + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("Unexpected syntax error", e); //$NON-NLS-1$
-			}
-			assertNotNull("service refs is null", refs); //$NON-NLS-1$
-			assertEquals("Wrong number of references", 1, refs.length); //$NON-NLS-1$
-			Runnable service = null;
-			try {
-				service = (Runnable) OSGiTestsActivator.getContext().getService(refs[0]);
-			} catch (ClassCastException e) {
-				fail("Unexpected cast exception", e); //$NON-NLS-1$
-			}
-			assertNull("service is not null", service); //$NON-NLS-1$
-			listener.waitForEvent("Failed to fire ServiceException"); //$NON-NLS-1$
-			OSGiTestsActivator.getContext().ungetService(refs[0]);
-			Error error = wrongObjectFactory.getUngetFailure();
-			if (error != null)
-				throw error;
-		} finally {
-			if (reg != null)
-				reg.unregister();
-			if (listener != null)
-				OSGiTestsActivator.getContext().removeFrameworkListener(listener);
-		}
-	}
-
-	public void testServiceException02() {
-		final String testMethodName = "testServiceException02"; //$NON-NLS-1$
-		// test a service factory which returns null objects
-		ServiceExceptionServiceFactory nullObjectFactory = new ServiceExceptionServiceFactory(null);
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$ 
-		ServiceRegistration reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), nullObjectFactory, props);
-		ServiceExceptionFrameworkListener listener = new ServiceExceptionFrameworkListener(OSGiTestsActivator.getContext().getBundle(), null, ServiceException.FACTORY_ERROR);
-		OSGiTestsActivator.getContext().addFrameworkListener(listener);
-		try {
-			ServiceReference[] refs = null;
-			try {
-				refs = OSGiTestsActivator.getContext().getServiceReferences(Runnable.class.getName(), "(name=" + testMethodName + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("Unexpected syntax error", e); //$NON-NLS-1$
-			}
-			assertNotNull("service refs is null", refs); //$NON-NLS-1$
-			assertEquals("Wrong number of references", 1, refs.length); //$NON-NLS-1$
-			Runnable service = null;
-			try {
-				service = (Runnable) OSGiTestsActivator.getContext().getService(refs[0]);
-			} catch (ClassCastException e) {
-				fail("Unexpected cast exception", e); //$NON-NLS-1$
-			}
-			assertNull("service is not null", service); //$NON-NLS-1$
-			listener.waitForEvent("Failed to fire ServiceException"); //$NON-NLS-1$
-			OSGiTestsActivator.getContext().ungetService(refs[0]);
-			Error error = nullObjectFactory.getUngetFailure();
-			if (error != null)
-				throw error;
-		} finally {
-			if (reg != null)
-				reg.unregister();
-			if (listener != null)
-				OSGiTestsActivator.getContext().removeFrameworkListener(listener);
-		}
-	}
-
-	public void testServiceException03() {
-		final String testMethodName = "testServiceException03"; //$NON-NLS-1$
-		// test a service factory which throws a RuntimeException
-		RuntimeException cause = new RuntimeException(testMethodName);
-		ServiceExceptionServiceFactory runtimeExceptionFactory = new ServiceExceptionServiceFactory(cause);
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$ 
-		ServiceRegistration reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runtimeExceptionFactory, props);
-		ServiceExceptionFrameworkListener listener = new ServiceExceptionFrameworkListener(OSGiTestsActivator.getContext().getBundle(), cause, ServiceException.FACTORY_EXCEPTION);
-		OSGiTestsActivator.getContext().addFrameworkListener(listener);
-		try {
-			ServiceReference[] refs = null;
-			try {
-				refs = OSGiTestsActivator.getContext().getServiceReferences(Runnable.class.getName(), "(name=" + testMethodName + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("Unexpected syntax error", e); //$NON-NLS-1$
-			}
-			assertNotNull("service refs is null", refs); //$NON-NLS-1$
-			assertEquals("Wrong number of references", 1, refs.length); //$NON-NLS-1$
-			Runnable service = null;
-			try {
-				service = (Runnable) OSGiTestsActivator.getContext().getService(refs[0]);
-			} catch (ClassCastException e) {
-				fail("Unexpected cast exception", e); //$NON-NLS-1$
-			}
-			assertNull("service is not null", service); //$NON-NLS-1$
-			listener.waitForEvent("Failed to fire ServiceException"); //$NON-NLS-1$
-			OSGiTestsActivator.getContext().ungetService(refs[0]);
-			Error error = runtimeExceptionFactory.getUngetFailure();
-			if (error != null)
-				throw error;
-		} finally {
-			if (reg != null)
-				reg.unregister();
-			if (listener != null)
-				OSGiTestsActivator.getContext().removeFrameworkListener(listener);
-		}
-	}
-
-	public void testServiceException04() {
-		final String testMethodName = "testServiceException04"; //$NON-NLS-1$
-		// test a service factory which throws an Error
-		Error cause = new Error(testMethodName);
-		ServiceExceptionServiceFactory errorFactory = new ServiceExceptionServiceFactory(cause);
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$ 
-		ServiceRegistration reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), errorFactory, props);
-		ServiceExceptionFrameworkListener listener = new ServiceExceptionFrameworkListener(OSGiTestsActivator.getContext().getBundle(), cause, ServiceException.FACTORY_EXCEPTION);
-		OSGiTestsActivator.getContext().addFrameworkListener(listener);
-		try {
-			ServiceReference[] refs = null;
-			try {
-				refs = OSGiTestsActivator.getContext().getServiceReferences(Runnable.class.getName(), "(name=" + testMethodName + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("Unexpected syntax error", e); //$NON-NLS-1$
-			}
-			assertNotNull("service refs is null", refs); //$NON-NLS-1$
-			assertEquals("Wrong number of references", 1, refs.length); //$NON-NLS-1$
-			Runnable service = null;
-			try {
-				service = (Runnable) OSGiTestsActivator.getContext().getService(refs[0]);
-			} catch (ClassCastException e) {
-				fail("Unexpected cast exception", e); //$NON-NLS-1$
-			}
-			assertNull("service is not null", service); //$NON-NLS-1$
-			listener.waitForEvent("Failed to fire ServiceException"); //$NON-NLS-1$
-			OSGiTestsActivator.getContext().ungetService(refs[0]);
-			Error error = errorFactory.getUngetFailure();
-			if (error != null)
-				throw error;
-		} finally {
-			if (reg != null)
-				reg.unregister();
-			if (listener != null)
-				OSGiTestsActivator.getContext().removeFrameworkListener(listener);
-		}
-	}
-
-	class ServiceExceptionServiceFactory implements ServiceFactory {
-		private final Object serviceOrThrowable;
-		private Error ungetFailure;
-
-		public ServiceExceptionServiceFactory(Object serviceOrThrowable) {
-			this.serviceOrThrowable = serviceOrThrowable;
-		}
-
-		public Object getService(Bundle bundle, ServiceRegistration registration) {
-			if (serviceOrThrowable instanceof RuntimeException)
-				throw (RuntimeException) serviceOrThrowable;
-			if (serviceOrThrowable instanceof Error)
-				throw (Error) serviceOrThrowable;
-			return serviceOrThrowable;
-		}
-
-		public synchronized void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
-			try {
-				if (serviceOrThrowable instanceof RuntimeException)
-					fail("Unexpected call to ungetService: " + serviceOrThrowable); //$NON-NLS-1$
-				if (serviceOrThrowable instanceof Error)
-					fail("Unexpected call to ungetService: " + serviceOrThrowable); //$NON-NLS-1$
-			} catch (Error error) {
-				ungetFailure = error;
-			}
-		}
-
-		public Error getUngetFailure() {
-			return ungetFailure;
-		}
-	}
-
-	class ServiceExceptionFrameworkListener implements FrameworkListener {
-		private final Bundle registrationBundle;
-		private final Throwable exception;
-		private final int exceptionType;
-		private boolean waitForEvent = true;
-
-		public ServiceExceptionFrameworkListener(Bundle registrationBundle, Throwable exception, int exceptionType) {
-			this.registrationBundle = registrationBundle;
-			this.exception = exception;
-			this.exceptionType = exceptionType;
-		}
-
-		public void frameworkEvent(FrameworkEvent event) {
-			if (event.getBundle() != registrationBundle)
-				return;
-			if (!(event.getThrowable() instanceof ServiceException))
-				return;
-			if (((ServiceException) event.getThrowable()).getCause() != exception)
-				return;
-			if (((ServiceException) event.getThrowable()).getType() != exceptionType)
-				return;
-			notifyWaiter();
-		}
-
-		private synchronized void notifyWaiter() {
-			waitForEvent = false;
-			notifyAll();
-		}
-
-		public synchronized void waitForEvent(String failMessage) {
-			if (waitForEvent) {
-				try {
-					wait(10000);
-				} catch (InterruptedException e) {
-					fail("unexpected interuption", e); //$NON-NLS-1$
-				}
-				// still waiting for event; we now fail
-				if (waitForEvent)
-					fail(failMessage);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceHookTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceHookTests.java
deleted file mode 100644
index cb2f6ac..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceHookTests.java
+++ /dev/null
@@ -1,736 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.serviceregistry;
-
-import java.util.*;
-import junit.framework.*;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-import org.osgi.framework.hooks.service.*;
-
-public class ServiceHookTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(ServiceHookTests.class);
-	}
-
-	public void testFindHook01() {
-		final String testMethodName = "testFindHook01"; //$NON-NLS-1$
-		// test the FindHook is called and can remove a reference from the results
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		final BundleContext testContext = OSGiTestsActivator.getContext();
-		// register services
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$
-		props.put(Constants.SERVICE_DESCRIPTION, "service 1"); //$NON-NLS-1$
-		final ServiceRegistration reg1 = testContext.registerService(Runnable.class.getName(), runIt, props);
-
-		props.put(Constants.SERVICE_DESCRIPTION, "service 2"); //$NON-NLS-1$
-		final ServiceRegistration reg2 = testContext.registerService(Runnable.class.getName(), runIt, props);
-
-		props.put(Constants.SERVICE_DESCRIPTION, "service 3"); //$NON-NLS-1$
-		final ServiceRegistration reg3 = testContext.registerService(Runnable.class.getName(), runIt, props);
-
-		final int[] hookCalled = new int[] {0, 0, 0, 0, 0};
-		final boolean[] startTest = new boolean[] {false};
-		final AssertionFailedError[] hookError = new AssertionFailedError[] {null, null, null, null};
-
-		// register find hook 1
-		props.put(Constants.SERVICE_DESCRIPTION, "find hook 1"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_DESCRIPTION, "min value"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-		ServiceRegistration regHook1 = testContext.registerService(FindHook.class.getName(), new FindHook() {
-			public void find(BundleContext context, String name, String filter, boolean allServices, Collection references) {
-				try {
-					synchronized (hookCalled) {
-						if (!startTest[0])
-							return;
-						hookCalled[++hookCalled[0]] = 1;
-					}
-					assertEquals("wrong context in hook", testContext, context); //$NON-NLS-1$
-					assertEquals("wrong name in hook", Runnable.class.getName(), name); //$NON-NLS-1$
-					assertEquals("wrong filter in hook", "(name=" + testMethodName + ")", filter); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					assertEquals("wrong allservices in hook", false, allServices); //$NON-NLS-1$
-					assertEquals("wrong number of services in hook", 1, references.size()); //$NON-NLS-1$
-					Iterator iter = references.iterator();
-					while (iter.hasNext()) {
-						ServiceReference ref = (ServiceReference) iter.next();
-						if (ref.equals(reg1.getReference())) {
-							fail("service 1 is present"); //$NON-NLS-1$
-						}
-						if (ref.equals(reg2.getReference())) {
-							fail("service 2 is present"); //$NON-NLS-1$
-						}
-					}
-
-					try {
-						references.add(reg1.getReference());
-						fail("add to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-					try {
-						references.addAll(Arrays.asList(new ServiceReference[] {reg1.getReference()}));
-						fail("addAll to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-				} catch (AssertionFailedError a) {
-					hookError[0] = a;
-					return;
-				}
-			}
-		}, props);
-
-		// register find hook 2
-		props.put(Constants.SERVICE_DESCRIPTION, "find hook 2"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_DESCRIPTION, "max value first"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		ServiceRegistration regHook2 = testContext.registerService(FindHook.class.getName(), new FindHook() {
-			public void find(BundleContext context, String name, String filter, boolean allServices, Collection references) {
-				try {
-					synchronized (hookCalled) {
-						if (!startTest[0])
-							return;
-						hookCalled[++hookCalled[0]] = 2;
-					}
-					assertEquals("wrong context in hook", testContext, context); //$NON-NLS-1$
-					assertEquals("wrong name in hook", Runnable.class.getName(), name); //$NON-NLS-1$
-					assertEquals("wrong filter in hook", "(name=" + testMethodName + ")", filter); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					assertEquals("wrong allservices in hook", false, allServices); //$NON-NLS-1$
-					assertEquals("wrong number of services in hook", 3, references.size()); //$NON-NLS-1$
-					Iterator iter = references.iterator();
-					while (iter.hasNext()) {
-						ServiceReference ref = (ServiceReference) iter.next();
-						if (ref.equals(reg2.getReference())) {
-							iter.remove();
-						}
-					}
-
-					try {
-						references.add(reg2.getReference());
-						fail("add to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-					try {
-						references.addAll(Arrays.asList(new ServiceReference[] {reg2.getReference()}));
-						fail("addAll to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-				} catch (AssertionFailedError a) {
-					hookError[1] = a;
-					return;
-				}
-			}
-		}, props);
-
-		// register find hook 3
-		props.put(Constants.SERVICE_DESCRIPTION, "find hook 3"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_DESCRIPTION, "max value second"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		ServiceRegistration regHook3 = testContext.registerService(FindHook.class.getName(), new FindHook() {
-			public void find(BundleContext context, String name, String filter, boolean allServices, Collection references) {
-				try {
-					synchronized (hookCalled) {
-						if (!startTest[0])
-							return;
-						hookCalled[++hookCalled[0]] = 3;
-					}
-					assertEquals("wrong context in hook", testContext, context); //$NON-NLS-1$
-					assertEquals("wrong name in hook", Runnable.class.getName(), name); //$NON-NLS-1$
-					assertEquals("wrong filter in hook", "(name=" + testMethodName + ")", filter); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					assertEquals("wrong allservices in hook", false, allServices); //$NON-NLS-1$
-					assertEquals("wrong number of services in hook", 2, references.size()); //$NON-NLS-1$
-					Iterator iter = references.iterator();
-					while (iter.hasNext()) {
-						ServiceReference ref = (ServiceReference) iter.next();
-						if (ref.equals(reg2.getReference())) {
-							fail("service 2 is present"); //$NON-NLS-1$
-						}
-					}
-
-					try {
-						references.add(reg2.getReference());
-						fail("add to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-					try {
-						references.addAll(Arrays.asList(new ServiceReference[] {reg2.getReference()}));
-						fail("addAll to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-				} catch (AssertionFailedError a) {
-					hookError[2] = a;
-					return;
-				}
-				// throw an exception from the hook to test that the next hooks are called.
-				throw new RuntimeException(testMethodName);
-			}
-		}, props);
-
-		// register find hook 4
-		props.put(Constants.SERVICE_DESCRIPTION, "find hook 4"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_DESCRIPTION, "max value third"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		ServiceRegistration regHook4 = testContext.registerService(FindHook.class.getName(), new FindHook() {
-			public void find(BundleContext context, String name, String filter, boolean allServices, Collection references) {
-				try {
-					synchronized (hookCalled) {
-						if (!startTest[0])
-							return;
-						hookCalled[++hookCalled[0]] = 4;
-					}
-					assertEquals("wrong context in hook", testContext, context); //$NON-NLS-1$
-					assertEquals("wrong name in hook", Runnable.class.getName(), name); //$NON-NLS-1$
-					assertEquals("wrong filter in hook", "(name=" + testMethodName + ")", filter); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					assertEquals("wrong allservices in hook", false, allServices); //$NON-NLS-1$
-					assertEquals("wrong number of services in hook", 2, references.size()); //$NON-NLS-1$
-					Iterator iter = references.iterator();
-					while (iter.hasNext()) {
-						ServiceReference ref = (ServiceReference) iter.next();
-						if (ref.equals(reg1.getReference())) {
-							iter.remove();
-						}
-						if (ref.equals(reg2.getReference())) {
-							fail("service 2 is present"); //$NON-NLS-1$
-						}
-					}
-
-					try {
-						references.add(reg2.getReference());
-						fail("add to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-					try {
-						references.addAll(Arrays.asList(new ServiceReference[] {reg2.getReference()}));
-						fail("addAll to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-				} catch (AssertionFailedError a) {
-					hookError[3] = a;
-					return;
-				}
-			}
-		}, props);
-
-		startTest[0] = true;
-		// get reference and hook removes some services
-		try {
-			ServiceReference[] refs = null;
-			try {
-				refs = testContext.getServiceReferences(Runnable.class.getName(), "(name=" + testMethodName + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("Unexpected syntax error", e); //$NON-NLS-1$
-			}
-			assertEquals("all hooks not called", 4, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("hook 2 not called first", 2, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("hook 3 not called second", 3, hookCalled[2]); //$NON-NLS-1$
-			assertEquals("hook 4 not called third", 4, hookCalled[3]); //$NON-NLS-1$
-			assertEquals("hook 1 not called fourth ", 1, hookCalled[4]); //$NON-NLS-1$
-			for (int i = 0; i < hookError.length; i++) {
-				if (hookError[i] != null) {
-					throw hookError[i];
-				}
-			}
-			assertNotNull("service refs is null", refs); //$NON-NLS-1$
-			assertEquals("Wrong number of references", 1, refs.length); //$NON-NLS-1$
-
-			// test removed services are not in the result
-			List refList = Arrays.asList(refs);
-			assertFalse("contains service 1", refList.contains(reg1.getReference())); //$NON-NLS-1$
-			assertFalse("contains service 2", refList.contains(reg2.getReference())); //$NON-NLS-1$
-			assertTrue("missing service 3", refList.contains(reg3.getReference())); //$NON-NLS-1$
-
-			startTest[0] = false;
-			// remove the hooks
-			regHook1.unregister();
-			regHook1 = null;
-			regHook2.unregister();
-			regHook2 = null;
-			regHook3.unregister();
-			regHook3 = null;
-			regHook4.unregister();
-			regHook4 = null;
-
-			// get services and make sure none are filtered
-			refs = null;
-			hookCalled[0] = 0;
-
-			startTest[0] = true;
-			try {
-				refs = testContext.getServiceReferences(Runnable.class.getName(), "(name=" + testMethodName + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("Unexpected syntax error", e); //$NON-NLS-1$
-			}
-			assertEquals("hooks called", 0, hookCalled[0]); //$NON-NLS-1$
-			assertNotNull("service refs is null", refs); //$NON-NLS-1$
-			assertEquals("Wrong number of references", 3, refs.length); //$NON-NLS-1$
-
-			// test result contains all expected services
-			refList = Arrays.asList(refs);
-			assertTrue("missing service 1", refList.contains(reg1.getReference())); //$NON-NLS-1$
-			assertTrue("missing service 2", refList.contains(reg2.getReference())); //$NON-NLS-1$
-			assertTrue("missing service 3", refList.contains(reg3.getReference())); //$NON-NLS-1$
-		} finally {
-			// unregister hook and services
-			if (regHook1 != null)
-				regHook1.unregister();
-			if (regHook2 != null)
-				regHook2.unregister();
-			if (regHook3 != null)
-				regHook3.unregister();
-			if (regHook4 != null)
-				regHook4.unregister();
-			if (reg1 != null)
-				reg1.unregister();
-			if (reg2 != null)
-				reg2.unregister();
-			if (reg3 != null)
-				reg3.unregister();
-		}
-	}
-
-	public void testEventHook01() {
-		final String testMethodName = "testEventHook01"; //$NON-NLS-1$
-		// test the EventHook is called and can remove a reference from the results
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		final BundleContext testContext = OSGiTestsActivator.getContext();
-
-		final int[] hookCalled = new int[] {0, 0};
-		final AssertionFailedError[] hookError = new AssertionFailedError[] {null};
-		final List events = new ArrayList();
-
-		final ServiceListener sl = new ServiceListener() {
-			public void serviceChanged(ServiceEvent event) {
-				synchronized (events) {
-					events.add(event);
-				}
-			}
-		};
-
-		final String filterString = "(&(name=" + testMethodName + ")(objectClass=java.lang.Runnable))"; //$NON-NLS-1$ //$NON-NLS-2$
-		Filter tmpFilter = null;
-		try {
-			tmpFilter = testContext.createFilter(filterString);
-			testContext.addServiceListener(sl, filterString);
-		} catch (InvalidSyntaxException e) {
-			fail("Unexpected syntax error", e); //$NON-NLS-1$
-		}
-
-		final Filter filter = tmpFilter;
-		EventHook hook1 = new EventHook() {
-			public void event(ServiceEvent event, Collection contexts) {
-				try {
-					if (!filter.match(event.getServiceReference())) {
-						return;
-					}
-					synchronized (hookCalled) {
-						hookCalled[++hookCalled[0]] = 1;
-					}
-					assertTrue("does not contain test context", contexts.contains(testContext)); //$NON-NLS-1$
-
-					try {
-						contexts.add(testContext.getBundle(0).getBundleContext());
-						fail("add to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-					try {
-						contexts.addAll(Arrays.asList(new BundleContext[] {testContext.getBundle(0).getBundleContext()}));
-						fail("addAll to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-				} catch (AssertionFailedError a) {
-					hookError[0] = a;
-					return;
-				}
-			}
-		};
-		EventHook hook2 = new EventHook() {
-			public void event(ServiceEvent event, Collection contexts) {
-				try {
-					if (!filter.match(event.getServiceReference())) {
-						return;
-					}
-					synchronized (hookCalled) {
-						hookCalled[++hookCalled[0]] = 1;
-					}
-					assertTrue("does not contain test context", contexts.contains(testContext)); //$NON-NLS-1$
-					contexts.remove(testContext);
-					try {
-						contexts.add(testContext.getBundle(0).getBundleContext());
-						fail("add to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-					try {
-						contexts.addAll(Arrays.asList(new BundleContext[] {testContext.getBundle(0).getBundleContext()}));
-						fail("addAll to collection succeeded"); //$NON-NLS-1$
-					} catch (UnsupportedOperationException e) {
-						// should get an exception
-					} catch (Exception e) {
-						fail("incorrect exception", e); //$NON-NLS-1$
-					}
-				} catch (AssertionFailedError a) {
-					hookError[0] = a;
-					return;
-				}
-			}
-		};
-
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$
-		// register event hook 1
-		props.put(Constants.SERVICE_DESCRIPTION, "event hook 1"); //$NON-NLS-1$
-		ServiceRegistration regHook = testContext.registerService(EventHook.class.getName(), hook1, props);
-
-		ServiceRegistration reg1 = null;
-		try {
-			props.put(Constants.SERVICE_DESCRIPTION, "service 1"); //$NON-NLS-1$
-			synchronized (events) {
-				events.clear();
-			}
-			reg1 = testContext.registerService(Runnable.class.getName(), runIt, props);
-			assertEquals("all hooks not called", 1, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("hook 1 not called first", 1, hookCalled[1]); //$NON-NLS-1$
-			for (int i = 0; i < hookError.length; i++) {
-				if (hookError[i] != null) {
-					throw hookError[i];
-				}
-			}
-			synchronized (events) {
-				assertEquals("listener not called once", 1, events.size()); //$NON-NLS-1$
-				Iterator iter = events.iterator();
-				while (iter.hasNext()) {
-					ServiceEvent event = (ServiceEvent) iter.next();
-					assertEquals("type not registered", ServiceEvent.REGISTERED, event.getType()); //$NON-NLS-1$
-					assertEquals("wrong service", reg1.getReference(), event.getServiceReference()); //$NON-NLS-1$
-				}
-			}
-
-			regHook.unregister();
-			regHook = null;
-
-			synchronized (events) {
-				events.clear();
-			}
-			hookCalled[0] = 0;
-			props.put(Constants.SERVICE_DESCRIPTION, "service 2"); //$NON-NLS-1$
-			reg1.setProperties(props);
-			synchronized (events) {
-				assertEquals("listener not called once", 1, events.size()); //$NON-NLS-1$
-				Iterator iter = events.iterator();
-				while (iter.hasNext()) {
-					ServiceEvent event = (ServiceEvent) iter.next();
-					assertEquals("type not registered", ServiceEvent.MODIFIED, event.getType()); //$NON-NLS-1$
-					assertEquals("wrong service", reg1.getReference(), event.getServiceReference()); //$NON-NLS-1$
-				}
-			}
-			assertEquals("hooks called", 0, hookCalled[0]); //$NON-NLS-1$
-
-			props.put(Constants.SERVICE_DESCRIPTION, "event hook 2"); //$NON-NLS-1$
-			regHook = testContext.registerService(EventHook.class.getName(), hook2, props);
-
-			synchronized (events) {
-				events.clear();
-			}
-			hookCalled[0] = 0;
-			reg1.unregister();
-			reg1 = null;
-			synchronized (events) {
-				assertEquals("listener called", 0, events.size()); //$NON-NLS-1$
-			}
-			assertEquals("all hooks not called", 1, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("hook 1 not called first", 1, hookCalled[1]); //$NON-NLS-1$
-			for (int i = 0; i < hookError.length; i++) {
-				if (hookError[i] != null) {
-					throw hookError[i];
-				}
-			}
-
-		} finally {
-			// unregister hook and services
-			if (regHook != null)
-				regHook.unregister();
-			if (reg1 != null)
-				reg1.unregister();
-			if (sl != null)
-				testContext.removeServiceListener(sl);
-		}
-	}
-
-	public void testListenerHook01() {
-		final String testMethodName = "testListenerHook01"; //$NON-NLS-1$
-		// test the ListenerHook is called
-		final BundleContext testContext = OSGiTestsActivator.getContext();
-		final Collection result = new ArrayList();
-		final int[] hookCalled = new int[] {0, 0};
-
-		ListenerHook hook1 = new ListenerHook() {
-			public void added(Collection listeners) {
-				synchronized (hookCalled) {
-					hookCalled[0]++;
-				}
-				result.addAll(listeners);
-			}
-
-			public void removed(Collection listeners) {
-				synchronized (hookCalled) {
-					hookCalled[1]++;
-				}
-				result.removeAll(listeners);
-			}
-		};
-
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$
-		// register listener hook 1
-		props.put(Constants.SERVICE_DESCRIPTION, "listener hook 1"); //$NON-NLS-1$
-		ServiceRegistration regHook = testContext.registerService(ListenerHook.class.getName(), hook1, props);
-
-		try {
-			assertFalse("no service listeners found", result.isEmpty()); //$NON-NLS-1$
-			assertEquals("added not called", 1, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed called", 0, hookCalled[1]); //$NON-NLS-1$
-
-			int size = result.size();
-			ServiceListener testSL = new ServiceListener() {
-				public void serviceChanged(ServiceEvent event) {
-					// do nothing
-				}
-			};
-			String filterString1 = "(foo=bar)"; //$NON-NLS-1$
-			testContext.addServiceListener(testSL, filterString1);
-			assertEquals("added not called", 2, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed called", 0, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener not added", size + 1, result.size()); //$NON-NLS-1$
-			Iterator iter = result.iterator();
-			boolean found = false;
-			while (iter.hasNext()) {
-				ListenerHook.ListenerInfo info = (ListenerHook.ListenerInfo) iter.next();
-				BundleContext c = info.getBundleContext();
-				String f = info.getFilter();
-				if ((c == testContext) && (filterString1.equals(f))) {
-					if (found) {
-						fail("found more than once"); //$NON-NLS-1$
-					}
-					found = true;
-				}
-			}
-			if (!found) {
-				fail("listener not found"); //$NON-NLS-1$
-			}
-
-			String filterString2 = "(bar=foo)"; //$NON-NLS-1$
-			testContext.addServiceListener(testSL, filterString2);
-			assertEquals("added not called", 3, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed not called", 1, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener not removed and added", size + 1, result.size()); //$NON-NLS-1$
-			iter = result.iterator();
-			found = false;
-			while (iter.hasNext()) {
-				ListenerHook.ListenerInfo info = (ListenerHook.ListenerInfo) iter.next();
-				BundleContext c = info.getBundleContext();
-				String f = info.getFilter();
-				if ((c == testContext) && (filterString2.equals(f))) {
-					if (found) {
-						fail("found more than once"); //$NON-NLS-1$
-					}
-					found = true;
-				}
-				if ((c == testContext) && (filterString1.equals(f))) {
-					fail("first listener not removed"); //$NON-NLS-1$
-				}
-			}
-			if (!found) {
-				fail("listener not found"); //$NON-NLS-1$
-			}
-
-			testContext.removeServiceListener(testSL);
-			assertEquals("added called", 3, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed not called", 2, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener not removed", size, result.size()); //$NON-NLS-1$
-			iter = result.iterator();
-			while (iter.hasNext()) {
-				ListenerHook.ListenerInfo info = (ListenerHook.ListenerInfo) iter.next();
-				BundleContext c = info.getBundleContext();
-				String f = info.getFilter();
-				if ((c == testContext) && (filterString2.equals(f))) {
-					fail("second listener not removed"); //$NON-NLS-1$
-				}
-			}
-
-			testContext.removeServiceListener(testSL);
-			assertEquals("added called", 3, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed called", 2, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener removed", size, result.size()); //$NON-NLS-1$
-
-		} catch (InvalidSyntaxException e) {
-			fail(e.getMessage());
-		} finally {
-			if (regHook != null) {
-				regHook.unregister();
-			}
-		}
-	}
-
-	public void testListenerHook02() {
-		final String testMethodName = "testListenerHook02"; //$NON-NLS-1$
-		// test the ListenerHook works with the FilteredServiceListener optimization in equinox
-		final BundleContext testContext = OSGiTestsActivator.getContext();
-		final Collection result = new ArrayList();
-		final int[] hookCalled = new int[] {0, 0};
-
-		ListenerHook hook1 = new ListenerHook() {
-			public void added(Collection listeners) {
-				synchronized (hookCalled) {
-					hookCalled[0]++;
-				}
-				result.addAll(listeners);
-			}
-
-			public void removed(Collection listeners) {
-				synchronized (hookCalled) {
-					hookCalled[1]++;
-				}
-				result.removeAll(listeners);
-			}
-		};
-
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$
-		// register listener hook 1
-		props.put(Constants.SERVICE_DESCRIPTION, "listener hook 1"); //$NON-NLS-1$
-		ServiceRegistration regHook = testContext.registerService(ListenerHook.class.getName(), hook1, props);
-
-		try {
-			assertFalse("no service listeners found", result.isEmpty()); //$NON-NLS-1$
-			assertEquals("added not called", 1, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed called", 0, hookCalled[1]); //$NON-NLS-1$
-
-			int size = result.size();
-			ServiceListener testSL = new ServiceListener() {
-				public void serviceChanged(ServiceEvent event) {
-					// do nothing
-				}
-			};
-			String filterString1 = "(" + Constants.OBJECTCLASS + "=bar)"; //$NON-NLS-1$ //$NON-NLS-2$
-			testContext.addServiceListener(testSL, filterString1);
-			assertEquals("added not called", 2, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed called", 0, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener not added", size + 1, result.size()); //$NON-NLS-1$
-			Iterator iter = result.iterator();
-			boolean found = false;
-			while (iter.hasNext()) {
-				ListenerHook.ListenerInfo info = (ListenerHook.ListenerInfo) iter.next();
-				BundleContext c = info.getBundleContext();
-				String f = info.getFilter();
-				if ((c == testContext) && (filterString1.equals(f))) {
-					if (found) {
-						fail("found more than once"); //$NON-NLS-1$
-					}
-					found = true;
-				}
-			}
-			if (!found) {
-				fail("listener not found"); //$NON-NLS-1$
-			}
-
-			String filterString2 = null;
-			testContext.addServiceListener(testSL);
-			assertEquals("added not called", 3, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed not called", 1, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener not removed and added", size + 1, result.size()); //$NON-NLS-1$
-			iter = result.iterator();
-			found = false;
-			while (iter.hasNext()) {
-				ListenerHook.ListenerInfo info = (ListenerHook.ListenerInfo) iter.next();
-				BundleContext c = info.getBundleContext();
-				String f = info.getFilter();
-				if ((c == testContext) && (f == filterString2)) {
-					if (found) {
-						fail("found more than once"); //$NON-NLS-1$
-					}
-					found = true;
-				}
-				if ((c == testContext) && (filterString1.equals(f))) {
-					fail("first listener not removed"); //$NON-NLS-1$
-				}
-			}
-			if (!found) {
-				fail("listener not found"); //$NON-NLS-1$
-			}
-
-			testContext.removeServiceListener(testSL);
-			assertEquals("added called", 3, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed not called", 2, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener not removed", size, result.size()); //$NON-NLS-1$
-			iter = result.iterator();
-			while (iter.hasNext()) {
-				ListenerHook.ListenerInfo info = (ListenerHook.ListenerInfo) iter.next();
-				BundleContext c = info.getBundleContext();
-				String f = info.getFilter();
-				if ((c == testContext) && (f == filterString2)) {
-					fail("second listener not removed"); //$NON-NLS-1$
-				}
-			}
-
-			testContext.removeServiceListener(testSL);
-			assertEquals("added called", 3, hookCalled[0]); //$NON-NLS-1$
-			assertEquals("removed called", 2, hookCalled[1]); //$NON-NLS-1$
-			assertEquals("listener removed", size, result.size()); //$NON-NLS-1$
-
-		} catch (InvalidSyntaxException e) {
-			fail(e.getMessage());
-		} finally {
-			if (regHook != null) {
-				regHook.unregister();
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceRegistryTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceRegistryTests.java
deleted file mode 100644
index a93f317..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceRegistryTests.java
+++ /dev/null
@@ -1,493 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.serviceregistry;
-
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-
-public class ServiceRegistryTests extends AbstractBundleTests {
-	public static Test suite() {
-		TestSuite suite = new TestSuite(ServiceRegistryTests.class.getName());
-		suite.addTest(new TestSuite(ServiceRegistryTests.class));
-		suite.addTest(ServiceExceptionTests.suite());
-		suite.addTest(ServiceHookTests.suite());
-		suite.addTest(ServiceTrackerTests.suite());
-		return suite;
-	}
-
-	public void testServiceListener01() {
-		final String testMethodName = getName();
-		// simple ServiceListener test
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		final boolean[] results = new boolean[] {false, false, false, false};
-		ServiceListener testListener = new ServiceListener() {
-			public void serviceChanged(ServiceEvent event) {
-				switch (event.getType()) {
-					case ServiceEvent.REGISTERED :
-						results[0] = true;
-						break;
-					case ServiceEvent.MODIFIED :
-						results[1] = true;
-						break;
-					case ServiceEvent.MODIFIED_ENDMATCH :
-						results[2] = true;
-						break;
-					case ServiceEvent.UNREGISTERING :
-						results[3] = true;
-						break;
-				}
-			}
-		};
-		try {
-			OSGiTestsActivator.getContext().addServiceListener(testListener, "(&(objectclass=java.lang.Runnable)(" + testMethodName.toLowerCase() + "=true))"); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (InvalidSyntaxException e) {
-			fail("filter error", e); //$NON-NLS-1$
-		}
-		ServiceRegistration reg = null;
-		try {
-			// register service which matches
-			Hashtable props = new Hashtable();
-			props.put(testMethodName, Boolean.TRUE);
-			reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-			assertTrue("Did not get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still match
-			props.put("testChangeProp", Boolean.FALSE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertTrue("Did not get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put(testMethodName, Boolean.FALSE);
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertTrue("Did not get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put("testChangeProp", Boolean.TRUE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props back to match
-			props.put(testMethodName, Boolean.TRUE);
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertTrue("Did not get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// unregister
-			reg.unregister();
-			reg = null;
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertTrue("Did not get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-		} finally {
-			OSGiTestsActivator.getContext().removeServiceListener(testListener);
-			if (reg != null)
-				reg.unregister();
-		}
-	}
-
-	public void testServiceListener02() {
-		final String testMethodName = getName();
-		// simple ServiceListener test
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		final boolean[] results = new boolean[] {false, false, false, false};
-		ServiceListener testListener = new ServiceListener() {
-			public void serviceChanged(ServiceEvent event) {
-				switch (event.getType()) {
-					case ServiceEvent.REGISTERED :
-						results[0] = true;
-						break;
-					case ServiceEvent.MODIFIED :
-						results[1] = true;
-						break;
-					case ServiceEvent.MODIFIED_ENDMATCH :
-						results[2] = true;
-						break;
-					case ServiceEvent.UNREGISTERING :
-						results[3] = true;
-						break;
-				}
-			}
-		};
-		try {
-			OSGiTestsActivator.getContext().addServiceListener(testListener, "(&(objectclass=java.lang.Runnable)(" + testMethodName.toLowerCase() + "=true))"); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (InvalidSyntaxException e) {
-			fail("filter error", e); //$NON-NLS-1$
-		}
-		ServiceRegistration reg = null;
-		try {
-			// register service which does not match
-			Hashtable props = new Hashtable();
-			props.put(testMethodName, Boolean.FALSE);
-			reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still not match
-			props.put("testChangeProp", Boolean.FALSE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to match
-			props.put(testMethodName, Boolean.TRUE);
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertTrue("Did not get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still match
-			props.put("testChangeProp", Boolean.TRUE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertTrue("Did not get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put(testMethodName, Boolean.FALSE);
-			reg.setProperties(props);
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertTrue("Did not get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// unregister
-			reg.unregister();
-			reg = null;
-			assertFalse("Did get ServiceEvent.REGISTERED", results[0]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED", results[1]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.MODIFIED_ENDMATCH", results[2]); //$NON-NLS-1$
-			assertFalse("Did get ServiceEvent.UNREGISTERING", results[3]); //$NON-NLS-1$
-			clearResults(results);
-		} finally {
-			OSGiTestsActivator.getContext().removeServiceListener(testListener);
-			if (reg != null)
-				reg.unregister();
-		}
-	}
-
-	public void testServiceListener03() {
-		final String testMethodName = getName();
-		// simple ServiceListener test
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		final int[] results = new int[] {0, 0, 0, 0};
-		ServiceListener testListener = new ServiceListener() {
-			public void serviceChanged(ServiceEvent event) {
-				switch (event.getType()) {
-					case ServiceEvent.REGISTERED :
-						results[0]++;
-						break;
-					case ServiceEvent.MODIFIED :
-						results[1]++;
-						break;
-					case ServiceEvent.MODIFIED_ENDMATCH :
-						results[2]++;
-						break;
-					case ServiceEvent.UNREGISTERING :
-						results[3]++;
-						break;
-				}
-			}
-		};
-		try {
-			OSGiTestsActivator.getContext().addServiceListener(testListener, "(&(objectclass=java.lang.Runnable)(" + testMethodName.toLowerCase() + "=true))"); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (InvalidSyntaxException e) {
-			fail("filter error", e); //$NON-NLS-1$
-		}
-		ServiceRegistration reg1 = null;
-		ServiceRegistration reg2 = null;
-		try {
-			// register service which does not match
-			Hashtable props = new Hashtable();
-			props.put(testMethodName, Boolean.FALSE);
-			reg1 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-			reg2 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 0, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still not match
-			props.put("testChangeProp", Boolean.FALSE); //$NON-NLS-1$
-			reg1.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 0, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-			reg2.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 0, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to match
-			props.put(testMethodName, Boolean.TRUE);
-			reg1.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 1, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-			reg2.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 1, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still match
-			props.put("testChangeProp", Boolean.TRUE); //$NON-NLS-1$
-			reg1.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 1, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-			reg2.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 1, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put(testMethodName, Boolean.FALSE);
-			reg1.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 0, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 1, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-			reg2.setProperties(props);
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 0, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 1, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-
-			// unregister
-			reg1.unregister();
-			reg1 = null;
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 0, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-			reg2.unregister();
-			reg2 = null;
-			assertEquals("Did get ServiceEvent.REGISTERED", 0, results[0]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED", 0, results[1]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.MODIFIED_ENDMATCH", 0, results[2]); //$NON-NLS-1$
-			assertEquals("Did get ServiceEvent.UNREGISTERING", 0, results[3]); //$NON-NLS-1$
-			clearResults(results);
-		} finally {
-			OSGiTestsActivator.getContext().removeServiceListener(testListener);
-			if (reg1 != null)
-				reg1.unregister();
-			if (reg2 != null)
-				reg2.unregister();
-		}
-	}
-
-	public void testServiceOrdering01() {
-		final String testMethodName = getName();
-		// test that getServiceReference returns the proper service
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$ 
-		props.put(Constants.SERVICE_DESCRIPTION, "min value"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-		ServiceRegistration reg1 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-
-		props.put(Constants.SERVICE_DESCRIPTION, "max value first"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		ServiceRegistration reg2 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-
-		props.put(Constants.SERVICE_DESCRIPTION, "max value second"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		ServiceRegistration reg3 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-
-		try {
-			ServiceReference ref = null;
-			ref = OSGiTestsActivator.getContext().getServiceReference(Runnable.class.getName());
-			assertNotNull("service ref is null", ref); //$NON-NLS-1$
-			assertEquals("Wrong references", reg2.getReference(), ref); //$NON-NLS-1$
-		} finally {
-			if (reg1 != null)
-				reg1.unregister();
-			if (reg2 != null)
-				reg2.unregister();
-			if (reg3 != null)
-				reg3.unregister();
-		}
-	}
-
-	public void testDuplicateObjectClass() {
-		ServiceRegistration reg = null;
-		try {
-			reg = OSGiTestsActivator.getContext().registerService(new String[] {Runnable.class.getName(), Object.class.getName(), Object.class.getName()}, new Runnable() {
-				public void run() {
-					// nothing
-				}
-			}, null);
-		} catch (Throwable t) {
-			fail("Failed to register service with duplicate objectClass names", t); //$NON-NLS-1$
-		} finally {
-			if (reg != null)
-				reg.unregister();
-		}
-	}
-
-	public void testServiceReferenceCompare01() {
-		final String testMethodName = getName();
-		// test that getServiceReference returns the proper service
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		Hashtable props = new Hashtable();
-		props.put("name", testMethodName); //$NON-NLS-1$ 
-		props.put(Constants.SERVICE_DESCRIPTION, "min value"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-		ServiceRegistration reg1 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-
-		props.put(Constants.SERVICE_DESCRIPTION, "max value first"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		ServiceRegistration reg2 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-
-		props.put(Constants.SERVICE_DESCRIPTION, "max value second"); //$NON-NLS-1$
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		ServiceRegistration reg3 = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-
-		try {
-			ServiceReference ref = OSGiTestsActivator.getContext().getServiceReference(Runnable.class.getName());
-			ServiceReference ref1 = reg1.getReference();
-			ServiceReference ref2 = reg2.getReference();
-			ServiceReference ref3 = reg3.getReference();
-
-			assertNotNull("service ref is null", ref); //$NON-NLS-1$
-			assertEquals("Wrong reference", ref2, ref); //$NON-NLS-1$
-
-			assertEquals("Wrong references", 0, ref2.compareTo(ref)); //$NON-NLS-1$
-			assertEquals("Wrong references", 0, ref.compareTo(ref2)); //$NON-NLS-1$
-
-			assertTrue("Wrong compareTo value: " + ref1.compareTo(ref1), ref1.compareTo(ref1) == 0); //$NON-NLS-1$
-			assertTrue("Wrong compareTo value: " + ref1.compareTo(ref2), ref1.compareTo(ref2) < 0); //$NON-NLS-1$
-			assertTrue("Wrong compareTo value: " + ref1.compareTo(ref3), ref1.compareTo(ref3) < 0); //$NON-NLS-1$
-
-			assertTrue("Wrong compareTo value: " + ref2.compareTo(ref1), ref2.compareTo(ref1) > 0); //$NON-NLS-1$
-			assertTrue("Wrong compareTo value: " + ref2.compareTo(ref2), ref2.compareTo(ref2) == 0); //$NON-NLS-1$
-			assertTrue("Wrong compareTo value: " + ref2.compareTo(ref3), ref2.compareTo(ref3) > 0); //$NON-NLS-1$
-
-			assertTrue("Wrong compareTo value: " + ref3.compareTo(ref1), ref3.compareTo(ref1) > 0); //$NON-NLS-1$
-			assertTrue("Wrong compareTo value: " + ref3.compareTo(ref2), ref3.compareTo(ref2) < 0); //$NON-NLS-1$
-			assertTrue("Wrong compareTo value: " + ref3.compareTo(ref3), ref3.compareTo(ref3) == 0); //$NON-NLS-1$
-		} finally {
-			if (reg1 != null)
-				reg1.unregister();
-			if (reg2 != null)
-				reg2.unregister();
-			if (reg3 != null)
-				reg3.unregister();
-		}
-	}
-
-	public void testModifiedRanking() {
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		Hashtable props = new Hashtable();
-		props.put(getName(), Boolean.TRUE);
-		props.put(Constants.SERVICE_RANKING, new Integer(15));
-		ServiceRegistration reg1 = getContext().registerService(Runnable.class.getName(), runIt, props);
-		props.put(Constants.SERVICE_RANKING, new Integer(10));
-		ServiceRegistration reg2 = getContext().registerService(Runnable.class.getName(), runIt, props);
-		try {
-			assertEquals("wrong service reference", reg1.getReference(), getContext().getServiceReference("java.lang.Runnable")); //$NON-NLS-1$//$NON-NLS-2$
-
-			props.put(Constants.SERVICE_RANKING, new Integer(20));
-			reg2.setProperties(props);
-			assertEquals("wrong service reference", reg2.getReference(), getContext().getServiceReference("java.lang.Runnable")); //$NON-NLS-1$//$NON-NLS-2$
-		} finally {
-			if (reg1 != null)
-				reg1.unregister();
-			if (reg2 != null)
-				reg2.unregister();
-		}
-	}
-
-	private void clearResults(boolean[] results) {
-		for (int i = 0; i < results.length; i++)
-			results[i] = false;
-	}
-
-	private void clearResults(int[] results) {
-		for (int i = 0; i < results.length; i++)
-			results[i] = 0;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceTrackerTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceTrackerTests.java
deleted file mode 100644
index 6e5fea5..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/serviceregistry/ServiceTrackerTests.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.serviceregistry;
-
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.eclipse.osgi.tests.bundles.AbstractBundleTests;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class ServiceTrackerTests extends AbstractBundleTests {
-	public static Test suite() {
-		return new TestSuite(ServiceTrackerTests.class);
-	}
-
-	public void testServiceTracker01() {
-		final String testMethodName = getName();
-		// simple ServiceTracker test
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		Hashtable props = new Hashtable();
-		props.put(testMethodName, Boolean.TRUE);
-		ServiceRegistration reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-		ServiceTracker testTracker = null;
-		try {
-			final boolean[] results = new boolean[] {false, false, false};
-			ServiceTrackerCustomizer testCustomizer = new ServiceTrackerCustomizer() {
-				public Object addingService(ServiceReference reference) {
-					results[0] = true;
-					return reference;
-				}
-
-				public void modifiedService(ServiceReference reference, Object service) {
-					results[1] = true;
-				}
-
-				public void removedService(ServiceReference reference, Object service) {
-					results[2] = true;
-				}
-			};
-			try {
-				testTracker = new ServiceTracker(OSGiTestsActivator.getContext(), FrameworkUtil.createFilter("(&(objectclass=java.lang.Runnable)(" + testMethodName.toLowerCase() + "=true))"), testCustomizer); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("filter error", e); //$NON-NLS-1$
-			}
-			testTracker.open();
-			assertTrue("Did not call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still match
-			props.put("testChangeProp", Boolean.FALSE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertTrue("Did not call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put(testMethodName, Boolean.FALSE);
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertTrue("Did not call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put("testChangeProp", Boolean.TRUE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props back to match
-			props.put(testMethodName, Boolean.TRUE);
-			reg.setProperties(props);
-			assertTrue("Did not call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-		} finally {
-			if (reg != null)
-				reg.unregister();
-			if (testTracker != null)
-				testTracker.close();
-		}
-	}
-
-	public void testServiceTracker02() {
-		final String testMethodName = getName();
-		// simple ServiceTracker test
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		Hashtable props = new Hashtable();
-		props.put(testMethodName, Boolean.FALSE);
-		ServiceRegistration reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-		ServiceTracker testTracker = null;
-		try {
-			final boolean[] results = new boolean[] {false, false, false};
-			ServiceTrackerCustomizer testCustomizer = new ServiceTrackerCustomizer() {
-				public Object addingService(ServiceReference reference) {
-					results[0] = true;
-					return reference;
-				}
-
-				public void modifiedService(ServiceReference reference, Object service) {
-					results[1] = true;
-				}
-
-				public void removedService(ServiceReference reference, Object service) {
-					results[2] = true;
-				}
-			};
-			try {
-				testTracker = new ServiceTracker(OSGiTestsActivator.getContext(), FrameworkUtil.createFilter("(&(objectclass=java.lang.Runnable)(" + testMethodName.toLowerCase() + "=true))"), testCustomizer); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("filter error", e); //$NON-NLS-1$
-			}
-			testTracker.open();
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to match
-			props.put(testMethodName, Boolean.TRUE);
-			reg.setProperties(props);
-			assertTrue("Did not call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still match
-			props.put("testChangeProp", Boolean.TRUE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertTrue("Did not call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put(testMethodName, Boolean.FALSE);
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertTrue("Did not call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to no longer match
-			props.put("testChangeProp", Boolean.FALSE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-		} finally {
-			if (reg != null)
-				reg.unregister();
-			if (testTracker != null)
-				testTracker.close();
-		}
-	}
-
-	public void testServiceTracker03() {
-		final String testMethodName = getName();
-		// simple ServiceTracker test
-		Runnable runIt = new Runnable() {
-			public void run() {
-				// nothing
-			}
-		};
-		Hashtable props = new Hashtable();
-		props.put(testMethodName, Boolean.TRUE);
-		ServiceRegistration reg = OSGiTestsActivator.getContext().registerService(Runnable.class.getName(), runIt, props);
-		ServiceTracker testTracker = null;
-		try {
-			final boolean[] results = new boolean[] {false, false, false};
-			ServiceTrackerCustomizer testCustomizer = new ServiceTrackerCustomizer() {
-				public Object addingService(ServiceReference reference) {
-					results[0] = true;
-					return reference;
-				}
-
-				public void modifiedService(ServiceReference reference, Object service) {
-					results[1] = true;
-				}
-
-				public void removedService(ServiceReference reference, Object service) {
-					results[2] = true;
-				}
-			};
-			try {
-				testTracker = new ServiceTracker(OSGiTestsActivator.getContext(), FrameworkUtil.createFilter("(&(objectclass=java.lang.Runnable)(" + testMethodName.toLowerCase() + "=true))"), testCustomizer); //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (InvalidSyntaxException e) {
-				fail("filter error", e); //$NON-NLS-1$
-			}
-			testTracker.open();
-			assertTrue("Did not call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to not match
-			props.put(testMethodName, Boolean.FALSE);
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertTrue("Did not call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to match
-			props.put(testMethodName, Boolean.TRUE);
-			reg.setProperties(props);
-			assertTrue("Did not call addingService", results[0]); //$NON-NLS-1$
-			assertFalse("Did call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-
-			// change props to still match
-			props.put("testChangeProp", Boolean.FALSE); //$NON-NLS-1$
-			reg.setProperties(props);
-			assertFalse("Did call addingService", results[0]); //$NON-NLS-1$
-			assertTrue("Did not call modifiedService", results[1]); //$NON-NLS-1$
-			assertFalse("Did call removedService", results[2]); //$NON-NLS-1$
-			clearResults(results);
-		} finally {
-			if (reg != null)
-				reg.unregister();
-			if (testTracker != null)
-				testTracker.close();
-		}
-	}
-
-	private void clearResults(boolean[] results) {
-		for (int i = 0; i < results.length; i++)
-			results[i] = false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/AllTests.java
deleted file mode 100644
index ed8f4da..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/AllTests.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.datalocation;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests extends TestSuite {
-
-	public AllTests() {
-		super();
-	}
-
-	public AllTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllTests.class.getName());
-		suite.addTest(LocationAreaSessionTest.suite());
-		suite.addTest(BasicLocationTests.suite());
-		suite.addTest(SimpleTests.suite());
-		suite.addTest(FileManagerTests.suite());
-		suite.addTest(StreamManagerTests.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/BasicLocationTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/BasicLocationTests.java
deleted file mode 100644
index 5012f19..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/BasicLocationTests.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.datalocation;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-
-public class BasicLocationTests extends CoreTest {
-
-	String originalUser = null;
-	String originalInstance = null;
-	String originalConfiguration = null;
-	String originalInstall = null;
-	String prefix = "";
-	boolean windows = Platform.getOS().equals(Platform.OS_WIN32);
-
-	public BasicLocationTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		return new TestSuite(BasicLocationTests.class);
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		prefix = windows ? "c:" : "";
-		originalUser = System.getProperty(LocationManager.PROP_USER_AREA);
-		originalInstance = System.getProperty(LocationManager.PROP_INSTANCE_AREA);
-		originalConfiguration = System.getProperty(LocationManager.PROP_CONFIG_AREA);
-		originalInstall = System.getProperty(LocationManager.PROP_INSTALL_AREA);
-	}
-
-	private void setProperty(String key, String value) {
-		if (value == null)
-			System.getProperties().remove(key);
-		else
-			System.setProperty(key, value);
-	}
-
-	protected void tearDown() throws Exception {
-		setProperty(LocationManager.PROP_USER_AREA, originalUser);
-		setProperty(LocationManager.PROP_INSTANCE_AREA, originalInstance);
-		setProperty(LocationManager.PROP_CONFIG_AREA, originalConfiguration);
-		setProperty(LocationManager.PROP_INSTALL_AREA, originalInstall);
-		LocationManager.initializeLocations();
-		super.tearDown();
-	}
-
-	private void checkSlashes() {
-		checkLocation(LocationManager.getUserLocation(), true, true, null);
-		checkLocation(LocationManager.getInstanceLocation(), true, true, null);
-		checkLocation(LocationManager.getConfigurationLocation(), true, true, null);
-		checkLocation(LocationManager.getInstallLocation(), true, true, null);
-	}
-
-	private void checkLocation(Location location, boolean leading, boolean trailing, String scheme) {
-		if (location == null)
-			return;
-		URL url = location.getURL();
-		if (scheme != null)
-			assertEquals(scheme, url.getProtocol());
-		if (!url.getProtocol().equals("file"))
-			return;
-		assertTrue(url.toExternalForm() + " should " + (trailing ? "" : "not") + " have a trailing slash", url.getFile().endsWith("/") == trailing);
-		if (windows)
-			assertTrue(url.toExternalForm() + " should " + (leading ? "" : "not") + " have a leading slash", url.getFile().startsWith("/") == leading);
-	}
-
-	public void testCreateLocation01() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testCreateLocation01");
-		Location testLocation = configLocation.createLocation(null, null, false);
-		try {
-			testLocation.set(testLocationFile.toURL(), false);
-		} catch (Throwable t) {
-			fail("Failed to set location", t);
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.lock());
-		} catch (IOException e) {
-			fail("Failed to lock location", e);
-		}
-		testLocation.release();
-	}
-
-	public void testCreateLocation02() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testCreateLocation02");
-		Location testLocation = configLocation.createLocation(null, null, true);
-		try {
-			testLocation.set(testLocationFile.toURL(), false);
-		} catch (Throwable t) {
-			fail("Failed to set location", t);
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.lock());
-			testLocation.release();
-			fail("Should not be able to lock read-only location");
-		} catch (IOException e) {
-			// expected
-		}
-	}
-
-	public void testCreateLocation03() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testCreateLocation03");
-		Location testLocation = configLocation.createLocation(null, null, false);
-		try {
-			testLocation.set(testLocationFile.toURL(), true);
-		} catch (Throwable t) {
-			fail("Failed to set location", t);
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.isLocked());
-		} catch (IOException e) {
-			fail("Failed to lock location", e);
-		}
-		testLocation.release();
-	}
-
-	public void testCreateLocation04() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testCreateLocation04");
-		Location testLocation = configLocation.createLocation(null, null, true);
-		try {
-			testLocation.set(testLocationFile.toURL(), true);
-			testLocation.release();
-			fail("Should not be able to lock read-only location");
-		} catch (Throwable t) {
-			// expected
-		}
-	}
-
-	public void testCreateLocation05() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testCreateLocation01");
-		Location testLocation = configLocation.createLocation(null, null, false);
-		try {
-			testLocation.set(testLocationFile.toURL(), false);
-		} catch (Throwable t) {
-			fail("Failed to set location", t);
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.lock());
-			assertFalse("Could lock a secend time", testLocation.lock());
-			assertFalse("Could lock a third time", testLocation.lock());
-		} catch (IOException e) {
-			fail("Failed to lock location", e);
-		} finally {
-			testLocation.release();
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.lock());
-		} catch (IOException e) {
-			fail("Failed to lock location", e);
-		} finally {
-			testLocation.release();
-		}
-	}
-
-	private static final String INSTANCE_DATA_AREA_PREFIX = ".metadata/.plugins/"; //$NON-NLS-1$
-
-	public void testLocationDataArea01() {
-		Location instance = LocationManager.getInstanceLocation();
-		doAllTestLocationDataArea(instance, INSTANCE_DATA_AREA_PREFIX);
-
-		Location configuration = LocationManager.getConfigurationLocation();
-		doAllTestLocationDataArea(configuration, "");
-	}
-
-	private void doAllTestLocationDataArea(Location location, String dataAreaPrefix) {
-		doTestLocateDataArea(location, dataAreaPrefix, getName());
-		doTestLocateDataArea(location, dataAreaPrefix, "");
-		doTestLocateDataArea(location, dataAreaPrefix, "test/multiple/paths");
-		doTestLocateDataArea(location, dataAreaPrefix, "test/multiple/../paths");
-		doTestLocateDataArea(location, dataAreaPrefix, "test\\multiple\\paths");
-
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/" + getName());
-		Location createdLocation = location.createLocation(null, null, false);
-		try {
-			createdLocation.set(testLocationFile.toURL(), false);
-		} catch (Exception e) {
-			fail("Failed to set location", e);
-		}
-		doTestLocateDataArea(createdLocation, dataAreaPrefix, getName());
-		doTestLocateDataArea(createdLocation, dataAreaPrefix, "");
-		doTestLocateDataArea(createdLocation, dataAreaPrefix, "test/multiple/paths");
-		doTestLocateDataArea(createdLocation, dataAreaPrefix, "test/multiple/../paths");
-		doTestLocateDataArea(location, dataAreaPrefix, "test\\multiple\\paths");
-
-		createdLocation = location.createLocation(null, null, false);
-		try {
-			createdLocation.getDataArea("shouldFail");
-			fail("expected failure when location is not set");
-		} catch (IOException e) {
-			// expected;
-		}
-	}
-
-	private void doTestLocateDataArea(Location location, String dataAreaPrefix, String namespace) {
-		assertTrue("Location is not set", location.isSet());
-		URL dataArea = null;
-		try {
-			dataArea = location.getDataArea(namespace);
-		} catch (IOException e) {
-			fail("Failed to get data area.", e);
-		}
-		assertNotNull("Data area is null.", dataArea);
-
-		namespace = namespace.replace('\\', '/');
-		assertTrue("Data area is not the expected value: " + dataArea.toExternalForm(), dataArea.toExternalForm().endsWith(dataAreaPrefix + namespace));
-	}
-
-	public void testSetLocationWithEmptyLockFile() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testSetLocationWithEmptyLockFile"); //$NON-NLS-1$
-		Location testLocation = configLocation.createLocation(null, null, false);
-		try {
-			testLocation.set(testLocationFile.toURL(), true, ""); //$NON-NLS-1$
-			// Make sure it has created the default lock file
-			File lockFile = new File(testLocationFile, ".metadata/.lock"); //$NON-NLS-1$
-			assertTrue("Lock file does not exist!", lockFile.exists()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Failed to set location", t); //$NON-NLS-1$
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.isLocked()); //$NON-NLS-1$
-		} catch (IOException e) {
-			fail("Failed to lock location", e); //$NON-NLS-1$
-		}
-		testLocation.release();
-	}
-
-	public void testSetLocationWithRelLockFile() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testSetLocationWithRelLockFile"); //$NON-NLS-1$
-		Location testLocation = configLocation.createLocation(null, null, false);
-		try {
-			testLocation.set(testLocationFile.toURL(), true, ".mocklock"); //$NON-NLS-1$
-			File lockFile = new File(testLocationFile, ".mocklock"); //$NON-NLS-1$
-			assertTrue("Lock file does not exist!", lockFile.exists()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Failed to set location", t); //$NON-NLS-1$
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.isLocked()); //$NON-NLS-1$
-		} catch (IOException e) {
-			fail("Failed to lock location", e); //$NON-NLS-1$
-		}
-		testLocation.release();
-	}
-
-	public void testSetLocationWithAbsLockFile() {
-		Location configLocation = LocationManager.getConfigurationLocation();
-		File testLocationFile = OSGiTestsActivator.getContext().getDataFile("testLocations/testSetLocationWithAbsLockFile"); //$NON-NLS-1$
-		File testLocationLockFile = OSGiTestsActivator.getContext().getDataFile("testLocations/mock.lock"); //$NON-NLS-1$
-		assertTrue(testLocationLockFile.isAbsolute());
-		Location testLocation = configLocation.createLocation(null, null, false);
-		try {
-			testLocation.set(testLocationFile.toURL(), true, testLocationLockFile.getAbsolutePath());
-			assertTrue("The lock file should be present!", testLocationLockFile.exists()); //$NON-NLS-1$
-		} catch (Throwable t) {
-			fail("Failed to set location", t); //$NON-NLS-1$
-		}
-		try {
-			assertTrue("Could not lock location", testLocation.isLocked()); //$NON-NLS-1$
-		} catch (IOException e) {
-			fail("Failed to lock location", e); //$NON-NLS-1$
-		}
-		testLocation.release();
-		assertTrue("The lock file could not be removed!", testLocationLockFile.delete()); //$NON-NLS-1$
-	}
-
-	public void testSlashes() {
-		setProperty(LocationManager.PROP_USER_AREA, prefix + "/a");
-		setProperty(LocationManager.PROP_INSTANCE_AREA, prefix + "/c/d");
-		setProperty(LocationManager.PROP_CONFIG_AREA, prefix + "/e/f");
-		setProperty(LocationManager.PROP_INSTALL_AREA, "file:" + prefix + "/g");
-		LocationManager.initializeLocations();
-		checkSlashes();
-	}
-
-	public void testSchemes() {
-		setProperty(LocationManager.PROP_USER_AREA, "http://example.com/a");
-		setProperty(LocationManager.PROP_INSTANCE_AREA, "ftp://example.com/c/d");
-		setProperty(LocationManager.PROP_CONFIG_AREA, "platform:/base/e/f");
-		setProperty(LocationManager.PROP_INSTALL_AREA, "file:" + prefix + "/g");
-		LocationManager.initializeLocations();
-		checkSlashes();
-		checkLocation(LocationManager.getUserLocation(), true, true, "http");
-		checkLocation(LocationManager.getInstanceLocation(), true, true, "ftp");
-		checkLocation(LocationManager.getConfigurationLocation(), true, true, "platform");
-		checkLocation(LocationManager.getInstallLocation(), true, true, "file");
-
-	}
-
-	public void testNone() {
-		setProperty(LocationManager.PROP_USER_AREA, "@none");
-		setProperty(LocationManager.PROP_INSTANCE_AREA, "@none");
-		setProperty(LocationManager.PROP_CONFIG_AREA, "@none");
-		setProperty(LocationManager.PROP_INSTALL_AREA, "file:" + prefix + "/g");
-		LocationManager.initializeLocations();
-		assertNull("User location should be null", LocationManager.getUserLocation());
-		assertNull("Instance location should be null", LocationManager.getUserLocation());
-		assertNull("Configuration location should be null", LocationManager.getUserLocation());
-	}
-
-	public void testUserDir() {
-		setProperty(LocationManager.PROP_USER_AREA, "@user.dir");
-		setProperty(LocationManager.PROP_INSTANCE_AREA, "@user.dir");
-		setProperty(LocationManager.PROP_CONFIG_AREA, "@user.dir");
-		setProperty(LocationManager.PROP_INSTALL_AREA, "file:" + prefix + "/g");
-		LocationManager.initializeLocations();
-		checkLocation(LocationManager.getUserLocation(), true, true, "file");
-		checkLocation(LocationManager.getInstanceLocation(), true, true, "file");
-		checkLocation(LocationManager.getConfigurationLocation(), true, true, "file");
-		checkLocation(LocationManager.getInstallLocation(), true, true, "file");
-	}
-
-	public void testUserHome() {
-		setProperty(LocationManager.PROP_USER_AREA, "@user.home");
-		setProperty(LocationManager.PROP_INSTANCE_AREA, "@user.home");
-		setProperty(LocationManager.PROP_CONFIG_AREA, "@user.home");
-		setProperty(LocationManager.PROP_INSTALL_AREA, "file:" + prefix + "/g");
-		LocationManager.initializeLocations();
-		checkLocation(LocationManager.getUserLocation(), true, true, "file");
-		checkLocation(LocationManager.getInstanceLocation(), true, true, "file");
-		checkLocation(LocationManager.getConfigurationLocation(), true, true, "file");
-		checkLocation(LocationManager.getInstallLocation(), true, true, "file");
-	}
-
-	public void testUNC() {
-		if (!windows)
-			return;
-		setProperty(LocationManager.PROP_USER_AREA, "//server/share/a");
-		setProperty(LocationManager.PROP_INSTANCE_AREA, "//server/share/b");
-		setProperty(LocationManager.PROP_CONFIG_AREA, "//server/share/c");
-		setProperty(LocationManager.PROP_INSTALL_AREA, "file://server/share/g");
-		LocationManager.initializeLocations();
-		checkLocation(LocationManager.getUserLocation(), true, true, "file");
-		checkLocation(LocationManager.getInstanceLocation(), true, true, "file");
-		checkLocation(LocationManager.getConfigurationLocation(), true, true, "file");
-		checkLocation(LocationManager.getInstallLocation(), true, true, "file");
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/FileManagerTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/FileManagerTests.java
deleted file mode 100644
index 31059a8..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/FileManagerTests.java
+++ /dev/null
@@ -1,505 +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.osgi.tests.services.datalocation;
-
-import java.io.*;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.storagemanager.StorageManager;
-import org.eclipse.osgi.tests.OSGiTest;
-
-public class FileManagerTests extends OSGiTest {
-	StorageManager manager1;
-	StorageManager manager2;
-	File base;
-
-	/**
-	 * Constructs a test case with the given name.
-	 */
-	public FileManagerTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		return new TestSuite(FileManagerTests.class);
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		base = new File(Platform.getConfigurationLocation().getURL().getPath(), "FileManagerTests");
-		manager1 = null;
-		manager2 = null;
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (manager1 != null)
-			manager1.close();
-		if (manager2 != null)
-			manager2.close();
-		rm(base);
-	}
-
-	private void rm(File file) {
-		if (file.isDirectory()) {
-			File[] list = file.listFiles();
-			if (list != null) {
-				for (int idx=0; idx<list.length; idx++) {
-					rm(list[idx]);
-				}
-			}
-		}
-		file.delete();
-	}
-	
-	
-	/**
-	 * Open a filemanager in readonly and ensure files are
-	 * not created.
-	 */
-	public void testReadOnly() {
-		File testDir = new File(base, "readOnlyManager");
-		String fileName = "testReadOnly";
-		testDir.mkdirs();
-		String[] files = testDir.list();
-		assertEquals(files.length, 0);
-		manager1 = new StorageManager(testDir, null, true);
-		try {
-			manager1.open(true);
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}
-		files = testDir.list();
-		assertEquals(files.length, 0);
-		try {
-			manager1.add(fileName);
-			fail("add succedded");
-		} catch(IOException e) {
-			//good
-		}
-		
-		try {
-			manager1.lookup(fileName, true);
-			fail("lookup succedded");
-		} catch(IOException e) {
-			//good
-		}
-		
-		try {
-			manager1.createTempFile(fileName);
-			fail("create temp file succedded");
-		} catch(IOException e) {
-			//good
-		}
-		files = testDir.list();
-		assertEquals(files.length, 0);
-		manager1.close();
-		manager1 = null;
-
-		try {
-			// lets create a file in a writable file manager
-			manager2 = new StorageManager(testDir, null, false);
-			manager2.open(true);
-			manager2.lookup(fileName, true);
-			File tmpFile = manager2.createTempFile(fileName);
-			writeToFile(tmpFile, "This file exists");
-			manager2.update(new String[] {fileName}, new String[] {tmpFile.getName()});
-			manager2.close();
-			manager2 = null;
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}		
-	}
-	
-	
-	void writeToFile(File file, String str) throws IOException {
-		FileOutputStream fos = new FileOutputStream(file);
-		try {
-			fos.write(str.getBytes());
-			fos.flush();
-			fos.getFD().sync();
-		} finally {
-			fos.close();
-		}
-	}
-
-	
-	private String getInputStreamContents(InputStream is) throws IOException {
-		StringBuffer sb = new StringBuffer();
-		byte[] data = new byte[64];
-		int len;
-		try {
-			while ((len = is.read(data)) != -1) {
-				sb.append(new String(data, 0, len));
-			} 
-		} finally {
-			is.close();
-		}
-		return sb.toString();
-	}
-	
-	
-	/**
-	 * This tests a FM update where the a specific file is managed with a 
-	 * revision number of (n) and an update is requested while there already
-	 * exists a file with revision number (n+1). FM should skip that generation 
-	 * number and update the database with file version set to (n+2). This test is
-	 * possible if a power loss occurs between FM rename() and FM save().
-	 */
-	public void testExistingVersion() {
-		String testFile = "testExistingVersion.txt";
-		manager1 = new StorageManager(base, null);
-		try {
-			manager1.open(false);
-			File file1 = new File(base, testFile+".1");
-			File file2 = new File(base, testFile+".2");
-			File file3 = new File(base, testFile+".3");
-			File file4 = new File(base, testFile+".4");
-			if (file1.exists() || file2.exists() || file3.exists() || file4.exists()) {
-				fail("Test files already exists.");
-				return;
-			}
-			// create file version (1)
-			manager1.add(testFile);
-			File file = manager1.createTempFile(testFile);
-			writeToFile(file, "contents irrelevant");
-			manager1.update(new String[] {testFile}, new String[] {file.getName()});
-			if (!file1.exists() || file2.exists() || file3.exists() || file4.exists()) {
-				fail("Failed to create a single test file");
-				return;
-			}
-			
-			// create file version (2) outside filemanager
-			writeToFile(file2, "file2 exists");
-
-			// update another file after generation 2 already exists...
-			file = manager1.createTempFile(testFile);
-			writeToFile(file, "file 3 contents");
-			manager1.update(new String[] {testFile}, new String[] {file.getName()});
-			if (!file3.exists() || file4.exists()) {
-				fail("Failed to skip existing filemanager file.");
-				return;
-			}
-			
-			// open a new manager, ensure a lookup results in file version (3)
-			manager2 = new StorageManager(base, null);
-			manager2.open(true);
-			file = manager2.lookup(testFile, false);
-			if (file == null) {
-				fail("Unable to lookup exising file");
-				return;
-			}
-			assertTrue(file.getName().endsWith(".3"));
-			assertTrue(file.exists());
-			FileInputStream fis = new FileInputStream(file);
-			assertEquals(getInputStreamContents(fis), "file 3 contents");
-			
-			manager2.close();
-			manager2=null;
-			
-			manager1.close();
-			manager1=null;
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}
-	}
-
-	
-	/**
-	 * This tests that FM apis throw exceptions if FM has not yet been opened
-	 * or if FM has been closed.  
-	 */
-	public void testNotOpen() {
-		String permanentFile = "testNotOpen.txt";
-		String scratchFile = "testNotOpenScratch";
-		manager1 = new StorageManager(base, null);
-		// create a permanent file and a managed scratch file
-		try {
-			manager1.open(true);
-			manager1.add(permanentFile);
-			File tmpFile = manager1.createTempFile(permanentFile);
-			this.writeToFile(tmpFile, "File exists");
-			manager1.update(new String[] {permanentFile}, new String[] {tmpFile.getName()});
-			manager1.add(scratchFile);
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}
-		
-		// create a new manager, and try making calls
-		manager2 = new StorageManager(base, null);
-		checkOpen(false, permanentFile, scratchFile);
-		// open the manager, try again
-		try {
-			manager2.open(true);
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}
-		checkOpen(true, permanentFile, scratchFile);
-		// close manager, try again
-		manager2.close();
-		checkOpen(false, permanentFile, scratchFile);
-		manager2 = null;
-		
-		manager1.close();
-		manager1 = null;
-	}
-
-	void checkOpen(boolean open, String permanentFile, String scratchFile) {
-		// check add()
-		try {
-			manager2.add("failFile");
-			if (!open)
-				fail("add did not fail.");
-			manager2.remove("failFile");
-		} catch(IOException e) {
-			if (open)
-				fail("unexpected exception", e);
-		}
-		// check lookup()
-		try {
-			// expect TEST2 to exist
-			manager2.lookup(permanentFile, false);
-			if (!open)
-				fail("lookup did not fail.");
-		} catch(IOException e) {
-			if (open)
-				fail("unexpected exception", e);
-		}
-		// check update, first create a real file to add
-		File tmpFile;
-		try {
-			tmpFile = manager2.createTempFile("openTest");
-			writeToFile(tmpFile, "contents irrelevant");
-		} catch (IOException e) {
-			fail("unexpected exception", e);
-			tmpFile = null;
-		}	
-		if (tmpFile != null) {
-			try {
-				manager2.update(new String[] {permanentFile}, new String[] {tmpFile.getName()});
-				if (!open)
-					fail("update did not fail.");
-			} catch(IOException e) {
-				if (open)
-					fail("unexpected exception", e);
-			}
-		}
-		// check remove()
-		try {
-			manager2.remove(scratchFile);
-			if (!open)
-				fail("remove did not fail");
-			else // add the file back if expected to complete
-				manager2.add(scratchFile);
-			} catch(IOException e) {
-			if (open)
-				fail("unexpected exception", e);
-		}
-	}
-	
-	
-	/**
-	 * This tests FM remove() then add().  On a remove(), the file can not be deleted as it may
-	 * be in use by another FM. Then add() the file back and see if the version number written to
-	 * is (n+1) where (n) is the version when remove() called.  This is likely if framework uses
-	 * -clean where on clean we remove the file, then on exit we add the file back.  Make sure 
-	 * this is orderly.
-	 * 
-	 * Currently is is a known issues that remove() will never delete any old manager contents. 
-	 */
-	public void testRemoveThenAdd() {
-		String fileName = "testRemoveThenAdd.txt";
-		File file1 = new File(base, fileName+".1");
-		File file2 = new File(base, fileName+".2");
-		File file3 = new File(base, fileName+".3");
-		manager1 = new StorageManager(base, null);
-		// create a permanent file
-		try {
-			manager1.open(true);
-			manager1.add(fileName);
-			// create version (1)
-			File tmpFile = manager1.createTempFile(fileName);
-			writeToFile(tmpFile, "File exists");
-			manager1.update(new String[] {fileName}, new String[] {tmpFile.getName()});
-			// do it again, now version (2)
-			tmpFile = manager1.createTempFile(fileName);
-			writeToFile(tmpFile, "File exists #2");
-			manager1.update(new String[] {fileName}, new String[] {tmpFile.getName()});
-			manager1.close(); // force a cleanup
-			manager1 = null;
-			// sanity check
-			if (file1.exists() || !file2.exists() || file3.exists())
-				fail("Failed creating a file revision");
-			
-			manager2 = new StorageManager(base, null);
-			manager2.open(true);
-			manager2.remove(fileName);
-			// check lookup & getInputStream
-			File testFile = manager2.lookup(fileName, false);
-			assertNull(testFile);
-			manager2.add(fileName);
-			testFile = manager2.lookup(fileName, false);
-			assertNotNull(testFile);
-			assertTrue(testFile.getName().endsWith(".0"));
-			// write new file, ensure it version 3
-			tmpFile = manager2.createTempFile(fileName);
-			writeToFile(tmpFile, "File exists #3");
-			manager2.update(new String[] {fileName}, new String[] {tmpFile.getName()});
-			testFile = manager2.lookup(fileName, false);
-			assertNotNull(testFile);
-			assertTrue(testFile.getName().endsWith(".3"));
-			assertTrue(file3.exists());
-			
-			// open a new manager, ensure that the database was updated
-			// by checking version is also #3
-			manager1 = new StorageManager(base, null);
-			manager1.open(true);
-			testFile = manager1.lookup(fileName, false);
-			assertNotNull(testFile);
-			assertTrue(testFile.getName().endsWith(".3"));
-			
-			manager1.close();
-			manager1 = null;
-			manager2.close();
-			manager2 = null;
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}
-	}
-	
-	/**
-	 * Test multiple FM do not cleanup any old files as they may be in use.
-	 */
-	public void testMultipleFileManagers() {
-		// This test relies on a file lock to fail if the same process already
-		//  holds a file lock. This is true on Win32 but not on Linux. So run 
-		//  this test for windows only.
-		if (!"win32".equalsIgnoreCase(System.getProperty("osgi.os")))
-			// this is a Windows-only test
-			return;
-		String fileName = "testMultipleFileManagers.txt";
-		File file1 = new File(base, fileName+".1");
-		File file2 = new File(base, fileName+".2");
-		manager1 = new StorageManager(base, null);
-		try {
-			manager1.open(true);
-			File file = manager1.lookup(fileName, true);
-			assertNotNull(file);
-			file = manager1.createTempFile(fileName);
-			writeToFile(file, "test contents #1");
-			manager1.update(new String[] {fileName}, new String[] {file.getName()});
-			
-			// ensure file is version #1
-			file = manager1.lookup(fileName, false);
-			assertNotNull(file);
-			assertTrue(file.getName().endsWith(".1"));
-			assertTrue(file1.exists());
-			
-			//new fileMangager using version #1
-			manager2 = new StorageManager(base, null);
-			manager2.open(true);
-			// sanity check
-			file = manager2.lookup(fileName, false);
-			assertNotNull(file);
-			assertTrue(file.getName().endsWith(".1"));
-			assertTrue(file1.exists() && !file2.exists());
-			
-			// back to manager #1, update file again, close
-			file = manager1.createTempFile(fileName);
-			writeToFile(file, "test contents #2");
-			manager1.update(new String[] {fileName}, new String[] {file.getName()});
-			//sanity check
-			assertTrue(file1.exists());
-			assertTrue(file2.exists());
-			manager1.close();
-			manager1 = null;
-			// both files better still exists
-			assertTrue(file1.exists());
-			assertTrue(file2.exists());
-			
-			// manager #2
-			// sanity check
-			file = manager2.lookup(fileName, false);
-			assertNotNull(file);
-			assertTrue(file.getName().endsWith(".1"));
-			// close manager2, cleanup should occur
-			manager2.close();
-			manager2 = null;
-			assertTrue(!file1.exists());
-			assertTrue(file2.exists());
-			
-			// new manager1, does it get version 1?
-			manager1 = new StorageManager(base, null);
-			manager1.open(true);
-			file = manager1.lookup(fileName, false);
-			assertNotNull(file);
-			assertTrue(file.getName().endsWith(".2"));
-			manager1.close();		
-			manager1 = null;
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}
-	}
-	
-	/**
-	 * This test will verify that a FM will fail if a lock is held
-	 */
-	public void testJavaIOLocking() {
-		// This type of locking is only sure to work on Win32.
-		if (!"win32".equalsIgnoreCase(System.getProperty("osgi.os")))
-			// this is a Windows-only test
-			return;
-		String fileName = "testJavaIOLocking";
-		File lockFile = new File(new File(base,".manager"),".fileTableLock");
-		lockFile.getParentFile().mkdirs();
-		try {
-			new FileOutputStream(lockFile).close();
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		}
-		assertTrue(lockFile.exists());
-		FileOutputStream fos = null;
-		try {
-			fos = new FileOutputStream(lockFile);
-			// we hold the lock, lets open a FM
-			manager1 = new StorageManager(base, "java.io");
-			try {
-				manager1.open(true); // wait for lock
-				fail("open with lock succedded");
-			} catch(IOException e) {
-				//good
-			}
-			
-			manager1.open(false); // don't wait, should work
-			try {
-				manager1.add(fileName);
-				fail("add succedded");
-			} catch(IOException e) {
-				//good
-			}
-			//sanity check, file should not be managed
-			assertNull(manager1.lookup(fileName, false));
-			manager1.close();
-			manager1 = null;
-		} catch(IOException e) {
-			fail("unexpected exception", e);
-		} finally {
-			try {
-				if (fos != null)
-					fos.close();
-			} catch(IOException e) {
-				fail("unexpected exception", e);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/LocationAreaSessionTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/LocationAreaSessionTest.java
deleted file mode 100644
index 00bf6da..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/LocationAreaSessionTest.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.datalocation;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import junit.framework.*;
-import org.eclipse.core.runtime.internal.adaptor.BasicLocation;
-import org.eclipse.core.tests.session.ConfigurationSessionTestSuite;
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.environment.Constants;
-import org.eclipse.osgi.tests.OSGiTest;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceReference;
-
-public class LocationAreaSessionTest extends OSGiTest {
-	private static final String JAVA_NIO = "java.nio"; //$NON-NLS-1$
-	private static final String JAVA_IO = "java.io"; //$NON-NLS-1$
-	private static final String TEST_LOCATION_DIR = "osgi.test.location.dir"; //$NON-NLS-1$
-
-	private static Location lockedTestLocation;
-	static String testLocationLockDir = OSGiTestsActivator.getContext().getDataFile("testLocation").getAbsolutePath();
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(LocationAreaSessionTest.class.getName());
-
-		// first lock with java.nio
-		suite.addTest(new TestCase("testLockJavaNIO") {
-			public void runBare() throws Throwable {
-				doLock(testLocationLockDir, JAVA_NIO, false, true);
-			}
-		});
-
-		// attempt to lock same location with a session
-		ConfigurationSessionTestSuite sessionLock = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, LocationAreaSessionTest.class.getName());
-		String[] ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET;
-		for (int i = 0; i < ids.length; i++)
-			sessionLock.addBundle(ids[i]);
-		sessionLock.addBundle(PI_OSGI_TESTS);
-		try {
-			sessionLock.getSetup().setSystemProperty(TEST_LOCATION_DIR, testLocationLockDir);
-		} catch (SetupException e) {
-			// what can we do; just fail the testcase later when the prop is not set.
-			e.printStackTrace();
-		}
-		sessionLock.addTest(new LocationAreaSessionTest("testSessionFailLockJavaNIO"));
-		suite.addTest(sessionLock);
-
-		// now release lock
-		suite.addTest(new TestCase("testReleaseJavaNIO") {
-			public void runBare() throws Throwable {
-				doRelease();
-			}
-		});
-
-		// attempt to lock the location with a session
-		sessionLock = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, LocationAreaSessionTest.class.getName());
-		for (int i = 0; i < ids.length; i++)
-			sessionLock.addBundle(ids[i]);
-		sessionLock.addBundle(PI_OSGI_TESTS);
-		try {
-			sessionLock.getSetup().setSystemProperty(TEST_LOCATION_DIR, testLocationLockDir);
-		} catch (SetupException e) {
-			// what can we do; just fail the testcase later when the prop is not set.
-			e.printStackTrace();
-		}
-		sessionLock.addTest(new LocationAreaSessionTest("testSessionSuccessLockJavaNIO"));
-		suite.addTest(sessionLock);
-
-		// now test with java.io
-		suite.addTest(new TestCase("testLockJavaIO") {
-			public void runBare() throws Throwable {
-				// Note that java.io locking only seems to work reliably on windows
-				if (!Constants.OS_WIN32.equals(System.getProperty("osgi.os")))
-					return;
-				doLock(testLocationLockDir, JAVA_IO, false, true);
-			}
-		});
-
-		// attempt to lock same location with a session
-		sessionLock = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, LocationAreaSessionTest.class.getName());
-		ids = ConfigurationSessionTestSuite.MINIMAL_BUNDLE_SET;
-		for (int i = 0; i < ids.length; i++)
-			sessionLock.addBundle(ids[i]);
-		sessionLock.addBundle(PI_OSGI_TESTS);
-		try {
-			sessionLock.getSetup().setSystemProperty(TEST_LOCATION_DIR, testLocationLockDir);
-		} catch (SetupException e) {
-			// what can we do; just fail the testcase later when the prop is not set.
-			e.printStackTrace();
-		}
-		sessionLock.addTest(new LocationAreaSessionTest("testSessionFailLockJavaIO"));
-		suite.addTest(sessionLock);
-
-		// now release lock
-		suite.addTest(new TestCase("testReleaseJavaIO") {
-			public void runBare() throws Throwable {
-				if (!Constants.OS_WIN32.equals(System.getProperty("osgi.os")))
-					return;
-				doRelease();
-			}
-		});
-
-		// attempt to lock the location with a session
-		sessionLock = new ConfigurationSessionTestSuite(PI_OSGI_TESTS, LocationAreaSessionTest.class.getName());
-		for (int i = 0; i < ids.length; i++)
-			sessionLock.addBundle(ids[i]);
-		sessionLock.addBundle(PI_OSGI_TESTS);
-		try {
-			sessionLock.getSetup().setSystemProperty(TEST_LOCATION_DIR, testLocationLockDir);
-		} catch (SetupException e) {
-			// what can we do; just fail the testcase later when the prop is not set.
-			e.printStackTrace();
-		}
-		sessionLock.addTest(new LocationAreaSessionTest("testSessionSuccessLockJavaIO"));
-		suite.addTest(sessionLock);
-		return suite;
-
-	}
-
-	public LocationAreaSessionTest(String name) {
-		super(name);
-	}
-
-	static void doLock(String testLocationDir, String type, boolean release, boolean succeed) {
-		String oldLockingValue = System.setProperty(BasicLocation.PROP_OSGI_LOCKING, type);
-		try {
-			doLock(testLocationDir, release, succeed);
-		} finally {
-			if (oldLockingValue == null)
-				System.getProperties().remove(BasicLocation.PROP_OSGI_LOCKING);
-			else
-				System.setProperty(BasicLocation.PROP_OSGI_LOCKING, oldLockingValue);
-		}
-	}
-
-	static void doLock(String testLocationDir, boolean release, boolean succeed) {
-		if (testLocationDir == null)
-			fail("The testLocationDir is not set");
-		ServiceReference[] refs = null;
-		try {
-			refs = OSGiTestsActivator.getContext().getServiceReferences(Location.class.getName(), "(type=osgi.configuration.area)");
-		} catch (InvalidSyntaxException e) {
-			fail("failed to create filter", e);
-		}
-		// this is test code so we are not very careful; just assume there is at lease one service.  Do not copy and paste this code!!!
-		Location configLocation = (Location) OSGiTestsActivator.getContext().getService(refs[0]);
-		Location testLocation = null;
-		try {
-			testLocation = configLocation.createLocation(null, new File(testLocationDir).toURL(), false);
-			testLocation.setURL(testLocation.getDefault(), false);
-			// try locking location
-			if (succeed ? testLocation.isLocked() : !testLocation.isLocked())
-				fail("location should " + (succeed ? "not " : "") + "be locked");
-			if (succeed ? !testLocation.lock() : testLocation.lock())
-				fail((succeed ? "Could not" : "Could") + " lock location");
-			if (!testLocation.isLocked())
-				fail("location should be locked");
-		} catch (MalformedURLException e) {
-			fail("failed to create the location URL", e);
-		} catch (IOException e) {
-			fail("failed to lock with IOExcetpion", e);
-		} finally {
-			if (release && testLocation != null)
-				testLocation.release();
-			if (!release)
-				lockedTestLocation = testLocation;
-			OSGiTestsActivator.getContext().ungetService(refs[0]);
-		}
-	}
-
-	static void doRelease() {
-		try {
-			if (lockedTestLocation == null)
-				fail("lockedTestLocation == null !!");
-			if (!lockedTestLocation.isLocked())
-				fail("lockedTestLocation is not locked!!");
-			lockedTestLocation.release();
-			if (lockedTestLocation.isLocked())
-				fail("lockedTestLocation is still locked!!");
-		} catch (IOException e) {
-			fail("failed to unlock lockedTestLocation", e);
-		} finally {
-			lockedTestLocation = null;
-		}
-	}
-
-	public void testSessionFailLockJavaNIO() {
-		doLock(System.getProperty(TEST_LOCATION_DIR), JAVA_NIO, true, false);
-	}
-
-	public void testSessionSuccessLockJavaNIO() {
-		doLock(System.getProperty(TEST_LOCATION_DIR), JAVA_NIO, true, true);
-	}
-
-	public void testSessionFailLockJavaIO() {
-		if (!Constants.OS_WIN32.equals(System.getProperty("osgi.os")))
-			return;
-		doLock(System.getProperty(TEST_LOCATION_DIR), JAVA_IO, true, false);
-	}
-
-	public void testSessionSuccessLockJavaIO() {
-		if (!Constants.OS_WIN32.equals(System.getProperty("osgi.os")))
-			return;
-		doLock(System.getProperty(TEST_LOCATION_DIR), JAVA_IO, true, true);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/SimpleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/SimpleTests.java
deleted file mode 100644
index f4368a4..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/SimpleTests.java
+++ /dev/null
@@ -1,125 +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.osgi.tests.services.datalocation;
-
-import java.io.*;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.storagemanager.StorageManager;
-
-public class SimpleTests extends TestCase {
-	StorageManager manager1;
-	StorageManager manager2;
-	File base;
-	static String TEST1 = "test.txt";
-
-	/**
-	 * Constructs a test case with the given name.
-	 */
-	public SimpleTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		return new TestSuite(SimpleTests.class);
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		base = new File(Platform.getConfigurationLocation().getURL().getPath());
-		manager1 = new StorageManager(base, null);
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-	}
-
-	public void testAddRemove() {
-		try {
-		manager1.open(true);
-		assertEquals(null, manager1.lookup(TEST1, false));
-		assertEquals(-1, manager1.getId(TEST1));
-
-		manager1.add(TEST1);
-		assertEquals(new File(base, TEST1 + ".0"), manager1.lookup(TEST1, false));
-		assertEquals(0, manager1.getId(TEST1));
-
-		manager1.remove(TEST1);
-		assertEquals(null, manager1.lookup(TEST1, false));
-		assertEquals(-1, manager1.getId(TEST1));
-		} catch(IOException e) {
-			//No exception can occurs since all the lookup calls are done with false
-			e.printStackTrace();
-		}
-	}
-
-//	public void testUpdate1() throws IOException {
-//		manager1.add(TEST1);
-//		update(manager1, TEST1 + ".new");
-//		assertEquals(new File(base, TEST1), manager1.lookup(TEST1, false));
-//		assertEquals(2, manager1.getId(TEST1));
-//		assertTrue(manager1.getTimeStamp(TEST1) != 0);
-//	}
-//
-//	/*
-//	 * should be run after testing single update
-//	 */
-//	public void testUpdate2() throws IOException {
-//		long oldStamp = manager1.getTimeStamp(TEST1);
-//		update(manager1, TEST1 + ".new2");
-//		assertEquals(new File(base, TEST1), manager1.lookup(TEST1));
-//		assertEquals(3, manager1.getId(TEST1));
-//		assertTrue(manager1.getTimeStamp(TEST1) != 0);
-//		assertTrue(new File(base, TEST1 + ".2").exists());
-//		assertTrue(oldStamp != manager1.getTimeStamp(TEST1));
-//	}
-//
-//	/*
-//	 * should be run after testing update2
-//	 */
-//	public void testUpdate3() throws IOException {
-//		manager2 = new FileManager(base);
-//		assertEquals(new File(base, TEST1), manager2.lookup(TEST1));
-//		assertEquals(3, manager2.getId(TEST1));
-//		assertTrue(manager2.getTimeStamp(TEST1) != 0);
-//		assertTrue(new File(base, TEST1 + ".2").exists());
-//
-//		update(manager2, TEST1 + ".new3");
-//		assertEquals(new File(base, TEST1), manager2.lookup(TEST1));
-//		assertEquals(4, manager2.getId(TEST1));
-//		assertTrue(manager2.getTimeStamp(TEST1) != 0);
-//		assertTrue(new File(base, TEST1 + ".3").exists());
-//
-//		assertNotSame(new File(base, TEST1), manager1.lookup(TEST1));
-//		assertEquals(new File(base, TEST1 + ".3"), manager1.lookup(TEST1));
-//		assertEquals(3, manager1.getId(TEST1));
-//		assertTrue(manager1.getTimeStamp(TEST1) != 0);
-//		assertTrue(manager1.getTimeStamp(TEST1) != manager2.getTimeStamp(TEST1));
-//	}
-//
-//	private void update(StorageManager manager, String filename) throws IOException {
-//		writeFile(new File(base, filename));
-//		manager.update(new String[] {TEST1}, new String[] {filename});
-//	}
-//
-//	private void writeFile(File filename) {
-//		try {
-//			FileOutputStream out = new FileOutputStream(filename);
-//			out.write(("test - " + System.currentTimeMillis()).getBytes());
-//			out.close();
-//		} catch (IOException e) {
-//		}
-//	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/StreamManagerTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/StreamManagerTests.java
deleted file mode 100644
index 457297c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/StreamManagerTests.java
+++ /dev/null
@@ -1,472 +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.osgi.tests.services.datalocation;
-
-import java.io.*;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.osgi.storagemanager.ManagedOutputStream;
-import org.eclipse.osgi.storagemanager.StorageManager;
-import org.eclipse.osgi.tests.OSGiTest;
-
-public class StreamManagerTests extends OSGiTest {
-	StorageManager manager1;
-	StorageManager manager2;
-	File base;
-	String reliableFile;
-
-	/**
-	 * Constructs a test case with the given name.
-	 */
-	public StreamManagerTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		return new TestSuite(StreamManagerTests.class);
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		base = new File(Platform.getConfigurationLocation().getURL().getPath(), "StreamManagerTests");
-		manager1 = null;
-		manager2 = null;
-		reliableFile = System.getProperty("osgi.useReliableFiles");
-	}
-
-	protected void tearDown() throws Exception {
-		super.tearDown();
-		if (manager1 != null)
-			manager1.close();
-		if (manager2 != null)
-			manager2.close();
-		rm(base);
-		if (reliableFile == null)
-			System.getProperties().remove("osgi.useReliableFiles");
-		else
-			System.setProperty("osgi.useReliableFiles", reliableFile);
-	}
-	
-	private void rm(File file) {
-		if (file.isDirectory()) {
-			File[] list = file.listFiles();
-			if (list != null) {
-				for (int idx=0; idx<list.length; idx++) {
-					rm(list[idx]);
-				}
-			}
-		}
-		file.delete();
-	}
-	
-	private String getInputStreamContents(InputStream is) throws IOException {
-		StringBuffer sb = new StringBuffer();
-		byte[] data = new byte[64];
-		int len;
-		try {
-			while ((len = is.read(data)) != -1) {
-				sb.append(new String(data, 0, len));
-			} 
-		} finally {
-			is.close();
-		}
-		return sb.toString();
-	}
-	
-	
-	void writeToFile(File file, String str) throws IOException {
-		FileOutputStream fos = new FileOutputStream(file);
-		try {
-			fos.write(str.getBytes());
-			fos.flush();
-			fos.getFD().sync();
-		} finally {
-			fos.close();
-		}
-	}
-
-	
-	/**
-	 * This tests that FM will keep a backup version of a reliableFile and that
-	 * corrupting the reliableFile will recover the previous contents.
-	 * 
-	 */
-	public void testReliableFile() {
-		String fileName = "testReliableFile.txt";
-		File file1 = new File(base, fileName+".1");
-		File file2 = new File(base, fileName+".2");
-		File file3 = new File(base, fileName+".3");
-		String contents1 = "test reliable file cOntents #1";
-		String contents2 = "test reliable file cOntents #2";
-		try {
-			System.setProperty("osgi.useReliableFiles", "true"); // force reliable files
-			manager1 = new StorageManager(base, null);
-			manager1.open(true);
-			ManagedOutputStream fmos = manager1.getOutputStream(fileName);
-			assertNotNull(fmos);
-			fmos.write(contents1.getBytes());
-			fmos.close();
-			
-			// Write verion2 of the file
-			fmos = manager1.getOutputStream(fileName);
-			assertNotNull(fmos);
-			fmos.write(contents2.getBytes());
-			fmos.close();
-			assertTrue(file1.exists());
-			assertTrue(file2.exists());
-			assertTrue(!file3.exists());
-			manager1.close();
-			manager1 = null;
-			
-			//now, open new manager, verify file contents are #2
-			System.setProperty("osgi.useReliableFiles", "true"); // force reliable files
-			manager2 = new StorageManager(base, null);
-			manager2.open(true);
-			InputStream is = manager2.getInputStream(fileName);
-			assertNotNull(is);
-			assertEquals(contents2, getInputStreamContents(is));
-			manager2.close();
-			manager2 = null;
-			
-			// need to sleep, FAT32 doesn't have too fine granularity in timestamps
-			try {
-				Thread.sleep(5000);
-			} catch(InterruptedException e) {/*ignore*/}
-			//now, corrupt version 2 of the file
-			RandomAccessFile raf = new RandomAccessFile(file2, "rw");
-			raf.seek(20);
-			raf.write('0'); // change 'O' to '0'
-			raf.close();
-
-			System.setProperty("osgi.useReliableFiles", "true"); // force reliable files
-			manager1 = new StorageManager(base, null);
-			manager1.open(true);
-			
-			//request any valid stream available
-			is = manager1.getInputStream(fileName);
-			assertNotNull(is);
-			assertEquals(contents1, getInputStreamContents(is));
-			
-			//now request only the primary file
-			try {
-				InputStream[] isSet = manager1.getInputStreamSet(new String[] {fileName});
-				for (int i = 0; i < isSet.length; i++) {
-					if (isSet[i] != null)
-						isSet[i].close();
-				}
-				fail("getInputStreamSet was successful");
-			} catch(IOException e) {
-				//good
-			}
-			
-			//now, corrupt version 1 of the file
-			raf = new RandomAccessFile(file1, "rw");
-			raf.seek(20);
-			raf.write('0'); // change 'O' to '0'
-			raf.close();
-			
-			// get input stream should fail
-			try {
-				is = manager1.getInputStream(fileName);
-				fail("get input stream succedded");
-			} catch(IOException e) {
-				//good
-			}
-			manager1.close();
-			manager1 = null;
-		} catch(IOException e) {
-			fail("unexepected exception", e);
-		}
-	}
-	
-	
-	/**
-	 * This tests if migration from a prior (non-ReliableFile) .fileTable
-	 * to the current .fileTable is correct.
-	 *
-	 */
-	public void testMigration() {
-		File testDir = new File(base, "testMigrationManager");
-		File managerDir = new File(testDir, ".manager");
-		String fileName = "testMigration.txt";
-		File file2 = new File(testDir, fileName+".2");
-		File file5 = new File(testDir, fileName+".5");
-		File fileTable = new File(managerDir, ".fileTable");
-		File fileTable1 = new File(managerDir, ".fileTable.1");
-		File fileTable2 = new File(managerDir, ".fileTable.2");
-		File fileTable3 = new File(managerDir, ".fileTable.3");
-		String contents1 = "test reliable file contents #1";
-		String contents2 = "test reliable file contents #2";
-		String contents3 = "test reliable file contents #3";
-		try {
-			// create a .fileTable and a normal file
-			managerDir.mkdirs();
-			writeToFile(fileTable, "#safe table\n"+fileName+"=2\n");
-			writeToFile(file2, contents1);
-			manager1 = new StorageManager(testDir, null);
-			manager1.open(true);
-			File test = manager1.lookup(fileName, false);
-			assertNotNull(test);
-			assertTrue(test.exists());
-			
-			// update a new file
-			File testFile = manager1.createTempFile(fileName);
-			writeToFile(testFile, contents2);
-			manager1.update(new String[] {fileName}, new String[] {testFile.getName()});
-			// again
-			testFile = manager1.createTempFile(fileName);
-			writeToFile(testFile, contents3);
-			manager1.update(new String[] {fileName}, new String[] {testFile.getName()});
-			// again
-			testFile = manager1.createTempFile(fileName);
-			writeToFile(testFile, contents1);
-			manager1.update(new String[] {fileName}, new String[] {testFile.getName()});
-			manager1.close();
-			manager1= null;
-			
-			String[] files = managerDir.list();
-			assertEquals(4, files.length);
-			//original file never gets deleted
-			assertTrue(fileTable.exists());
-			//behaves like a reliableFile?
-			assertFalse(fileTable1.exists());
-			assertTrue(fileTable2.exists());
-			assertTrue(fileTable3.exists());
-			//files are as expected?
-			files = testDir.list();
-			assertEquals(2, files.length);
-			assertTrue(file5.exists());
-			
-			manager2 = new StorageManager(testDir, null);
-			manager2.open(true);
-			testFile = manager2.lookup(fileName, false);
-			assertNotNull(testFile);
-			assertTrue(testFile.exists());
-			assertTrue(testFile.getName().endsWith(".5"));
-			manager2.close();
-			manager2=null;
-			
-		} catch(IOException e) {
-			fail("unexepected exception", e);
-		}
-	}
-
-	/**
-	 * This tests that an output stream abort behave as expected.
-	 *
-	 */
-	public void testAbort() {
-		testAbort(true);
-		testAbort(false);
-	}
-	
-	private void testAbort(boolean reliable) {
-		String fileName;
-		if (reliable)
-			fileName = "abortFileReliable.txt";
-		else 
-			fileName = "abortFileStd.txt";
-		File file1 = new File(base, fileName+".1");
-		File file2 = new File(base, fileName+".2");
-		File file3 = new File(base, fileName+".3");
-		String contents1 = "test reliable file contents #1";
-		String contents2 = "test reliable file contents #2";
-		try {
-			System.setProperty("osgi.useReliableFiles", "true"); // force reliable files
-			manager1 = new StorageManager(base, null);
-			manager1.open(true);
-			//create version 1
-			ManagedOutputStream smos = manager1.getOutputStream(fileName);
-			smos.write(contents1.getBytes());
-			smos.close();
-			
-			//start creating version 2
-			smos = manager1.getOutputStream(fileName);
-			smos.write(contents2.getBytes());
-			smos.abort();
-			smos.close(); // shouldn't cause exception, check!
-			
-			// now see if we're still on version #1
-			assertEquals(1, manager1.getId(fileName));
-			// check contents also
-			InputStream is = manager1.getInputStream(fileName);
-			assertNotNull(is);
-			assertEquals(contents1, getInputStreamContents(is));
-			manager1.close();
-			manager1=null;
-			
-			// open a new manager & check the same thing to ensure the database is correct
-			System.setProperty("osgi.useReliableFiles", "true"); // force reliable files
-			manager2 = new StorageManager(base, null);
-			manager2.open(true);
-			//create version 1
-			// now see if we're still on version #1
-			assertEquals(1, manager2.getId(fileName));
-			// check contents also
-			is = manager2.getInputStream(fileName);
-			assertNotNull(is);
-			assertEquals(contents1, getInputStreamContents(is));
-			manager2.close();
-			manager2=null;
-			assertTrue(file1.exists());
-			assertFalse(file2.exists());
-			assertFalse(file3.exists());
-		} catch(IOException e) {
-			fail("unexepected exception", e);
-		}
-	}
-
-	
-	/**
-	 * This tests if getting an output stream-set work properly.
-	 *
-	 */
-	public void testGetOutputStreamSet() {
-		testGetOutputStreamSet(true);
-		testGetOutputStreamSet(false);
-	}
-	
-	private void testGetOutputStreamSet(boolean reliable) {
-		File mgrDir;
-		if (reliable)
-			mgrDir = new File(base, "getSetReliable");
-		else
-			mgrDir = new File(base, "getSetStd");
-		String fileName1 = "testSet1.txt";
-		String fileName2 = "testSet2.txt";
-		File file1_1 = new File(mgrDir, fileName1+".1");
-		File file1_2 = new File(mgrDir, fileName1+".2");
-		File file2_1 = new File(mgrDir, fileName2+".1");
-		File file2_2 = new File(mgrDir, fileName2+".2");
-		String contents1 = "test reliable file contents #1";
-		String contents2 = "test reliable file contents #2";
-		try {
-			System.setProperty("osgi.useReliableFiles", reliable ? "true" : "false"); // force reliable files
-			manager1 = new StorageManager(mgrDir, null);
-			manager1.open(true);
-			ManagedOutputStream[] outs = manager1.getOutputStreamSet(new String[] {fileName1, fileName2});
-			assertNotNull(outs);
-			assertEquals(2, outs.length);
-			
-			outs[0].write(contents1.getBytes());
-			outs[1].write(contents2.getBytes());
-			outs[1].close();
-			assertFalse(file1_1.exists());
-			assertFalse(file2_1.exists());
-			outs[0].close();
-			assertTrue(file1_1.exists());
-			assertTrue(file2_1.exists());
-			
-			outs = manager1.getOutputStreamSet(new String[] {fileName1, fileName2});
-			assertNotNull(outs);
-			
-			outs[0].write("new data #1".getBytes());
-			outs[1].write("new data #2".getBytes());
-			outs[0].close();
-			assertFalse(file1_2.exists());
-			assertFalse(file2_2.exists());
-			outs[1].close();
-			assertTrue(file1_2.exists());
-			assertTrue(file2_2.exists());
-			manager1.close();
-			manager1 = null;
-			
-			if (reliable) {
-				// verify FM thinks they are reliable
-				assertTrue(file1_1.exists());
-				assertTrue(file2_1.exists());
-			} else {
-				// verify FM thinks they are not reliable
-				assertFalse(file1_1.exists());
-				assertFalse(file2_1.exists());				
-			}
-		
-		} catch(IOException e) {
-			fail("unexepected exception", e);
-		}
-	}
-	
-	/**
-	 * This tests if aborting a managed stream-set works as expected
-	 *
-	 */
-	public void testAbortStreamSet() {
-		testAbortSet(true);
-		testAbortSet(false);
-	}
-	
-	private void testAbortSet(boolean reliable) {
-		File mgrDir;
-		if (reliable)
-			mgrDir = new File(base, "abortSetReliable");
-		else
-			mgrDir = new File(base, "abortSetStd");
-		String fileName1 = "test1.txt";
-		String fileName2 = "test2.txt";
-		String fileName3 = "test3.txt";
-		String fileName4 = "test4.txt";
-		String contents1 = "test reliable file contents #1";
-		String contents2 = "test reliable file contents #2";
-		try {
-			mgrDir.mkdirs();
-			String[] list = mgrDir.list();
-			assertEquals(0, list.length);
-			System.setProperty("osgi.useReliableFiles", reliable ? "true" : "false"); // force reliable files
-			manager1 = new StorageManager(mgrDir, null);
-			manager1.open(true);
-			ManagedOutputStream[] outs = manager1.getOutputStreamSet(new String[] {fileName1, fileName2, fileName3, fileName4});
-			assertNotNull(outs);
-			
-			outs[0].write(contents1.getBytes());
-			outs[1].write(contents2.getBytes());
-			outs[2].write(contents2.getBytes());
-			outs[3].write(contents1.getBytes());
-			//sanity check
-			list = mgrDir.list();
-			assertEquals(5, list.length);
-			outs[2].close();
-			outs[1].abort();
-			outs[0].close(); //noop
-			outs[3].close(); //noop
-			outs[2].close(); //noop
-			outs[1].close(); //noop
-			list = mgrDir.list();
-			assertEquals(1, list.length);
-			assertNull(manager1.lookup(fileName1, false));
-			assertNull(manager1.lookup(fileName2, false));
-			assertNull(manager1.lookup(fileName3, false));
-			assertNull(manager1.lookup(fileName4, false));
-			manager1.close();
-			manager1 = null;
-			
-			// open a new manager & check the same thing to ensure the database is correct
-			System.setProperty("osgi.useReliableFiles", reliable ? "true" : "false"); // force reliable files
-			manager2 = new StorageManager(mgrDir, null);
-			manager2.open(true);
-			//create version 1
-			assertNull(manager2.lookup(fileName1, false));
-			assertNull(manager2.lookup(fileName2, false));
-			assertNull(manager2.lookup(fileName3, false));
-			assertNull(manager2.lookup(fileName4, false));
-			list = mgrDir.list();
-			assertEquals(1, list.length);
-			manager2.close();
-			manager2 = null;
-		
-		} catch(IOException e) {
-			fail("unexepected exception", e);
-		}
-	}
-	
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AbstractStateTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AbstractStateTest.java
deleted file mode 100644
index a8aa688..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AbstractStateTest.java
+++ /dev/null
@@ -1,280 +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.osgi.tests.services.resolver;
-
-import java.util.*;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.tests.OSGiTest;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.BundleException;
-
-public abstract class AbstractStateTest extends OSGiTest {
-	protected PlatformAdmin platformAdmin;
-
-	protected void setUp() throws Exception {
-		super.setUp();
-		platformAdmin = new SimplePlatformAdmin(getRandomLocation().toFile(), OSGiTestsActivator.getContext());
-	}
-
-	public AbstractStateTest(String testName) {
-		super(testName);
-	}
-
-	public void assertContains(String tag, Object[] array, Object element) {
-		for (int i = 0; i < array.length; i++)
-			if (array[i] == element)
-				return;
-		fail(tag);
-	}
-
-	public void assertEquals(State original, State copy) {
-		assertEquals("", original, copy);
-	}
-
-	public void assertEquals(String tag, BundleDescription original, BundleDescription copy) {
-		if (original == copy)
-			return;
-		assertEquals(tag + ".0", original.getBundleId(), copy.getBundleId());
-		assertEquals(tag + ".1", original.getSymbolicName(), copy.getSymbolicName());
-		assertEquals(tag + ".2", original.getVersion(), copy.getVersion());
-		assertEquals(tag + ".3", original.getLocation(), copy.getLocation());
-		assertEquals(tag + ".4", original.isResolved(), copy.isResolved());
-		assertEquals(tag + ".5", original.getHost(), copy.getHost());
-		ExportPackageDescription[] originalExportPackages = original.getExportPackages();
-		ExportPackageDescription[] copyExportPackages = copy.getExportPackages();
-		assertEquals(tag + ".6", originalExportPackages.length, copyExportPackages.length);
-		for (int i = 0; i < originalExportPackages.length; i++)
-			assertEquals(tag + ".7." + i, originalExportPackages[i], copyExportPackages[i]);
-		ImportPackageSpecification[] originalImportPackages = original.getImportPackages();
-		ImportPackageSpecification[] copyImportPackages = copy.getImportPackages();
-		assertEquals(tag + ".8", originalImportPackages.length, copyImportPackages.length);
-		for (int i = 0; i < originalImportPackages.length; i++)
-			assertEquals(tag + ".9." + i, originalImportPackages[i], copyImportPackages[i]);
-		BundleSpecification[] originalRequiredBundles = original.getRequiredBundles();
-		BundleSpecification[] copyRequiredBundles = copy.getRequiredBundles();
-		assertEquals(tag + ".10", originalRequiredBundles.length, copyRequiredBundles.length);
-		for (int i = 0; i < originalRequiredBundles.length; i++)
-			assertEquals(tag + ".11." + i, originalRequiredBundles[i], copyRequiredBundles[i]);
-		ExportPackageDescription[] originalResolvedImports = original.getResolvedImports();
-		ExportPackageDescription[] copyResolvedImports = copy.getResolvedImports();
-		assertEquals(tag + ".12", originalResolvedImports.length, copyResolvedImports.length);
-		for (int i = 0; i < originalResolvedImports.length; i++)
-			assertEquals(tag + ".13." + i, originalResolvedImports[i], copyResolvedImports[i]);
-		BundleDescription[] originalResolvedRequires = original.getResolvedRequires();
-		BundleDescription[] copyResolvedRequires = copy.getResolvedRequires();
-		assertEquals(tag + ".14", originalResolvedRequires.length, copyResolvedRequires.length);
-		for (int i = 0; i < originalResolvedRequires.length; i++)
-			assertEquals(tag + ".15." + i, originalResolvedRequires[i], copyResolvedRequires[i]);
-	}
-
-	public void assertEquals(String tag, ExportPackageDescription original, ExportPackageDescription copy) {
-		assertEquals(tag + ".0", original.getName(), copy.getName());
-		assertEquals(tag + ".1", original.getVersion(), copy.getVersion());
-		assertEquals(tag + ".2", original.getAttributes(), copy.getAttributes());
-		assertEquals(tag + ".3", original.getDirectives(), original.getDirectives());
-	}
-
-	public void assertEquals(String tag, State original, State copy) {
-		BundleDescription[] originalBundles = original.getBundles();
-		BundleDescription[] copyBundles = copy.getBundles();
-		assertEquals(tag + ".1", originalBundles.length, copyBundles.length);
-		for (int i = 0; i < originalBundles.length; i++)
-			assertEquals(tag + ".2." + i, originalBundles[i], copyBundles[i]);
-		assertEquals(tag + ".3", original.isResolved(), copy.isResolved());
-		BundleDescription[] originalResolvedBundles = original.getResolvedBundles();
-		BundleDescription[] copyResolvedBundles = copy.getResolvedBundles();
-		assertEquals(tag + ".4", originalResolvedBundles.length, copyResolvedBundles.length);
-		for (int i = 0; i < originalResolvedBundles.length; i++)
-			assertEquals(tag + ".5." + i, originalResolvedBundles[i], copyResolvedBundles[i]);
-	}
-
-	private void assertVersionConstraintEquals(String tag, VersionConstraint original, VersionConstraint copy) {
-		assertEquals(tag + ".0", original == null, copy == null);
-		if (original == null)
-			return;
-		assertEquals(tag + ".1", original.getName(), copy.getName());
-		assertEquals(tag + ".2", original.getVersionRange(), copy.getVersionRange());
-		assertEquals(tag + ".4", original.getSupplier() == null, copy.getSupplier() == null);
-		if (original.getSupplier() != null) {
-			Object o = original.getSupplier();
-			if (o instanceof BundleDescription)
-				assertEquals(tag + ".5", (BundleDescription)original.getSupplier(), (BundleDescription)copy.getSupplier());
-			else
-				assertEquals(tag + ".5", (ExportPackageDescription)original.getSupplier(), (ExportPackageDescription)copy.getSupplier());
-		}
-	}
-
-	public void assertEquals(String tag, BundleSpecification original, BundleSpecification copy) {
-		assertVersionConstraintEquals(tag + ".0", original, copy);
-		if (original == null)
-			return;
-		assertEquals(tag + ".1", original.isExported(), copy.isExported());
-		assertEquals(tag + ".2", original.isOptional(), copy.isOptional());
-	}
-
-	public void assertEquals(String tag, ImportPackageSpecification original, ImportPackageSpecification copy) {
-		assertVersionConstraintEquals(tag + ".0", original, copy);
-		if (original == null)
-			return;
-		assertEquals(tag + ".1", original.getAttributes(), copy.getAttributes());
-		assertEquals(tag + ".2", original.getBundleSymbolicName(), copy.getBundleSymbolicName());
-		assertEquals(tag + ".3", original.getBundleVersionRange(), copy.getBundleVersionRange());
-		assertEquals(tag + ".5", original.getDirectives(), original.getDirectives());
-	}
-
-	public void assertEquals(String tag, HostSpecification original, HostSpecification copy) {
-		assertVersionConstraintEquals(tag + ".0", original, copy);
-		if (original == null)
-			return;
-		BundleDescription[] originalHosts = original.getHosts();
-		BundleDescription[] copyHosts = copy.getHosts();
-		assertEquals(tag + ".1", originalHosts == null, copyHosts == null);
-		if (originalHosts == null)
-			return;
-		assertEquals(tag + ".2", originalHosts.length, copyHosts.length);
-		for (int i = 0; i < originalHosts.length; i++)
-			assertEquals(tag + ".3." + i, originalHosts[i], copyHosts[i]);
-	}
-
-	public void assertFullyResolved(String tag, BundleDescription bundle) {
-		assertTrue(tag + "a", bundle.isResolved());
-		ImportPackageSpecification[] packages = bundle.getImportPackages();
-		for (int i = 0; i < packages.length; i++)
-			assertNotNull(tag + "b_" + i, packages[i].getSupplier());
-		HostSpecification host = bundle.getHost();
-		if (host != null)
-			assertNotNull(tag + "c", host.getHosts());
-		BundleSpecification[] requiredBundles = bundle.getRequiredBundles();
-		for (int i = 0; i < requiredBundles.length; i++)
-			assertNotNull(tag + "d_" + i, requiredBundles[i].getSupplier());
-	}
-
-	public void assertFullyUnresolved(String tag, BundleDescription bundle) {
-		assertFalse(tag + "a", bundle.isResolved());
-		ImportPackageSpecification[] packages = bundle.getImportPackages();
-		for (int i = 0; i < packages.length; i++)
-			assertNull(tag + "b_" + i, packages[i].getSupplier());
-		HostSpecification host = bundle.getHost();
-		if (host != null)
-			assertNull(tag + "c", host.getHosts());
-		BundleSpecification[] requiredBundles = bundle.getRequiredBundles();
-		for (int i = 0; i < requiredBundles.length; i++)
-			assertNull(tag + "d_" + i, requiredBundles[i].getSupplier());
-	}
-
-	public void assertIdentical(String tag, State original, State copy) {
-		assertEquals(tag + ".0a", original.isResolved(), copy.isResolved());
-		assertEquals(tag + ".0b", original.getTimeStamp(), copy.getTimeStamp());
-		assertEquals(tag, original, copy);
-	}
-
-	public State buildComplexState() throws BundleException {
-		State state = buildEmptyState();
-		/*
-		 * org.eclipse.b1_1.0 exports org.eclipse.p1_1.0 imports org.eclipse.p2
-		 */
-		final String B1_LOCATION = "org.eclipse.b1";
-		final String B1_MANIFEST = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n" + "Export-Package: org.eclipse.p1;specification-version=1.0\n" + "Import-Package: org.eclipse.p2";
-		BundleDescription b1 = state.getFactory().createBundleDescription(parseManifest(B1_MANIFEST), B1_LOCATION, 1);
-		state.addBundle(b1);
-		/*
-		 * org.eclipse.b2_2.0 exports org.eclipse.p2 imports org.eclipse.p1
-		 */
-		final String B2_LOCATION = "org.eclipse.b2";
-		final String B2_MANIFEST = "Bundle-SymbolicName: org.eclipse.b2\n" + "Bundle-Version: 2.0\n" + "Export-Package: org.eclipse.p2\n" + "Import-Package: org.eclipse.p1";
-		BundleDescription b2 = state.getFactory().createBundleDescription(parseManifest(B2_MANIFEST), B2_LOCATION, 2);
-		state.addBundle(b2);
-		/*
-		 * org.eclipse.b3_2.0 exports org.eclipse.p2_2.0
-		 */
-		final String B3_LOCATION = "org.eclipse.b3";
-		final String B3_MANIFEST = "Bundle-SymbolicName: org.eclipse.b3\n" + "Bundle-Version: 2.0\n" + "Export-Package: org.eclipse.p2; specification-version=2.0";
-		BundleDescription b3 = state.getFactory().createBundleDescription(parseManifest(B3_MANIFEST), B3_LOCATION, 3);
-		state.addBundle(b3);
-		/*
-		 * org.eclipse.b4_1.0 requires org.eclipse.b1_*
-		 */
-		final String B4_LOCATION = "org.eclipse.b4";
-		final String B4_MANIFEST = "Bundle-SymbolicName: org.eclipse.b4\n" + "Bundle-Version: 2.0\n" + "Require-Bundle: org.eclipse.b1";
-		BundleDescription b4 = state.getFactory().createBundleDescription(parseManifest(B4_MANIFEST), B4_LOCATION, 4);
-		state.addBundle(b4);
-		/*
-		 * org.eclipse.b5_1.0 fragment for org.eclipse.b3_*
-		 */
-		final String B5_LOCATION = "org.eclipse.b5";
-		final String B5_MANIFEST = "Bundle-SymbolicName: org.eclipse.b5\n" + "Bundle-Version: 1.0\n" + "Fragment-Host: org.eclipse.b3";
-		BundleDescription b5 = state.getFactory().createBundleDescription(parseManifest(B5_MANIFEST), B5_LOCATION, 5);
-		state.addBundle(b5);
-		/*
-		 * org.eclipse.b6_1.0 requires org.eclipse.b4
-		 */
-		final String B6_LOCATION = "org.eclipse.b6";
-		final String B6_MANIFEST = "Bundle-SymbolicName: org.eclipse.b6\n" + "Bundle-Version: 1.0\n" + "Require-Bundle: org.eclipse.b4";
-		BundleDescription b6 = state.getFactory().createBundleDescription(parseManifest(B6_MANIFEST), B6_LOCATION, 6);
-		state.addBundle(b6);
-		return state;
-	}
-
-	public State buildEmptyState() {
-		State state = platformAdmin.getState();
-		state.setResolver(platformAdmin.getResolver());
-		return state;
-	}
-
-	public State buildInitialState() throws BundleException {
-		State state = buildEmptyState();
-		/*
-		 * org.eclipse.b1_1.0 exports org.eclipse.p1_1.0
-		 */
-		final String SYSTEM_BUNDLE_LOCATION = "org.eclipse.b1";
-		final String SYSTEM_BUNDLE_MANIFEST = "Bundle-SymbolicName: org.osgi.framework\n" + "Bundle-Version: 3.0\n" + "Export-Package: org.osgi.framework; specification-version=3.0";
-		BundleDescription b0 = state.getFactory().createBundleDescription(parseManifest(SYSTEM_BUNDLE_MANIFEST), SYSTEM_BUNDLE_LOCATION, 0);
-		state.addBundle(b0);
-		return state;
-	}
-
-	public State buildSimpleState() throws BundleException {
-		State state = buildEmptyState();
-		/*
-		 * org.eclipse.b1_1.0 exports org.eclipse.p1_1.0 imports org.eclipse.p2
-		 */
-		final String B1_LOCATION = "org.eclipse.b1";
-		final String B1_MANIFEST = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n" + "Export-Package: org.eclipse.p1;specification-version=1.0\n" + "Import-Package: org.eclipse.p2";
-		BundleDescription b1 = state.getFactory().createBundleDescription(parseManifest(B1_MANIFEST), B1_LOCATION, 1);
-		state.addBundle(b1);
-		/*
-		 * org.eclipse.b2_2.0 exports org.eclipse.p2 imports org.eclipse.p1
-		 */
-		final String B2_LOCATION = "org.eclipse.b2";
-		final String B2_MANIFEST = "Bundle-SymbolicName: org.eclipse.b2\n" + "Bundle-Version: 2.0\n" + "Export-Package: org.eclipse.p2\n" + "Import-Package: org.eclipse.p1";
-		BundleDescription b2 = state.getFactory().createBundleDescription(parseManifest(B2_MANIFEST), B2_LOCATION, 2);
-		state.addBundle(b2);
-		/*
-		 * org.eclipse.b3_2.0 imports org.eclipse.p1_2.0
-		 */
-		final String B3_LOCATION = "org.eclipse.b3";
-		final String B3_MANIFEST = "Bundle-SymbolicName: org.eclipse.b3\n" + "Bundle-Version: 2.0\n" + "Import-Package: org.eclipse.p1; specification-version=2.0";
-		BundleDescription b3 = state.getFactory().createBundleDescription(parseManifest(B3_MANIFEST), B3_LOCATION, 3);
-		state.addBundle(b3);
-		return state;
-	}
-
-	public static Dictionary parseManifest(String manifest) {
-		Dictionary entries = new Hashtable();
-		StringTokenizer tokenizer = new StringTokenizer(manifest, ":\n");
-		while (tokenizer.hasMoreTokens()) {
-			String key = tokenizer.nextToken();
-			String value = tokenizer.hasMoreTokens() ? tokenizer.nextToken().trim() : "";
-			entries.put(key, value);
-		}
-		return entries;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AllTests.java
deleted file mode 100644
index 6c11811..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AllTests.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import junit.framework.*;
-
-public class AllTests extends TestCase {
-
-	public AllTests() {
-		super(null);
-	}
-
-	public AllTests(String name) {
-		super(name);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(AllTests.class.getName());
-		suite.addTest(SubstitutableExportsTest.suite());
-		suite.addTest(DisabledInfoTest.suite());
-		suite.addTest(PlatformAdminTest.suite());
-		suite.addTest(StateResolverTest.suite());
-		suite.addTest(StateCycleTest.suite());
-		suite.addTest(StateComparisonTest.suite());
-		suite.addTest(VersionRangeTests.suite());
-		suite.addTest(R4ResolverTest.suite());
-		suite.addTest(XFriendsInternalResolverTest.suite());
-		suite.addTest(GenericCapabilityTest.suite());
-		suite.addTest(DevModeTest.suite());
-		return suite;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DevModeTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DevModeTest.java
deleted file mode 100644
index eafe926..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DevModeTest.java
+++ /dev/null
@@ -1,337 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-
-public class DevModeTest extends AbstractStateTest {
-	public static Test suite() {
-		return new TestSuite(DevModeTest.class);
-	}
-
-	public DevModeTest(String name) {
-		super(name);
-	}
-
-	private State buildDevModeState() {
-		State state = buildEmptyState();
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put("osgi.resolverMode", "development");
-		state.setPlatformProperties(props);
-		return state;
-	}
-
-	public void testDevModeDomino02() throws BundleException {
-		State state = buildDevModeState();
-
-		int bundleID = 0;
-		Hashtable manifest = new Hashtable();
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		manifest.put(Constants.IMPORT_PACKAGE, "x, d");
-		manifest.put(Constants.REQUIRE_BUNDLE, "X, E");
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A");
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "d");
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "e");
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.resolve();
-		// bundle a has an unsatisfied constraint
-		// b, c, d, e should still be resolved though
-		assertFalse("0.1", a.isResolved());
-		assertTrue("0.3", b.isResolved());
-		assertTrue("0.4", c.isResolved());
-		assertTrue("0.5", d.isResolved());
-		assertTrue("0.5", e.isResolved());
-
-		BundleDescription[] aRequired = a.getResolvedRequires();
-		assertTrue("1.1", aRequired.length == 1);
-		assertTrue("1.2", aRequired[0] == e);
-		ExportPackageDescription[] aImported = a.getResolvedImports();
-		assertTrue("1.3", aImported.length == 1);
-		assertTrue("1.4", aImported[0].getExporter() == d);
-
-		BundleDescription[] bRequired = b.getResolvedRequires();
-		assertTrue("2.1", bRequired.length == 1);
-		assertTrue("2.2", bRequired[0] == a);
-
-		BundleDescription[] cRequired = c.getResolvedRequires();
-		assertTrue("3.1", cRequired.length == 1);
-		assertTrue("3.2", cRequired[0] == a);
-	}
-
-	public void testDevModeDomino01() throws BundleException {
-		State state = buildDevModeState();
-
-		int bundleID = 0;
-		Hashtable manifest = new Hashtable();
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		manifest.put(Constants.IMPORT_PACKAGE, "x");
-		manifest.put(Constants.REQUIRE_BUNDLE, "X");
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A");
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.resolve();
-		// bundle a has an unsatisfied constraint
-		// b and c should still be resolved to bundle a though
-		assertFalse("0.1", a.isResolved());
-		assertTrue("0.3", b.isResolved());
-		assertTrue("0.4", c.isResolved());
-
-		BundleDescription[] bRequired = b.getResolvedRequires();
-		assertTrue("1.1", bRequired.length == 1);
-		assertTrue("1.2", bRequired[0] == a);
-
-		BundleDescription[] cRequired = c.getResolvedRequires();
-		assertTrue("2.1", cRequired.length == 1);
-		assertTrue("2.2", cRequired[0] == a);
-	}
-
-	public void testDevModeFragment01() throws BundleException {
-		State state = buildDevModeState();
-
-		int bundleID = 0;
-		Hashtable manifest = new Hashtable();
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		manifest.put(Constants.IMPORT_PACKAGE, "c");
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "A");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag");
-		BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "a, a.frag");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c");
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(aFrag);
-		state.addBundle(b);
-		state.resolve();
-		// only A should not be resolved, do not want the domino effect.
-		assertFalse("0.1", a.isResolved());
-		assertTrue("0.2", aFrag.isResolved());
-		assertTrue("0.3", b.isResolved());
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		ExportPackageDescription[] bImports = b.getResolvedImports();
-		assertTrue("1.1", aExports.length == 2);
-		assertTrue("1.2", bImports.length == 2);
-		assertTrue("1.3", aExports[0] == bImports[0]);
-		assertTrue("1.4", aExports[1] == bImports[1]);
-		assertTrue("1.5", aFrag.getHost().getSupplier() == a);
-
-		state.addBundle(c);
-		state.resolve();
-		assertTrue("2.1", a.isResolved());
-		assertTrue("2.2", aFrag.isResolved());
-		assertTrue("2.3", b.isResolved());
-		assertTrue("2.4", c.isResolved());
-
-		aExports = a.getSelectedExports();
-		bImports = b.getResolvedImports();
-		assertTrue("3.1", aExports.length == 2);
-		assertTrue("3.2", bImports.length == 2);
-		assertTrue("3.3", aExports[0] == bImports[0]);
-		assertTrue("3.4", aExports[1] == bImports[1]);		
-		assertTrue("3.5", aFrag.getHost().getSupplier() == a);
-	}
-
-	public void testDevModeSingleton01() throws BundleException {
-		State state = buildDevModeState();
-
-		int bundleID = 0;
-		Hashtable manifest = new Hashtable();
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; version=2.0");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[1.0,2.0)\"");
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a1);
-		state.addBundle(a2);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.resolve();
-		// both versions of A should be resolved
-		assertTrue("0.1", a1.isResolved());
-		assertTrue("0.2", a2.isResolved());
-		assertTrue("0.3", b.isResolved());
-		assertTrue("0.4", c.isResolved());
-
-		BundleDescription[] bRequired = b.getResolvedRequires();
-		assertTrue("1.1", bRequired.length == 1);
-		assertTrue("1.2", bRequired[0] == a2);
-
-		BundleDescription[] cRequired = c.getResolvedRequires();
-		assertTrue("2.1", cRequired.length == 1);
-		assertTrue("2.2", cRequired[0] == a1);
-	}
-
-	public void testDevModeSingleton02() throws BundleException {
-		State state = buildDevModeState();
-
-		int bundleID = 0;
-		Hashtable manifest = new Hashtable();
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		manifest.put(Constants.IMPORT_PACKAGE, "x");
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; version=2.0");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; bundle-version=\"[1.0,2.0)\"");
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a1);
-		state.addBundle(a2);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.resolve();
-		// only a2 is resolved because a1 has an unsatisfied constraint
-		// c should still be resolved to a1 though
-		assertFalse("0.1", a1.isResolved());
-		assertTrue("0.2", a2.isResolved());
-		assertTrue("0.3", b.isResolved());
-		assertTrue("0.4", c.isResolved());
-
-		BundleDescription[] bRequired = b.getResolvedRequires();
-		assertTrue("1.1", bRequired.length == 1);
-		assertTrue("1.2", bRequired[0] == a2);
-
-		BundleDescription[] cRequired = c.getResolvedRequires();
-		assertTrue("2.1", cRequired.length == 1);
-		assertTrue("2.2", cRequired[0] == a1);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DisabledInfoTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DisabledInfoTest.java
deleted file mode 100644
index 8b40b5a..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/DisabledInfoTest.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.io.File;
-import java.io.IOException;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-public class DisabledInfoTest extends AbstractStateTest {
-	private final String B1_LOCATION = "b1"; //$NON-NLS-1$
-	private final String B2_LOCATION = "b2"; //$NON-NLS-1$
-	private final String B3_LOCATION = "b3"; //$NON-NLS-1$
-	private final String POLICY = "test.policy"; //$NON-NLS-1$
-
-	public static Test suite() {
-		return new TestSuite(DisabledInfoTest.class);
-	}
-
-	public DisabledInfoTest(String name) {
-		super(name);
-	}
-
-	public void testDisabledInfo01() throws BundleException {
-		State state = buildTestState();
-		BundleDescription b1 = state.getBundleByLocation(B1_LOCATION);
-		BundleDescription b2 = state.getBundleByLocation(B2_LOCATION);
-		BundleDescription b3 = state.getBundleByLocation(B3_LOCATION);
-
-		DisabledInfo info1 = new DisabledInfo(POLICY, "message 1", b1); //$NON-NLS-1$
-		DisabledInfo info2 = new DisabledInfo(POLICY, "message 1", b2); //$NON-NLS-1$
-		DisabledInfo info3 = new DisabledInfo(POLICY, "message 1", b3); //$NON-NLS-1$
-
-		state.addDisabledInfo(info1);
-		state.addDisabledInfo(info2);
-		state.addDisabledInfo(info3);
-
-		State copy = state.getFactory().createState(state);
-		BundleDescription copyB1 = copy.getBundleByLocation(B1_LOCATION);
-		BundleDescription copyB2 = copy.getBundleByLocation(B2_LOCATION);
-		BundleDescription copyB3 = copy.getBundleByLocation(B3_LOCATION);
-
-		DisabledInfo copyInfo1 = copy.getDisabledInfo(copyB1, POLICY);
-		DisabledInfo copyInfo2 = copy.getDisabledInfo(copyB2, POLICY);
-		DisabledInfo copyInfo3 = copy.getDisabledInfo(copyB3, POLICY);
-
-		assertNotNull("copyInfo1", copyInfo1); //$NON-NLS-1$
-		assertNotNull("copyInfo2", copyInfo2); //$NON-NLS-1$
-		assertNotNull("copyInfo3", copyInfo3); //$NON-NLS-1$
-
-		assertTrue("copyInfo1 bundle", copyInfo1.getBundle() == copyB1); //$NON-NLS-1$
-		assertTrue("copyInfo2 bundle", copyInfo2.getBundle() == copyB2); //$NON-NLS-1$
-		assertTrue("copyInfo3 bundle", copyInfo3.getBundle() == copyB3); //$NON-NLS-1$
-	}
-
-	public void testDisabledInfo02() throws BundleException {
-		State state = buildTestState();
-		BundleDescription b1 = state.getBundleByLocation(B1_LOCATION);
-		BundleDescription b2 = state.getBundleByLocation(B2_LOCATION);
-		BundleDescription b3 = state.getBundleByLocation(B3_LOCATION);
-
-		DisabledInfo info1 = new DisabledInfo(POLICY, "message 1", b1); //$NON-NLS-1$
-		DisabledInfo info2 = new DisabledInfo(POLICY, "message 1", b2); //$NON-NLS-1$
-		DisabledInfo info3 = new DisabledInfo(POLICY, "message 1", b3); //$NON-NLS-1$
-
-		state.resolve();
-		assertTrue("b1 resolved", b1.isResolved()); //$NON-NLS-1$
-		assertTrue("b2 resolved", b2.isResolved()); //$NON-NLS-1$
-		assertTrue("b3 resolved", b3.isResolved()); //$NON-NLS-1$
-
-		state.addDisabledInfo(info1);
-		state.addDisabledInfo(info2);
-		state.addDisabledInfo(info3);
-
-		state.resolve(false);
-		assertFalse("b1 resolved", b1.isResolved()); //$NON-NLS-1$
-		assertFalse("b2 resolved", b2.isResolved()); //$NON-NLS-1$
-		assertFalse("b3 resolved", b3.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testDisabledInfo03() throws BundleException {
-		State state = buildTestState();
-		BundleDescription b1 = state.getBundleByLocation(B1_LOCATION);
-		BundleDescription b2 = state.getBundleByLocation(B2_LOCATION);
-		BundleDescription b3 = state.getBundleByLocation(B3_LOCATION);
-
-		DisabledInfo info1 = new DisabledInfo(POLICY, "message 1", b1); //$NON-NLS-1$
-		DisabledInfo info2 = new DisabledInfo(POLICY, "message 1", b2); //$NON-NLS-1$
-		DisabledInfo info3 = new DisabledInfo(POLICY, "message 1", b3); //$NON-NLS-1$
-
-		state.addDisabledInfo(info1);
-		state.addDisabledInfo(info2);
-		state.addDisabledInfo(info3);
-		BundleContext context = OSGiTestsActivator.getContext();
-		File stateDir = context.getDataFile("testDisabledInfo03"); //$NON-NLS-1$
-		stateDir.mkdirs();
-		try {
-			state.getFactory().writeState(state, stateDir);
-			State copy = state.getFactory().readState(stateDir);
-			BundleDescription copyB1 = copy.getBundleByLocation(B1_LOCATION);
-			BundleDescription copyB2 = copy.getBundleByLocation(B2_LOCATION);
-			BundleDescription copyB3 = copy.getBundleByLocation(B3_LOCATION);
-			DisabledInfo copyInfo1 = copy.getDisabledInfo(copyB1, POLICY);
-			DisabledInfo copyInfo2 = copy.getDisabledInfo(copyB2, POLICY);
-			DisabledInfo copyInfo3 = copy.getDisabledInfo(copyB3, POLICY);
-
-			assertNotNull("copyInfo1", copyInfo1); //$NON-NLS-1$
-			assertNotNull("copyInfo2", copyInfo2); //$NON-NLS-1$
-			assertNotNull("copyInfo3", copyInfo3); //$NON-NLS-1$
-
-			assertTrue("copyInfo1 bundle", copyInfo1.getBundle() == copyB1); //$NON-NLS-1$
-			assertTrue("copyInfo2 bundle", copyInfo2.getBundle() == copyB2); //$NON-NLS-1$
-			assertTrue("copyInfo3 bundle", copyInfo3.getBundle() == copyB3); //$NON-NLS-1$
-		} catch (IOException e) {
-			fail("Unexpected exception", e); //$NON-NLS-1$
-		}
-	}
-
-	public void testDisabledInfo04() throws BundleException {
-		State state = buildTestState();
-		BundleDescription b1 = state.getBundleByLocation(B1_LOCATION);
-		BundleDescription b2 = state.getBundleByLocation(B2_LOCATION);
-		BundleDescription b3 = state.getBundleByLocation(B3_LOCATION);
-
-		DisabledInfo info1 = new DisabledInfo(POLICY, "message 1", b1); //$NON-NLS-1$
-		DisabledInfo info2 = new DisabledInfo(POLICY, "message 1", b2); //$NON-NLS-1$
-		DisabledInfo info3 = new DisabledInfo(POLICY, "message 1", b3); //$NON-NLS-1$
-
-		state.resolve();
-		assertTrue("b1 resolved", b1.isResolved()); //$NON-NLS-1$
-		assertTrue("b2 resolved", b2.isResolved()); //$NON-NLS-1$
-		assertTrue("b3 resolved", b3.isResolved()); //$NON-NLS-1$
-
-		state.addDisabledInfo(info1);
-		state.addDisabledInfo(info2);
-		state.addDisabledInfo(info3);
-
-		BundleDescription[] disabledBundles = state.getDisabledBundles();
-		assertNotNull("disabledBundles", disabledBundles); //$NON-NLS-1$
-		assertEquals("disabledBundles length", 3, disabledBundles.length); //$NON-NLS-1$
-		assertTrue("b1 not found", disabledBundles[0] == b1 || disabledBundles[1] == b1 || disabledBundles[2] == b1); //$NON-NLS-1$
-		assertTrue("b2 not found", disabledBundles[0] == b2 || disabledBundles[1] == b2 || disabledBundles[2] == b2); //$NON-NLS-1$
-		assertTrue("b3 not found", disabledBundles[0] == b3 || disabledBundles[1] == b3 || disabledBundles[2] == b3); //$NON-NLS-1$
-
-		state.removeDisabledInfo(info1);
-		disabledBundles = state.getDisabledBundles();
-		assertNotNull("disabledBundles", disabledBundles); //$NON-NLS-1$
-		assertEquals("disabledBundles length", 2, disabledBundles.length); //$NON-NLS-1$
-		assertTrue("b2 not found", disabledBundles[0] == b2 || disabledBundles[1] == b2); //$NON-NLS-1$
-		assertTrue("b3 not found", disabledBundles[0] == b3 || disabledBundles[1] == b3); //$NON-NLS-1$
-
-		state.removeDisabledInfo(info2);
-		disabledBundles = state.getDisabledBundles();
-		assertNotNull("disabledBundles", disabledBundles); //$NON-NLS-1$
-		assertEquals("disabledBundles length", 1, disabledBundles.length); //$NON-NLS-1$
-		assertTrue("b3 not found", disabledBundles[0] == b3); //$NON-NLS-1$
-
-		state.removeDisabledInfo(info3);
-		disabledBundles = state.getDisabledBundles();
-		assertNotNull("disabledBundles", disabledBundles); //$NON-NLS-1$
-		assertEquals("disabledBundles length", 0, disabledBundles.length); //$NON-NLS-1$
-	}
-
-	public void testBug251427() throws BundleException {
-		State state = buildTestState();
-		BundleDescription b1 = state.getBundleByLocation(B1_LOCATION);
-		BundleDescription b2 = state.getBundleByLocation(B2_LOCATION);
-
-		DisabledInfo info11 = new DisabledInfo(POLICY, "message 1", b1); //$NON-NLS-1$
-		DisabledInfo info12 = new DisabledInfo(POLICY, "message 1", b1); //$NON-NLS-1$
-		DisabledInfo info21 = new DisabledInfo(POLICY, "message 1", b2); //$NON-NLS-1$
-		DisabledInfo info22 = new DisabledInfo(POLICY, "message 1", b2); //$NON-NLS-1$
-
-		assertEquals("infos not equal", info11, info12); //$NON-NLS-1$
-		assertEquals("infos hashCode not equal", info11.hashCode(), info12.hashCode()); //$NON-NLS-1$
-		assertEquals("infos not equal", info21, info22); //$NON-NLS-1$
-		assertEquals("infos hashCode not equal", info21.hashCode(), info22.hashCode()); //$NON-NLS-1$
-
-	}
-
-	private State buildTestState() throws BundleException {
-		State state = buildEmptyState();
-		final String B1_MANIFEST = "Bundle-ManifestVersion: 1\n" + "Bundle-SymbolicName: b1\n" + "Bundle-Version: 1.0\n" + "Import-Package: b2"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		BundleDescription b1 = state.getFactory().createBundleDescription(state, parseManifest(B1_MANIFEST), B1_LOCATION, 1);
-		state.addBundle(b1);
-		final String B2_MANIFEST = "Bundle-ManifestVersion: 1\n" + "Bundle-SymbolicName: b2\n" + "Bundle-Version: 1.0\n" + "Export-Package: b2\n" + "Import-Package: b3"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-		BundleDescription b2 = state.getFactory().createBundleDescription(state, parseManifest(B2_MANIFEST), B2_LOCATION, 2);
-		state.addBundle(b2);
-		final String B3_MANIFEST = "Bundle-ManifestVersion: 1\n" + "Bundle-SymbolicName: b3\n" + "Bundle-Version: 1.0\n" + "Export-Package: b3; version=1.0"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		BundleDescription b3 = state.getFactory().createBundleDescription(state, parseManifest(B3_MANIFEST), B3_LOCATION, 3);
-		state.addBundle(b3);
-		return state;
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/GenericCapabilityTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/GenericCapabilityTest.java
deleted file mode 100644
index 41286ae..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/GenericCapabilityTest.java
+++ /dev/null
@@ -1,493 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.*;
-
-public class GenericCapabilityTest extends AbstractStateTest {
-	private static final String GENERIC_REQUIRE = "Eclipse-GenericRequire"; //$NON-NLS-1$
-	private static final String GENERIC_CAPABILITY = "Eclipse-GenericCapability"; //$NON-NLS-1$
-	public static Test suite() {
-		return new TestSuite(GenericCapabilityTest.class);
-	}
-
-	public GenericCapabilityTest(String name) {
-		super(name);
-	}
-
-	public void testGenericsBasics() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer capabililty = new StringBuffer();
-		capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); 
-		capabililty.append("bar:bartype; version=\"1.4.1\"; attr1=\"value1\"; attr2=\"value2\",");
-		capabililty.append("test.types:testtype;"); 
-		capabililty.append(" aVersion:version=\"2.0.0\";");
-		capabililty.append(" aLong:long=\"10000000000\";");
-		capabililty.append(" aDouble:double=\"1.000109\";");
-		capabililty.append(" aUri:uri=\"file:/test\";");
-		capabililty.append(" aSet:set=\"a,b,c,d\";");
-		capabililty.append(" aString:string=\"someString\"");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCap = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer required = new StringBuffer();
-		required.append("foo; selection-filter=\"(version>=1.3.0)\",");
-		required.append("bar:bartype; selection-filter=\"(attr1=value1)\",");
-		required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\"");
-		manifest.put(GENERIC_REQUIRE, required.toString());
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap);
-		state.addBundle(genReq);
-
-		state.resolve();
-		assertTrue("1.0", genCap.isResolved());
-		assertTrue("1.1", genReq.isResolved());
-		GenericSpecification[] genSpecs = genReq.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 3);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("2.2", genSpecs[1].isResolved());
-		assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-		assertTrue("2.3", genSpecs[2].isResolved());
-		assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]);
-	}
-
-	public void testGenericsUpdate() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer capabililty = new StringBuffer();
-		capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); 
-		capabililty.append("bar:bartype; version=\"1.4.1\"; attr1=\"value1\"; attr2=\"value2\",");
-		capabililty.append("test.types:testtype;"); 
-		capabililty.append(" aVersion:version=\"2.0.0\";");
-		capabililty.append(" aLong:long=\"10000000000\";");
-		capabililty.append(" aDouble:double=\"1.000109\";");
-		capabililty.append(" aUri:uri=\"file:/test\";");
-		capabililty.append(" aSet:set=\"a,b,c,d\";");
-		capabililty.append(" aString:string=\"someString\"");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCap = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer required = new StringBuffer();
-		required.append("foo; selection-filter=\"(version>=1.3.0)\",");
-		required.append("bar:bartype; selection-filter=\"(attr1=value1)\",");
-		required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\"");
-		manifest.put(GENERIC_REQUIRE, required.toString());
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap);
-		state.addBundle(genReq);
-
-		state.resolve();
-		assertTrue("1.0", genCap.isResolved());
-		assertTrue("1.1", genReq.isResolved());
-		GenericSpecification[] genSpecs = genReq.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 3);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("2.2", genSpecs[1].isResolved());
-		assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-		assertTrue("2.3", genSpecs[2].isResolved());
-		assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		capabililty = new StringBuffer();
-		capabililty.append("foo; version=\"1.3.2\"; attr1=\"value1\"; attr2=\"value2\","); 
-		capabililty.append("bar:bartype; version=\"1.4.2\"; attr1=\"value1\"; attr2=\"value2\",");
-		capabililty.append("test.types:testtype;"); 
-		capabililty.append(" aVersion:version=\"2.0.1\";");
-		capabililty.append(" aLong:long=\"10000000000\";");
-		capabililty.append(" aDouble:double=\"1.000109\";");
-		capabililty.append(" aUri:uri=\"file:/test\";");
-		capabililty.append(" aSet:set=\"a,b,c,d\";");
-		capabililty.append(" aString:string=\"someString\"");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCap2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), genCap.getBundleId());
-		
-		state.updateBundle(genCap2);
-		state.resolve(new BundleDescription[] {genCap2});
-
-		assertTrue("3.0", genCap2.isResolved());
-		assertTrue("3.1", genReq.isResolved());
-		genSpecs = genReq.getGenericRequires();
-		assertTrue("4.0", genSpecs.length == 3);
-		assertTrue("4.1", genSpecs[0].isResolved());
-		assertEquals("4.1.1", genSpecs[0].getSupplier(), genCap2.getGenericCapabilities()[0]);
-		assertTrue("4.2", genSpecs[1].isResolved());
-		assertEquals("4.2.1", genSpecs[1].getSupplier(), genCap2.getGenericCapabilities()[1]);
-		assertTrue("4.3", genSpecs[2].isResolved());
-		assertEquals("4.3.1", genSpecs[2].getSupplier(), genCap2.getGenericCapabilities()[2]);
-
-	}
-
-	public void testGenericsRefresh() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer capabililty = new StringBuffer();
-		capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); 
-		capabililty.append("bar:bartype; version=\"1.4.1\"; attr1=\"value1\"; attr2=\"value2\",");
-		capabililty.append("test.types:testtype;"); 
-		capabililty.append(" aVersion:version=\"2.0.0\";");
-		capabililty.append(" aLong:long=\"10000000000\";");
-		capabililty.append(" aDouble:double=\"1.000109\";");
-		capabililty.append(" aUri:uri=\"file:/test\";");
-		capabililty.append(" aSet:set=\"a,b,c,d\";");
-		capabililty.append(" aString:string=\"someString\"");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCap = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer required = new StringBuffer();
-		required.append("foo; selection-filter=\"(version>=1.3.0)\",");
-		required.append("bar:bartype; selection-filter=\"(attr1=value1)\",");
-		required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\"");
-		manifest.put(GENERIC_REQUIRE, required.toString());
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap);
-		state.addBundle(genReq);
-
-		state.resolve();
-		assertTrue("1.0", genCap.isResolved());
-		assertTrue("1.1", genReq.isResolved());
-		GenericSpecification[] genSpecs = genReq.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 3);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("2.2", genSpecs[1].isResolved());
-		assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-		assertTrue("2.3", genSpecs[2].isResolved());
-		assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]);
-
-
-		state.resolve(new BundleDescription[] {genCap});
-
-		assertTrue("3.0", genCap.isResolved());
-		assertTrue("3.1", genReq.isResolved());
-		genSpecs = genReq.getGenericRequires();
-		assertTrue("4.0", genSpecs.length == 3);
-		assertTrue("4.1", genSpecs[0].isResolved());
-		assertEquals("4.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("4.2", genSpecs[1].isResolved());
-		assertEquals("4.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-		assertTrue("4.3", genSpecs[2].isResolved());
-		assertEquals("4.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]);
-
-	}
-
-	public void testGenericsFrags() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer capabililty = new StringBuffer();
-		capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); 
-		capabililty.append("bar:bartype; version=\"1.4.1\"; attr1=\"value1\"; attr2=\"value2\",");
-		capabililty.append("test.types:testtype;"); 
-		capabililty.append(" aVersion:version=\"2.0.0\";");
-		capabililty.append(" aLong:long=\"10000000000\";");
-		capabililty.append(" aDouble:double=\"1.000109\";");
-		capabililty.append(" aUri:uri=\"file:/test\";");
-		capabililty.append(" aSet:set=\"a,b,c,d\";");
-		capabililty.append(" aString:string=\"someString\"");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCap = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability.frag1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "genericCapablity;bundle-version=\"[1.0.0,2.0.0)\"");
-		capabililty = new StringBuffer();
-		capabililty.append("fragmentStuff");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCapFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer required = new StringBuffer();
-		required.append("foo; selection-filter=\"(version>=1.3.0)\",");
-		required.append("bar:bartype; selection-filter=\"(attr1=value1)\",");
-		required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\",");
-		required.append("fragmentStuff");
-		manifest.put(GENERIC_REQUIRE, required.toString());
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap);
-		state.addBundle(genCapFrag);
-		state.addBundle(genReq);
-
-		state.resolve();
-		assertTrue("1.0", genCap.isResolved());
-		assertTrue("1.1", genReq.isResolved());
-		assertTrue("1.2", genCapFrag.isResolved());
-		GenericSpecification[] genSpecs = genReq.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 4);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("2.2", genSpecs[1].isResolved());
-		assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-		assertTrue("2.3", genSpecs[2].isResolved());
-		assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]);
-		assertTrue("2.4", genSpecs[3].isResolved());
-		assertEquals("2.4.1", genSpecs[3].getSupplier(), genCapFrag.getGenericCapabilities()[0]);
-	}
-
-	public void testGenericsIntraFrags() throws BundleException {
-		State state = buildEmptyState();
-		long bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.equinox.generic.frag.a");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "org.eclipse.equinox.generic.host;bundle-version=\"1.0.0\"");
-		manifest.put("Eclipse-GenericCapability", "frag.a");
-		BundleDescription genFragA = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.equinox.generic.host");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription genHost = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.equinox.generic.frag.b");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "org.eclipse.equinox.generic.host;bundle-version=\"1.0.0\"");
-		manifest.put("Eclipse-GenericRequire", "frag.a");
-		BundleDescription genFragB = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genHost);
-		state.addBundle(genFragA);
-		state.addBundle(genFragB);
-
-		state.resolve();
-		assertTrue("1.0", genHost.isResolved());
-		assertTrue("1.1", genFragA.isResolved());
-		assertTrue("1.2", genFragB.isResolved());
-		GenericSpecification[] genSpecs = genFragB.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 1);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genFragA.getGenericCapabilities()[0]);
-	}
-	
-
-	public void testGenericsAliases() throws BundleException {
-		State state = buildEmptyState();
-		Dictionary[] allPlatProps = state.getPlatformProperties();
-		Dictionary platProps = (Dictionary) ((Hashtable)allPlatProps[0]).clone();
-		platProps.put("osgi.genericAliases", "Export-Service:Import-Service:service,TJW-Export:TJW-Import:tjw");
-		state.setPlatformProperties(platProps);
-
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_SERVICE, "org.osgi.service.log.LogService; version=1.2");
-		manifest.put("TJW-Export", "my.great.stuff; aLong:long=5150; aDouble:double=3.14; aVersion:version=1.2.0");
-		BundleDescription genCap = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.IMPORT_SERVICE, "org.osgi.service.log.LogService; selection-filter=(version>=1.0.0)");
-		manifest.put("TJW-Import", "my.great.stuff; selection-filter=(&(aLong<=10000)(aLong>=5000))");
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap);
-		state.addBundle(genReq);
-
-		state.resolve();
-		assertTrue("1.0", genCap.isResolved());
-		assertTrue("1.1", genReq.isResolved());
-		GenericSpecification[] genSpecs = genReq.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 2);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("2.2", genSpecs[1].isResolved());
-		assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-	}
-
-	public void testGenericsOptionalMultiple() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer capabililty = new StringBuffer();
-		capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); 
-		capabililty.append("bar:bartype; version=\"1.4.1\"; attr1=\"value1\"; attr2=\"value2\",");
-		capabililty.append("test.types:testtype;"); 
-		capabililty.append(" aVersion:version=\"2.0.0\";");
-		capabililty.append(" aLong:long=\"10000000000\";");
-		capabililty.append(" aDouble:double=\"1.000109\";");
-		capabililty.append(" aUri:uri=\"file:/test\";");
-		capabililty.append(" aSet:set=\"a,b,c,d\";");
-		capabililty.append(" aString:string=\"someString\",");
-		capabililty.append("test.real.optional:thisisoptional,");
-		capabililty.append("test.real.multiple:thisismultiple; version=1.0,");
-		capabililty.append("test.real.multiple:thisismultiple; version=2.0");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCap = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer required = new StringBuffer();
-		required.append("foo; selection-filter=\"(version>=1.3.0)\",");
-		required.append("bar:bartype; selection-filter=\"(attr1=value1)\",");
-		required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\",");
-		required.append("test.optional:thisisoptional; optional=true,");
-		required.append("test.real.optional:thisisoptional; optional=true,");
-		required.append("test.real.multiple:thisismultiple; multiple=true");
-		manifest.put(GENERIC_REQUIRE, required.toString());
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap);
-		state.addBundle(genReq);
-
-		state.resolve();
-		assertTrue("1.0", genCap.isResolved());
-		assertTrue("1.1", genReq.isResolved());
-		GenericSpecification[] genSpecs = genReq.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 6);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("2.2", genSpecs[1].isResolved());
-		assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-		assertTrue("2.3", genSpecs[2].isResolved());
-		assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]);
-		assertFalse("2.4", genSpecs[3].isResolved());
-		assertTrue("2.5", genSpecs[4].isResolved());
-		assertEquals("2.5.1", genSpecs[4].getSupplier(), genCap.getGenericCapabilities()[3]);
-		assertTrue("2.6", genSpecs[5].isResolved());
-		GenericDescription[] suppliers = genSpecs[5].getSuppliers();
-		assertTrue("2.6.1", suppliers != null && suppliers.length == 2);
-		assertEquals("2.6.2", suppliers[0], genCap.getGenericCapabilities()[5]);
-		assertEquals("2.6.3", suppliers[1], genCap.getGenericCapabilities()[4]);
-	}
-
-	public void testGenericsCycles() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		StringBuffer capabililty = new StringBuffer();
-		capabililty.append("foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\","); 
-		capabililty.append("bar:bartype; version=\"1.4.1\"; attr1=\"value1\"; attr2=\"value2\",");
-		capabililty.append("test.types:testtype;"); 
-		capabililty.append(" aVersion:version=\"2.0.0\";");
-		capabililty.append(" aLong:long=\"10000000000\";");
-		capabililty.append(" aDouble:double=\"1.000109\";");
-		capabililty.append(" aUri:uri=\"file:/test\";");
-		capabililty.append(" aSet:set=\"a,b,c,d\";");
-		capabililty.append(" aString:string=\"someString\"");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		StringBuffer required = new StringBuffer();
-		required.append("foo:cycle; selection-filter=\"(version>=1.3.0)\"");
-		manifest.put(GENERIC_REQUIRE, required.toString());
-		BundleDescription genCap = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapability.frag1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "genericCapablity;bundle-version=\"[1.0.0,2.0.0)\"");
-		capabililty = new StringBuffer();
-		capabililty.append("fragmentStuff");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		BundleDescription genCapFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		capabililty = new StringBuffer();
-		capabililty.append("foo:cycle; version:version=\"2.0\"");
-		manifest.put(GENERIC_CAPABILITY, capabililty.toString());
-		required = new StringBuffer();
-		required.append("foo; selection-filter=\"(version>=1.3.0)\",");
-		required.append("bar:bartype; selection-filter=\"(attr1=value1)\",");
-		required.append("test.types:testtype; selection-filter=\"(&(aVersion>=2.0.0)(aLong>=5555)(aDouble>=1.00)(aUri=file:/test)(aSet=c)(aString=someString))\",");
-		required.append("fragmentStuff");
-		manifest.put(GENERIC_REQUIRE, required.toString());
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap);
-		state.addBundle(genCapFrag);
-		state.addBundle(genReq);
-
-		state.resolve();
-		assertTrue("1.0", genCap.isResolved());
-		assertTrue("1.1", genReq.isResolved());
-		assertTrue("1.2", genCapFrag.isResolved());
-		GenericSpecification[] genSpecs = genReq.getGenericRequires();
-		assertTrue("2.0", genSpecs.length == 4);
-		assertTrue("2.1", genSpecs[0].isResolved());
-		assertEquals("2.1.1", genSpecs[0].getSupplier(), genCap.getGenericCapabilities()[0]);
-		assertTrue("2.2", genSpecs[1].isResolved());
-		assertEquals("2.2.1", genSpecs[1].getSupplier(), genCap.getGenericCapabilities()[1]);
-		assertTrue("2.3", genSpecs[2].isResolved());
-		assertEquals("2.3.1", genSpecs[2].getSupplier(), genCap.getGenericCapabilities()[2]);
-		assertTrue("2.4", genSpecs[3].isResolved());
-		assertEquals("2.4.1", genSpecs[3].getSupplier(), genCapFrag.getGenericCapabilities()[0]);
-		genSpecs = genCap.getGenericRequires();
-		assertTrue("3.0", genSpecs.length == 1);
-		assertTrue("3.1", genSpecs[0].isResolved());
-		assertEquals("3.1.1", genSpecs[0].getSupplier(), genReq.getGenericCapabilities()[0]);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/NewResolverTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/NewResolverTest.java
deleted file mode 100644
index 16df46c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/NewResolverTest.java
+++ /dev/null
@@ -1,60 +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.osgi.tests.services.resolver;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-
-public class NewResolverTest extends AbstractStateTest {
-
-	public NewResolverTest(String testName) {
-		super(testName);
-	}
-	
-	public static Test suite() {
-		return new TestSuite(NewResolverTest.class);
-	}
-	
-	public void testSkeleton() throws BundleException {
-		State state = buildEmptyState();
-		state.resolve();
-	}
-	
-	public void testBasicScenario1() throws BundleException {
-		State state = buildEmptyState();
-		
-		final String MAN_A = "Bundle-SymbolicName: A\n" + 
-		                     "Export-Package: servlet; specification-version=2.1";
-		BundleDescription bA = state.getFactory().createBundleDescription(parseManifest(MAN_A),
-																		"org.eclipse.basic1A", 0);
-		state.addBundle(bA);
-		
-		final String MAN_B = "Bundle-SymbolicName: B\n" + 
-        					 "Import-Package: servlet; specification-version=2.1";
-		BundleDescription bB = state.getFactory().createBundleDescription(parseManifest(MAN_B),
-													"org.eclipse.basic1B", 1);
-		state.addBundle(bB);
-
-		state.resolve();
-		
-		BundleDescription b0 = state.getBundle(0);
-		assertNotNull("0.1", b0);
-		assertFullyResolved("0.2", b0);
-		
-		BundleDescription b1 = state.getBundle(1);
-		assertNotNull("0.3", b1);
-		assertFullyResolved("0.4", b1);
-	}
-}
-
-
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/PlatformAdminTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/PlatformAdminTest.java
deleted file mode 100644
index c8265d6..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/PlatformAdminTest.java
+++ /dev/null
@@ -1,376 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.io.*;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.internal.baseadaptor.StateManager;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-
-public class PlatformAdminTest extends AbstractStateTest {
-	private static final String GENERIC_REQUIRE = "Eclipse-GenericRequire"; //$NON-NLS-1$
-	private static final String GENERIC_CAPABILITY = "Eclipse-GenericCapability"; //$NON-NLS-1$
-
-	public static Test suite() {
-		return new TestSuite(PlatformAdminTest.class);
-	}
-
-	public PlatformAdminTest(String name) {
-		super(name);
-	}
-
-	private State storeAndRetrieve(State toStore) throws IOException {
-		ByteArrayOutputStream baos = new ByteArrayOutputStream();
-		toStore.getFactory().writeState(toStore, baos);
-		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-		return toStore.getFactory().readState(bais);
-	}
-
-	public void testCache() throws IOException, BundleException {
-		State originalState = buildSimpleState();
-		State retrievedState = storeAndRetrieve(originalState);
-		assertEquals("0.9", 0, retrievedState.getChanges().getChanges().length);
-		assertIdentical("1.0", originalState, retrievedState);
-		originalState.resolve();
-		retrievedState = storeAndRetrieve(originalState);
-		assertIdentical("2.0", originalState, retrievedState);
-	}
-
-	public void testClone() throws BundleException {
-		State original = buildSimpleState();
-		State newState = original.getFactory().createState(original);
-		assertEquals("1", original, newState);
-		original = buildComplexState();
-		newState = original.getFactory().createState(original);
-		assertEquals("2", original, newState);
-	}
-
-	public void testBug205270() throws BundleException {
-		State state = buildSimpleState();
-		Hashtable manifest = new Hashtable();
-		int id = 0;
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.BUNDLE_NATIVECODE, "libwrapper-linux-x86-32.so; wrapper-linux-x86-32; osname=linux; processor=x86");
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-		try {
-			BundleDescription aPrime = state.getFactory().createBundleDescription(a);
-			assertEquals("Copy is not equal", a, aPrime);
-		} catch (Throwable t) {
-			fail("Unexpected error while cloning a BundleDescription", t);
-		}
-	}
-
-	public void testBug184127() throws BundleException {
-		File resolverData = getContext().getDataFile("resolverData");
-		resolverData.mkdirs();
-
-		File stateFile = new File(resolverData, ".state");
-		File lazyFile = new File(resolverData, ".lazy");
-		stateFile.delete();
-		lazyFile.delete();
-		StateManager sm = new StateManager(stateFile, lazyFile, getContext());
-		State systemState = sm.readSystemState();
-		assertNull("SystemState is not null", systemState);
-		systemState = sm.createSystemState();
-
-		Hashtable manifest = new Hashtable();
-		int id = 0;
-		manifest = new Hashtable();
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription a = systemState.getFactory().createBundleDescription(systemState, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b, c");
-		manifest.put(Constants.REQUIRE_BUNDLE, "a");
-		manifest.put(Constants.IMPORT_PACKAGE, "afrag2");
-		BundleDescription b = systemState.getFactory().createBundleDescription(systemState, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "afrag2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "afrag2");
-		manifest.put(Constants.FRAGMENT_HOST, "a");
-		manifest.put(Constants.IMPORT_PACKAGE, "c");
-		BundleDescription afrag2 = systemState.getFactory().createBundleDescription(systemState, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "afrag1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "a");
-		manifest.put(Constants.IMPORT_PACKAGE, "b");
-		BundleDescription afrag1 = systemState.getFactory().createBundleDescription(systemState, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		systemState.addBundle(afrag1);
-		systemState.addBundle(afrag2);
-		systemState.addBundle(a);
-		systemState.addBundle(b);
-
-		systemState.resolve();
-
-		assertTrue("aFrag1 is not resolved", afrag1.isResolved());
-		assertTrue("aFrag2 is not resolved", afrag2.isResolved());
-		assertTrue("a is not resolved", a.isResolved());
-		assertTrue("b is not resolved", b.isResolved());
-
-		try {
-			sm.shutdown(stateFile, lazyFile);
-		} catch (IOException e) {
-			fail("failed to shudown StateManager", e);
-		}
-
-		sm = new StateManager(stateFile, lazyFile, getContext());
-		systemState = sm.readSystemState();
-		assertNotNull("SystemState is null", systemState);
-		b = systemState.getBundle("b", null);
-		ExportPackageDescription[] exports = null;
-		try {
-			exports = b.getExportPackages();
-		} catch (Throwable e) {
-			fail("Unexpected exception getting exports", e);
-		}
-		assertNotNull("exports is null", exports);
-		assertEquals("Wrong number of exports", 2, exports.length);
-	}
-
-	public void testBug241128_01() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		int id = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "a; bundle-version=\"[1.0.0, 2.0.0)\"");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		state.addBundle(a1);
-		state.addBundle(b);
-		state.resolve(true);
-
-		assertTrue("Bundle a1 is not resolved", a1.isResolved());
-		assertTrue("Bundle b is not resolved", b.isResolved());
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), a1.getBundleId());
-		state.updateBundle(a2);
-
-		state.resolve(true);
-		assertTrue("Bundle a2 is not resolved", a2.isResolved());
-		assertFalse("Bundle b is resolved", b.isResolved());
-
-		VersionConstraint[] unsatisified = state.getStateHelper().getUnsatisfiedLeaves(state.getBundles());
-		assertEquals("Wrong number of unsatisified leaves", 1, unsatisified.length);
-		assertEquals("Wrong unsatisfied constraint", b.getRequiredBundles()[0], unsatisified[0]);
-	}
-
-	public void testBug241128_02() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		int id = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "a; bundle-version=\"[1.0.0, 2.0.0)\"");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		state.addBundle(a1);
-		state.addBundle(b);
-		state.resolve(true);
-
-		assertTrue("Bundle a1 is not resolved", a1.isResolved());
-		assertTrue("Bundle b is not resolved", b.isResolved());
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), a1.getBundleId());
-		state.updateBundle(a2);
-
-		state.resolve(true);
-		assertTrue("Bundle a2 is not resolved", a2.isResolved());
-		assertFalse("Bundle b is resolved", b.isResolved());
-
-		VersionConstraint[] unsatisified = state.getStateHelper().getUnsatisfiedLeaves(state.getBundles());
-		assertEquals("Wrong number of unsatisified leaves", 1, unsatisified.length);
-		assertEquals("Wrong unsatisfied constraint", b.getHost(), unsatisified[0]);
-	}
-
-	public void testBug241128_03() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		int id = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; version=1.0");
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "a; version=\"[1.0.0, 2.0.0)\"");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		state.addBundle(a1);
-		state.addBundle(b);
-		state.resolve(true);
-
-		assertTrue("Bundle a1 is not resolved", a1.isResolved());
-		assertTrue("Bundle b is not resolved", b.isResolved());
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; version=2.0");
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), a1.getBundleId());
-		state.updateBundle(a2);
-
-		state.resolve(true);
-		assertTrue("Bundle a2 is not resolved", a2.isResolved());
-		assertFalse("Bundle b is resolved", b.isResolved());
-
-		VersionConstraint[] unsatisified = state.getStateHelper().getUnsatisfiedLeaves(state.getBundles());
-		assertEquals("Wrong number of unsatisified leaves", 1, unsatisified.length);
-		assertEquals("Wrong unsatisfied constraint", b.getImportPackages()[0], unsatisified[0]);
-	}
-
-	public void testBug241128_04() throws BundleException {
-		State state = buildEmptyState();
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put("osgi.os", "win32");
-		props[0].put("osgi.arch", "x86");
-		state.setPlatformProperties(props);
-
-		Hashtable manifest = new Hashtable();
-		int id = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.BUNDLE_NATIVECODE, "Bundle-NativeCode: nativefile1.txt;processor=x86;osname=win32");
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++);
-
-		state.addBundle(a1);
-		state.resolve(true);
-
-		assertTrue("Bundle a1 is not resolved", a1.isResolved());
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		manifest.put(Constants.BUNDLE_NATIVECODE, "Bundle-NativeCode: nativefile1.txt;processor=linux;osname=gtk");
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), a1.getBundleId());
-		state.updateBundle(a2);
-
-		state.resolve(true);
-		assertFalse("Bundle a2 is resolved", a2.isResolved());
-
-		VersionConstraint[] unsatisified = state.getStateHelper().getUnsatisfiedConstraints(a2);
-		assertEquals("Wrong number of unsatisified leaves", 1, unsatisified.length);
-		assertEquals("Wrong unsatisfied constraint", a2.getNativeCodeSpecification(), unsatisified[0]);
-
-		unsatisified = state.getStateHelper().getUnsatisfiedLeaves(state.getBundles());
-		assertEquals("Wrong number of unsatisified leaves", 1, unsatisified.length);
-		assertEquals("Wrong unsatisfied constraint", a2.getNativeCodeSpecification(), unsatisified[0]);
-	}
-
-	public void testGenericsBasics() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(GENERIC_CAPABILITY, "foo; version=\"1.3.1\"; attr1=\"value1\"; attr2=\"value2\"");
-		BundleDescription genCap1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericRequire");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(GENERIC_REQUIRE, "foo; selection-filter=\"(version>=1.3.0)\"");
-		BundleDescription genReq = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(genCap1);
-		state.addBundle(genReq);
-
-		state.resolve();
-
-		assertTrue("Bundle genCap1 is not resolved", genCap1.isResolved());
-		assertTrue("Bundle genReq is not resolved", genReq.isResolved());
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "genericCapablity");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0");
-		manifest.put(GENERIC_CAPABILITY, "foo; version=\"1.0\"; attr1=\"value1\"; attr2=\"value2\"");
-		BundleDescription genCap2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), genCap1.getBundleId());
-
-		state.updateBundle(genCap2);
-
-		state.resolve(true);
-		assertTrue("Bundle genCap2 is not resolved", genCap2.isResolved());
-		assertFalse("Bundle genReq is resolved", genReq.isResolved());
-
-		VersionConstraint[] unsatisified = state.getStateHelper().getUnsatisfiedLeaves(state.getBundles());
-		assertEquals("Wrong number of unsatisified leaves", 1, unsatisified.length);
-		assertEquals("Wrong unsatisfied constraint", genReq.getGenericRequires()[0], unsatisified[0]);
-	}
-}
-//TODO tests to enable
-//testFragmentUpdateNoVersionChanged()
-//testFragmentUpdateVersionChanged()
-//testHostUpdateNoVersionChanged()
-//testHostUpdateVersionChanged()
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/R4ResolverTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/R4ResolverTest.java
deleted file mode 100644
index 26d5a3e..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/R4ResolverTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import junit.framework.*;
-import org.eclipse.osgi.tests.resolver.*;
-
-public class R4ResolverTest extends TestCase {
-
-	public R4ResolverTest(String testName) {
-		super(testName);
-	}
-
-	public static Test suite() {
-		TestSuite suite = new TestSuite(R4ResolverTest.class.getName());
-		suite.addTest(new TestSuite(TestAttributes_001.class));
-		suite.addTest(new TestSuite(TestBSN_001.class));
-		suite.addTest(new TestSuite(TestCycle_001.class));
-		suite.addTest(new TestSuite(TestCycle_002.class));
-		suite.addTest(new TestSuite(TestCycle_003.class));
-		suite.addTest(new TestSuite(TestCycle_004.class));
-		suite.addTest(new TestSuite(TestCycle_005.class));
-		suite.addTest(new TestSuite(TestCycle_006.class));
-		suite.addTest(new TestSuite(TestDynamic_001.class));
-		suite.addTest(new TestSuite(TestDynamic_002.class));
-		suite.addTest(new TestSuite(TestDynamic_003.class));
-		suite.addTest(new TestSuite(TestDynamic_004.class));
-		suite.addTest(new TestSuite(TestDynamic_005.class));
-		suite.addTest(new TestSuite(TestDynamic_006.class));
-		suite.addTest(new TestSuite(TestGenerated_001.class));
-		suite.addTest(new TestSuite(TestGrouping_001.class));
-		suite.addTest(new TestSuite(TestGrouping_002.class));
-		suite.addTest(new TestSuite(TestGrouping_003.class));
-		suite.addTest(new TestSuite(TestGrouping_006.class));
-		suite.addTest(new TestSuite(TestGrouping_008.class));
-		suite.addTest(new TestSuite(TestOptional_001.class));
-		suite.addTest(new TestSuite(TestOptional_002.class));
-		suite.addTest(new TestSuite(TestPropagation_001.class));
-		suite.addTest(new TestSuite(TestPropagation_003.class));
-		suite.addTest(new TestSuite(TestRFC79_001.class));
-		suite.addTest(new TestSuite(TestRFC79_002.class));
-		suite.addTest(new TestSuite(TestRFC79_003.class));
-		suite.addTest(new TestSuite(TestRFC79_004.class));
-		suite.addTest(new TestSuite(TestRFC79_005.class));
-		suite.addTest(new TestSuite(TestRFC79_006.class));
-		suite.addTest(new TestSuite(TestRFC79_007.class));
-		suite.addTest(new TestSuite(TestVersion_001.class));
-		suite.addTest(new TestSuite(TestVersion_002.class));
-		suite.addTest(new TestSuite(TestVersion_003.class));
-		return suite;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SimplePlatformAdmin.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SimplePlatformAdmin.java
deleted file mode 100644
index 10b6aff..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SimplePlatformAdmin.java
+++ /dev/null
@@ -1,22 +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.osgi.tests.services.resolver;
-
-import java.io.File;
-import org.eclipse.osgi.internal.baseadaptor.StateManager;
-import org.osgi.framework.BundleContext;
-
-public class SimplePlatformAdmin extends StateManager {
-	public SimplePlatformAdmin(File bundleRootDir, BundleContext context) {
-		super(new File(bundleRootDir, ".state"), new File(bundleRootDir, ".lazy"), context); //$NON-NLS-1$//$NON-NLS-2$
-		createSystemState();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateComparisonTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateComparisonTest.java
deleted file mode 100644
index 29c48fe..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateComparisonTest.java
+++ /dev/null
@@ -1,91 +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.osgi.tests.services.resolver;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-
-public class StateComparisonTest extends AbstractStateTest {
-
-	public StateComparisonTest(String testName) {
-		super(testName);
-	}
-
-	public void testAddition() throws BundleException {
-		State state1 = buildEmptyState();
-		State state2 = state1.getFactory().createState(state1);
-		StateDelta delta = state1.compare(state2);
-		assertEquals("1.0", 0, delta.getChanges().length);
-		delta = state2.compare(state1);
-		assertEquals("1.1", 0, delta.getChanges().length);
-		String A_MANIFEST = "Bundle-SymbolicName: org.eclipse.a\nBundle-Version: 1.0\n";
-		BundleDescription bundleA = state2.getFactory().createBundleDescription(parseManifest(A_MANIFEST), "org.eclipse.a", -1);
-		assertTrue("2.0", state2.addBundle(bundleA));
-		delta = state1.compare(state2);
-		assertEquals("2.1", 1, delta.getChanges().length);
-		BundleDelta removal = delta.getChanges()[0];
-		assertEquals("2.2", bundleA, removal.getBundle());
-		assertEquals("2.3", BundleDelta.REMOVED, removal.getType());
-		delta = state2.compare(state1);
-		assertEquals("3.1", 1, delta.getChanges().length);
-		BundleDelta addition = delta.getChanges()[0];
-		assertEquals("3.2", bundleA, addition.getBundle());
-		assertEquals("3.3", BundleDelta.ADDED, addition.getType());
-	}
-
-	public void testRemoval() throws BundleException {
-		State state1 = buildSimpleState();
-		State state2 = state1.getFactory().createState(state1);
-		StateDelta delta = state1.compare(state2);
-		assertEquals("1.0", 0, delta.getChanges().length);
-		delta = state2.compare(state1);
-		assertEquals("1.1", 0, delta.getChanges().length);
-		BundleDescription bundle1 = state1.getBundleByLocation("org.eclipse.b1");
-		assertNotNull("1.9", bundle1);
-		assertTrue("2.0", state1.removeBundle(bundle1));
-		delta = state1.compare(state2);
-		assertEquals("2.1", 1, delta.getChanges().length);
-		BundleDelta removal = delta.getChanges()[0];
-		assertEquals("2.2", bundle1, removal.getBundle());
-		assertEquals("2.3", BundleDelta.REMOVED, removal.getType());
-		delta = state2.compare(state1);
-		assertEquals("3.1", 1, delta.getChanges().length);
-		BundleDelta addition = delta.getChanges()[0];
-		assertEquals("3.2", bundle1, addition.getBundle());
-		assertEquals("3.3", BundleDelta.ADDED, addition.getType());
-	}
-
-	public void testUpdate() throws BundleException {
-		State state1 = buildSimpleState();
-		State state2 = state1.getFactory().createState(state1);
-		StateDelta delta = state1.compare(state2);
-		assertEquals("1.0", 0, delta.getChanges().length);
-		delta = state2.compare(state1);
-		assertEquals("1.1", 0, delta.getChanges().length);
-		assertNotNull("1.9", state1.getBundleByLocation("org.eclipse.b1"));
-		String A_MANIFEST = "Bundle-SymbolicName: org.eclipse.b1\nBundle-Version: 2.0\n";
-		BundleDescription bundle1 = state1.getFactory().createBundleDescription(parseManifest(A_MANIFEST), "org.eclipse.b1", 1);
-		assertTrue("2.0", state1.updateBundle(bundle1));
-		delta = state1.compare(state2);
-		assertEquals("2.1", 1, delta.getChanges().length);
-		BundleDelta update = delta.getChanges()[0];
-		assertEquals("2.2", bundle1, update.getBundle());
-		assertEquals("2.3", BundleDelta.UPDATED, update.getType());
-		delta = state2.compare(state1);
-		assertEquals("3.1", 0, delta.getChanges().length);
-	}
-
-	public static Test suite() {
-		return new TestSuite(StateComparisonTest.class);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateCycleTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateCycleTest.java
deleted file mode 100644
index c784f90..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateCycleTest.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-
-public class StateCycleTest extends AbstractStateTest {
-
-	public static Test suite() {
-		return new TestSuite(StateCycleTest.class);
-	}
-
-	public StateCycleTest(String testName) {
-		super(testName);
-	}
-
-	public void testCycle1() throws BundleException {
-		State state1 = buildEmptyState();
-		String A_MANIFEST = "Bundle-SymbolicName: org.eclipse.a\nBundle-Version: 1.0\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(A_MANIFEST), "org.eclipse.a", 1));
-		String B_MANIFEST = "Bundle-SymbolicName: org.eclipse.b\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.c\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(B_MANIFEST), "org.eclipse.b", 2));
-		String C_MANIFEST = "Bundle-SymbolicName: org.eclipse.c\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.b\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(C_MANIFEST), "org.eclipse.c", 3));
-		String D_MANIFEST = "Bundle-SymbolicName: org.eclipse.d\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.c\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(D_MANIFEST), "org.eclipse.d", 4));
-		String E_MANIFEST = "Bundle-SymbolicName: org.eclipse.e\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.b; optional=true\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(E_MANIFEST), "org.eclipse.e", 5));
-		String F_MANIFEST = "Bundle-SymbolicName: org.eclipse.f\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.f\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(F_MANIFEST), "org.eclipse.f", 6));
-		State state = state1;
-		state.resolve();
-		BundleDescription bundleA = state.getBundleByLocation("org.eclipse.a");
-		BundleDescription bundleB = state.getBundleByLocation("org.eclipse.b");
-		BundleDescription bundleC = state.getBundleByLocation("org.eclipse.c");
-		BundleDescription bundleD = state.getBundleByLocation("org.eclipse.d");
-		BundleDescription bundleE = state.getBundleByLocation("org.eclipse.e");
-		BundleDescription bundleF = state.getBundleByLocation("org.eclipse.f");
-		BundleDescription[] allBundles = state.getBundles();
-		assertContains("0.5", allBundles, bundleA);
-		assertContains("0.6", allBundles, bundleB);
-		assertContains("0.7", allBundles, bundleC);
-		assertContains("0.8", allBundles, bundleD);
-		assertContains("0.9", allBundles, bundleE);
-		assertContains("0.10", allBundles, bundleF);
-
-		// cycles must resolve now
-		assertTrue("1.0", bundleA.isResolved());
-		assertTrue("2.0", bundleB.isResolved());
-		assertTrue("3.0", bundleC.isResolved());
-		assertTrue("4.0", bundleD.isResolved());
-		assertTrue("5.0", bundleE.isResolved());
-		assertTrue("6.0", bundleF.isResolved());
-	}
-
-	public void testCycle2() throws BundleException {
-		State state1 = buildEmptyState();
-		String A_MANIFEST = "Bundle-SymbolicName: org.eclipse.a\nBundle-Version: 1.0\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(A_MANIFEST), "org.eclipse.a", 1));
-		String B_MANIFEST = "Bundle-SymbolicName: org.eclipse.b\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.c\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(B_MANIFEST), "org.eclipse.b", 2));
-		String C_MANIFEST = "Bundle-SymbolicName: org.eclipse.c\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.d\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(C_MANIFEST), "org.eclipse.c", 3));
-		String D_MANIFEST = "Bundle-SymbolicName: org.eclipse.d\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.b\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(D_MANIFEST), "org.eclipse.d", 4));
-		String E_MANIFEST = "Bundle-SymbolicName: org.eclipse.e\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.a,org.eclipse.b; optional=true\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(E_MANIFEST), "org.eclipse.e", 5));
-		String F_MANIFEST = "Bundle-SymbolicName: org.eclipse.f\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.f\n";
-		state1.addBundle(state1.getFactory().createBundleDescription(parseManifest(F_MANIFEST), "org.eclipse.f", 6));
-		State state = state1;
-		state.resolve();
-		BundleDescription bundleA = state.getBundleByLocation("org.eclipse.a");
-		BundleDescription bundleB = state.getBundleByLocation("org.eclipse.b");
-		BundleDescription bundleC = state.getBundleByLocation("org.eclipse.c");
-		BundleDescription bundleD = state.getBundleByLocation("org.eclipse.d");
-		BundleDescription bundleE = state.getBundleByLocation("org.eclipse.e");
-		BundleDescription bundleF = state.getBundleByLocation("org.eclipse.f");
-		BundleDescription[] allBundles = state.getBundles();
-		assertContains("0.5", allBundles, bundleA);
-		assertContains("0.6", allBundles, bundleB);
-		assertContains("0.7", allBundles, bundleC);
-		assertContains("0.8", allBundles, bundleD);
-		assertContains("0.9", allBundles, bundleE);
-		assertContains("0.10", allBundles, bundleF);
-
-		// cycles must resolve now
-		assertTrue("1.0", bundleA.isResolved());
-		assertTrue("2.0", bundleB.isResolved());
-		assertTrue("3.0", bundleC.isResolved());
-		assertTrue("4.0", bundleD.isResolved());
-		assertTrue("5.0", bundleE.isResolved());
-		assertTrue("6.0", bundleF.isResolved());
-
-	}
-
-	public void testCycle3() throws BundleException {
-		State state = buildEmptyState();
-		String A_MANIFEST = "Bundle-SymbolicName: org.eclipse.a\nBundle-Version: 1.0\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(A_MANIFEST), "org.eclipse.a", 1));
-		String B_MANIFEST = "Bundle-SymbolicName: org.eclipse.b\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.c\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(B_MANIFEST), "org.eclipse.b", 2));
-		String C_MANIFEST = "Bundle-SymbolicName: org.eclipse.c\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.d\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(C_MANIFEST), "org.eclipse.c", 3));
-		String D_MANIFEST = "Bundle-SymbolicName: org.eclipse.d\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.b\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(D_MANIFEST), "org.eclipse.d", 4));
-
-		state.resolve();
-		BundleDescription bundleC = state.getBundleByLocation("org.eclipse.c");
-		BundleDescription bundleB = state.getBundleByLocation("org.eclipse.b");
-		BundleDescription bundleA = state.getBundleByLocation("org.eclipse.a");
-		BundleDescription bundleD = state.getBundleByLocation("org.eclipse.d");
-		BundleDescription[] allBundles = state.getBundles();
-		assertContains("0.5", allBundles, bundleC);
-		assertContains("0.6", allBundles, bundleB);
-		assertContains("0.7", allBundles, bundleA);
-		assertContains("0.8", allBundles, bundleD);
-
-		// cycles must resolve now
-		assertTrue("0.9", bundleA.isResolved());
-		assertTrue("1.0", bundleC.isResolved());
-		assertTrue("2.0", bundleB.isResolved());
-		assertTrue("3.0", bundleD.isResolved());
-	}
-
-	public void testCycle4() throws BundleException {
-		State state = buildEmptyState();
-		String A_MANIFEST = "Bundle-SymbolicName: org.eclipse.a\nBundle-Version: 1.0\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(A_MANIFEST), "org.eclipse.a", 1));
-		String B_MANIFEST = "Bundle-SymbolicName: org.eclipse.b\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.c\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(B_MANIFEST), "org.eclipse.b", 2));
-		String C_MANIFEST = "Bundle-SymbolicName: org.eclipse.c\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.d\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(C_MANIFEST), "org.eclipse.c", 3));
-		String D_MANIFEST = "Bundle-SymbolicName: org.eclipse.d\nBundle-Version: 1.0\nRequire-Bundle: org.eclipse.b; optional=true\n";
-		state.addBundle(state.getFactory().createBundleDescription(parseManifest(D_MANIFEST), "org.eclipse.d", 4));
-
-		state.resolve();
-		BundleDescription bundleC = state.getBundleByLocation("org.eclipse.c");
-		BundleDescription bundleB = state.getBundleByLocation("org.eclipse.b");
-		BundleDescription bundleA = state.getBundleByLocation("org.eclipse.a");
-		BundleDescription bundleD = state.getBundleByLocation("org.eclipse.d");
-		BundleDescription[] allBundles = state.getBundles();
-		assertContains("0.5", allBundles, bundleC);
-		assertContains("0.6", allBundles, bundleB);
-		assertContains("0.7", allBundles, bundleA);
-		assertContains("0.8", allBundles, bundleD);
-
-		// cycles must resolve now
-		assertTrue("0.9", bundleA.isResolved());
-		assertTrue("1.0", bundleC.isResolved());
-		assertTrue("2.0", bundleB.isResolved());
-		assertTrue("3.0", bundleD.isResolved());
-	}
-
-	public void test185285() throws BundleException {
-		// if two versions of the same bundle export and import two different packages at the same version
-		// then we should resolve both sets of imports to the first bundle installed.
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "X");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "foo; version=\"1.0.0\", bar; version=\"1.0.0\"");
-		manifest.put(Constants.IMPORT_PACKAGE, "foo, bar");
-		BundleDescription a_100 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "X");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1");
-		manifest.put(Constants.EXPORT_PACKAGE, "foo; version=\"1.0.0\", bar; version=\"1.0.0\"");
-		manifest.put(Constants.IMPORT_PACKAGE, "foo, bar");
-		BundleDescription a_101 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(a_100);
-		state.addBundle(a_101);
-
-		state.resolve();
-		assertTrue("1.0", a_100.isResolved());
-		assertTrue("1.1", a_101.isResolved());
-		ExportPackageDescription[] selectedExportsA100 = a_100.getSelectedExports();
-		ExportPackageDescription[] selectedExportsA101 = a_101.getSelectedExports();
-		assertTrue("2.0", selectedExportsA100.length == 2);
-		assertTrue("2.1", selectedExportsA101.length == 0);
-		ExportPackageDescription[] resolvedImportsA100 = a_100.getResolvedImports();
-		ExportPackageDescription[] resolvedImportsA101 = a_100.getResolvedImports();
-		assertTrue("3.0", resolvedImportsA100.length == 2);
-		assertTrue("3.1", resolvedImportsA101.length == 2);
-		for (int i = 0; i < resolvedImportsA100.length; i++) {
-			assertTrue("3.2.1." + i, selectedExportsA100[i] == resolvedImportsA100[i]);
-			assertTrue("3.2.1." + i, selectedExportsA100[i] == resolvedImportsA101[i]);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateResolverTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateResolverTest.java
deleted file mode 100644
index 57b1ed7..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateResolverTest.java
+++ /dev/null
@@ -1,3856 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.framework.util.Headers;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-
-public class StateResolverTest extends AbstractStateTest {
-	public static Test suite() {
-		return new TestSuite(StateResolverTest.class);
-	}
-
-	public StateResolverTest(String name) {
-		super(name);
-	}
-
-	/**
-	 * Tests adding 3 new bundles to an already resolved state and then
-	 * resolving only one of the bundles. The result should be all 3 added
-	 * bundles being resolved.
-	 *  
-	 */
-	public void testAdd3Resolve1() throws BundleException {
-		State state = buildInitialState();
-		StateDelta delta = state.resolve();
-		BundleDelta[] deltas = delta.getChanges();
-		BundleDescription b0 = state.getBundle(0);
-		assertNotNull("0.1", b0); //$NON-NLS-1$
-		assertFullyResolved("0.2", b0); //$NON-NLS-1$
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p1; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b1 = null;
-		try {
-			b1 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b1", 1); //$NON-NLS-1$
-			state.removeBundle(1);
-			state.addBundle(b1);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p2; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b2 = null;
-		try {
-			b2 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b2", 2); //$NON-NLS-1$
-			state.removeBundle(2);
-			state.addBundle(b2);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p2"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p3; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b3 = null;
-		try {
-			b3 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b3", 3); //$NON-NLS-1$
-			state.removeBundle(3);
-			state.addBundle(b3);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		delta = state.resolve(new BundleDescription[] {state.getBundle(1)});
-		deltas = delta.getChanges();
-		assertEquals("1.0", 3, deltas.length); //$NON-NLS-1$
-		Map deltasMap = new HashMap();
-		for (int i = 0; i < deltas.length; i++)
-			deltasMap.put(new Long(deltas[i].getBundle().getBundleId()), deltas[i]);
-		assertNotNull("1.1", deltasMap.get(new Long(1))); //$NON-NLS-1$
-		assertNotNull("1.2", deltasMap.get(new Long(2))); //$NON-NLS-1$
-		assertNotNull("1.3", deltasMap.get(new Long(3))); //$NON-NLS-1$
-		assertEquals("2.1", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(1))).getType()); //$NON-NLS-1$
-		assertEquals("2.2", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(2))).getType()); //$NON-NLS-1$
-		assertEquals("2.3", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(3))).getType()); //$NON-NLS-1$
-	}
-
-	public void testBasicResolution() throws BundleException {
-		State state = buildSimpleState();
-		StateDelta delta = state.resolve();
-		BundleDescription b1 = state.getBundle(1);
-		BundleDescription b2 = state.getBundle(2);
-		BundleDescription b3 = state.getBundle(3);
-		assertNotNull("0.1", b1); //$NON-NLS-1$
-		assertNotNull("0.2", b2); //$NON-NLS-1$
-		assertNotNull("0.3", b3); //$NON-NLS-1$
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 3, changes.length); //$NON-NLS-1$
-		BundleDelta[] additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("2.0", 3, additions.length); //$NON-NLS-1$
-		BundleDelta[] resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("3.0", 2, resolutions.length); //$NON-NLS-1$
-		Map deltasMap = new HashMap();
-		for (int i = 0; i < resolutions.length; i++)
-			deltasMap.put(resolutions[i].getBundle().getSymbolicName(), resolutions[i]);
-		assertNotNull("3.1", deltasMap.get(b1.getSymbolicName())); //$NON-NLS-1$
-		assertNotNull("3.2", deltasMap.get(b2.getSymbolicName())); //$NON-NLS-1$
-		// TODO why do we expect unresolved deltas here when the bundle was not resolved in the first place?
-		//BundleDelta[] unresolutions = delta.getChanges(BundleDelta.UNRESOLVED, false);
-		//assertEquals("4.0", 1, unresolutions.length);
-		//assertEquals("4.1", unresolutions[0].getBundle(), b3);
-		assertFullyResolved("5.1", b1); //$NON-NLS-1$
-		assertFullyResolved("5.2", b2); //$NON-NLS-1$
-		assertFullyUnresolved("5.3", b3); //$NON-NLS-1$
-	}
-
-	public void testComplexResolution() throws BundleException {
-		State state = buildComplexState();
-		StateDelta delta = state.resolve();
-		BundleDescription b1 = state.getBundle("org.eclipse.b1", Version.parseVersion("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b2 = state.getBundle("org.eclipse.b2", Version.parseVersion("2.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b3 = state.getBundle("org.eclipse.b3", Version.parseVersion("2.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b4 = state.getBundle("org.eclipse.b4", Version.parseVersion("2.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b5 = state.getBundle("org.eclipse.b5", Version.parseVersion("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b6 = state.getBundle("org.eclipse.b6", Version.parseVersion("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNotNull("0.1", b1); //$NON-NLS-1$
-		assertNotNull("0.2", b2); //$NON-NLS-1$
-		assertNotNull("0.3", b3); //$NON-NLS-1$
-		assertNotNull("0.4", b4); //$NON-NLS-1$
-		assertNotNull("0.5", b5); //$NON-NLS-1$
-		assertNotNull("0.6", b6); //$NON-NLS-1$
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 6, changes.length); //$NON-NLS-1$
-		BundleDelta[] additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("2.0", 6, additions.length); //$NON-NLS-1$
-		BundleDelta[] resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("3.0", 6, resolutions.length); //$NON-NLS-1$
-		Map deltasMap = new HashMap();
-		for (int i = 0; i < resolutions.length; i++)
-			deltasMap.put(resolutions[i].getBundle().getSymbolicName(), resolutions[i]);
-		assertNotNull("3.1", deltasMap.get(b1.getSymbolicName())); //$NON-NLS-1$
-		assertNotNull("3.2", deltasMap.get(b2.getSymbolicName())); //$NON-NLS-1$
-		assertNotNull("3.3", deltasMap.get(b3.getSymbolicName())); //$NON-NLS-1$
-		assertNotNull("3.4", deltasMap.get(b4.getSymbolicName())); //$NON-NLS-1$
-		assertNotNull("3.5", deltasMap.get(b5.getSymbolicName())); //$NON-NLS-1$
-		assertNotNull("3.6", deltasMap.get(b6.getSymbolicName())); //$NON-NLS-1$
-		BundleDelta[] unresolutions = delta.getChanges(BundleDelta.UNRESOLVED, false);
-		assertEquals("4.0", 0, unresolutions.length); //$NON-NLS-1$
-		assertFullyResolved("5.1", b1); //$NON-NLS-1$
-		assertFullyResolved("5.2", b2); //$NON-NLS-1$
-		assertFullyResolved("5.3", b3); //$NON-NLS-1$
-		assertFullyResolved("5.4", b4); //$NON-NLS-1$
-		assertFullyResolved("5.5", b5); //$NON-NLS-1$
-		assertFullyResolved("5.6", b6); //$NON-NLS-1$
-	}
-
-	public void testDependentBundles() throws BundleException {
-		State state = buildComplexState();
-		state.resolve();
-		BundleDescription[] dependent;
-		dependent = platformAdmin.getStateHelper().getDependentBundles(new BundleDescription[] {state.getBundle(2)});
-		assertEquals("1.0", 1, dependent.length); //$NON-NLS-1$
-		assertEquals("1.1", state.getBundle(2), dependent[0]); //$NON-NLS-1$
-		dependent = platformAdmin.getStateHelper().getDependentBundles(new BundleDescription[] {state.getBundle(1)});
-		assertEquals("2.0", 4, dependent.length); //$NON-NLS-1$
-		assertContains("2.1", dependent, state.getBundle(1)); //$NON-NLS-1$
-		assertContains("2.2", dependent, state.getBundle(2)); //$NON-NLS-1$
-		assertContains("2.3", dependent, state.getBundle(4)); //$NON-NLS-1$
-		assertContains("2.4", dependent, state.getBundle(6)); //$NON-NLS-1$
-	}
-
-	public void testPrerequisiteBundle() throws BundleException {
-		State state = buildComplexState();
-		state.resolve();
-		BundleDescription[] prereqs;
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(state.getResolvedBundles());
-		assertEquals("1.0", 6, prereqs.length); //$NON-NLS-1$
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(1)});
-		assertEquals("2.0", 2, prereqs.length); //$NON-NLS-1$
-		assertContains("2.1", prereqs, state.getBundle(1)); //$NON-NLS-1$
-		assertContains("2.2", prereqs, state.getBundle(3)); //$NON-NLS-1$
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(2)});
-		assertEquals("3.0", 3, prereqs.length); //$NON-NLS-1$
-		assertContains("3.1", prereqs, state.getBundle(1)); //$NON-NLS-1$
-		assertContains("3.2", prereqs, state.getBundle(2)); //$NON-NLS-1$
-		assertContains("3.3", prereqs, state.getBundle(3)); //$NON-NLS-1$
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(3)});
-		assertEquals("4.0", 1, prereqs.length); //$NON-NLS-1$
-		assertContains("4.1", prereqs, state.getBundle(3)); //$NON-NLS-1$
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(4)});
-		assertEquals("5.0", 3, prereqs.length); //$NON-NLS-1$
-		assertContains("5.1", prereqs, state.getBundle(1)); //$NON-NLS-1$
-		assertContains("5.2", prereqs, state.getBundle(3)); //$NON-NLS-1$
-		assertContains("5.3", prereqs, state.getBundle(4)); //$NON-NLS-1$
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(5)});
-		assertEquals("6.0", 2, prereqs.length); //$NON-NLS-1$
-		assertContains("6.1", prereqs, state.getBundle(3)); //$NON-NLS-1$
-		assertContains("6.2", prereqs, state.getBundle(5)); //$NON-NLS-1$
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(6)});
-		assertEquals("6.0", 4, prereqs.length); //$NON-NLS-1$
-		assertContains("6.1", prereqs, state.getBundle(1)); //$NON-NLS-1$
-		assertContains("6.2", prereqs, state.getBundle(3)); //$NON-NLS-1$
-		assertContains("6.3", prereqs, state.getBundle(4)); //$NON-NLS-1$
-		assertContains("6.4", prereqs, state.getBundle(6)); //$NON-NLS-1$
-	}
-
-	// temporarily disabled
-	public void testLinkageChange() throws BundleException {
-		State state = buildEmptyState();
-		// don't add b1 for now
-		String B1_LOCATION = "org.eclipse.b1"; //$NON-NLS-1$
-		final String B1_MANIFEST = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n"; //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b1 = state.getFactory().createBundleDescription(parseManifest(B1_MANIFEST), B1_LOCATION, (long) (Math.random() * Long.MAX_VALUE));
-		// b2 requires b1 optionally, so should resolve
-		String B2_LOCATION = "org.eclipse.b2"; //$NON-NLS-1$
-		final String B2_MANIFEST = "Bundle-SymbolicName: org.eclipse.b2\n" + "Bundle-Version: 2.0\n" + "Require-Bundle: org.eclipse.b1;optional=true"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		BundleDescription b2 = state.getFactory().createBundleDescription(parseManifest(B2_MANIFEST), B2_LOCATION, (long) (Math.random() * Long.MAX_VALUE));
-		// b3 requires b1, so should not resolve
-		String B3_LOCATION = "org.eclipse.b3"; //$NON-NLS-1$
-		final String B3_MANIFEST = "Bundle-SymbolicName: org.eclipse.b3\n" + "Bundle-Version: 2.0\n" + "Require-Bundle: org.eclipse.b1"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		BundleDescription b3 = state.getFactory().createBundleDescription(parseManifest(B3_MANIFEST), B3_LOCATION, (long) (Math.random() * Long.MAX_VALUE));
-		// add b2 and b3
-		state.addBundle(b2);
-		state.addBundle(b3);
-		StateDelta delta = state.resolve();
-		// ensure we didn't add b1 yet
-		assertFullyUnresolved("0.1", b1); //$NON-NLS-1$
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 2, changes.length); //$NON-NLS-1$
-		BundleDelta[] additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("2.0", 2, additions.length); //$NON-NLS-1$
-		BundleDelta[] resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("3.0", 1, resolutions.length); //$NON-NLS-1$
-		assertEquals("3.1", b2, resolutions[0].getBundle()); //$NON-NLS-1$
-		BundleDelta[] addtionsNotResolved = delta.getChanges(BundleDelta.ADDED, true);
-		assertEquals("4.0", 1, addtionsNotResolved.length); //$NON-NLS-1$
-		assertEquals("4.1", b3, addtionsNotResolved[0].getBundle()); //$NON-NLS-1$
-		state.addBundle(b1);
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("5.0", 2, changes.length); //$NON-NLS-1$
-		additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("6.0", 1, additions.length); //$NON-NLS-1$
-		assertEquals("6.1", b1, additions[0].getBundle()); //$NON-NLS-1$
-		resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("7.0", 2, resolutions.length); //$NON-NLS-1$
-		BundleDelta[] existingResolved = delta.getChanges(BundleDelta.RESOLVED, true);
-		assertEquals("8.0", 1, existingResolved.length); //$NON-NLS-1$
-		assertEquals("8.1", b3, existingResolved[0].getBundle()); //$NON-NLS-1$
-		// TODO linkage changed types are no longer valid
-		//BundleDelta[] optionalLinkageChanged = delta.getChanges(BundleDelta.OPTIONAL_LINKAGE_CHANGED, true);
-		//assertEquals("9.0", 1, optionalLinkageChanged.length);
-		//assertEquals("9.1", b2, optionalLinkageChanged[0].getBundle());
-		delta = state.resolve(new BundleDescription[] {b2});
-		changes = delta.getChanges();
-		assertEquals("9.0", 1, changes.length); //$NON-NLS-1$
-		resolutions = delta.getChanges(BundleDelta.RESOLVED, true);
-		assertEquals("9.1", 1, resolutions.length); //$NON-NLS-1$
-		assertEquals("9.2", b2, resolutions[0].getBundle()); //$NON-NLS-1$
-		assertFullyResolved("10.1", b1); //$NON-NLS-1$
-		assertFullyResolved("10.2", b2); //$NON-NLS-1$
-		assertFullyResolved("10.3", b3); //$NON-NLS-1$
-	}
-
-	// temporarily disabled
-	public void testReinstall() throws BundleException {
-		State state = buildComplexState();
-		StateDelta delta = state.resolve();
-		// remove bundle 4 - should cause 6 to be unresolved
-		state.removeBundle(4);
-		delta = state.resolve();
-		assertEquals("1.0", 1, delta.getChanges(BundleDelta.REMOVED | BundleDelta.UNRESOLVED | BundleDelta.REMOVAL_COMPLETE, true).length); //$NON-NLS-1$
-		assertEquals("1.1", 4, delta.getChanges(BundleDelta.REMOVED | BundleDelta.UNRESOLVED | BundleDelta.REMOVAL_COMPLETE, true)[0].getBundle().getBundleId()); //$NON-NLS-1$
-		assertEquals("2.0", 1, delta.getChanges(BundleDelta.UNRESOLVED, true).length); //$NON-NLS-1$
-		assertEquals("2.1", 6, delta.getChanges(BundleDelta.UNRESOLVED, true)[0].getBundle().getBundleId()); //$NON-NLS-1$
-		// reinstall bundle 4 - should cause 6 to be resolved again
-		BundleDescription b4 = delta.getChanges(BundleDelta.REMOVED | BundleDelta.UNRESOLVED | BundleDelta.REMOVAL_COMPLETE, true)[0].getBundle();
-		state.addBundle(b4);
-		delta = state.resolve();
-		assertEquals("3.0", 1, delta.getChanges(BundleDelta.ADDED | BundleDelta.RESOLVED, true).length); //$NON-NLS-1$
-		assertEquals("3.1", 4, delta.getChanges(BundleDelta.ADDED | BundleDelta.RESOLVED, true)[0].getBundle().getBundleId()); //$NON-NLS-1$
-		assertEquals("4.0", 1, delta.getChanges(BundleDelta.RESOLVED, true).length); //$NON-NLS-1$
-		assertEquals("4.1", 6, delta.getChanges(BundleDelta.RESOLVED, true)[0].getBundle().getBundleId()); //$NON-NLS-1$
-	}
-
-	public void testRemoval() throws BundleException {
-		String B1_LOCATION = "org.eclipse.b1"; //$NON-NLS-1$
-		final String B1_MANIFEST = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n"; //$NON-NLS-1$ //$NON-NLS-2$
-		String B2_LOCATION = "org.eclipse.b2"; //$NON-NLS-1$
-		final String B2_MANIFEST = "Bundle-SymbolicName: org.eclipse.b2\n" + "Bundle-Version: 1.0\n"; //$NON-NLS-1$ //$NON-NLS-2$
-		State state = platformAdmin.getState();
-		state.setResolver(platformAdmin.getResolver());
-		BundleDescription b1 = platformAdmin.getFactory().createBundleDescription(parseManifest(B1_MANIFEST), B1_LOCATION, 1);
-		BundleDescription b2 = platformAdmin.getFactory().createBundleDescription(parseManifest(B2_MANIFEST), B2_LOCATION, 2);
-		state.addBundle(b1);
-		state.addBundle(b2);
-		StateDelta delta = state.resolve();
-		assertTrue("1.1", contains(state.getResolvedBundles(), b1)); //$NON-NLS-1$
-		assertTrue("1.2", contains(state.getResolvedBundles(), b2)); //$NON-NLS-1$
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.3", 2, changes.length); //$NON-NLS-1$
-		assertEquals("1.4 - " + changes[0].getBundle(), (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[0].getType()); //$NON-NLS-1$
-		assertEquals("1.5 - " + changes[1].getBundle(), (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[1].getType()); //$NON-NLS-1$
-		assertFullyResolved("1.6", b1); //$NON-NLS-1$
-		assertFullyResolved("1.7", b2); //$NON-NLS-1$
-		// remove a resolved bundle
-		state.removeBundle(b1);
-		assertTrue("2.0", !contains(state.getResolvedBundles(), b1)); //$NON-NLS-1$
-		assertTrue("2.1", contains(state.getResolvedBundles(), b2)); //$NON-NLS-1$
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("2.2", 1, changes.length); //$NON-NLS-1$
-		assertEquals("2.3", b1, changes[0].getBundle()); //$NON-NLS-1$
-		assertEquals("2.4", BundleDelta.REMOVED | BundleDelta.UNRESOLVED, changes[0].getType()); //$NON-NLS-1$
-	}
-
-	public void testRemoveAndAdd() throws BundleException {
-		String B_LOCATION = "org.eclipse.b"; //$NON-NLS-1$
-		final String B_MANIFEST = "Bundle-SymbolicName: org.eclipse.b\n" + "Bundle-Version: 1.0\n"; //$NON-NLS-1$ //$NON-NLS-2$
-		State state = platformAdmin.getState();
-		state.setResolver(platformAdmin.getResolver());
-		BundleDescription b1 = platformAdmin.getFactory().createBundleDescription(parseManifest(B_MANIFEST), B_LOCATION, 1);
-		BundleDescription b2 = platformAdmin.getFactory().createBundleDescription(parseManifest(B_MANIFEST), B_LOCATION, 2);
-		state.addBundle(b1);
-		StateDelta delta = state.resolve();
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 1, changes.length); //$NON-NLS-1$
-		assertEquals("1.1", b1, changes[0].getBundle()); //$NON-NLS-1$
-		assertEquals("1.2", (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[0].getType()); //$NON-NLS-1$
-		assertFullyResolved("1.3", b1); //$NON-NLS-1$
-		state.removeBundle(b1);
-		state.addBundle(b2);
-		delta = state.resolve();
-		assertEquals("2.0", 2, delta.getChanges().length); //$NON-NLS-1$
-		assertEquals("2.1", 1, delta.getChanges(BundleDelta.UNRESOLVED | BundleDelta.REMOVED, true).length); //$NON-NLS-1$
-		assertEquals("2.2", b1, delta.getChanges(BundleDelta.UNRESOLVED | BundleDelta.REMOVED, true)[0].getBundle()); //$NON-NLS-1$
-		assertEquals("2.3", 1, delta.getChanges(BundleDelta.RESOLVED | BundleDelta.ADDED, true).length); //$NON-NLS-1$
-		assertEquals("2.3", b2, delta.getChanges(BundleDelta.RESOLVED | BundleDelta.ADDED, true)[0].getBundle()); //$NON-NLS-1$
-	}
-
-	public void testRemovalResolve() throws BundleException {
-		State state = buildInitialState();
-		StateDelta delta = state.resolve();
-		BundleDelta[] deltas = delta.getChanges();
-		BundleDescription b0 = state.getBundle(0);
-		assertNotNull("0.1", b0); //$NON-NLS-1$
-		assertFullyResolved("0.2", b0); //$NON-NLS-1$
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p1; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b1 = null;
-		try {
-			b1 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b1", 1); //$NON-NLS-1$
-			state.removeBundle(1);
-			state.addBundle(b1);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p2; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b2 = null;
-		try {
-			b2 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b2", 2); //$NON-NLS-1$
-			state.removeBundle(2);
-			state.addBundle(b2);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p2"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p3; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b3 = null;
-		try {
-			b3 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b3", 3); //$NON-NLS-1$
-			state.removeBundle(3);
-			state.addBundle(b3);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		delta = state.resolve(false);
-		deltas = delta.getChanges();
-		assertEquals("1.0", 4, deltas.length); //$NON-NLS-1$
-		Map deltasMap = new HashMap();
-		for (int i = 0; i < deltas.length; i++)
-			deltasMap.put(new Long(deltas[i].getBundle().getBundleId()), deltas[i]);
-		assertNotNull("1.1", deltasMap.get(new Long(1))); //$NON-NLS-1$
-		assertNotNull("1.2", deltasMap.get(new Long(2))); //$NON-NLS-1$
-		assertNotNull("1.3", deltasMap.get(new Long(3))); //$NON-NLS-1$
-		assertEquals("2.1", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(1))).getType()); //$NON-NLS-1$
-		assertEquals("2.2", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(2))).getType()); //$NON-NLS-1$
-		assertEquals("2.3", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(3))).getType()); //$NON-NLS-1$
-		state.removeBundle(1);
-		delta = state.resolve(false);
-		deltas = delta.getChanges();
-		b2 = state.getBundle(2);
-		b3 = state.getBundle(3);
-		assertEquals("3.1", false, b2.isResolved()); //$NON-NLS-1$
-		assertEquals("3.2", false, b3.isResolved()); //$NON-NLS-1$
-	}
-
-	/**
-	 * Tests adding 3 new bundles to an already resolved state and then
-	 * resolving only one of the bundles. The result should be all 3 added
-	 * bundles being resolved. Then re-resolving the same bundle. The result
-	 * should be only the one bundle being resolved.
-	 *  
-	 */
-	public void testReresolveBundle() throws BundleException {
-		State state = buildInitialState();
-		StateDelta delta = state.resolve();
-		BundleDelta[] deltas = delta.getChanges();
-		BundleDescription b0 = state.getBundle(0);
-		assertNotNull("0.1", b0); //$NON-NLS-1$
-		assertFullyResolved("0.2", b0); //$NON-NLS-1$
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p1; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b1 = null;
-		try {
-			b1 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b1", 1); //$NON-NLS-1$
-			state.removeBundle(1);
-			state.addBundle(b1);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p2; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b2 = null;
-		try {
-			b2 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b2", 2); //$NON-NLS-1$
-			state.removeBundle(2);
-			state.addBundle(b2);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p2"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p3; specification-version=1.0"); //$NON-NLS-1$
-		BundleDescription b3 = null;
-		try {
-			b3 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b3", 3); //$NON-NLS-1$
-			state.removeBundle(3);
-			state.addBundle(b3);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage()); //$NON-NLS-1$
-		}
-		delta = state.resolve(new BundleDescription[] {state.getBundle(1)});
-		deltas = delta.getChanges();
-		assertEquals("1.0", 3, deltas.length); //$NON-NLS-1$
-		Map deltasMap = new HashMap();
-		for (int i = 0; i < deltas.length; i++)
-			deltasMap.put(new Long(deltas[i].getBundle().getBundleId()), deltas[i]);
-		assertNotNull("1.1", deltasMap.get(new Long(1))); //$NON-NLS-1$
-		assertNotNull("1.2", deltasMap.get(new Long(2))); //$NON-NLS-1$
-		assertNotNull("1.3", deltasMap.get(new Long(3))); //$NON-NLS-1$
-		assertEquals("2.1", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(1))).getType()); //$NON-NLS-1$
-		assertEquals("2.2", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(2))).getType()); //$NON-NLS-1$
-		assertEquals("2.3", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(3))).getType()); //$NON-NLS-1$
-		delta = state.resolve(new BundleDescription[] {state.getBundle(1)});
-		deltas = delta.getChanges();
-		assertEquals("3.0", 3, deltas.length); //$NON-NLS-1$
-		deltasMap = new HashMap();
-		for (int i = 0; i < deltas.length; i++)
-			deltasMap.put(new Long(deltas[i].getBundle().getBundleId()), deltas[i]);
-		assertNotNull("3.1", deltasMap.get(new Long(1))); //$NON-NLS-1$
-		assertNotNull("3.2", deltasMap.get(new Long(2))); //$NON-NLS-1$
-		assertNotNull("3.3", deltasMap.get(new Long(3))); //$NON-NLS-1$
-		assertEquals("3.4", BundleDelta.RESOLVED, ((BundleDelta) deltasMap.get(new Long(1))).getType()); //$NON-NLS-1$
-		assertEquals("3.5", BundleDelta.RESOLVED, ((BundleDelta) deltasMap.get(new Long(2))).getType()); //$NON-NLS-1$
-		assertEquals("3.6", BundleDelta.RESOLVED, ((BundleDelta) deltasMap.get(new Long(3))).getType()); //$NON-NLS-1$
-
-	}
-
-	public void testUpdate() throws BundleException {
-		State state = buildEmptyState();
-		String B1_LOCATION = "org.eclipse.b"; //$NON-NLS-1$
-		final String B1_RESOLVED = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n"; //$NON-NLS-1$ //$NON-NLS-2$
-		final String B1_UNRESOLVED = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 2.0\nRequire-Bundle: non.existant.bundle\n"; //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b1 = state.getFactory().createBundleDescription(parseManifest(B1_RESOLVED), B1_LOCATION, 1);
-		assertTrue("0.9", state.addBundle(b1)); //$NON-NLS-1$
-		StateDelta delta = state.resolve();
-		b1 = state.getBundleByLocation(b1.getLocation());
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 1, changes.length); //$NON-NLS-1$
-		assertEquals("1.1", b1, changes[0].getBundle()); //$NON-NLS-1$
-		assertEquals("1.2", (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[0].getType()); //$NON-NLS-1$
-		assertFullyResolved("1.3", b1); //$NON-NLS-1$
-		assertTrue("1.8", contains(state.getResolvedBundles(), b1)); //$NON-NLS-1$
-		BundleDescription b11 = state.getFactory().createBundleDescription(parseManifest(B1_UNRESOLVED), B1_LOCATION, 1);
-		assertTrue("1.8b", state.updateBundle(b11)); //$NON-NLS-1$
-		b11 = state.getBundle(b11.getBundleId());
-		assertTrue("1.9", !contains(state.getResolvedBundles(), b11)); //$NON-NLS-1$
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("2.0", 2, changes.length); //$NON-NLS-1$
-		HashMap deltasMap = new HashMap();
-		for (int i = 0; i < changes.length; i++)
-			deltasMap.put(changes[i].getBundle(), changes[i]);
-		assertNotNull("2.1", deltasMap.get(b1)); //$NON-NLS-1$
-		assertNotNull("2.2", deltasMap.get(b11)); //$NON-NLS-1$
-		assertEquals("2.3", BundleDelta.UNRESOLVED, ((BundleDelta) deltasMap.get(b1)).getType()); //$NON-NLS-1$
-		assertEquals("2.4", BundleDelta.UPDATED, ((BundleDelta) deltasMap.get(b11)).getType()); //$NON-NLS-1$
-		BundleDescription b111 = state.getFactory().createBundleDescription(parseManifest(B1_RESOLVED), B1_LOCATION, 1);
-		assertTrue("3.0", state.updateBundle(b111)); //$NON-NLS-1$
-		b111 = state.getBundle(b111.getBundleId());
-		assertTrue("3.1", !contains(state.getResolvedBundles(), b111)); //$NON-NLS-1$
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("3.2", 1, changes.length); //$NON-NLS-1$
-		assertEquals("3.1", b111, changes[0].getBundle()); //$NON-NLS-1$
-		assertEquals("3.2", BundleDelta.UPDATED | BundleDelta.RESOLVED, changes[0].getType()); //$NON-NLS-1$
-		assertFullyResolved("3.3", b111); //$NON-NLS-1$
-	}
-
-	public void testSingletons() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1"); //$NON-NLS-1$
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1"); //$NON-NLS-1$
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 3); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.dependent; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.host; bundle-version=\"[1.0.1,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testDependent = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 4); //$NON-NLS-1$
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.addBundle(testDependent);
-		state.resolve();
-		assertFalse("1.0", testHost100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", testHost101.isResolved()); //$NON-NLS-1$
-		assertFalse("1.2", testFrag100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", testFrag101.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", testDependent.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSameVersion() throws BundleException {
-		// this is a testcase to handle how PDE build is using the state
-		// with multiple singleton bundles installed with the same BSN and version
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 3); //$NON-NLS-1$
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.resolve();
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.resolve();
-		assertTrue("1.0", testHost100.isResolved()); //$NON-NLS-1$
-		assertFalse("1.1", testHost101.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", testFrag100.isResolved()); //$NON-NLS-1$
-		assertFalse("1.3", testFrag101.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSelection1() throws BundleException {
-		State state = buildEmptyState();
-
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", 3); //$NON-NLS-1$
-
-		state.addBundle(sdk10);
-		state.addBundle(platform10);
-		state.addBundle(rcp10);
-		state.addBundle(gef10);
-		state.resolve();
-
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", 4); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", 5); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", 6); //$NON-NLS-1$
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1", platform20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", gef10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.4", sdk10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.5", platform10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.6", rcp20.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSelection2() throws BundleException {
-		State state = buildEmptyState();
-
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; test with cycle added
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\", cycle"); //$NON-NLS-1$
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\", sdk"); //$NON-NLS-1$
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", 3); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "cycle; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "gef"); //$NON-NLS-1$
-		BundleDescription cycle10 = state.getFactory().createBundleDescription(state, manifest, "gef10", 4); //$NON-NLS-1$
-
-		state.addBundle(sdk10);
-		state.addBundle(platform10);
-		state.addBundle(rcp10);
-		state.addBundle(gef10);
-		state.addBundle(cycle10);
-		state.resolve();
-
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", cycle10.isResolved()); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", 5); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", 6); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", 7); //$NON-NLS-1$
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1", platform20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", gef10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.4", cycle10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.5", sdk10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.6", platform10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.7", rcp20.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSelection3() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "sdk"); //$NON-NLS-1$
-		BundleDescription sdk_frag10 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "sdk; bundle-version=2.0"); //$NON-NLS-1$
-		BundleDescription sdk_frag210 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag210", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "platform"); //$NON-NLS-1$
-		BundleDescription platform_frag10 = state.getFactory().createBundleDescription(state, manifest, "platform.frag10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "platform; bundle-version=2.0"); //$NON-NLS-1$
-		BundleDescription platform_frag210 = state.getFactory().createBundleDescription(state, manifest, "platform.frag210", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "rcp"); //$NON-NLS-1$
-		BundleDescription rcp_frag10 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "rcp; bundle-version=2.0"); //$NON-NLS-1$
-		BundleDescription rcp_frag210 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag210", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", bundleID++); //$NON-NLS-1$
-
-		state.addBundle(sdk10);
-		state.addBundle(sdk_frag10);
-		state.addBundle(sdk_frag210);
-		state.addBundle(platform10);
-		state.addBundle(platform_frag10);
-		state.addBundle(platform_frag210);
-		state.addBundle(rcp10);
-		state.addBundle(rcp_frag10);
-		state.addBundle(rcp_frag210);
-		state.addBundle(gef10);
-		state.resolve();
-
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", sdk_frag10.isResolved()); //$NON-NLS-1$
-		assertFalse("1.0.2", sdk_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1.1", platform_frag10.isResolved()); //$NON-NLS-1$
-		assertFalse("1.1.2", platform_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2.1", rcp_frag10.isResolved()); //$NON-NLS-1$
-		assertFalse("1.2.2", rcp_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", bundleID++); //$NON-NLS-1$
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.0.1", sdk_frag10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.0.2", sdk_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1", platform20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1.1", platform_frag10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1.2", platform_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2.1", rcp_frag10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", gef10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.4", sdk10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.5", platform10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.6", rcp20.isResolved()); //$NON-NLS-1$
-		assertFalse("2.2.2", rcp_frag210.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSelection4() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "sdk; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "platform; version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "sdk"); //$NON-NLS-1$
-		BundleDescription sdk_frag10 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "sdk; bundle-version=2.0"); //$NON-NLS-1$
-		BundleDescription sdk_frag210 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag210", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "platform; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "rcp; version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "platform"); //$NON-NLS-1$
-		BundleDescription platform_frag10 = state.getFactory().createBundleDescription(state, manifest, "platform.frag10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "platform; bundle-version=2.0"); //$NON-NLS-1$
-		BundleDescription platform_frag210 = state.getFactory().createBundleDescription(state, manifest, "platform.frag210", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "rcp; version=1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "rcp"); //$NON-NLS-1$
-		BundleDescription rcp_frag10 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag10", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "rcp; bundle-version=2.0"); //$NON-NLS-1$
-		BundleDescription rcp_frag210 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag210", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "rcp; version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", bundleID++); //$NON-NLS-1$
-
-		state.addBundle(sdk10);
-		state.addBundle(sdk_frag10);
-		state.addBundle(sdk_frag210);
-		state.addBundle(platform10);
-		state.addBundle(platform_frag10);
-		state.addBundle(platform_frag210);
-		state.addBundle(rcp10);
-		state.addBundle(rcp_frag10);
-		state.addBundle(rcp_frag210);
-		state.addBundle(gef10);
-		state.resolve();
-
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", sdk_frag10.isResolved()); //$NON-NLS-1$
-		assertFalse("1.0.2", sdk_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1.1", platform_frag10.isResolved()); //$NON-NLS-1$
-		assertFalse("1.1.2", platform_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2.1", rcp_frag10.isResolved()); //$NON-NLS-1$
-		assertFalse("1.2.2", rcp_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "sdk; version=2.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "platform; version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "platform; version=2.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "rcp; version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.EXPORT_PACKAGE, "rcp; version=2.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", bundleID++); //$NON-NLS-1$
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.0.1", sdk_frag10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.0.2", sdk_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1", platform20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1.1", platform_frag10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1.2", platform_frag210.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2.1", rcp_frag10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", gef10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.4", sdk10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.5", platform10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.6", rcp20.isResolved()); //$NON-NLS-1$
-		assertFalse("2.2.2", rcp_frag210.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSelection5() throws BundleException {
-		State state = buildEmptyState();
-
-		long id = 0;
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "base; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription base10 = state.getFactory().createBundleDescription(state, manifest, "base10", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "base; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.6"); //$NON-NLS-1$
-		BundleDescription base11 = state.getFactory().createBundleDescription(state, manifest, "base11", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "requires; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "base; bundle-version=\"[1.0,1.1)\""); //$NON-NLS-1$
-		BundleDescription requires10 = state.getFactory().createBundleDescription(state, manifest, "requires10", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "requires; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.1"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "base; bundle-version=\"[1.1,1.2)\""); //$NON-NLS-1$
-		BundleDescription requires11 = state.getFactory().createBundleDescription(state, manifest, "requires11", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.0,1.1)\""); //$NON-NLS-1$
-		BundleDescription frag10 = state.getFactory().createBundleDescription(state, manifest, "frag10", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "frag; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.1"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.1,1.2)\""); //$NON-NLS-1$
-		BundleDescription frag11 = state.getFactory().createBundleDescription(state, manifest, "frag11", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "fragb; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.0,1.1)\""); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "fragb; version=1.0"); //$NON-NLS-1$
-		BundleDescription fragb10 = state.getFactory().createBundleDescription(state, manifest, "frag10", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "fragb; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.1"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.0,1.1)\""); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "fragb; version=1.1"); //$NON-NLS-1$
-		BundleDescription fragb11 = state.getFactory().createBundleDescription(state, manifest, "frag11", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "import"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "fragb; version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription import10 = state.getFactory().createBundleDescription(state, manifest, "import10", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "import"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.1"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "fragb; version=\"[1.1,1.1]\""); //$NON-NLS-1$
-		BundleDescription import11 = state.getFactory().createBundleDescription(state, manifest, "import11", id++); //$NON-NLS-1$
-
-		state.addBundle(base10);
-		state.addBundle(base11);
-		state.addBundle(requires10);
-		state.addBundle(requires11);
-		state.addBundle(frag10);
-		state.addBundle(frag11);
-		state.addBundle(fragb10);
-		state.addBundle(fragb11);
-		state.addBundle(import10);
-		state.addBundle(import11);
-		state.resolve();
-
-		assertTrue("1.0", base10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", requires10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", frag10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", fragb11.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", import11.isResolved()); //$NON-NLS-1$
-		assertFalse("1.5", base11.isResolved()); //$NON-NLS-1$
-		assertFalse("1.6", requires11.isResolved()); //$NON-NLS-1$
-		assertFalse("1.7", frag11.isResolved()); //$NON-NLS-1$
-		assertFalse("1.8", fragb10.isResolved()); //$NON-NLS-1$
-		assertFalse("1.9", import10.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSelection6() throws BundleException {
-		State state = buildEmptyState();
-
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", 3); //$NON-NLS-1$
-
-		state.addBundle(sdk10);
-		state.addBundle(platform10);
-		state.addBundle(rcp10);
-		state.addBundle(gef10);
-		state.resolve();
-
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", 4); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", 5); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", 6); //$NON-NLS-1$
-
-		state.removeBundle(sdk10);
-		state.removeBundle(platform10);
-		state.removeBundle(rcp10);
-		state.removeBundle(gef10);
-
-		// reorder the bundles to test that order of bundles does not effect resolution outcome
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.addBundle(sdk10);
-		state.addBundle(platform10);
-		state.addBundle(rcp10);
-		state.addBundle(gef10);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1", platform20.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", gef10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.4", sdk10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.5", platform10.isResolved()); //$NON-NLS-1$
-		assertFalse("2.6", rcp20.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testSingletonsSelection7() throws BundleException {
-		State state = buildEmptyState();
-		long id = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "singleton; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "singleton"); //$NON-NLS-1$
-		BundleDescription singleton1 = state.getFactory().createBundleDescription(state, manifest, "singleton1", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "singleton"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a;version=1.0.0"); //$NON-NLS-1$
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, "a1", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "b", id++); //$NON-NLS-1$
-
-		state.addBundle(singleton1);
-		state.addBundle(a1);
-		state.addBundle(b);
-		state.resolve();
-
-		assertTrue("1.0", singleton1.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", a1.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", b.isResolved()); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "singleton; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "singleton"); //$NON-NLS-1$
-		BundleDescription singleton2 = state.getFactory().createBundleDescription(state, manifest, "singleton2", id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.1"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "singleton"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a;version=1.0.1"); //$NON-NLS-1$
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, "a2", id++); //$NON-NLS-1$
-
-		state.addBundle(singleton2);
-		state.addBundle(a2);
-		state.resolve(new BundleDescription[] {singleton1, singleton2, a1, a2});
-
-		assertFalse("2.0", singleton1.isResolved()); //$NON-NLS-1$
-		assertTrue("2.1", singleton2.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", a1.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", a2.isResolved()); //$NON-NLS-1$
-		assertTrue("2.4", b.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] imports = b.getResolvedImports();
-		assertEquals("Unexpected number of imports", 1, imports.length); //$NON-NLS-1$
-		assertEquals("Unexpected exporter", a2, imports[0].getExporter()); //$NON-NLS-1$
-	}
-
-	public void testNonSingletonsSameVersion() throws BundleException {
-		// this is a testcase to handle how PDE build is using the state
-		// with multiple singleton bundles installed with the same BSN and version
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 3); //$NON-NLS-1$
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.resolve();
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.resolve();
-		assertTrue("1.0", testHost100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", testHost101.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", testFrag100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", testFrag101.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testTransitiveUses() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription a2_100 = state.getFactory().createBundleDescription(state, manifest, "a2_100", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A2"); //$NON-NLS-1$
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b"); //$NON-NLS-1$
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 3); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a, c"); //$NON-NLS-1$
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 4); //$NON-NLS-1$
-
-		state.addBundle(a1_100);
-		state.addBundle(a2_100);
-		state.addBundle(b1_100);
-		state.addBundle(c1_100);
-		state.addBundle(d1_100);
-		state.resolve();
-
-		ExportPackageDescription[] b1ResolvedImports = b1_100.getResolvedImports();
-		ExportPackageDescription[] d1ResolvedImports = d1_100.getResolvedImports();
-		ExportPackageDescription[] isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A1"); //$NON-NLS-1$
-		b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2); //$NON-NLS-1$
-		state.updateBundle(b1_100);
-		state.resolve();
-
-		b1ResolvedImports = b1_100.getResolvedImports();
-		d1ResolvedImports = d1_100.getResolvedImports();
-		isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.2 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-	}
-
-	public void testMultipleExportsUses01() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; version=2.0; uses:=d, d; version=2.0"); //$NON-NLS-1$
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; version=1.0; uses:=d, d; version=1.0"); //$NON-NLS-1$
-		BundleDescription a2_100 = state.getFactory().createBundleDescription(state, manifest, "a2_100", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b, b; mandatory:=\"test\"; test=value; uses:=d"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A2, d"); //$NON-NLS-1$
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b; test=value, d"); //$NON-NLS-1$
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 3); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a, c, d"); //$NON-NLS-1$
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 4); //$NON-NLS-1$
-
-		state.addBundle(a1_100);
-		state.addBundle(a2_100);
-		state.addBundle(b1_100);
-		state.addBundle(c1_100);
-		state.addBundle(d1_100);
-		state.resolve();
-
-		ExportPackageDescription[] b1ResolvedImports = b1_100.getResolvedImports();
-		ExportPackageDescription[] d1ResolvedImports = d1_100.getResolvedImports();
-		ExportPackageDescription[] isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A1"); //$NON-NLS-1$
-		b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2); //$NON-NLS-1$
-		state.updateBundle(b1_100);
-		state.resolve();
-
-		b1ResolvedImports = b1_100.getResolvedImports();
-		d1ResolvedImports = d1_100.getResolvedImports();
-		isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.2 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-	}
-
-	public void testRequireBundleUses() throws BundleException {
-		State state = buildEmptyState();
-		int id = 0;
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription a_100 = state.getFactory().createBundleDescription(state, manifest, "a_100", id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription a_200 = state.getFactory().createBundleDescription(state, manifest, "a_200", id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription b_100 = state.getFactory().createBundleDescription(state, manifest, "b_100", id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A, B"); //$NON-NLS-1$
-		BundleDescription c_100 = state.getFactory().createBundleDescription(state, manifest, "c_100", id++); //$NON-NLS-1$
-
-		state.addBundle(a_100);
-		state.addBundle(b_100);
-		// first resolve just A and B
-		state.resolve();
-		assertTrue("0.1", a_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", b_100.isResolved()); //$NON-NLS-1$
-		// now add A v2 and resolve it
-		state.addBundle(a_200);
-		state.resolve();
-		assertTrue("1.1", a_200.isResolved()); //$NON-NLS-1$
-		// now add C and make sure it does not get packages from A v2
-		state.addBundle(c_100);
-		state.resolve();
-		assertTrue("1.2", c_100.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] c1ResolvedImports = state.getStateHelper().getVisiblePackages(c_100);
-		assertTrue("2.1", c1ResolvedImports.length == 2); //$NON-NLS-1$
-		int index = c1ResolvedImports[0].getName().equals("a") ? 0 : c1ResolvedImports[1].getName().equals("a") ? 1 : -1; //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("2.2", index >= 0); //$NON-NLS-1$
-		assertEquals("2.2", c1ResolvedImports[index].getExporter(), a_100); //$NON-NLS-1$
-	}
-
-	public void testCyclicTransitiveUses() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "d"); //$NON-NLS-1$
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "d"); //$NON-NLS-1$
-		BundleDescription a2_100 = state.getFactory().createBundleDescription(state, manifest, "a2_100", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A2"); //$NON-NLS-1$
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b"); //$NON-NLS-1$
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 3); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d; uses:=c"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a, c"); //$NON-NLS-1$
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 4); //$NON-NLS-1$
-
-		state.addBundle(a1_100);
-		state.addBundle(a2_100);
-		state.addBundle(b1_100);
-		state.addBundle(c1_100);
-		state.addBundle(d1_100);
-		state.resolve();
-
-		assertFalse("0.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", a2_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", d1_100.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] b1ResolvedImports = b1_100.getResolvedImports();
-		ExportPackageDescription[] d1ResolvedImports = d1_100.getResolvedImports();
-		ExportPackageDescription[] isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A1"); //$NON-NLS-1$
-		b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2); //$NON-NLS-1$
-		state.updateBundle(b1_100);
-		state.resolve();
-
-		assertTrue("2.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("2.2", a2_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.5", d1_100.isResolved()); //$NON-NLS-1$
-
-		b1ResolvedImports = b1_100.getResolvedImports();
-		d1ResolvedImports = d1_100.getResolvedImports();
-		isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("3.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-	}
-
-	public void testFragmentTransitiveUses() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "d"); //$NON-NLS-1$
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag; uses:=a"); //$NON-NLS-1$
-		BundleDescription a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d, a.frag; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "d"); //$NON-NLS-1$
-		BundleDescription a2_100 = state.getFactory().createBundleDescription(state, manifest, "a2_100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A2, a.frag"); //$NON-NLS-1$
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 3); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b"); //$NON-NLS-1$
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 4); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d; uses:=c"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a.frag, c"); //$NON-NLS-1$
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 5); //$NON-NLS-1$
-
-		state.addBundle(a1_100);
-		state.addBundle(a1frag_100);
-		state.addBundle(a2_100);
-		state.addBundle(b1_100);
-		state.addBundle(c1_100);
-		state.addBundle(d1_100);
-		state.resolve();
-
-		assertFalse("0.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", a2_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", d1_100.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] b1ResolvedImports = b1_100.getResolvedImports();
-		ExportPackageDescription[] d1ResolvedImports = d1_100.getResolvedImports();
-		ExportPackageDescription[] isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A1"); //$NON-NLS-1$
-		b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2); //$NON-NLS-1$
-		state.updateBundle(b1_100);
-		state.resolve();
-
-		assertTrue("2.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("2.2", a2_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.5", d1_100.isResolved()); //$NON-NLS-1$
-
-		b1ResolvedImports = b1_100.getResolvedImports();
-		d1ResolvedImports = d1_100.getResolvedImports();
-		isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("3.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-	}
-
-	public void testFragmentUses01() throws BundleException {
-		long id = 0;
-		State state = buildEmptyState();
-
-		Hashtable manifest = new Hashtable();
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C2"); //$NON-NLS-1$
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b; good=true"); //$NON-NLS-1$
-		BundleDescription a1frag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; good=true; uses:=c"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "c; good=true"); //$NON-NLS-1$
-		BundleDescription b1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; good=true"); //$NON-NLS-1$
-		BundleDescription c1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; bad=true"); //$NON-NLS-1$
-		BundleDescription c2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a1);
-		state.addBundle(a1frag);
-		state.addBundle(b1);
-		state.addBundle(c1);
-		state.addBundle(c2);
-		state.resolve();
-
-		assertTrue("0.1", a1.isResolved()); //$NON-NLS-1$
-		assertFalse("0.2", a1frag.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", b1.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", c1.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", c2.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testFragmentUses02() throws BundleException {
-		long id = 0;
-		State state = buildEmptyState();
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put("osgi.resolverMode", "development"); //$NON-NLS-1$ //$NON-NLS-2$
-		state.setPlatformProperties(props);
-
-		Hashtable manifest = new Hashtable();
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C2"); //$NON-NLS-1$
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b; good=true"); //$NON-NLS-1$
-		BundleDescription a1frag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; good=true; uses:=c"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "c; good=true"); //$NON-NLS-1$
-		BundleDescription b1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; good=true"); //$NON-NLS-1$
-		BundleDescription c1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c; bad=true"); //$NON-NLS-1$
-		BundleDescription c2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a1);
-		state.addBundle(a1frag);
-		state.addBundle(b1);
-		state.addBundle(c1);
-		state.addBundle(c2);
-		state.resolve();
-
-		assertTrue("0.1", a1.isResolved()); //$NON-NLS-1$
-		// uses constraints are ignored when in dev mode (see 261849)
-		assertTrue("0.2", a1frag.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", b1.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", c1.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", c2.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testCyclicUsesExportDrop() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "W"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; b; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "c, a, b"); //$NON-NLS-1$
-		BundleDescription w1_100 = state.getFactory().createBundleDescription(state, manifest, "w1_100", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "X"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "d"); //$NON-NLS-1$
-		BundleDescription x1_100 = state.getFactory().createBundleDescription(state, manifest, "x1_100", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Y"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription y1_100 = state.getFactory().createBundleDescription(state, manifest, "y1_100", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; version = 2.0"); //$NON-NLS-1$
-		BundleDescription z1_100 = state.getFactory().createBundleDescription(state, manifest, "z1_100", 3); //$NON-NLS-1$
-
-		state.addBundle(w1_100);
-		state.addBundle(x1_100);
-		state.addBundle(y1_100);
-		state.addBundle(z1_100);
-		state.resolve();
-
-		assertTrue("0.1", w1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", x1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", y1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", z1_100.isResolved()); //$NON-NLS-1$
-
-		assertEquals("1.1", 1, w1_100.getSelectedExports().length); //$NON-NLS-1$
-		assertEquals("1.2", "b", w1_100.getSelectedExports()[0].getName()); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testRemovalPending() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable wManifest = new Hashtable();
-		wManifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		wManifest.put(Constants.BUNDLE_SYMBOLICNAME, "W"); //$NON-NLS-1$
-		wManifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		wManifest.put(Constants.EXPORT_PACKAGE, "a; b; version=1.0"); //$NON-NLS-1$
-		wManifest.put(Constants.IMPORT_PACKAGE, "a, b"); //$NON-NLS-1$
-		BundleDescription w1_100 = state.getFactory().createBundleDescription(state, wManifest, "w1_100", 0); //$NON-NLS-1$
-
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "X"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription x1_100 = state.getFactory().createBundleDescription(state, manifest, "x1_100", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Y"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription y1_100 = state.getFactory().createBundleDescription(state, manifest, "y1_100", 2); //$NON-NLS-1$
-
-		state.addBundle(w1_100);
-		state.addBundle(x1_100);
-		state.addBundle(y1_100);
-
-		state.resolve();
-
-		assertTrue("0.1", w1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", x1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", y1_100.isResolved()); //$NON-NLS-1$
-
-		BundleDescription w1_100_prime = state.getFactory().createBundleDescription(state, wManifest, "w1_100", 0); //$NON-NLS-1$
-		state.updateBundle(w1_100_prime);
-		state.resolve(new BundleDescription[0]);
-
-		assertTrue("1.1", w1_100_prime.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", x1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", y1_100.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] exports_w1_100 = w1_100.getSelectedExports();
-		ExportPackageDescription[] imports_w1_100_prime = w1_100_prime.getResolvedImports();
-		ExportPackageDescription[] isConsistent = isConsistent(exports_w1_100, imports_w1_100_prime);
-		assertNull("2.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-
-		state.resolve(new BundleDescription[] {w1_100});
-		assertTrue("3.1", w1_100_prime.isResolved()); //$NON-NLS-1$
-		assertTrue("3.2", x1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("3.3", y1_100.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] exports_w1_100_prime = w1_100_prime.getSelectedExports();
-		imports_w1_100_prime = w1_100_prime.getResolvedImports();
-		isConsistent = isConsistent(exports_w1_100_prime, imports_w1_100_prime);
-		assertNull("4.1 Packages are not consistent: " + isConsistent, isConsistent); //$NON-NLS-1$
-	}
-
-	public void testFragmentConstraints01() throws BundleException {
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a.frag"); //$NON-NLS-1$
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", id++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=2.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[2.0, 3.0)\""); //$NON-NLS-1$
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[2.0, 3.0)\""); //$NON-NLS-1$
-		BundleDescription a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b; version=2.1"); //$NON-NLS-1$
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c"); //$NON-NLS-1$
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", id++); //$NON-NLS-1$
-
-		state.addBundle(d1_100);
-		state.addBundle(a1_100);
-		state.addBundle(a1frag_100);
-		state.addBundle(b1_100);
-		state.addBundle(c1_100);
-		state.resolve();
-
-		assertTrue("0.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", a1frag_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", d1_100.isResolved()); //$NON-NLS-1$
-
-		// now use a fragment that has conflicting imports/requires with the host
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=2.1"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[2.5, 4.0)\""); //$NON-NLS-1$
-		a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", a1frag_100.getBundleId()); //$NON-NLS-1$
-		state.updateBundle(a1frag_100);
-		state.resolve(new BundleDescription[] {a1frag_100});
-
-		assertTrue("1.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("1.2", a1frag_100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("1.5", d1_100.isResolved()); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", a1frag_100.getBundleId()); //$NON-NLS-1$
-		state.updateBundle(a1frag_100);
-		state.resolve(new BundleDescription[] {a1frag_100});
-
-		assertTrue("2.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("2.2", a1frag_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("2.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("2.5", d1_100.isResolved()); //$NON-NLS-1$
-
-		// now use a fragment that has conflicting imports/requires with the host
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A1"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[1.0, 1.5)\""); //$NON-NLS-1$
-		a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", a1frag_100.getBundleId()); //$NON-NLS-1$
-		state.updateBundle(a1frag_100);
-		state.resolve(new BundleDescription[] {a1frag_100});
-
-		assertTrue("3.1", a1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("3.2", a1frag_100.isResolved()); //$NON-NLS-1$
-		assertTrue("3.3", b1_100.isResolved()); //$NON-NLS-1$
-		assertTrue("3.4", c1_100.isResolved()); //$NON-NLS-1$
-		assertFalse("3.5", d1_100.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testFragmentConstraints02() throws BundleException {
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, d"); //$NON-NLS-1$
-		BundleDescription aFrag1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, e"); //$NON-NLS-1$
-		BundleDescription aFrag2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c"); //$NON-NLS-1$
-		BundleDescription aFrag3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a, b, c"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a);
-		state.addBundle(aFrag1);
-		state.addBundle(aFrag2);
-		state.addBundle(aFrag3);
-		state.addBundle(b);
-		state.resolve();
-
-		assertTrue("0.1", a.isResolved()); //$NON-NLS-1$
-		assertFalse("0.2", aFrag1.isResolved()); //$NON-NLS-1$
-		assertFalse("0.3", aFrag2.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", aFrag3.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", b.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aResolvedImports = a.getResolvedImports();
-		ExportPackageDescription[] bSelectedExports = b.getSelectedExports();
-
-		assertEquals("1.0", 3, aResolvedImports.length); //$NON-NLS-1$
-		assertEquals("1.1", 3, bSelectedExports.length); //$NON-NLS-1$
-		for (int i = 0; i < aResolvedImports.length; i++) {
-			assertEquals(bSelectedExports[i], aResolvedImports[i]);
-		}
-	}
-
-	public void testFragmentConstraints03() throws BundleException {
-		// same as testFragmentConstraints02 but with a cycle
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, d"); //$NON-NLS-1$
-		BundleDescription aFrag1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, e"); //$NON-NLS-1$
-		BundleDescription aFrag2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c"); //$NON-NLS-1$
-		BundleDescription aFrag3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a, b, c"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a);
-		state.addBundle(aFrag1);
-		state.addBundle(aFrag2);
-		state.addBundle(aFrag3);
-		state.addBundle(b);
-		state.resolve();
-
-		assertTrue("0.1", a.isResolved()); //$NON-NLS-1$
-		assertFalse("0.2", aFrag1.isResolved()); //$NON-NLS-1$
-		assertFalse("0.3", aFrag2.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", aFrag3.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", b.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aResolvedImports = a.getResolvedImports();
-		ExportPackageDescription[] aSelectedExports = a.getSelectedExports();
-		ExportPackageDescription[] bResolvedImports = b.getResolvedImports();
-		ExportPackageDescription[] bSelectedExports = b.getSelectedExports();
-
-		assertEquals("1.0", 3, aResolvedImports.length); //$NON-NLS-1$
-		assertEquals("1.1", 3, bSelectedExports.length); //$NON-NLS-1$
-		for (int i = 0; i < aResolvedImports.length; i++)
-			assertEquals("1.2", bSelectedExports[i], aResolvedImports[i]); //$NON-NLS-1$
-		assertEquals("2.0", 1, aSelectedExports.length); //$NON-NLS-1$
-		assertEquals("2.1", 1, bResolvedImports.length); //$NON-NLS-1$
-		assertEquals("2.2", aSelectedExports[0], bResolvedImports[0]); //$NON-NLS-1$
-	}
-
-	public void testFragmentConstraints04() throws BundleException {
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "b"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, e"); //$NON-NLS-1$
-		BundleDescription aFrag1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, f"); //$NON-NLS-1$
-		BundleDescription aFrag2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d"); //$NON-NLS-1$
-		BundleDescription aFrag3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b1, b2, b3"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "c"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c1, c2, c3"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "d"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d1, d2, d3"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a);
-		state.addBundle(aFrag1);
-		state.addBundle(aFrag2);
-		state.addBundle(aFrag3);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.resolve();
-
-		assertTrue("0.1", a.isResolved()); //$NON-NLS-1$
-		assertFalse("0.2", aFrag1.isResolved()); //$NON-NLS-1$
-		assertFalse("0.3", aFrag2.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", aFrag3.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", b.isResolved()); //$NON-NLS-1$
-		assertTrue("0.6", c.isResolved()); //$NON-NLS-1$
-		assertTrue("0.7", d.isResolved()); //$NON-NLS-1$
-
-		BundleDescription[] aResolvedRequires = a.getResolvedRequires();
-		assertEquals("1.0", 3, aResolvedRequires.length); //$NON-NLS-1$
-		assertEquals("1.1", b, aResolvedRequires[0]); //$NON-NLS-1$
-		assertEquals("1.2", c, aResolvedRequires[1]); //$NON-NLS-1$
-		assertEquals("1.3", d, aResolvedRequires[2]); //$NON-NLS-1$
-	}
-
-	public void testFragmentConstraints05() throws BundleException {
-		// same as testFragmentConstraints04 but with a cycle
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "b"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, e"); //$NON-NLS-1$
-		BundleDescription aFrag1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, f"); //$NON-NLS-1$
-		BundleDescription aFrag2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d"); //$NON-NLS-1$
-		BundleDescription aFrag3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "b1, b2, b3"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "c"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c1, c2, c3"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "d"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "a"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d1, d2, d3"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a);
-		state.addBundle(aFrag1);
-		state.addBundle(aFrag2);
-		state.addBundle(aFrag3);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.resolve();
-
-		assertTrue("0.1", a.isResolved()); //$NON-NLS-1$
-		assertFalse("0.2", aFrag1.isResolved()); //$NON-NLS-1$
-		assertFalse("0.3", aFrag2.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", aFrag3.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", b.isResolved()); //$NON-NLS-1$
-		assertTrue("0.6", c.isResolved()); //$NON-NLS-1$
-		assertTrue("0.7", d.isResolved()); //$NON-NLS-1$
-
-		BundleDescription[] aResolvedRequires = a.getResolvedRequires();
-		assertEquals("1.0", 3, aResolvedRequires.length); //$NON-NLS-1$
-		assertEquals("1.1", b, aResolvedRequires[0]); //$NON-NLS-1$
-		assertEquals("1.2", c, aResolvedRequires[1]); //$NON-NLS-1$
-		assertEquals("1.3", d, aResolvedRequires[2]); //$NON-NLS-1$
-		BundleDescription[] dResolvedRequires = d.getResolvedRequires();
-		assertEquals("2.0", 1, dResolvedRequires.length); //$NON-NLS-1$
-		assertEquals("2.1", a, dResolvedRequires[0]); //$NON-NLS-1$
-	}
-
-	public void testFragmentConstraints06() throws BundleException {
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "b"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, d"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, e"); //$NON-NLS-1$
-		BundleDescription aFrag1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, e"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, f"); //$NON-NLS-1$
-		BundleDescription aFrag2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d"); //$NON-NLS-1$
-		BundleDescription aFrag3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a, b, c"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "c"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c1, c2, c3"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "d"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d1, d2, d3"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a);
-		state.addBundle(aFrag1);
-		state.addBundle(aFrag2);
-		state.addBundle(aFrag3);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.resolve();
-
-		assertTrue("0.1", a.isResolved()); //$NON-NLS-1$
-		assertFalse("0.2", aFrag1.isResolved()); //$NON-NLS-1$
-		assertFalse("0.3", aFrag2.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", aFrag3.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", b.isResolved()); //$NON-NLS-1$
-		assertTrue("0.6", c.isResolved()); //$NON-NLS-1$
-		assertTrue("0.7", d.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aResolvedImports = a.getResolvedImports();
-		ExportPackageDescription[] bSelectedExports = b.getSelectedExports();
-
-		assertEquals("1.0", 3, aResolvedImports.length); //$NON-NLS-1$
-		assertEquals("1.1", 3, bSelectedExports.length); //$NON-NLS-1$
-		for (int i = 0; i < aResolvedImports.length; i++) {
-			assertEquals(bSelectedExports[i], aResolvedImports[i]);
-		}
-
-		BundleDescription[] aResolvedRequires = a.getResolvedRequires();
-		assertEquals("1.0", 3, aResolvedRequires.length); //$NON-NLS-1$
-		assertEquals("1.1", b, aResolvedRequires[0]); //$NON-NLS-1$
-		assertEquals("1.2", c, aResolvedRequires[1]); //$NON-NLS-1$
-		assertEquals("1.3", d, aResolvedRequires[2]); //$NON-NLS-1$
-	}
-
-	public void testFragmentConstraints07() throws BundleException {
-		// same as testFragmentConstraints06 but with a cycle
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "b"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag1"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, d"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, e"); //$NON-NLS-1$
-		BundleDescription aFrag1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c, e"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d, f"); //$NON-NLS-1$
-		BundleDescription aFrag2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "aFrag3"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "b, c"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "c, d"); //$NON-NLS-1$
-		BundleDescription aFrag3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a, b, c"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "c"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c1, c2, c3"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "d"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d1, d2, d3"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "a"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + "_" + manifest.get(Constants.BUNDLE_VERSION), id++); //$NON-NLS-1$
-
-		state.addBundle(a);
-		state.addBundle(aFrag1);
-		state.addBundle(aFrag2);
-		state.addBundle(aFrag3);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.resolve();
-
-		assertTrue("0.1", a.isResolved()); //$NON-NLS-1$
-		assertFalse("0.2", aFrag1.isResolved()); //$NON-NLS-1$
-		assertFalse("0.3", aFrag2.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", aFrag3.isResolved()); //$NON-NLS-1$
-		assertTrue("0.5", b.isResolved()); //$NON-NLS-1$
-		assertTrue("0.6", c.isResolved()); //$NON-NLS-1$
-		assertTrue("0.7", d.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aResolvedImports = a.getResolvedImports();
-		ExportPackageDescription[] aSelectedExports = a.getSelectedExports();
-		ExportPackageDescription[] bSelectedExports = b.getSelectedExports();
-		ExportPackageDescription[] dResolvedImports = d.getResolvedImports();
-
-		assertEquals("1.0", 3, aResolvedImports.length); //$NON-NLS-1$
-		assertEquals("1.1", 3, bSelectedExports.length); //$NON-NLS-1$
-		for (int i = 0; i < aResolvedImports.length; i++) {
-			assertEquals(bSelectedExports[i], aResolvedImports[i]);
-		}
-
-		BundleDescription[] aResolvedRequires = a.getResolvedRequires();
-		assertEquals("1.0", 3, aResolvedRequires.length); //$NON-NLS-1$
-		assertEquals("1.1", b, aResolvedRequires[0]); //$NON-NLS-1$
-		assertEquals("1.2", c, aResolvedRequires[1]); //$NON-NLS-1$
-		assertEquals("1.3", d, aResolvedRequires[2]); //$NON-NLS-1$
-		assertEquals("2.0", 1, aSelectedExports.length); //$NON-NLS-1$
-		assertEquals("2.1", 1, dResolvedImports.length); //$NON-NLS-1$
-		assertEquals("2.2", aSelectedExports[0], dResolvedImports[0]); //$NON-NLS-1$
-	}
-
-	public void testFragmentsBug188199() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "c"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag"); //$NON-NLS-1$
-		BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "a, a.frag"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "c"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, "C", bundleID++); //$NON-NLS-1$
-
-		state.addBundle(a);
-		state.addBundle(aFrag);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.resolve();
-		assertTrue("0.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", aFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", b.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", c.isResolved()); //$NON-NLS-1$
-
-		state.removeBundle(c);
-		state.resolve(false);
-		assertFalse("1.1", a.isResolved()); //$NON-NLS-1$
-		assertFalse("1.2", aFrag.isResolved()); //$NON-NLS-1$
-		assertFalse("1.3", b.isResolved()); //$NON-NLS-1$
-
-		state.addBundle(c);
-		state.resolve();
-		assertTrue("2.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", aFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("2.3", b.isResolved()); //$NON-NLS-1$
-		assertTrue("2.4", c.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		ExportPackageDescription[] bImports = b.getResolvedImports();
-		assertTrue("3.1", aExports.length == 2); //$NON-NLS-1$
-		assertTrue("3.2", bImports.length == 2); //$NON-NLS-1$
-		assertTrue("3.3", aExports[0] == bImports[0]); //$NON-NLS-1$
-		assertTrue("3.4", aExports[1] == bImports[1]); //$NON-NLS-1$
-	}
-
-	public void testFragmentsMultipleVersion() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription a1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + '_' + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
-		BundleDescription aFrag1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + '_' + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription a2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + '_' + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
-		BundleDescription aFrag2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + '_' + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a1);
-		state.addBundle(aFrag1);
-		state.addBundle(a2);
-		state.addBundle(aFrag2);
-		state.resolve();
-		assertTrue("0.1", a1.isResolved()); //$NON-NLS-1$
-		assertTrue("0.2", aFrag1.isResolved()); //$NON-NLS-1$
-		assertTrue("0.3", a2.isResolved()); //$NON-NLS-1$
-		assertTrue("0.4", aFrag2.isResolved()); //$NON-NLS-1$
-
-		state.removeBundle(a2);
-		state.resolve(false);
-		assertTrue("1.1", a1.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", aFrag2.isResolved()); //$NON-NLS-1$
-		assertFalse("1.3", aFrag1.isResolved()); //$NON-NLS-1$
-		assertEquals("1.4", a1, aFrag2.getHost().getSupplier()); //$NON-NLS-1$
-	}
-
-	public void testPlatformProperties01() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.osgi"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription systemBundle = state.getFactory().createBundleDescription(state, manifest, "org.eclipse.osgi", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.b, pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.4"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.b"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription systemB = state.getFactory().createBundleDescription(state, manifest, "system.b", bundleID++); //$NON-NLS-1$
-
-		Dictionary[] props = new Dictionary[] {new Hashtable(), new Hashtable()};
-		props[0].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("org.osgi.framework.executionenvironment", "J2SE-1.2"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.b, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.executionenvironment", "J2SE-1.4"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(systemBundle);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(systemB);
-		state.resolve();
-
-		assertTrue("1.0", systemBundle.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", systemB.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedImports()[1].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.1", b.getResolvedImports()[0].getExporter() == systemB); //$NON-NLS-1$
-
-		// now test the uses clause for pkg.b such that bundle 'A' will be forced to used
-		// pkg.system from bundle 'system.b'
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.b; uses:=\"pkg.system.b\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription b_updated = state.getFactory().createBundleDescription(state, manifest, "B", b.getBundleId()); //$NON-NLS-1$
-		state.updateBundle(b_updated);
-		state.resolve(new BundleDescription[] {b_updated});
-
-		assertTrue("3.0", systemBundle.isResolved()); //$NON-NLS-1$
-		assertTrue("3.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("3.2", b_updated.isResolved()); //$NON-NLS-1$
-		assertTrue("3.3", systemB.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedImports()[1].getExporter() == systemB); //$NON-NLS-1$
-		assertTrue("2.1", b_updated.getResolvedImports()[0].getExporter() == systemB); //$NON-NLS-1$
-	}
-
-	public void testPlatformProperties02() throws BundleException {
-		// same as 01 except use alias system.bundle to another name "test.system.bundle"
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.system.bundle"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription systemBundle = state.getFactory().createBundleDescription(state, manifest, "test.system.bundle", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.b, pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.4"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.b"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription systemB = state.getFactory().createBundleDescription(state, manifest, "system.b", bundleID++); //$NON-NLS-1$
-
-		Dictionary[] props = new Dictionary[] {new Hashtable(), new Hashtable()};
-		props[0].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("org.osgi.framework.executionenvironment", "J2SE-1.2"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("osgi.system.bundle", "test.system.bundle"); // set the system.bundle to another system bundle (other than org.eclipse.osgi) //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.b, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.executionenvironment", "J2SE-1.4"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(systemBundle);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(systemB);
-		state.resolve();
-
-		assertTrue("1.0", systemBundle.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", systemB.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedImports()[1].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.1", b.getResolvedImports()[0].getExporter() == systemB); //$NON-NLS-1$
-
-		// now test the uses clause for pkg.b such that bundle 'A' will be forced to used
-		// pkg.system from bundle 'system.b'
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.b; uses:=\"pkg.system.b\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription b_updated = state.getFactory().createBundleDescription(state, manifest, "B", b.getBundleId()); //$NON-NLS-1$
-		state.updateBundle(b_updated);
-		state.resolve(new BundleDescription[] {b_updated});
-
-		assertTrue("3.0", systemBundle.isResolved()); //$NON-NLS-1$
-		assertTrue("3.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("3.2", b_updated.isResolved()); //$NON-NLS-1$
-		assertTrue("3.3", systemB.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedImports()[1].getExporter() == systemB); //$NON-NLS-1$
-		assertTrue("2.1", b_updated.getResolvedImports()[0].getExporter() == systemB); //$NON-NLS-1$
-	}
-
-	public void testPlatformProperties03() throws BundleException {
-		// test that require-bundle, fragment-host, and import-package of system.bundle can be aliased properly
-		State state = buildEmptyState();
-		int bundleID = 0;
-		String configuredSystemBundle = "org.eclipse.osgi"; //$NON-NLS-1$
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, configuredSystemBundle);
-		manifest.put(Constants.EXPORT_PACKAGE, "system.bundle.exported.pkg"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription systemBundle = state.getFactory().createBundleDescription(state, manifest, configuredSystemBundle, bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "system.bundle"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, configuredSystemBundle);
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "system.bundle.exported.pkg; bundle-symbolic-name=\"system.bundle\""); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, "C", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "system.bundle.exported.pkg; bundle-symbolic-name=\"" + configuredSystemBundle + "\""); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, "D", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.a; bundle-symbolic-name=\"system.bundle\""); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, "E", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.a; bundle-symbolic-name=\"" + configuredSystemBundle + "\""); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, "F", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "system.bundle"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, "G", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, configuredSystemBundle);
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, "H", bundleID++); //$NON-NLS-1$
-
-		Dictionary[] props = new Dictionary[] {new Hashtable(), new Hashtable()};
-		props[0].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.b"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("org.osgi.framework.executionenvironment", "J2SE-1.2"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(systemBundle);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.resolve();
-
-		assertTrue("1.0", systemBundle.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.8", h.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedRequires()[0] == systemBundle); //$NON-NLS-1$
-		assertTrue("2.1", b.getResolvedRequires()[0] == systemBundle); //$NON-NLS-1$
-		assertTrue("2.2", c.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.3", d.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.4", e.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.5", f.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.6", g.getHost().getHosts()[0] == systemBundle); //$NON-NLS-1$
-		assertTrue("2.7", h.getHost().getHosts()[0] == systemBundle); //$NON-NLS-1$
-	}
-
-	public void testPlatformProperties04() throws BundleException {
-		// same as 03 except use a different system.bundle alias other than org.eclipse.osgi
-		// test that require-bundle, fragment-host, and import-package of system.bundle can be aliased properly
-		State state = buildEmptyState();
-		int bundleID = 0;
-		String configuredSystemBundle = "test.system.bundle"; //$NON-NLS-1$
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, configuredSystemBundle);
-		manifest.put(Constants.EXPORT_PACKAGE, "system.bundle.exported.pkg"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription systemBundle = state.getFactory().createBundleDescription(state, manifest, configuredSystemBundle, bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "system.bundle"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, configuredSystemBundle);
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "system.bundle.exported.pkg; bundle-symbolic-name=\"system.bundle\""); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, "C", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "system.bundle.exported.pkg; bundle-symbolic-name=\"" + configuredSystemBundle + "\""); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, "D", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.a; bundle-symbolic-name=\"system.bundle\""); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, "E", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.a; bundle-symbolic-name=\"" + configuredSystemBundle + "\""); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, "F", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "system.bundle"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, "G", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, configuredSystemBundle);
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, "H", bundleID++); //$NON-NLS-1$
-
-		Dictionary[] props = new Dictionary[] {new Hashtable(), new Hashtable()};
-		props[0].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.b"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("org.osgi.framework.executionenvironment", "J2SE-1.2"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("osgi.system.bundle", configuredSystemBundle); // set the system.bundle to another system bundle (other than org.eclipse.osgi) //$NON-NLS-1$
-
-		state.setPlatformProperties(props);
-		state.addBundle(systemBundle);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.resolve();
-
-		assertTrue("1.0", systemBundle.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.8", h.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedRequires()[0] == systemBundle); //$NON-NLS-1$
-		assertTrue("2.1", b.getResolvedRequires()[0] == systemBundle); //$NON-NLS-1$
-		assertTrue("2.2", c.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.3", d.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.4", e.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.5", f.getResolvedImports()[0].getExporter() == systemBundle); //$NON-NLS-1$
-		assertTrue("2.6", g.getHost().getHosts()[0] == systemBundle); //$NON-NLS-1$
-		assertTrue("2.7", h.getHost().getHosts()[0] == systemBundle); //$NON-NLS-1$
-	}
-
-	public void testPlatformPropertiesBug188075() throws BundleException, IOException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put("Eclipse-PlatformFilter", "(!(test=value))"); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put("Eclipse-PlatformFilter", "(test=value)"); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++); //$NON-NLS-1$
-
-		Dictionary props = new Hashtable();
-		props.put("test", "value"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.resolve();
-
-		assertFalse("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", b.isResolved()); //$NON-NLS-1$
-
-		BundleContext context = OSGiTestsActivator.getContext();
-		File stateCache = context.getDataFile("statecache"); //$NON-NLS-1$
-		stateCache.mkdirs();
-		StateObjectFactory.defaultFactory.writeState(state, stateCache);
-		state = StateObjectFactory.defaultFactory.readState(stateCache);
-		props = state.getPlatformProperties()[0];
-		assertEquals("2.0", "value", props.get("test")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		BundleDescription aCache = state.getBundle("A", null); //$NON-NLS-1$
-		BundleDescription bCache = state.getBundle("B", null); //$NON-NLS-1$
-		assertFalse("2.1", aCache.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", bCache.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testPlatformPropertiesBug207500a() throws BundleException, IOException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put("Eclipse-PlatformFilter", "(test=value1)"); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put("Eclipse-PlatformFilter", "(test=value2)"); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++); //$NON-NLS-1$
-
-		Dictionary props = new Hashtable();
-		props.put("test", new CatchAllValue("*")); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.resolve();
-
-		// Both should resolve
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", b.isResolved()); //$NON-NLS-1$
-
-		BundleContext context = OSGiTestsActivator.getContext();
-		File stateCache = context.getDataFile("statecache"); //$NON-NLS-1$
-		stateCache.mkdirs();
-		StateObjectFactory.defaultFactory.writeState(state, stateCache);
-		state = StateObjectFactory.defaultFactory.readState(stateCache);
-		props = state.getPlatformProperties()[0];
-		// we do not persist custom properties
-		assertNull("2.0", props.get("test")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription aCache = state.getBundle("A", null); //$NON-NLS-1$
-		BundleDescription bCache = state.getBundle("B", null); //$NON-NLS-1$
-		assertTrue("2.1", aCache.isResolved()); //$NON-NLS-1$
-		assertTrue("2.2", bCache.isResolved()); //$NON-NLS-1$
-
-		// re-resolve without the custom value
-		state.setResolver(platformAdmin.getResolver());
-		state.resolve(false);
-		// both should fail to resolve
-		assertFalse("3.1", aCache.isResolved()); //$NON-NLS-1$
-		assertFalse("3.2", bCache.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testPlatformPropertiesBug207500b() throws BundleException, IOException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_NATIVECODE, "libwrapper-linux-x86-32.so; wrapper-linux-x86-32; osname=linux; processor=x86"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		Dictionary props = new Hashtable();
-		props.put("osgi.os", new CatchAllValue("*")); //$NON-NLS-1$ //$NON-NLS-2$
-		props.put("osgi.arch", new CatchAllValue("*")); //$NON-NLS-1$ //$NON-NLS-2$
-		props.put("osgi.lang", new CatchAllValue("*")); //$NON-NLS-1$ //$NON-NLS-2$
-		props.put("osgi.ws", new CatchAllValue("*")); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(a);
-		state.resolve();
-
-		// should resolve
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testPlatformPropertiesBug246640a() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		String configuredSystemBundle = "org.eclipse.osgi; singleton:=true"; //$NON-NLS-1$
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, configuredSystemBundle);
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription systemBundle1 = state.getFactory().createBundleDescription(state, manifest, configuredSystemBundle + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, configuredSystemBundle);
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription systemBundle2 = state.getFactory().createBundleDescription(state, manifest, configuredSystemBundle + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "require.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "org.eclipse.osgi; bundle-version=2.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription requireSystemBundle = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		Dictionary[] props = new Dictionary[] {new Hashtable(), new Hashtable()};
-		props[0].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("org.osgi.framework.executionenvironment", "J2SE-1.2"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.b, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.executionenvironment", "J2SE-1.4"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(systemBundle1);
-		state.addBundle(systemBundle2);
-		state.addBundle(a);
-		state.addBundle(requireSystemBundle);
-		state.resolve();
-
-		assertFalse("1.0", systemBundle1.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", systemBundle2.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", requireSystemBundle.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedImports()[0].getExporter() == systemBundle2); //$NON-NLS-1$
-	}
-
-	public void testPlatformPropertiesBug246640b() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		String configuredSystemBundle = "test.system.bundle; singleton:=true"; //$NON-NLS-1$
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, configuredSystemBundle);
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription systemBundle1 = state.getFactory().createBundleDescription(state, manifest, configuredSystemBundle + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, configuredSystemBundle);
-		manifest.put(Constants.BUNDLE_VERSION, "2.0"); //$NON-NLS-1$
-		BundleDescription systemBundle2 = state.getFactory().createBundleDescription(state, manifest, configuredSystemBundle + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++); //$NON-NLS-1$
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "require.system.b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.system.bundle; bundle-version=2.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2"); //$NON-NLS-1$
-		BundleDescription requireSystemBundle = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		Dictionary[] props = new Dictionary[] {new Hashtable(), new Hashtable()};
-		props[0].put("osgi.system.bundle", "test.system.bundle"); // set the system.bundle to another system bundle (other than org.eclipse.osgi) //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("org.osgi.framework.executionenvironment", "J2SE-1.2"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.b, pkg.system.c"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[1].put("org.osgi.framework.executionenvironment", "J2SE-1.4"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		state.setPlatformProperties(props);
-		state.addBundle(systemBundle1);
-		state.addBundle(systemBundle2);
-		state.addBundle(a);
-		state.addBundle(requireSystemBundle);
-		state.resolve();
-
-		assertFalse("1.0", systemBundle1.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", systemBundle2.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", requireSystemBundle.isResolved()); //$NON-NLS-1$
-
-		assertTrue("2.0", a.getResolvedImports()[0].getExporter() == systemBundle2); //$NON-NLS-1$
-	}
-
-	private ExportPackageDescription[] isConsistent(ExportPackageDescription[] pkgs1, ExportPackageDescription[] pkgs2) {
-		for (int i = 0; i < pkgs1.length; i++)
-			for (int j = 0; j < pkgs2.length; j++)
-				if (pkgs1[i].getName().equals(pkgs2[j].getName()) && pkgs1[i] != pkgs2[j])
-					return new ExportPackageDescription[] {pkgs1[i], pkgs2[j]};
-		return null;
-	}
-
-	private boolean contains(Object[] array, Object element) {
-		for (int i = 0; i < array.length; i++)
-			if (array[i].equals(element))
-				return true;
-		return false;
-	}
-
-	private static final String MANIFEST_ROOT = "test_files/resolverTests/";
-
-	private Dictionary loadManifest(String manifest) {
-		URL url = getContext().getBundle().getEntry(MANIFEST_ROOT + manifest);
-		try {
-			return Headers.parseManifest(url.openStream());
-		} catch (IOException e) {
-			fail("Unexpected error loading manifest: " + manifest, e);
-		} catch (BundleException e) {
-			fail("Unexpected error loading manifest: " + manifest, e);
-		}
-		return null;
-	}
-
-	public void testSelectionPolicy() throws BundleException {
-		State state = buildEmptyState();
-		Resolver resolver = state.getResolver();
-		resolver.setSelectionPolicy(new Comparator() {
-			public int compare(Object o1, Object o2) {
-				if (!(o1 instanceof BaseDescription) || !(o2 instanceof BaseDescription))
-					throw new IllegalArgumentException();
-				Version v1 = null;
-				Version v2 = null;
-				v1 = ((BaseDescription) o1).getVersion();
-				v2 = ((BaseDescription) o2).getVersion();
-				// only take version in to account and use lower versions over higher ones
-				return v1.compareTo(v2);
-			}
-		});
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1"); //$NON-NLS-1$
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1"); //$NON-NLS-1$
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.dependent; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testDependent = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++); //$NON-NLS-1$
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.addBundle(testDependent);
-		state.resolve();
-		assertTrue("1.0", testHost100.isResolved()); //$NON-NLS-1$
-		assertFalse("1.1", testHost101.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", testFrag100.isResolved()); //$NON-NLS-1$
-		assertFalse("1.3", testFrag101.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", testDependent.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testBug187616() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1"); //$NON-NLS-1$
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1"); //$NON-NLS-1$
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.dependent; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testDependent = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++); //$NON-NLS-1$
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.addBundle(testDependent);
-		StateDelta stateDelta = state.resolve();
-		assertFalse("1.0", testHost100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", testHost101.isResolved()); //$NON-NLS-1$
-		assertFalse("1.2", testFrag100.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", testFrag101.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", testDependent.isResolved()); //$NON-NLS-1$
-		BundleDelta[] bDelta = stateDelta.getChanges(BundleDelta.ADDED | BundleDelta.RESOLVED, false);
-		assertTrue("2.0", bDelta.length == 5); //$NON-NLS-1$
-	}
-
-	public void testBug217150() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", bundleID++); //$NON-NLS-1$
-
-		try {
-			testHost100.getFragments();
-			fail("Expected to get an exception here!!!"); //$NON-NLS-1$
-		} catch (IllegalStateException e) {
-			// Expected exception.
-		}
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", bundleID++); //$NON-NLS-1$
-		BundleDescription[] hosts = testFrag100.getHost().getHosts();
-		assertNotNull("hosts is null", hosts); //$NON-NLS-1$
-		assertEquals("Unexpected number of hosts", 0, hosts.length); //$NON-NLS-1$
-	}
-
-	public void testNativeCodeResolution01() throws BundleException {
-		State state = buildEmptyState();
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put("osgi.ws", "win32"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("osgi.os", "win32"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("osgi.arch", "x86"); //$NON-NLS-1$ //$NON-NLS-2$
-		props[0].put("osgi.nl", "en_US"); //$NON-NLS-1$ //$NON-NLS-2$
-		state.setPlatformProperties(props);
-
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "NativeBundle"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_NATIVECODE, "Bundle-NativeCode: nativefile1.txt;processor=x86;osname=Windows2000;osname=\"Windows 2003\";osname=Windows95;osname=Windows98;osname=WindowsNT;osname=WindowsXP;osname=\"Windows NT (unknown)\";osname=\"Windows Vista\"; language=en"); //$NON-NLS-1$
-		BundleDescription testNativeBundle = state.getFactory().createBundleDescription(state, manifest, "NativeBundle", bundleID++); //$NON-NLS-1$
-		state.addBundle(testNativeBundle);
-		state.resolve();
-		assertTrue("1.0", testNativeBundle.isResolved()); //$NON-NLS-1$
-
-	}
-
-	public void testNativeCodeResolution02() throws BundleException {
-		State state = buildEmptyState();
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put(Constants.FRAMEWORK_OS_NAME, "WIN32"); // Use different case for osname //$NON-NLS-1$
-		props[0].put(Constants.FRAMEWORK_PROCESSOR, "x86"); //$NON-NLS-1$
-		state.setPlatformProperties(props);
-
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "NativeBundle"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_NATIVECODE, "Bundle-NativeCode: nativefile1.txt;processor=x86;osname=Windows2000;osname=\"Windows 2003\";osname=Windows95;osname=Windows98;osname=WindowsNT;osname=WindowsXP;osname=\"Windows NT (unknown)\";osname=\"Windows Vista\""); //$NON-NLS-1$
-		BundleDescription testNativeBundle = state.getFactory().createBundleDescription(state, manifest, "NativeBundle", bundleID++); //$NON-NLS-1$
-		state.addBundle(testNativeBundle);
-		state.resolve();
-		assertTrue("1.0", testNativeBundle.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testNativeCodeResolution03() throws BundleException {
-		State state = buildEmptyState();
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put(Constants.FRAMEWORK_OS_NAME, "win32"); //$NON-NLS-1$
-		props[0].put(Constants.FRAMEWORK_PROCESSOR, "X86"); // Use different case for processor //$NON-NLS-1$
-		state.setPlatformProperties(props);
-
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "NativeBundle"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_NATIVECODE, "Bundle-NativeCode: nativefile1.txt;processor=x86;osname=Windows2000;osname=\"Windows 2003\";osname=Windows95;osname=Windows98;osname=WindowsNT;osname=WindowsXP;osname=\"Windows NT (unknown)\";osname=\"Windows Vista\""); //$NON-NLS-1$
-		BundleDescription testNativeBundle = state.getFactory().createBundleDescription(state, manifest, "NativeBundle", bundleID++); //$NON-NLS-1$
-		state.addBundle(testNativeBundle);
-		state.resolve();
-		assertTrue("1.0", testNativeBundle.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testNativeCodeResolution04() throws BundleException {
-		State state = buildEmptyState();
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put(Constants.FRAMEWORK_OS_NAME, "DoesNotExist"); // Use different case for osname //$NON-NLS-1$
-		props[0].put(Constants.FRAMEWORK_PROCESSOR, "InVaLid"); // Use different case for processor //$NON-NLS-1$
-		state.setPlatformProperties(props);
-
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "NativeBundle"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_NATIVECODE, "Bundle-NativeCode: nativefile1.txt;processor=iNvAlid;osname=doeSnoTexist"); //$NON-NLS-1$
-		BundleDescription testNativeBundle = state.getFactory().createBundleDescription(state, manifest, "NativeBundle", bundleID++); //$NON-NLS-1$
-		state.addBundle(testNativeBundle);
-		state.resolve();
-		assertTrue("1.0", testNativeBundle.isResolved()); //$NON-NLS-1$
-	}
-
-	public void testMultiStateAdd01() throws BundleException {
-		State state1 = buildEmptyState();
-
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk10 = state1.getFactory().createBundleDescription(state1, manifest, "sdk10", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state1.getFactory().createBundleDescription(state1, manifest, "platform10", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state1.getFactory().createBundleDescription(state1, manifest, "rcp10", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription gef10 = state1.getFactory().createBundleDescription(state1, manifest, "gef10", 3); //$NON-NLS-1$
-
-		state1.addBundle(sdk10);
-		state1.addBundle(platform10);
-		state1.addBundle(rcp10);
-		state1.addBundle(gef10);
-		state1.resolve();
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-
-		State state2 = buildEmptyState();
-		try {
-			state2.addBundle(rcp10);
-			fail("Expected IllegalStateException on adding to multiple states"); //$NON-NLS-1$
-		} catch (IllegalStateException e) {
-			// expected
-		}
-	}
-
-	public void testMultiStateAdd02() throws BundleException {
-		State state1 = buildEmptyState();
-
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk10 = state1.getFactory().createBundleDescription(state1, manifest, "sdk10", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state1.getFactory().createBundleDescription(state1, manifest, "platform10", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state1.getFactory().createBundleDescription(state1, manifest, "rcp10", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription gef10 = state1.getFactory().createBundleDescription(state1, manifest, "gef10", 3); //$NON-NLS-1$
-
-		state1.addBundle(sdk10);
-		state1.addBundle(platform10);
-		state1.addBundle(rcp10);
-		state1.addBundle(gef10);
-		state1.resolve();
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-
-		// remove the rcp10 bundle.  The bundle will be removal pending
-		// this should still throw an exception until the removal is no longer pending
-		state1.removeBundle(rcp10);
-		State state2 = buildEmptyState();
-		try {
-			state2.addBundle(rcp10);
-			fail("Expected IllegalStateException on adding to multiple states"); //$NON-NLS-1$
-		} catch (IllegalStateException e) {
-			// expected
-		}
-	}
-
-	public void testMultiStateAdd03() throws BundleException {
-		State state1 = buildEmptyState();
-
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription sdk10 = state1.getFactory().createBundleDescription(state1, manifest, "sdk10", 0); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\""); //$NON-NLS-1$
-		BundleDescription platform10 = state1.getFactory().createBundleDescription(state1, manifest, "platform10", 1); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		BundleDescription rcp10 = state1.getFactory().createBundleDescription(state1, manifest, "rcp10", 2); //$NON-NLS-1$
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true"); //$NON-NLS-1$ //$NON-NLS-2$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\""); //$NON-NLS-1$
-		BundleDescription gef10 = state1.getFactory().createBundleDescription(state1, manifest, "gef10", 3); //$NON-NLS-1$
-
-		state1.addBundle(sdk10);
-		state1.addBundle(platform10);
-		state1.addBundle(rcp10);
-		state1.addBundle(gef10);
-		state1.resolve();
-		assertTrue("1.0", sdk10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", platform10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", rcp10.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", gef10.isResolved()); //$NON-NLS-1$
-
-		// remove the rcp10 bundle.  The bundle will be removal pending
-		// this should still throw an exception until the removal is no longer pending
-		state1.removeBundle(rcp10);
-		state1.resolve(new BundleDescription[] {rcp10});
-		State state2 = buildEmptyState();
-
-		try {
-			state2.addBundle(rcp10);
-		} catch (IllegalStateException e) {
-			fail("Unexpected IllegalStateException on adding to state", e); //$NON-NLS-1$
-		}
-	}
-
-	private State createBug266935State() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments
-		Hashtable manifest = new Hashtable();
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "a"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-
-		state.resolve();
-		assertTrue("A is not resolved", a.isResolved()); //$NON-NLS-1$
-		assertTrue("B is not resolved", b.isResolved()); //$NON-NLS-1$
-		return state;
-	}
-
-	private BundleDescription updateStateBug266935(State state, BundleDescription a) throws BundleException {
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, a.getSymbolicName());
-		manifest.put(Constants.BUNDLE_VERSION, a.getVersion().toString());
-		BundleDescription newA = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), a.getBundleId());
-		state.updateBundle(newA);
-		return newA;
-	}
-
-	public void testBug266935_01() throws BundleException {
-		State state = createBug266935State();
-		BundleDescription a = state.getBundle("a", new Version("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription newA = updateStateBug266935(state, a);
-		state.removeBundle(a);
-		state.resolve(new BundleDescription[] {newA});
-	}
-
-	public void testBug266935_02() throws BundleException {
-		State state = createBug266935State();
-		BundleDescription a = state.getBundle("a", new Version("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		updateStateBug266935(state, a);
-		state.removeBundle(a);
-		state.resolve(new BundleDescription[] {a});
-	}
-
-	public void testBug266935_03() throws BundleException {
-		State state = createBug266935State();
-		BundleDescription a = state.getBundle("a", new Version("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription newA = updateStateBug266935(state, a);
-		state.removeBundle(newA);
-		state.resolve(new BundleDescription[] {newA});
-	}
-
-	public void testBug266935_04() throws BundleException {
-		State state = createBug266935State();
-		BundleDescription a = state.getBundle("a", new Version("1.0")); //$NON-NLS-1$ //$NON-NLS-2$
-		BundleDescription newA = updateStateBug266935(state, a);
-		state.removeBundle(newA);
-		state.resolve(new BundleDescription[] {a});
-	}
-
-	public void testBug320124() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "d"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "c"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "a"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "e"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "d"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "d"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "e"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "e"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-
-		state.resolve();
-		assertTrue("A is not resolved", a.isResolved()); //$NON-NLS-1$
-		assertTrue("B is not resolved", b.isResolved()); //$NON-NLS-1$
-		assertTrue("C is not resolved", c.isResolved()); //$NON-NLS-1$
-		assertTrue("D is not resolved", d.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] visible = state.getStateHelper().getVisiblePackages(a, StateHelper.VISIBLE_INCLUDE_EE_PACKAGES | StateHelper.VISIBLE_INCLUDE_ALL_HOST_WIRES);
-
-		assertEquals("Wrong number of visible", 2, visible.length);
-	}
-
-	public static class CatchAllValue {
-		public CatchAllValue(String s) {
-			//do nothing
-		}
-
-		public boolean equals(Object obj) {
-			return true;
-		}
-	}
-
-	public void testBug324618() throws BundleException {
-		State state = buildEmptyState();
-		long bundleID = 0;
-		Dictionary manifest;
-
-		manifest = loadManifest("p1.MF");
-		BundleDescription p1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-		manifest = loadManifest("p2.MF");
-		BundleDescription p2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-		manifest = loadManifest("c1.MF");
-		BundleDescription c1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(p1);
-		state.addBundle(p2);
-		state.addBundle(c1);
-
-		state.resolve();
-
-		ExportPackageDescription x = state.linkDynamicImport(c1, "x");
-		assertNotNull("x dynamic import is null", x);
-		ExportPackageDescription xSub = state.linkDynamicImport(c1, "x.sub");
-		assertNotNull("x.sub dynamic import is null", xSub);
-		assertEquals("The exporter is not the same for x and x.sub", x.getExporter(), xSub.getExporter());
-
-		ExportPackageDescription xExtra = state.linkDynamicImport(c1, "x.extra");
-		assertNotNull("x.extra dynamic import is null", xExtra);
-	}
-}
-//testFragmentUpdateNoVersionChanged()
-//testFragmentUpdateVersionChanged()
-//testHostUpdateNoVersionChanged()
-//testHostUpdateVersionChanged()
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SubstitutableExportsTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SubstitutableExportsTest.java
deleted file mode 100644
index 4d5d289..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/SubstitutableExportsTest.java
+++ /dev/null
@@ -1,2782 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.util.Hashtable;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-
-public class SubstitutableExportsTest extends AbstractStateTest {
-	public static Test suite() {
-		return new TestSuite(SubstitutableExportsTest.class);
-	}
-
-	public SubstitutableExportsTest(String name) {
-		super(name);
-	}
-
-	private State getSubstituteBasicState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages
-		// D, E, F all requiring A, B, C respectively to access x, y packages
-		// all should get packages x and y from A
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		return state;
-	}
-
-	private State getSubstituteUsesState() throws BundleException {
-		// Same as basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause
-		// D, E, F all requiring A, B, C respectively to access x, y packages
-		// all should get packages x and y from A
-		// bundle G cannot resolve because of uses conflict with x package from Z
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; version=0.5; bundle=Z"); //$NON-NLS-1$
-		BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x;  bundle=Z"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(z);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		return state;
-	}
-
-	private State getSubstituteUsesCycleState() throws BundleException {
-		// Same as basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause + cycle
-		// D, E, F all requiring A, B, C respectively to access x, y packages
-		// all should get packages x and y from A and package z from G
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=0.5"); //$NON-NLS-1$
-		BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=x"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=x"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(z);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		return state;
-	}
-
-	private State getSubstituteBasicFragState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages
-		// Each have a fragment that exports and imports z package
-		// D, E, F all requiring A, B, C respectively to access x, y, z packages
-		// all should get packages x, y and z from A + fragment
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(aFrag);
-		state.addBundle(b);
-		state.addBundle(bFrag);
-		state.addBundle(c);
-		state.addBundle(cFrag);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		return state;
-	}
-
-	private State getSubstituteUsesFragState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause
-		// Each have a fragment that exports and imports z package
-		// D, E, F all requiring A, B, C respectively to access x, y, z packages
-		// all should get packages x, y and z from A + fragment
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; version=0.5; bundle=Z"); //$NON-NLS-1$
-		BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x;  bundle=Z"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(z);
-		state.addBundle(a);
-		state.addBundle(aFrag);
-		state.addBundle(b);
-		state.addBundle(bFrag);
-		state.addBundle(c);
-		state.addBundle(cFrag);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		return state;
-	}
-
-	private State getSubstituteUsesFragCycleState() throws BundleException {
-		// Same as basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause + cycle + frags
-		// D, E, F all requiring A, B, C respectively to access x, y packages
-		// all should get packages x and y from A and package z from G
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=2.0"); //$NON-NLS-1$
-		BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,q\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=\"[1.0,2.0)\", q"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,q\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=\"[1.0,2.0)\", q"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,q\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=\"[1.0,2.0)\", q"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "q; version=1.0; uses:=x"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "q; version=1.0"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "q; version=1.0; uses:=x"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "q; version=1.0"); //$NON-NLS-1$
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "q; x; version=1.0"); //$NON-NLS-1$
-		BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(z);
-		state.addBundle(a);
-		state.addBundle(aFrag);
-		state.addBundle(b);
-		state.addBundle(bFrag);
-		state.addBundle(c);
-		state.addBundle(cFrag);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.addBundle(i);
-		return state;
-	}
-
-	private State getSubstituteBasicReexportState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages
-		// D, E, F all requiring A, B, C respectively to access x, y packages are reexporting
-		// G, H, I all requiring D, E, F repectively to access x, y packages
-		// all should get packages x and y from A
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.addBundle(i);
-		return state;
-	}
-
-	private State getSubstituteUsesReexportState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages + "uses" clause
-		// D, E, F all requiring A, B, C respectively to access x, y packages are reexporting
-		// G, H, I all requiring D, E, F repectively to access x, y packages
-		// all should get packages x and y from A
-		// J cannot resolve because of uses conflicy with package x from Z
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; version=0.5; bundle=Z"); //$NON-NLS-1$
-		BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x;  bundle=Z"); //$NON-NLS-1$
-		BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(z);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.addBundle(i);
-		state.addBundle(j);
-		return state;
-	}
-
-	private State getSubstituteUsesReexportCycleState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages + uses clause + cycle
-		// D, E, F all requiring A, B, C respectively to access x, y packages are reexporting
-		// G, H, I all requiring D, E, F repectively to access x, y packages
-		// all should get packages x and y from A
-		// J cannot resolve because of uses conflicy with package x from Z
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; z; version=2.0"); //$NON-NLS-1$
-		BundleDescription z = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,z\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C; visibility:=reexport"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0; uses=\"x,y\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(z);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.addBundle(i);
-		state.addBundle(j);
-		return state;
-	}
-
-	private State getSubstituteUnresolvedFragState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages
-		// Each have a fragment that exports and imports z package and an extra unresolved import of q
-		// D, E, F all requiring A, B, C respectively to access x, y. z should not be accessible
-		// all should get packages x, y.
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "AFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "A"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; q; version=1.0"); //$NON-NLS-1$
-		BundleDescription aFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "BFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "B"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z; q; version=1.0"); //$NON-NLS-1$
-		BundleDescription bFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "CFrag"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.FRAGMENT_HOST, "C"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "z; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "z, q; version=1.0"); //$NON-NLS-1$
-		BundleDescription cFrag = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(aFrag);
-		state.addBundle(b);
-		state.addBundle(bFrag);
-		state.addBundle(c);
-		state.addBundle(cFrag);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		return state;
-	}
-
-	private State getSubstituteSplitState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages
-		// D, E, F all requiring A, B, C respectively to access x, y packages and export more content (split)
-		// all should get packages x and y from A
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
-		BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.addBundle(i);
-		state.addBundle(j);
-		return state;
-	}
-
-	private State getSubstituteSplitUsesState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages + uses
-		// D, E, F all requiring A, B, C respectively to access x, y packages and add more content (split)
-		// all should get packages x and y from A
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split; uses:=\"x,y,q\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split, q; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split; uses:=\"x,y,q\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split, q; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; split=split; mandatory:=split; uses:=\"x,y,q\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; split=split, q; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,r\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0, r; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,r\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0, r; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0; uses:=\"x,y,r\""); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0, r; version=\"[1.0,2.0)\""); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "G"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription g = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "H"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "D"); //$NON-NLS-1$
-		BundleDescription h = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "I"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "E"); //$NON-NLS-1$
-		BundleDescription i = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "J"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		BundleDescription j = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "K"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "q; r; version=2.0"); //$NON-NLS-1$
-		BundleDescription k = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "L"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "q; r; version=1.0"); //$NON-NLS-1$
-		BundleDescription l = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "M"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x, y, q, r"); //$NON-NLS-1$
-		BundleDescription m = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "N"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "q, r"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "F"); //$NON-NLS-1$
-		BundleDescription n = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		state.addBundle(g);
-		state.addBundle(h);
-		state.addBundle(i);
-		state.addBundle(j);
-		state.addBundle(k);
-		state.addBundle(l);
-		state.addBundle(m);
-		state.addBundle(n);
-		return state;
-	}
-
-	private State getNonOverlapingSubstituteBasicState() throws BundleException {
-		// Basic substitutable export test with A, B, C all exporting and importing x,y packages
-		// D, E, F all requiring A, B, C respectively to access x, y packages
-		// all should get packages x and y from A
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0; nomatch=nomatch"); //$NON-NLS-1$
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		manifest.put(Constants.IMPORT_PACKAGE, "x; y; version=1.0"); //$NON-NLS-1$
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "A"); //$NON-NLS-1$
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "B"); //$NON-NLS-1$
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.REQUIRE_BUNDLE, "C"); //$NON-NLS-1$
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.addBundle(d);
-		state.addBundle(e);
-		state.addBundle(f);
-		return state;
-	}
-
-	public void testSubstitutableExports001() throws BundleException {
-		State state = getSubstituteBasicState();
-		state.resolve();
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		ExportPackageDescription[] aSubtitutes = new ExportPackageDescription[] {aExports[0], aExports[1]};
-		assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
-		assertEquals("bVisible not correct", aSubtitutes, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aSubtitutes, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aSubtitutes, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aSubtitutes, fVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports002() throws BundleException {
-		State state = getSubstituteUsesState();
-		state.resolve();
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-		BundleDescription g = state.getBundle(7);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertFalse("1.6", g.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 0, gVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
-		assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports003() throws BundleException {
-		State state = getSubstituteUsesCycleState();
-		state.resolve();
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-		BundleDescription g = state.getBundle(7);
-		BundleDescription h = state.getBundle(8);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-		ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
-		assertEquals("hVisible wrong number", 3, hVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExported = a.getSelectedExports();
-		ExportPackageDescription[] gExported = g.getSelectedExports();
-		ExportPackageDescription[] expected = new ExportPackageDescription[aExported.length + gExported.length];
-		System.arraycopy(aExported, 0, expected, 0, aExported.length);
-		System.arraycopy(gExported, 0, expected, aExported.length, gExported.length);
-		for (int i = 0; i < expected.length; i++) {
-			if (i == 2)
-				assertContains("aVisible not correct", aVisible, expected[i]); //$NON-NLS-1$
-			assertContains("bVisible not correct", bVisible, expected[i]); //$NON-NLS-1$
-			assertContains("cVisible not correct", cVisible, expected[i]); //$NON-NLS-1$
-			assertContains("dVisible not correct", dVisible, expected[i]); //$NON-NLS-1$
-			assertContains("eVisible not correct", eVisible, expected[i]); //$NON-NLS-1$
-			assertContains("fVisible not correct", fVisible, expected[i]); //$NON-NLS-1$
-			if (i == 0 || i == 1)
-				assertContains("gVisible not correct", gVisible, expected[i]); //$NON-NLS-1$
-			assertContains("hVisible not correct", hVisible, expected[i]); //$NON-NLS-1$
-		}
-	}
-
-	public void testSubstitutableExports004() throws BundleException {
-		State state = getSubstituteBasicFragState();
-		state.resolve();
-
-		BundleDescription a = state.getBundle(0);
-		BundleDescription aFrag = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription bFrag = state.getBundle(3);
-		BundleDescription c = state.getBundle(4);
-		BundleDescription cFrag = state.getBundle(5);
-		BundleDescription d = state.getBundle(6);
-		BundleDescription e = state.getBundle(7);
-		BundleDescription f = state.getBundle(8);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("bFragVisible wrong number", 1, bFragVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("cFragVisible wrong number", 1, cFragVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
-		ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
-		ExportPackageDescription[] aFragExports = new ExportPackageDescription[] {aExports[2]};
-		assertEquals("bVisible not correct", aDeclaredExports, bVisible); //$NON-NLS-1$
-		assertEquals("bFragVisible not correct", aFragExports, bFragVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aDeclaredExports, cVisible); //$NON-NLS-1$
-		assertEquals("cFragVisible not correct", aFragExports, cFragVisible); //$NON-NLS-1$
-
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports005() throws BundleException {
-		State state = getSubstituteUsesFragState();
-		state.resolve();
-
-		//		BundleDescription z = state.getBundle(0);
-		BundleDescription a = state.getBundle(1);
-		BundleDescription aFrag = state.getBundle(2);
-		BundleDescription b = state.getBundle(3);
-		BundleDescription bFrag = state.getBundle(4);
-		BundleDescription c = state.getBundle(5);
-		BundleDescription cFrag = state.getBundle(6);
-		BundleDescription d = state.getBundle(7);
-		BundleDescription e = state.getBundle(8);
-		BundleDescription f = state.getBundle(9);
-		BundleDescription g = state.getBundle(10);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertFalse("1.6", g.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("bFragVisible wrong number", 1, bFragVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("cFragVisible wrong number", 1, cFragVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 0, gVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
-		ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
-		ExportPackageDescription[] aFragExports = new ExportPackageDescription[] {aExports[2]};
-		assertEquals("bVisible not correct", aDeclaredExports, bVisible); //$NON-NLS-1$
-		assertEquals("bFragVisible not correct", aFragExports, bFragVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aDeclaredExports, cVisible); //$NON-NLS-1$
-		assertEquals("cFragVisible not correct", aFragExports, cFragVisible); //$NON-NLS-1$
-
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports006() throws BundleException {
-		State state = getSubstituteUsesFragCycleState();
-		state.resolve();
-
-		//		BundleDescription z = state.getBundle(0);
-		BundleDescription a = state.getBundle(1);
-		BundleDescription aFrag = state.getBundle(2);
-		BundleDescription b = state.getBundle(3);
-		BundleDescription bFrag = state.getBundle(4);
-		BundleDescription c = state.getBundle(5);
-		BundleDescription cFrag = state.getBundle(6);
-		BundleDescription d = state.getBundle(7);
-		BundleDescription e = state.getBundle(8);
-		BundleDescription f = state.getBundle(9);
-		BundleDescription g = state.getBundle(10);
-		BundleDescription h = state.getBundle(11);
-		BundleDescription i = state.getBundle(12);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", i.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-		ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
-		ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", hVisible); //$NON-NLS-1$
-		assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
-		assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
-		assertEquals("bFragVisible wrong number", 1, bFragVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
-		assertEquals("cFragVisible wrong number", 1, cFragVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 3, gVisible.length); //$NON-NLS-1$
-		assertEquals("hVisible wrong number", 4, hVisible.length); //$NON-NLS-1$
-		assertEquals("iVisible wrong number", 4, iVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-
-		assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
-		ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
-		ExportPackageDescription[] bcExpectedVisible = new ExportPackageDescription[aDeclaredExports.length + 1];
-		System.arraycopy(aDeclaredExports, 0, bcExpectedVisible, 0, aDeclaredExports.length);
-		bcExpectedVisible[2] = g.getSelectedExports()[0];
-		ExportPackageDescription[] aFragExports = new ExportPackageDescription[] {aExports[2]};
-		assertEquals("aVisible not correct", g.getSelectedExports(), aVisible); //$NON-NLS-1$
-		assertEquals("bVisible not correct", bcExpectedVisible, bVisible); //$NON-NLS-1$
-		assertEquals("bFragVisible not correct", aFragExports, bFragVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", bcExpectedVisible, cVisible); //$NON-NLS-1$
-		assertEquals("cFragVisible not correct", aFragExports, cFragVisible); //$NON-NLS-1$
-
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-
-		ExportPackageDescription[] gExports = g.getSelectedExports();
-		assertEquals("g has wrong number of exports", 1, gExports.length); //$NON-NLS-1$
-		ExportPackageDescription[] expectedHIVisible = new ExportPackageDescription[] {gExports[0], aExports[0], aExports[1], aExports[2]};
-		assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
-		assertEquals("hVisible not correct", expectedHIVisible, hVisible); //$NON-NLS-1$
-		assertEquals("iVisible not correct", expectedHIVisible, iVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports007() throws BundleException {
-		State state = getSubstituteBasicReexportState();
-		state.resolve();
-
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-		BundleDescription g = state.getBundle(5);
-		BundleDescription h = state.getBundle(5);
-		BundleDescription i = state.getBundle(5);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", h.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", i.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-		ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
-		ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-		assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
-		assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
-		assertEquals("hVisible wrong number", 2, hVisible.length); //$NON-NLS-1$
-		assertEquals("iVisible wrong number", 2, iVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-		assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
-		assertEquals("hVisible not correct", aExports, hVisible); //$NON-NLS-1$
-		assertEquals("iVisible not correct", aExports, iVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports008() throws BundleException {
-		State state = getSubstituteUsesReexportState();
-		state.resolve();
-
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-		BundleDescription g = state.getBundle(7);
-		BundleDescription h = state.getBundle(8);
-		BundleDescription i = state.getBundle(9);
-		BundleDescription j = state.getBundle(10);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
-		assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
-		assertFalse("1.9", j.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-		ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
-		ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
-		ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-		assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
-		assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
-		assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
-		assertEquals("hVisible wrong number", 2, hVisible.length); //$NON-NLS-1$
-		assertEquals("iVisible wrong number", 2, iVisible.length); //$NON-NLS-1$
-		assertEquals("jVisible wrong number", 0, jVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-		assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
-		assertEquals("hVisible not correct", aExports, hVisible); //$NON-NLS-1$
-		assertEquals("iVisible not correct", aExports, iVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports009() throws BundleException {
-		State state = getSubstituteUsesReexportCycleState();
-		state.resolve();
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-		BundleDescription g = state.getBundle(7);
-		BundleDescription h = state.getBundle(8);
-		BundleDescription i = state.getBundle(9);
-		BundleDescription j = state.getBundle(10);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
-		assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
-		assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-		ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
-		ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
-		ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-		assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
-		assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
-		assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 2, gVisible.length); //$NON-NLS-1$
-		assertEquals("hVisible wrong number", 2, hVisible.length); //$NON-NLS-1$
-		assertEquals("iVisible wrong number", 2, iVisible.length); //$NON-NLS-1$
-		assertEquals("jVisible wrong number", 2, jVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("aExports count wrong", 2, aExports.length); //$NON-NLS-1$
-		ExportPackageDescription[] jExports = j.getSelectedExports();
-		assertEquals("aExports count wrong", 1, jExports.length); //$NON-NLS-1$
-		ExportPackageDescription[] bcExpected = new ExportPackageDescription[] {aExports[0], aExports[1], jExports[0]};
-		assertEquals("aVisible not correct", jExports, aVisible); //$NON-NLS-1$
-		assertEquals("bVisible not correct", bcExpected, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", bcExpected, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-		assertEquals("gVisible not correct", aExports, gVisible); //$NON-NLS-1$
-		assertEquals("hVisible not correct", aExports, hVisible); //$NON-NLS-1$
-		assertEquals("iVisible not correct", aExports, iVisible); //$NON-NLS-1$
-		assertEquals("jVisible not correct", aExports, jVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports010() throws BundleException {
-		State state = getSubstituteBasicState();
-		state.resolve();
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-
-		BundleDescription[] allBundles = new BundleDescription[] {a, b, c, d, e, f};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 6, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < allBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == allBundles[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allBundles[i]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports011() throws BundleException {
-		State state = getSubstituteUsesState();
-		state.resolve();
-		BundleDescription z = state.getBundle(0);
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-
-		BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 6, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < allRefreshBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {z});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports012() throws BundleException {
-		State state = getSubstituteUsesCycleState();
-		state.resolve();
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-		BundleDescription g = state.getBundle(7);
-		BundleDescription h = state.getBundle(8);
-
-		BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f, g, h};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 8, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < allRefreshBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {c});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 8, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < allRefreshBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
-			}
-		}
-	}
-
-	public void testSubstitutableExports013() throws BundleException {
-		State state = getSubstituteBasicFragState();
-		state.resolve();
-
-		BundleDescription a = state.getBundle(0);
-		BundleDescription aFrag = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription bFrag = state.getBundle(3);
-		BundleDescription c = state.getBundle(4);
-		BundleDescription cFrag = state.getBundle(5);
-		BundleDescription d = state.getBundle(6);
-		BundleDescription e = state.getBundle(7);
-		BundleDescription f = state.getBundle(8);
-
-		BundleDescription[] allBundles = new BundleDescription[] {a, aFrag, b, bFrag, c, cFrag, d, e, f};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 9, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < allBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == allBundles[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allBundles[i]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {c});
-		bundleDeltas = stateDelta.getChanges();
-		BundleDescription[] expectedRefresh = new BundleDescription[] {c, cFrag, f};
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 3, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < expectedRefresh.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == expectedRefresh[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[i]); //$NON-NLS-1$
-			}
-		}
-	}
-
-	public void testSubstitutableExports014() throws BundleException {
-		State state = getSubstituteUsesFragState();
-		state.resolve();
-
-		BundleDescription z = state.getBundle(0);
-		BundleDescription a = state.getBundle(1);
-		BundleDescription aFrag = state.getBundle(2);
-		BundleDescription b = state.getBundle(3);
-		BundleDescription bFrag = state.getBundle(4);
-		BundleDescription c = state.getBundle(5);
-		BundleDescription cFrag = state.getBundle(6);
-		BundleDescription d = state.getBundle(7);
-		BundleDescription e = state.getBundle(8);
-		BundleDescription f = state.getBundle(9);
-		//BundleDescription g = state.getBundle(10);
-
-		BundleDescription[] allRefreshBundles = new BundleDescription[] {a, aFrag, b, bFrag, c, cFrag, d, e, f};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < allRefreshBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == allRefreshBundles[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[i]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {z});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {c});
-		bundleDeltas = stateDelta.getChanges();
-		BundleDescription[] expectedRefresh = new BundleDescription[] {c, cFrag, f};
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 3, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int i = 0; i < expectedRefresh.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < bundleDeltas.length && !found; j++) {
-				assertEquals("unexpected delta type " + bundleDeltas[j], BundleDelta.RESOLVED, bundleDeltas[j].getType()); //$NON-NLS-1$
-				found = bundleDeltas[j].getBundle() == expectedRefresh[i];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[i]); //$NON-NLS-1$
-			}
-		}
-	}
-
-	public void testSubstitutableExports015() throws BundleException {
-		State state = getSubstituteUsesFragCycleState();
-		state.resolve();
-		//		BundleDescription z = state.getBundle(0);
-		BundleDescription a = state.getBundle(1);
-		BundleDescription aFrag = state.getBundle(2);
-		BundleDescription b = state.getBundle(3);
-		BundleDescription bFrag = state.getBundle(4);
-		BundleDescription c = state.getBundle(5);
-		BundleDescription cFrag = state.getBundle(6);
-		BundleDescription d = state.getBundle(7);
-		BundleDescription e = state.getBundle(8);
-		BundleDescription f = state.getBundle(9);
-		BundleDescription g = state.getBundle(10);
-		BundleDescription h = state.getBundle(11);
-		BundleDescription i = state.getBundle(12);
-
-		BundleDescription[] allRefreshBundles = new BundleDescription[] {a, aFrag, b, bFrag, c, cFrag, d, e, f, g, h, i};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int j = 0; j < allRefreshBundles.length; j++) {
-			boolean found = false;
-			for (int k = 0; k < bundleDeltas.length && !found; k++) {
-				assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
-				found = bundleDeltas[k].getBundle() == allRefreshBundles[j];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[j]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {c});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int j = 0; j < allRefreshBundles.length; j++) {
-			boolean found = false;
-			for (int k = 0; k < bundleDeltas.length && !found; k++) {
-				assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
-				found = bundleDeltas[k].getBundle() == allRefreshBundles[j];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[j]); //$NON-NLS-1$
-			}
-		}
-	}
-
-	public void testSubstitutableExports016() throws BundleException {
-		State state = getSubstituteBasicReexportState();
-		state.resolve();
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-		BundleDescription g = state.getBundle(6);
-		BundleDescription h = state.getBundle(7);
-		BundleDescription i = state.getBundle(8);
-
-		BundleDescription[] allBundles = new BundleDescription[] {a, b, c, d, e, f, g, h, i};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", allBundles.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int j = 0; j < allBundles.length; j++) {
-			boolean found = false;
-			for (int k = 0; k < bundleDeltas.length && !found; k++) {
-				assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
-				found = bundleDeltas[k].getBundle() == allBundles[j];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allBundles[j]); //$NON-NLS-1$
-			}
-		}
-
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		BundleDescription[] expectedRefresh = new BundleDescription[] {f, i};
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", expectedRefresh.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int j = 0; j < expectedRefresh.length; j++) {
-			boolean found = false;
-			for (int k = 0; k < bundleDeltas.length && !found; k++) {
-				assertEquals("unexpected delta type " + bundleDeltas[k], BundleDelta.RESOLVED, bundleDeltas[k].getType()); //$NON-NLS-1$
-				found = bundleDeltas[k].getBundle() == expectedRefresh[j];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[j]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {i});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports017() throws BundleException {
-		State state = getSubstituteUsesReexportState();
-		state.resolve();
-		BundleDescription z = state.getBundle(0);
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-		BundleDescription g = state.getBundle(7);
-		BundleDescription h = state.getBundle(8);
-		BundleDescription i = state.getBundle(9);
-		//BundleDescription j = state.getBundle(10);
-
-		BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f, g, h, i};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int l = 0; l < allRefreshBundles.length; l++) {
-			boolean found = false;
-			for (int m = 0; m < bundleDeltas.length && !found; m++) {
-				assertEquals("unexpected delta type " + bundleDeltas[m], BundleDelta.RESOLVED, bundleDeltas[m].getType()); //$NON-NLS-1$
-				found = bundleDeltas[m].getBundle() == allRefreshBundles[l];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[l]); //$NON-NLS-1$
-			}
-		}
-
-		stateDelta = state.resolve(new BundleDescription[] {f});
-		bundleDeltas = stateDelta.getChanges();
-		BundleDescription[] expectedRefresh = new BundleDescription[] {f, i};
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", expectedRefresh.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int l = 0; l < expectedRefresh.length; l++) {
-			boolean found = false;
-			for (int m = 0; m < bundleDeltas.length && !found; m++) {
-				assertEquals("unexpected delta type " + bundleDeltas[m], BundleDelta.RESOLVED, bundleDeltas[m].getType()); //$NON-NLS-1$
-				found = bundleDeltas[m].getBundle() == expectedRefresh[l];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + expectedRefresh[l]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {i});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {z});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports018() throws BundleException {
-		State state = getSubstituteUsesReexportCycleState();
-		state.resolve();
-		BundleDescription a = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription c = state.getBundle(3);
-		BundleDescription d = state.getBundle(4);
-		BundleDescription e = state.getBundle(5);
-		BundleDescription f = state.getBundle(6);
-		BundleDescription g = state.getBundle(7);
-		BundleDescription h = state.getBundle(8);
-		BundleDescription i = state.getBundle(9);
-		BundleDescription j = state.getBundle(10);
-
-		BundleDescription[] allRefreshBundles = new BundleDescription[] {a, b, c, d, e, f, g, h, i, j};
-		StateDelta stateDelta = state.resolve(new BundleDescription[] {a});
-		BundleDelta[] bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int k = 0; k < allRefreshBundles.length; k++) {
-			boolean found = false;
-			for (int l = 0; l < bundleDeltas.length && !found; l++) {
-				assertEquals("unexpected delta type " + bundleDeltas[l], BundleDelta.RESOLVED, bundleDeltas[l].getType()); //$NON-NLS-1$
-				found = bundleDeltas[l].getBundle() == allRefreshBundles[k];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[k]); //$NON-NLS-1$
-			}
-		}
-		stateDelta = state.resolve(new BundleDescription[] {i});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", 1, bundleDeltas.length); //$NON-NLS-1$
-
-		stateDelta = state.resolve(new BundleDescription[] {c});
-		bundleDeltas = stateDelta.getChanges();
-		assertNotNull("bundleDeltas is null", bundleDeltas); //$NON-NLS-1$
-		assertEquals("bunldeDeltas wrong number", allRefreshBundles.length, bundleDeltas.length); //$NON-NLS-1$
-
-		for (int k = 0; k < allRefreshBundles.length; k++) {
-			boolean found = false;
-			for (int l = 0; l < bundleDeltas.length && !found; l++) {
-				assertEquals("unexpected delta type " + bundleDeltas[l], BundleDelta.RESOLVED, bundleDeltas[l].getType()); //$NON-NLS-1$
-				found = bundleDeltas[l].getBundle() == allRefreshBundles[k];
-			}
-			if (!found) {
-				fail("Did not find RESOLVED BundleDelta for " + allRefreshBundles[k]); //$NON-NLS-1$
-			}
-		}
-	}
-
-	public void testSubstitutableExports019() throws BundleException {
-		State state = getSubstituteUnresolvedFragState();
-		state.resolve();
-
-		BundleDescription a = state.getBundle(0);
-		BundleDescription aFrag = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription bFrag = state.getBundle(3);
-		BundleDescription c = state.getBundle(4);
-		BundleDescription cFrag = state.getBundle(5);
-		BundleDescription d = state.getBundle(6);
-		BundleDescription e = state.getBundle(7);
-		BundleDescription f = state.getBundle(8);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertFalse("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertFalse("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertFalse("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("aFragVisible wrong number", 0, aFragVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("bFragVisible wrong number", 0, bFragVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("cFragVisible wrong number", 0, cFragVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("a has wrong number of exports", 2, aExports.length); //$NON-NLS-1$
-
-		assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports020() throws BundleException {
-		State state = getSubstituteUnresolvedFragState();
-		state.resolve();
-
-		BundleDescription a = state.getBundle(0);
-		BundleDescription aFrag = state.getBundle(1);
-		BundleDescription b = state.getBundle(2);
-		BundleDescription bFrag = state.getBundle(3);
-		BundleDescription c = state.getBundle(4);
-		BundleDescription cFrag = state.getBundle(5);
-		BundleDescription d = state.getBundle(6);
-		BundleDescription e = state.getBundle(7);
-		BundleDescription f = state.getBundle(8);
-
-		// add a bundle to resolve the fragments import of q
-		Hashtable manifest = new Hashtable();
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Q"); //$NON-NLS-1$
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0"); //$NON-NLS-1$
-		manifest.put(Constants.EXPORT_PACKAGE, "q; version=1.0"); //$NON-NLS-1$
-		BundleDescription q = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME) + (String) manifest.get(Constants.BUNDLE_VERSION), f.getBundleId() + 1);
-		state.addBundle(q);
-		state.resolve(new BundleDescription[] {a});
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.0.1", aFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1.1", bFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2.1", cFrag.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] aFragVisible = state.getStateHelper().getVisiblePackages(aFrag);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] bFragVisible = state.getStateHelper().getVisiblePackages(bFrag);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] cFragVisible = state.getStateHelper().getVisiblePackages(cFrag);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("aFragVisible is null", aFragVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("bFragVisible is null", bFragVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("cFragVisible is null", cFragVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("aFragVisible wrong number", 1, aFragVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("bFragVisible wrong number", 2, bFragVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("cFragVisible wrong number", 2, cFragVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 3, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 3, fVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("a has wrong number of exports", 3, aExports.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aDeclaredExports = a.getExportPackages();
-		ExportPackageDescription[] aFragExpected = new ExportPackageDescription[] {aExports[2], q.getExportPackages()[0]};
-		assertEquals("aFragVisible not correct", q.getSelectedExports(), aFragVisible); //$NON-NLS-1$
-		assertEquals("bVisible not correct", aDeclaredExports, bVisible); //$NON-NLS-1$
-		assertEquals("bFragVisible not correct", aFragExpected, bFragVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aDeclaredExports, cVisible); //$NON-NLS-1$
-		assertEquals("cFragVisible not correct", aFragExpected, cFragVisible); //$NON-NLS-1$
-
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports021() throws BundleException {
-		State state = getSubstituteBasicState();
-		state.resolve();
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-
-		state.removeBundle(a);
-		state.resolve(new BundleDescription[] {a});
-		assertFalse("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertFalse("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-
-		assertEquals("bVisible wrong number", 0, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 0, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] bExports = b.getSelectedExports();
-		assertEquals("cVisible not correct", bExports, cVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", bExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", bExports, fVisible); //$NON-NLS-1$
-	}
-
-	public void testSubstitutableExports022() throws BundleException {
-		State state = getSubstituteSplitState();
-		state.resolve();
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-		BundleDescription g = state.getBundle(6);
-		BundleDescription h = state.getBundle(7);
-		BundleDescription i = state.getBundle(8);
-		BundleDescription j = state.getBundle(9);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
-		assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
-		assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-		ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
-		ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
-		ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-		assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
-		assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
-		assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 4, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 4, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 4, gVisible.length); //$NON-NLS-1$
-		assertEquals("hVisible wrong number", 4, hVisible.length); //$NON-NLS-1$
-		assertEquals("iVisible wrong number", 4, iVisible.length); //$NON-NLS-1$
-		assertEquals("jVisible wrong number", 4, jVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
-		assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExported = a.getSelectedExports();
-		ExportPackageDescription[] dExported = d.getSelectedExports();
-		ExportPackageDescription[] expected = new ExportPackageDescription[aExported.length + dExported.length];
-		System.arraycopy(aExported, 0, expected, 0, aExported.length);
-		System.arraycopy(dExported, 0, expected, aExported.length, dExported.length);
-		for (int index = 0; index < expected.length; index++) {
-			assertContains("eVisible not correct", eVisible, expected[index]); //$NON-NLS-1$
-			assertContains("fVisible not correct", fVisible, expected[index]); //$NON-NLS-1$
-			assertContains("gVisible not correct", gVisible, expected[index]); //$NON-NLS-1$
-			assertContains("hVisible not correct", hVisible, expected[index]); //$NON-NLS-1$
-			assertContains("iVisible not correct", iVisible, expected[index]); //$NON-NLS-1$
-			assertContains("jVisible not correct", jVisible, expected[index]); //$NON-NLS-1$
-		}
-	}
-
-	public void testSubstitutableExports023() throws BundleException {
-		State state = getSubstituteSplitUsesState();
-		state.resolve();
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-		BundleDescription g = state.getBundle(6);
-		BundleDescription h = state.getBundle(7);
-		BundleDescription i = state.getBundle(8);
-		BundleDescription j = state.getBundle(9);
-		BundleDescription k = state.getBundle(10);
-		BundleDescription l = state.getBundle(11);
-		BundleDescription m = state.getBundle(12);
-		BundleDescription n = state.getBundle(13);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-		assertTrue("1.6", g.isResolved()); //$NON-NLS-1$
-		assertTrue("1.7", h.isResolved()); //$NON-NLS-1$
-		assertTrue("1.8", i.isResolved()); //$NON-NLS-1$
-		assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
-		assertTrue("1.9", k.isResolved()); //$NON-NLS-1$
-		assertTrue("1.9", l.isResolved()); //$NON-NLS-1$
-		assertTrue("1.9", j.isResolved()); //$NON-NLS-1$
-		assertTrue("1.9", n.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-		ExportPackageDescription[] gVisible = state.getStateHelper().getVisiblePackages(g);
-		ExportPackageDescription[] hVisible = state.getStateHelper().getVisiblePackages(h);
-		ExportPackageDescription[] iVisible = state.getStateHelper().getVisiblePackages(i);
-		ExportPackageDescription[] jVisible = state.getStateHelper().getVisiblePackages(j);
-		ExportPackageDescription[] kVisible = state.getStateHelper().getVisiblePackages(k);
-		ExportPackageDescription[] lVisible = state.getStateHelper().getVisiblePackages(l);
-		ExportPackageDescription[] mVisible = state.getStateHelper().getVisiblePackages(m);
-		ExportPackageDescription[] nVisible = state.getStateHelper().getVisiblePackages(n);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-		assertNotNull("gVisible is null", gVisible); //$NON-NLS-1$
-		assertNotNull("hVisible is null", hVisible); //$NON-NLS-1$
-		assertNotNull("iVisible is null", iVisible); //$NON-NLS-1$
-		assertNotNull("jVisible is null", jVisible); //$NON-NLS-1$
-		assertNotNull("kVisible is null", kVisible); //$NON-NLS-1$
-		assertNotNull("lVisible is null", lVisible); //$NON-NLS-1$
-		assertNotNull("mVisible is null", mVisible); //$NON-NLS-1$
-		assertNotNull("nVisible is null", nVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 1, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 3, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 3, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 3, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 5, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 5, fVisible.length); //$NON-NLS-1$
-		assertEquals("gVisible wrong number", 4, gVisible.length); //$NON-NLS-1$
-		assertEquals("hVisible wrong number", 4, hVisible.length); //$NON-NLS-1$
-		assertEquals("iVisible wrong number", 4, iVisible.length); //$NON-NLS-1$
-		assertEquals("jVisible wrong number", 4, jVisible.length); //$NON-NLS-1$
-		assertEquals("kVisible wrong number", 0, kVisible.length); //$NON-NLS-1$
-		assertEquals("lVisible wrong number", 0, lVisible.length); //$NON-NLS-1$
-		assertEquals("mVisible wrong number", 6, mVisible.length); //$NON-NLS-1$
-		assertEquals("nVisible wrong number", 6, nVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("aExports wrong number", 2, aExports.length); //$NON-NLS-1$
-		ExportPackageDescription[] bcExpected = new ExportPackageDescription[] {aExports[0], aExports[1], l.getSelectedExports()[0]};
-		ExportPackageDescription[] aExpected = new ExportPackageDescription[] {l.getSelectedExports()[0]};
-		assertEquals("aVisible not correct", aExpected, aVisible); //$NON-NLS-1$
-		assertEquals("bVisible not correct", bcExpected, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", bcExpected, cVisible); //$NON-NLS-1$
-
-		ExportPackageDescription[] dExpected = new ExportPackageDescription[] {l.getSelectedExports()[1], aExports[0], aExports[1]};
-		assertEquals("dVisible not correct", dExpected, dVisible); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExported = a.getSelectedExports();
-		ExportPackageDescription[] dExported = d.getSelectedExports();
-		ExportPackageDescription[] efExpected = new ExportPackageDescription[aExported.length + dExported.length + 1];
-		System.arraycopy(aExported, 0, efExpected, 0, aExported.length);
-		System.arraycopy(dExported, 0, efExpected, aExported.length, dExported.length);
-		efExpected[aExported.length + dExported.length] = l.getSelectedExports()[1];
-		for (int index = 0; index < efExpected.length; index++) {
-			assertContains("eVisible not correct", eVisible, efExpected[index]); //$NON-NLS-1$
-			assertContains("fVisible not correct", fVisible, efExpected[index]); //$NON-NLS-1$
-		}
-
-		ExportPackageDescription[] ghijExpected = new ExportPackageDescription[aExported.length + dExported.length];
-		System.arraycopy(aExported, 0, ghijExpected, 0, aExported.length);
-		System.arraycopy(dExported, 0, ghijExpected, aExported.length, dExported.length);
-		for (int index = 0; index < ghijExpected.length; index++) {
-			assertContains("gVisible not correct", gVisible, ghijExpected[index]); //$NON-NLS-1$
-			assertContains("hVisible not correct", hVisible, ghijExpected[index]); //$NON-NLS-1$
-			assertContains("iVisible not correct", iVisible, ghijExpected[index]); //$NON-NLS-1$
-			assertContains("jVisible not correct", jVisible, ghijExpected[index]); //$NON-NLS-1$
-		}
-
-		ExportPackageDescription[] lExported = l.getSelectedExports();
-		ExportPackageDescription[] mnExpected = new ExportPackageDescription[aExported.length + dExported.length + lExported.length];
-		System.arraycopy(aExported, 0, mnExpected, 0, aExported.length);
-		System.arraycopy(dExported, 0, mnExpected, aExported.length, dExported.length);
-		System.arraycopy(lExported, 0, mnExpected, aExported.length + dExported.length, lExported.length);
-		for (int index = 0; index < mnExpected.length; index++) {
-			assertContains("mVisible not correct", mVisible, mnExpected[index]); //$NON-NLS-1$
-			assertContains("nVisible not correct", nVisible, mnExpected[index]); //$NON-NLS-1$
-		}
-	}
-
-	public void testSubstitutableExports024() throws BundleException {
-		State state = getNonOverlapingSubstituteBasicState();
-		state.resolve();
-		BundleDescription a = state.getBundle(0);
-		BundleDescription b = state.getBundle(1);
-		BundleDescription c = state.getBundle(2);
-		BundleDescription d = state.getBundle(3);
-		BundleDescription e = state.getBundle(4);
-		BundleDescription f = state.getBundle(5);
-
-		assertTrue("1.0", a.isResolved()); //$NON-NLS-1$
-		assertTrue("1.1", b.isResolved()); //$NON-NLS-1$
-		assertTrue("1.2", c.isResolved()); //$NON-NLS-1$
-		assertTrue("1.3", d.isResolved()); //$NON-NLS-1$
-		assertTrue("1.4", e.isResolved()); //$NON-NLS-1$
-		assertTrue("1.5", f.isResolved()); //$NON-NLS-1$
-
-		ExportPackageDescription[] aVisible = state.getStateHelper().getVisiblePackages(a);
-		ExportPackageDescription[] bVisible = state.getStateHelper().getVisiblePackages(b);
-		ExportPackageDescription[] cVisible = state.getStateHelper().getVisiblePackages(c);
-		ExportPackageDescription[] dVisible = state.getStateHelper().getVisiblePackages(d);
-		ExportPackageDescription[] eVisible = state.getStateHelper().getVisiblePackages(e);
-		ExportPackageDescription[] fVisible = state.getStateHelper().getVisiblePackages(f);
-
-		assertNotNull("aVisible is null", aVisible); //$NON-NLS-1$
-		assertNotNull("bVisible is null", bVisible); //$NON-NLS-1$
-		assertNotNull("cVisible is null", cVisible); //$NON-NLS-1$
-		assertNotNull("dVisible is null", dVisible); //$NON-NLS-1$
-		assertNotNull("eVisible is null", eVisible); //$NON-NLS-1$
-		assertNotNull("fVisible is null", fVisible); //$NON-NLS-1$
-
-		assertEquals("aVisible wrong number", 0, aVisible.length); //$NON-NLS-1$
-		assertEquals("bVisible wrong number", 2, bVisible.length); //$NON-NLS-1$
-		assertEquals("cVisible wrong number", 2, cVisible.length); //$NON-NLS-1$
-		assertEquals("dVisible wrong number", 2, dVisible.length); //$NON-NLS-1$
-		assertEquals("eVisible wrong number", 2, eVisible.length); //$NON-NLS-1$
-		assertEquals("fVisible wrong number", 2, fVisible.length); //$NON-NLS-1$
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		assertEquals("aVisible not correct", aExports, a.getExportPackages()); //$NON-NLS-1$
-		assertEquals("bVisible not correct", aExports, bVisible); //$NON-NLS-1$
-		assertEquals("cVisible not correct", aExports, cVisible); //$NON-NLS-1$
-		assertEquals("dVisible not correct", aExports, dVisible); //$NON-NLS-1$
-		assertEquals("eVisible not correct", aExports, eVisible); //$NON-NLS-1$
-		assertEquals("fVisible not correct", aExports, fVisible); //$NON-NLS-1$
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/VersionRangeTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/VersionRangeTests.java
deleted file mode 100644
index 893fb12..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/VersionRangeTests.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import junit.framework.*;
-import org.eclipse.osgi.service.resolver.VersionRange;
-import org.osgi.framework.Version;
-
-public class VersionRangeTests extends TestCase {
-	public void testSingleVersionRange() {
-		VersionRange range;
-		range = new VersionRange("[1.0.0, 1.0.0.-)"); //$NON-NLS-1$
-		assertEquals("0.1", Version.parseVersion("1.0"), range.getMinimum()); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("0.9", !range.isIncluded(Version.parseVersion("0.9"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.0", range.isIncluded(Version.parseVersion("1"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.1", range.isIncluded(Version.parseVersion("1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.2", range.isIncluded(Version.parseVersion("1.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("2.1", !range.isIncluded(Version.parseVersion("1.0.0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("2.2", !range.isIncluded(Version.parseVersion("1.0.1"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("2.3", !range.isIncluded(Version.parseVersion("1.1"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("2.4", !range.isIncluded(Version.parseVersion("2"))); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testInvertedRange() {
-		VersionRange range;
-		range = new VersionRange("[2.0.0, 1.0.0]"); //$NON-NLS-1$
-		assertTrue("1.0", !range.isIncluded(Version.parseVersion("1"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.1", !range.isIncluded(Version.parseVersion("1.5"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.2", !range.isIncluded(Version.parseVersion("2.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.3", !range.isIncluded(Version.parseVersion("2.5"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.4", !range.isIncluded(Version.parseVersion("0.5"))); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testGreaterThan() {
-		// any version equal or greater than 1.0 is ok 
-		VersionRange lowerBound = new VersionRange("1.0.0"); //$NON-NLS-1$
-		assertTrue("1.0", !lowerBound.isIncluded(Version.parseVersion("0.9"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.1", lowerBound.isIncluded(Version.parseVersion("1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.2", lowerBound.isIncluded(Version.parseVersion("1.9.9.x"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.3", lowerBound.isIncluded(Version.parseVersion("999.999.999.foo"))); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testLowerThan() {
-		// any version lower than 2.0 is ok 		
-		VersionRange upperBound = new VersionRange("[0,2.0)"); //$NON-NLS-1$
-		assertTrue("1.0", upperBound.isIncluded(Version.parseVersion("0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.1", upperBound.isIncluded(Version.parseVersion("0.9"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.2", upperBound.isIncluded(Version.parseVersion("1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.3", upperBound.isIncluded(Version.parseVersion("1.9.9.x"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.4", !upperBound.isIncluded(Version.parseVersion("2.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.5", !upperBound.isIncluded(Version.parseVersion("2.1"))); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testNullMin() {
-		VersionRange nullMin = new VersionRange(null, true, new Version("1.0"), false); //$NON-NLS-1$
-		assertNotNull("0.1", nullMin.getMinimum()); //$NON-NLS-1$
-		assertEquals("0.2", Version.emptyVersion, nullMin.getMinimum()); //$NON-NLS-1$
-		assertTrue("1.0", nullMin.isIncluded(null)); //$NON-NLS-1$
-		assertTrue("1.1", nullMin.isIncluded(new Version("0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.2", nullMin.isIncluded(new Version("0.9.9"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.3", nullMin.isIncluded(Version.parseVersion("0.9.9.x"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertFalse("1.4", nullMin.isIncluded(Version.parseVersion("2.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertFalse("1.5", nullMin.isIncluded(Version.parseVersion("2.1"))); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	public void testNullMax() {
-		VersionRange nullMaxAny = new VersionRange(new Version("0"), true, null, true); //$NON-NLS-1$
-		assertTrue("1.0", nullMaxAny.isIncluded(Version.parseVersion("0.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.1", nullMaxAny.isIncluded(Version.parseVersion("0.9"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.2", nullMaxAny.isIncluded(Version.parseVersion("1.0"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.3", nullMaxAny.isIncluded(Version.parseVersion("1.9.9.x"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.4", nullMaxAny.isIncluded(Version.parseVersion("999.999.999.foo"))); //$NON-NLS-1$ //$NON-NLS-2$
-		assertTrue("1.5", nullMaxAny.isIncluded(new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE))); //$NON-NLS-1$
-	}
-
-	public static Test suite() {
-		return new TestSuite(VersionRangeTests.class);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/XFriendsInternalResolverTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/XFriendsInternalResolverTest.java
deleted file mode 100644
index 480df3c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/XFriendsInternalResolverTest.java
+++ /dev/null
@@ -1,376 +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.osgi.tests.services.resolver;
-
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.*;
-
-public class XFriendsInternalResolverTest extends AbstractStateTest {
-	public static Test suite() {
-		return new TestSuite(XFriendsInternalResolverTest.class);
-	}
-
-	public XFriendsInternalResolverTest(String name) {
-		super(name);
-	}
-
-	/**
-	 * Tests the x-friends directive.  A bundle should not be allowed to import a package which
-	 * declares an x-friends directive and the importer is not a friend.  When a bundle requires
-	 * anther bundle which exports packages which declare an x-friends directive it should not 
-	 * have access to the packages unless the requiring bundle is a friend.
-	 * @throws BundleException
-	 */
-	public void testXFriends() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-		// test the selection algorithm of the resolver to pick the bundles which
-		// resolve the largest set of bundles; with fragments using Import-Package
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.exporter");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, 
-				"test.exporter.foo1; x-friends:=\"test.importer1, test.requirer1\"," +
-				"test.exporter.foo2; x-friends:=\"test.importer2, test.requirer2\"," +
-				"test.exporter.bar1; x-friends:=\"test.importer1, test.requirer1\"," +
-				"test.exporter.bar2; x-friends:=\"test.importer2, test.requirer2\"");
-		BundleDescription testExporter = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.importer1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, 
-				"test.exporter.foo1," +
-				"test.exporter.bar1," +
-				"test.exporter.foo2; resolution:=optional," +
-				"test.exporter.bar2; resolution:=optional");
-		BundleDescription testImporter1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.importer2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, 
-				"test.exporter.foo1; resolution:=optional," +
-				"test.exporter.bar1; resolution:=optional," +
-				"test.exporter.foo2," +
-				"test.exporter.bar2");
-		BundleDescription testImporter2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.importer3");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, 
-				"test.exporter.foo1," +
-				"test.exporter.bar1," +
-				"test.exporter.foo2; resolution:=optional," +
-				"test.exporter.bar2; resolution:=optional");
-		BundleDescription testImporter3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.requirer1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.exporter");
-		BundleDescription testRequirer1 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.requirer2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.exporter");
-		BundleDescription testRequirer2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put("osgi.resolverMode", "strict");
-
-		state.setPlatformProperties(props);
-		state.addBundle(testExporter);
-		state.addBundle(testImporter1);
-		state.addBundle(testImporter2);
-		state.addBundle(testImporter3);
-		state.addBundle(testRequirer1);
-		state.addBundle(testRequirer2);
-		state.resolve();
-
-		// make sure all bundles are resolved that should be
-		assertTrue("1.0", testExporter.isResolved());
-		assertTrue("1.1", testImporter1.isResolved());
-		assertTrue("1.2", testImporter2.isResolved());
-		assertFalse("1.3", testImporter3.isResolved()); // should not be resolved
-		assertTrue("1.4", testRequirer1.isResolved());
-		assertTrue("1.5", testRequirer2.isResolved());
-
-		String[] validPackages1 = {"test.exporter.foo1", "test.exporter.bar1"};
-		String[] validPackages2 = {"test.exporter.foo2", "test.exporter.bar2"};
-		// make sure the importers only got the packages they are really friends to
-		ExportPackageDescription[] imported1 = testImporter1.getResolvedImports();
-		assertTrue("2.0", imported1 != null && imported1.length == 2); // should only have 2 resolved imports
-		assertTrue("2.1", contains(validPackages1, imported1[0].getName()));
-		assertTrue("2.2", contains(validPackages1, imported1[1].getName()));
-
-		ExportPackageDescription[] imported2 = testImporter2.getResolvedImports();
-		assertTrue("3.0", imported2 != null && imported2.length == 2); // should only have 2 resolved imports
-		assertTrue("3.1", contains(validPackages2, imported2[0].getName()));
-		assertTrue("3.2", contains(validPackages2, imported2[1].getName()));
-
-		StateHelper helper = state.getStateHelper();
-		ExportPackageDescription[] required1 = helper.getVisiblePackages(testRequirer1);
-		assertTrue("4.0", required1 != null && required1.length == 2); // should only have 2 visible imports
-		assertTrue("4.1", contains(validPackages1, required1[0].getName()));
-		assertTrue("4.2", contains(validPackages1, required1[1].getName()));
-
-		ExportPackageDescription[] required2 = helper.getVisiblePackages(testRequirer2);
-		assertTrue("5.0", required2 != null && required2.length == 2); // should only have 2 visible imports
-		assertTrue("5.1", contains(validPackages2, required2[0].getName()));
-		assertTrue("5.2", contains(validPackages2, required2[1].getName()));
-	}
-
-	public void testVisiblePackages001() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a.base");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.split.pkg; a.base=split; mandatory:=a.base");
-		BundleDescription aBase = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "a.extra");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "a.base");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.split.pkg");
-		BundleDescription aExtra = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "b");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "a.extra");
-		manifest.put(Constants.EXPORT_PACKAGE, "test.base.exporter.require");
-		BundleDescription b= state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		state.addBundle(aBase);
-		state.addBundle(aExtra);
-		state.addBundle(b);
-		state.resolve();
-
-		// make sure all bundles are resolved that should be
-		assertTrue("1.0", aBase.isResolved());
-		assertTrue("1.1", aExtra.isResolved());
-		assertTrue("1.2", b.isResolved());
-
-		StateHelper helper = state.getStateHelper();
-		ExportPackageDescription[] visImporter = helper.getVisiblePackages(b);
-		assertTrue("2.0", visImporter != null && visImporter.length == 2);
-		assertEquals("2.1", visImporter[0].getName(), "a.split.pkg");
-		assertEquals("2.2", visImporter[1].getName(), "a.split.pkg");
-		BundleDescription exporter1 = visImporter[0].getExporter();
-		BundleDescription exporter2 = visImporter[1].getExporter();
-		assertTrue("2.3", exporter1 != exporter2);
-		assertTrue("2.4", exporter1 == aBase || exporter1 == aExtra);
-		assertTrue("2.4", exporter2 == aBase || exporter2 == aExtra);
-	}
-
-	public void testVisiblePackages002() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.base.exporter");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, 
-				"test.base; base.exporter=split; mandatory:=base.exporter");
-		BundleDescription baseExporter = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.base.exporter.require");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.base.exporter");
-		manifest.put(Constants.EXPORT_PACKAGE, 
-				"test.base; base.exporter.require=split; mandatory:=base.exporter.require");
-		BundleDescription baseExporterRequire = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.base.exporter.require2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, 
-				"test.base.exporter.require");
-		manifest.put(Constants.EXPORT_PACKAGE, "test.base.exporter.require");
-		BundleDescription baseExporterRequire2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.base.importer");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, 
-				"test.base.exporter.require");
-		BundleDescription baseImporter = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.base.importer2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.base.exporter.require2");
-		manifest.put(Constants.EXPORT_PACKAGE, "test.base");
-		BundleDescription baseImporter2 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.base.importer3");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "test.base; bundle-symbolic-name=test.base.importer2");
-		BundleDescription baseImporter3 = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put("osgi.resolverMode", "strict");
-
-		state.setPlatformProperties(props);
-		state.addBundle(baseExporter);
-		state.addBundle(baseExporterRequire);
-		state.addBundle(baseExporterRequire2);
-		state.addBundle(baseImporter);
-		state.addBundle(baseImporter2);
-		state.addBundle(baseImporter3);
-		state.resolve();
-
-		// make sure all bundles are resolved that should be
-		assertTrue("1.0", baseExporter.isResolved());
-		assertTrue("1.1", baseExporterRequire.isResolved());
-		assertTrue("1.2", baseExporterRequire2.isResolved());
-		assertTrue("1.3", baseImporter.isResolved());
-		assertTrue("1.4", baseImporter2.isResolved());
-		assertTrue("1.5", baseImporter3.isResolved());
-
-		StateHelper helper = state.getStateHelper();
-		ExportPackageDescription[] visImporter = helper.getVisiblePackages(baseImporter);
-		assertTrue("2.0", visImporter != null && visImporter.length == 2);
-		assertEquals("2.1", visImporter[0].getName(), "test.base");
-		assertEquals("2.2", visImporter[1].getName(), "test.base");
-		BundleDescription exporter1 = visImporter[0].getExporter();
-		BundleDescription exporter2 = visImporter[1].getExporter();
-		assertTrue("2.3", exporter1 != exporter2);
-		assertTrue("2.4", exporter1 == baseExporter || exporter1 == baseExporterRequire);
-		assertTrue("2.5", exporter2 == baseExporter || exporter2 == baseExporterRequire);
-
-		ExportPackageDescription[] visImporter2 = helper.getVisiblePackages(baseImporter2);
-		assertTrue("3.0", visImporter2 != null && visImporter2.length == 1);
-		assertEquals("3.1", visImporter2[0].getName(), "test.base.exporter.require");
-		assertTrue("3.2", visImporter2[0].getExporter() == baseExporterRequire2);
-
-		ExportPackageDescription[] visImporter3 = helper.getVisiblePackages(baseImporter3);
-		assertTrue("4.0", visImporter3 != null && visImporter3.length == 1);
-		assertEquals("4.1", visImporter3[0].getName(), "test.base");
-		assertTrue("4.2", visImporter3[0].getExporter() == baseImporter2);
-	}
-
-	public void testVisiblePackages003() throws BundleException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "E");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "test.base; E=split; mandatory:=E");
-		BundleDescription e = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "E");
-		BundleDescription d = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "D");
-		manifest.put(Constants.EXPORT_PACKAGE, "test.base; D=split; mandatory:=D");
-		BundleDescription c = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "F; " + Constants.VISIBILITY_DIRECTIVE + ":=" + Constants.VISIBILITY_REEXPORT );
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "F");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "test.base; F=split; mandatory:=F");
-		BundleDescription f = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "B; " + Constants.VISIBILITY_DIRECTIVE + ":=" + Constants.VISIBILITY_REEXPORT + 
-																	",C");
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME), bundleID++);
-
-		Dictionary[] props = new Dictionary[] {new Hashtable()};
-		props[0].put("osgi.resolverMode", "strict");
-
-		state.setPlatformProperties(props);
-		state.addBundle(f);
-		state.addBundle(e);
-		state.addBundle(d);
-		state.addBundle(c);
-		state.addBundle(b);
-		state.addBundle(a);
-
-		state.resolve();
-
-		// make sure all bundles are resolved that should be
-		assertTrue("1.0", a.isResolved());
-		assertTrue("1.1", b.isResolved());
-		assertTrue("1.2", c.isResolved());
-		assertTrue("1.3", d.isResolved());
-		assertTrue("1.4", e.isResolved());
-		assertTrue("1.5", f.isResolved());
-
-		StateHelper helper = state.getStateHelper();
-		ExportPackageDescription[] visImporter = helper.getVisiblePackages(a);
-		assertTrue("2.0", visImporter != null && visImporter.length == 2);
-		assertEquals("2.1", visImporter[0].getName(), "test.base");
-		assertEquals("2.2", visImporter[1].getName(), "test.base");
-		BundleDescription exporter1 = visImporter[0].getExporter();
-		BundleDescription exporter2 = visImporter[1].getExporter();
-		assertTrue("2.3", exporter1 != exporter2);
-		assertTrue("2.4", exporter1 == c || exporter1 == f);
-		assertTrue("2.5", exporter2 == c || exporter2 == f);
-	}
-
-	private boolean contains(Object[] array, Object element) {
-		for (int i = 0; i < array.length; i++)
-			if (array[i].equals(element))
-				return true;
-		return false;
-	}
-}
-
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/AllTests.java
deleted file mode 100644
index 43b7b91..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/AllTests.java
+++ /dev/null
@@ -1,39 +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.osgi.tests.util;
-
-import junit.framework.Test;
-import junit.framework.TestSuite;
-
-public class AllTests extends TestSuite {
-
-	// Test suite to run all text processor session tests
-	public static Test suite() {
-		return new AllTests();
-	}
-
-	public AllTests() {
-		addTest(new TestSuite(ObjectPoolTestCase.class));
-		addTest(new TestSuite(ManifestElementTestCase.class));
-		addTest(new TestSuite(NLSTestCase.class));
-		addBidiTests();
-		addLatinTests();
-	}
-
-	private void addBidiTests() {
-		addTest(new TextProcessorSessionTest("org.eclipse.osgi.tests", BidiTextProcessorTestCase.class, "iw"));
-	}
-
-	private void addLatinTests() {
-		addTest(new TextProcessorSessionTest("org.eclipse.osgi.tests", LatinTextProcessorTestCase.class, "en"));
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/BidiTextProcessorTestCase.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/BidiTextProcessorTestCase.java
deleted file mode 100644
index cb2584f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/BidiTextProcessorTestCase.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.osgi.tests.util;
-
-import org.eclipse.osgi.util.TextProcessor;
-
-/**
- * Tests for strings that use the TextProcessor and are run in a bidi locale.
- * 
- * NOTE: Run these tests as a session test in order to have the correct
- *		 locale set.  Run class AllTests.
- */
-public class BidiTextProcessorTestCase extends TextProcessorTestCase {
-
-	// left to right marker
-	protected static final char LRM = '\u200e';
-	// left to right embedding
-	protected static final char LRE = '\u202a';
-	// pop directional format	
-	protected static final char PDF = '\u202c';
-
-	private static String PATH_1_RESULT = LRE + PATH_1 + PDF;
-	private static String PATH_2_RESULT = LRE + PATH_2 + PDF;
-	private static String PATH_3_RESULT = LRE + PATH_3 + PDF;
-	private static String PATH_4_RESULT = LRE + PATH_4 + PDF;
-	private static String PATH_5_RESULT = LRE + "d" + ":" + "\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\" + "xyz" + "\\" + "abcdef" + "\\" + HEBREW_STRING_4 + LRM + "\\" + HEBREW_STRING_5 + "." + "java" + PDF;
-	private static String PATH_6_RESULT = LRE + "d" + ":" + "\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\" + "xyz" + "\\" + "abcdef" + "\\" + HEBREW_STRING_4 + LRM + "\\" + HEBREW_STRING_5 + LRM + "." + HEBREW_STRING_6 + PDF;
-	private static String PATH_7_RESULT = LRE + "d" + ":" + "\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\" + "xyz" + "\\" + "abcdef" + "\\" + HEBREW_STRING_4 + "\\" + "Test" + "." + "java" + PDF;
-	private static String PATH_8_RESULT = LRE + PATH_8 + PDF;
-	private static String PATH_9_RESULT = LRE + PATH_9 + PDF;
-	private static String PATH_10_RESULT = LRE + PATH_10 + PDF;
-	private static String PATH_11_RESULT = LRE + PATH_11 + PDF;
-	private static String PATH_12_RESULT = PATH_12;
-	private static String PATH_13_RESULT = LRE + PATH_13 + PDF;
-
-	// additional strings
-	private static String STRING_1_RESULT = STRING_1;
-	private static String STRING_2_RESULT = STRING_2;
-	private static String STRING_3_RESULT = LRE + STRING_3 + PDF;
-	private static String STRING_4_RESULT = LRE + STRING_4 + PDF;
-	private static String STRING_5_RESULT = LRE + STRING_5 + PDF;
-	private static String STRING_6_RESULT = LRE + STRING_6 + PDF;
-	private static String STRING_7_RESULT = STRING_7;
-	private static String STRING_8_RESULT = LRE + STRING_8 + PDF;
-	private static String STRING_9_RESULT = LRE + "d:\\myFolder\\" + HEBREW_STRING_5 + LRM + "\\" + HEBREW_STRING_6 + ".java" + PDF;
-	private static String STRING_10_RESULT = LRE + "d:\\myFolder\\" + HEBREW_STRING_2 + LRM + "\\123/" + HEBREW_STRING_3 + ".java" + PDF;
-	private static String STRING_11_RESULT = LRE + "d:\\myFolder\\" + HEBREW_STRING_2 + LRM + "\\123/" + HEBREW_STRING_3 + LRM + "." + HEBREW_STRING_5 + PDF;
-	private static String STRING_12_RESULT = LRE + "d:\\myFolder\\" + HEBREW_STRING_2 + LRM + "\\123" + HEBREW_STRING_3 + LRM + "." + HEBREW_STRING_6 + PDF;
-	private static String STRING_13_RESULT = LRE + "d:\\myFolder\\" + HEBREW_STRING_2 + LRM + "\\123/myfile." + HEBREW_STRING_6 + PDF;
-	private static String STRING_14_RESULT = LRE + "d:\\myFolder\\" + HEBREW_STRING_2 + LRM + "\\123myfile." + HEBREW_STRING_6 + PDF;
-	private static String STRING_15_RESULT = LRE + "d:\\myFolder\\" + HEBREW_STRING_2 + "12-=" + LRM + "\\<>?34" + HEBREW_STRING_6 + ".java" + PDF;
-	private static String STRING_16_RESULT = LRE + HEBREW_STRING_2 + LRM + "/" + HEBREW_STRING_6 + LRM + "/" + HEBREW_STRING_4 + LRM + "." + HEBREW_STRING_5 + PDF;
-	private static String STRING_17_RESULT = LRE + HEBREW_STRING_7 + LRM + "/" + HEBREW_STRING_8 + LRM + "/" + HEBREW_STRING_9 + LRM + "/" + HEBREW_STRING_10 + LRM + "/" + HEBREW_STRING_11 + LRM + "/" + HEBREW_STRING_12 + LRM + "/" + HEBREW_STRING_13 + PDF;
-	private static String STRING_18_RESULT = LRE + "_" + HEBREW_STRING_2 + " mixed text starts and ends with neutral." + PDF;
-	private static String STRING_19_RESULT = LRE + "english and " + HEBREW_STRING_2 + " text starts with LTR ends with neutral _" + PDF;
-
-	private static String OTHER_STRING_NO_DELIM = LRE + "\u05ea\u05e9\u05e8\u05e7\u05e6 abcdef-\u05e5\u05e4\u05e3" + PDF;
-
-	private static String OTHER_STRING_1_RESULT = LRE + "*" + "." + "java" + PDF;
-	private static String OTHER_STRING_2_RESULT = LRE + "*" + "." + "\u05d0\u05d1\u05d2" + PDF;
-	private static String OTHER_STRING_3_RESULT = LRE + "\u05d0\u05d1\u05d2 " + LRM + "=" + " \u05ea\u05e9\u05e8\u05e7\u05e6" + PDF;
-	// result strings if null delimiter is passed 
-	private static String OTHER_STRING_1_ND_RESULT = LRE + "*" + "." + "java" + PDF;
-	private static String OTHER_STRING_2_ND_RESULT = LRE + "*" + "." + "\u05d0\u05d1\u05d2" + PDF;
-	private static String OTHER_STRING_3_ND_RESULT = LRE + "\u05d0\u05d1\u05d2 " + "=" + " \u05ea\u05e9\u05e8\u05e7\u05e6" + PDF;
-
-	private static String[] RESULT_DEFAULT_PATHS = {PATH_1_RESULT, PATH_2_RESULT, PATH_3_RESULT, PATH_4_RESULT, PATH_5_RESULT, PATH_6_RESULT, PATH_7_RESULT, PATH_8_RESULT, PATH_9_RESULT, PATH_10_RESULT, PATH_11_RESULT, PATH_12_RESULT, PATH_13_RESULT};
-
-	private static String[] RESULT_ADDITIONAL_STRINGS = {STRING_1_RESULT, STRING_2_RESULT, STRING_3_RESULT, STRING_4_RESULT, STRING_5_RESULT, STRING_6_RESULT, STRING_7_RESULT, STRING_8_RESULT, STRING_9_RESULT, STRING_10_RESULT, STRING_11_RESULT, STRING_12_RESULT, STRING_13_RESULT, STRING_14_RESULT, STRING_15_RESULT, STRING_16_RESULT, STRING_17_RESULT, STRING_18_RESULT, STRING_19_RESULT};
-
-	private static String[] RESULT_STAR_PATHS = {OTHER_STRING_1_RESULT, OTHER_STRING_2_RESULT};
-
-	private static String[] RESULT_EQUALS_PATHS = {OTHER_STRING_3_RESULT};
-
-	private static String[] RESULT_STAR_PATHS_ND = {OTHER_STRING_1_ND_RESULT, OTHER_STRING_2_ND_RESULT};
-
-	private static String[] RESULT_EQUALS_PATHS_ND = {OTHER_STRING_3_ND_RESULT};
-
-	// whether or not the current platform supports directional characters
-	private static boolean isSupportedPlatform = false;
-	static {
-		String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
-		if (osName.startsWith("windows") || osName.startsWith("linux") || osName.startsWith("mac")) { //$NON-NLS-1$	//$NON-NLS-2$ //$NON-NLS-3$
-
-			// Only consider platforms that can support control characters
-			isSupportedPlatform = true;
-		}
-	}
-
-	protected static String defaultDelimiters = TextProcessor.getDefaultDelimiters();
-
-	/**
-	 * Constructor.
-	 * 
-	 * @param name test name
-	 */
-	public BidiTextProcessorTestCase(String name) {
-		super(name);
-	}
-
-	/*
-	 * Test TextProcessor for file paths.
-	 */
-	public void testBidiPaths() {
-		for (int i = 0; i < TEST_DEFAULT_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_DEFAULT_PATHS[i]);
-			if (isSupportedPlatform)
-				verifyBidiResult("Process path " + (i + 1), result, RESULT_DEFAULT_PATHS[i]);
-			else
-				verifyResult("Process path " + (i + 1), result, TEST_DEFAULT_PATHS[i]);
-		}
-	}
-
-	public void testBidiPathsDeprocess() {
-		for (int i = 0; i < TEST_DEFAULT_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_DEFAULT_PATHS[i]);
-			String resultDP = TextProcessor.deprocess(result);
-			verifyBidiResult("Deprocess path " + (i + 1), resultDP, TEST_DEFAULT_PATHS[i]);
-		}
-	}
-
-	public void testBidiPathsWithNullDelimiter() {
-		// should use default delimiters
-		for (int i = 0; i < TEST_DEFAULT_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_DEFAULT_PATHS[i], null);
-			if (isSupportedPlatform)
-				verifyBidiResult("Process path " + (i + 1), result, RESULT_DEFAULT_PATHS[i]);
-			else
-				verifyResult("Process path " + (i + 1), result, TEST_DEFAULT_PATHS[i]);
-		}
-	}
-
-	public void testBidiStringWithNoDelimiters() {
-		String result = TextProcessor.process(OTHER_STRING_NO_DELIM);
-		assertEquals("Other string containing no delimiters not equivalent.", OTHER_STRING_NO_DELIM, result);
-	}
-
-	/*
-	 * Test other possible uses for TextProcessor, including file associations and 
-	 * variable assignment statements.
-	 */
-	public void testOtherStrings() {
-		int testNum = 1;
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_STAR_PATHS[i], "*.");
-			if (isSupportedPlatform)
-				verifyBidiResult("Other (star) string" + testNum, result, RESULT_STAR_PATHS[i]);
-			else
-				verifyResult("Other (star) string" + testNum, result, TEST_STAR_PATHS[i]);
-			testNum++;
-		}
-
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_EQUALS_PATHS[i], "=");
-			if (isSupportedPlatform)
-				verifyBidiResult("Other (equals) string" + testNum, result, RESULT_EQUALS_PATHS[i]);
-			else
-				verifyResult("Other (equals) string" + testNum, result, TEST_EQUALS_PATHS[i]);
-			testNum++;
-		}
-	}
-
-	public void testOtherStringsDeprocess() {
-		int testNum = 1;
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_STAR_PATHS[i], "*.");
-			String resultDP = TextProcessor.deprocess(result);
-			verifyBidiResult("Deprocess other (star) string" + testNum, resultDP, TEST_STAR_PATHS[i]);
-			testNum++;
-		}
-
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_EQUALS_PATHS[i], "=");
-			String resultDP = TextProcessor.deprocess(result);
-			verifyBidiResult("Deprocess other (equals) string" + testNum, resultDP, TEST_EQUALS_PATHS[i]);
-			testNum++;
-		}
-	}
-
-	public void testOtherStringsWithNullDelimiter() {
-		int testNum = 1;
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_STAR_PATHS[i], null);
-			if (isSupportedPlatform)
-				verifyBidiResult("Other (star) string" + testNum, result, RESULT_STAR_PATHS_ND[i]);
-			else
-				verifyResult("Other (star) string" + testNum, result, TEST_STAR_PATHS[i]);
-			testNum++;
-		}
-
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_EQUALS_PATHS[i], null);
-			if (isSupportedPlatform)
-				verifyBidiResult("Other (equals) string" + testNum, result, RESULT_EQUALS_PATHS_ND[i]);
-			else {
-				verifyResult("Other (equals) string" + testNum, result, TEST_EQUALS_PATHS[i]);
-			}
-			testNum++;
-		}
-	}
-
-	/*
-	 * Test the result to ensure markers aren't added more than once if the 
-	 * string is processed multiple times.
-	 */
-	public void testDoubleProcessPaths() {
-		for (int i = 0; i < TEST_DEFAULT_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_DEFAULT_PATHS[i]);
-			result = TextProcessor.process(result);
-			if (isSupportedPlatform)
-				verifyBidiResult("Path " + (i + 1), result, RESULT_DEFAULT_PATHS[i]);
-			else
-				verifyResult("Path " + (i + 1), result, TEST_DEFAULT_PATHS[i]);
-		}
-	}
-
-	/*
-	 * Test the result to ensure markers aren't added more than once if the 
-	 * string is processed multiple times.
-	 */
-	public void testDoubleProcessOtherStrings() {
-		int testNum = 1;
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_STAR_PATHS[i], "*.");
-			result = TextProcessor.process(result, "*.");
-			if (isSupportedPlatform)
-				verifyBidiResult("Other (star) string " + testNum, result, RESULT_STAR_PATHS[i]);
-			else
-				verifyResult("Other (star) string " + testNum, result, TEST_STAR_PATHS[i]);
-			testNum++;
-		}
-
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_EQUALS_PATHS[i], "=");
-			result = TextProcessor.process(result, "=");
-			if (isSupportedPlatform)
-				verifyBidiResult("Other (equals) string" + testNum, result, RESULT_EQUALS_PATHS[i]);
-			else
-				verifyResult("Other (equals) string" + testNum, result, TEST_EQUALS_PATHS[i]);
-			testNum++;
-		}
-	}
-
-	public void testAdditionalStrings() {
-		for (int i = 0; i < TEST_ADDITIONAL_STRINGS.length; i++) {
-			String result = TextProcessor.process(TEST_ADDITIONAL_STRINGS[i]);
-			if (isSupportedPlatform)
-				verifyBidiResult("Additional string " + (i + 1), result, RESULT_ADDITIONAL_STRINGS[i]);
-			else
-				verifyResult("Additional string " + (i + 1), result, TEST_ADDITIONAL_STRINGS[i]);
-		}
-	}
-
-	public void testAdditionalStringsDeprocess() {
-		for (int i = 0; i < TEST_ADDITIONAL_STRINGS.length; i++) {
-			String result = TextProcessor.process(TEST_ADDITIONAL_STRINGS[i]);
-			String resultDP = TextProcessor.deprocess(result);
-			verifyBidiResult("Additional string " + (i + 1), resultDP, TEST_ADDITIONAL_STRINGS[i]);
-		}
-	}
-
-	public void testEmptyStringParams() {
-		verifyBidiResult("TextProcessor.process(String) for empty string ", TextProcessor.process(""), EMPTY_STRING);
-		verifyBidiResult("TextProcessor.process(String, String) for empty strings ", TextProcessor.process("", ""), EMPTY_STRING);
-	}
-
-	public void testEmptyStringParamsDeprocess() {
-		verifyBidiResult("TextProcessor.deprocess(String) for empty string ", TextProcessor.deprocess(""), EMPTY_STRING);
-	}
-
-	public void testNullParams() {
-		assertNull("TextProcessor.process(String) for null param ", TextProcessor.process(null));
-		assertNull("TextProcessor.process(String, String) for params ", TextProcessor.process(null, null));
-	}
-
-	public void testNullParamsDeprocess() {
-		assertNull("TextProcessor.deprocess(String) for null param ", TextProcessor.deprocess(null));
-	}
-
-	private void verifyBidiResult(String testName, String result, String expected) {
-		boolean testResult = result.equals(expected);
-		assertTrue(testName + " result string is not the same as expected string.", testResult);
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/LatinTextProcessorTestCase.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/LatinTextProcessorTestCase.java
deleted file mode 100644
index e115e92..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/LatinTextProcessorTestCase.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package org.eclipse.osgi.tests.util;
-
-import org.eclipse.osgi.util.TextProcessor;
-
-/**
- * Test for strings that use the TextProcessor but are not run in a bidi locale. 
- * Latin locales should return the same String that was passed in.
- *
- */
-public class LatinTextProcessorTestCase extends TextProcessorTestCase {
-	protected static String[] ALL_PATHS;
-	static {
-		// merge all test strings into one array for Latin locales
-		int size = TEST_DEFAULT_PATHS.length + TEST_STAR_PATHS.length + TEST_EQUALS_PATHS.length + TEST_ADDITIONAL_STRINGS.length;
-		ALL_PATHS = new String[size];
-		int idx = 0;
-		for (int i = 0; i < TEST_DEFAULT_PATHS.length; i++) {
-			ALL_PATHS[idx] = TEST_DEFAULT_PATHS[i];
-			idx++;
-		}
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			ALL_PATHS[idx] = TEST_STAR_PATHS[i];
-			idx++;
-		}
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			ALL_PATHS[idx] = TEST_EQUALS_PATHS[i];
-			idx++;
-		}
-		for (int i = 0; i < TEST_ADDITIONAL_STRINGS.length; i++) {
-			ALL_PATHS[idx] = TEST_ADDITIONAL_STRINGS[i];
-			idx++;
-		}
-	}
-
-	/**
-	 * Constructor for class.
-	 * 
-	 * @param name test name
-	 */
-	public LatinTextProcessorTestCase(String name) {
-		super(name);
-	}
-
-	public void testLatinPaths() {
-		// test all strings using process(String) method
-		for (int i = 0; i < ALL_PATHS.length; i++) {
-			String result = TextProcessor.process(ALL_PATHS[i]);
-			verifyResult("Process string " + (i + 1), result, ALL_PATHS[i]);
-		}
-	}
-	
-	public void testLatinPathsDeprocess(){
-		// test all strings using process(String) method
-		for (int i = 0; i < ALL_PATHS.length; i++) {
-			String result = TextProcessor.process(ALL_PATHS[i]);
-			String resultDP = TextProcessor.deprocess(result);
-			verifyResult("Deprocess string " + (i + 1), resultDP, ALL_PATHS[i]);
-		}		
-	}
-
-	public void testLatinPathsWithNullDelimiter() {
-		// should use default delimiters
-		for (int i = 0; i < ALL_PATHS.length; i++) {
-			String result = TextProcessor.process(ALL_PATHS[i], null);
-			verifyResult("Process string " + (i + 1), result, ALL_PATHS[i]);
-		}
-	}
-	
-	public void testLatinOtherStrings() {
-		// test the process(String, String) method
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_STAR_PATHS[i], "*.");
-			verifyResult("File association " + (i + 1), result, TEST_STAR_PATHS[i]);
-		}
-
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_EQUALS_PATHS[i], "=");
-			verifyResult("Equals expression " + (i + 1), result, TEST_EQUALS_PATHS[i]);
-		}
-	}
-	
-	public void testLatinOtherStringsDeprocess() {
-		// test the process(String, String) method
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_STAR_PATHS[i], "*.");
-			String resultDP = TextProcessor.deprocess(result);
-			verifyResult("File association " + (i + 1), resultDP, TEST_STAR_PATHS[i]);
-		}
-
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_EQUALS_PATHS[i], "=");
-			String resultDP = TextProcessor.deprocess(result);
-			verifyResult("Equals expression " + (i + 1), resultDP, TEST_EQUALS_PATHS[i]);
-		}
-	}	
-
-	public void testLatinOtherStringsWithNoDelimiter() {
-		for (int i = 0; i < TEST_STAR_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_STAR_PATHS[i], null);
-			verifyResult("File association " + (i + 1), result, TEST_STAR_PATHS[i]);
-		}
-
-		for (int i = 0; i < TEST_EQUALS_PATHS.length; i++) {
-			String result = TextProcessor.process(TEST_EQUALS_PATHS[i], null);
-			verifyResult("Equals expression " + (i + 1), result, TEST_EQUALS_PATHS[i]);
-		}
-	}
-
-	public void testEmptyStringParams() {
-		verifyResult("TextProcessor.process(String) for empty string ", TextProcessor.process(""), EMPTY_STRING);
-		verifyResult("TextProcessor.process(String, String) for empty strings ", TextProcessor.process("", ""), EMPTY_STRING);
-	}
-	
-	public void testEmptyStringParamsDeprocess() {
-		verifyResult("TextProcessor.deprocess(String) for empty string ", TextProcessor.deprocess(""), EMPTY_STRING);
-	}
-	
-	public void testNullParams() {
-		assertNull("TextProcessor.process(String) for null param ", TextProcessor.process(null));
-		assertNull("TextProcessor.process(String, String) for params ", TextProcessor.process(null, null));
-	}
-	
-	public void testNullParamsDeprocess() {
-		assertNull("TextProcessor.deprocess(String) for null param ", TextProcessor.deprocess(null));
-	}	
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ManifestElementTestCase.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ManifestElementTestCase.java
deleted file mode 100644
index 32fe71c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ManifestElementTestCase.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.osgi.tests.util;
-
-import junit.framework.TestCase;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.BundleException;
-
-public class ManifestElementTestCase extends TestCase {
-
-	public void testSpacesInValues() throws BundleException {
-		ManifestElement[] elements = ManifestElement.parseHeader("test-spaces", "\"comp 1\";\"comp 2\";\"comp 3\";attr=\"val 1\";dir:=\"val 2\"");
-		assertNotNull("1.0", elements);
-		assertEquals("1.1", elements.length, 1);
-		String[] components = elements[0].getValueComponents();
-		assertEquals("1.2", components.length, 3);
-
-		assertEquals("2.0", components[0], "comp 1");
-		assertEquals("2.1", components[1], "comp 2");
-		assertEquals("2.2", components[2], "comp 3");
-
-		assertEquals("3.0", elements[0].getAttribute("attr"), "val 1");
-		assertEquals("3.1", elements[0].getDirective("dir"), "val 2");
-	}
-
-	public void testBug238675_01() throws BundleException {
-		ManifestElement[] elements = ManifestElement.parseHeader("Bundle-NativeCode", "\"external:C:/tmp/x.dll\";\"external:C:/tmp/y.dll\"; osname =WindowsXP; osverison = 2.0; processor = x86"); //$NON-NLS-1$//$NON-NLS-2$
-		assertNotNull("1.0", elements);
-		assertEquals("1.1", 1, elements.length);
-		String[] components = elements[0].getValueComponents();
-		assertEquals("1.2", 2, components.length);
-
-		assertEquals("2.0", "external:C:/tmp/x.dll", components[0]);
-		assertEquals("2.1", "external:C:/tmp/y.dll", components[1]);
-	}
-
-	public void testBug238675_02() throws BundleException {
-		ManifestElement[] elements = ManifestElement.parseHeader("Bundle-NativeCode", "\"external:test1:test2\";\"test3:test4:\"; osname =WindowsXP; osverison = 2.0; processor = x86"); //$NON-NLS-1$ //$NON-NLS-2$
-		assertNotNull("1.0", elements);
-		assertEquals("1.1", 1, elements.length);
-		String[] components = elements[0].getValueComponents();
-		assertEquals("1.2", 2, components.length);
-
-		assertEquals("2.0", components[0], "external:test1:test2");
-		assertEquals("2.1", components[1], "test3:test4:");
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/NLSTestCase.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/NLSTestCase.java
deleted file mode 100644
index 8b4fbc0..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/NLSTestCase.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.osgi.tests.util;
-
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.osgi.util.NLS;
-
-public class NLSTestCase extends CoreTest {
-
-	public void testEmptyMessageBug200296() {
-		try {
-			NLS.bind("", new Integer(0));
-		} catch (NegativeArraySizeException e) {
-			fail("1.0", e);
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ObjectPoolTestCase.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ObjectPoolTestCase.java
deleted file mode 100644
index ffeaebd..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ObjectPoolTestCase.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.osgi.tests.util;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.eclipse.core.tests.harness.CoreTest;
-import org.eclipse.osgi.framework.util.ObjectPool;
-import org.osgi.framework.Version;
-
-public class ObjectPoolTestCase extends CoreTest {
-	public void testObjectPool01() {
-		// Tests ObjectPool with strings only
-		List objects = new ArrayList();
-		int num = 2000;
-		// new objects are added to the object pool; interning should add the object to the pool and return the same object
-		for (int i = 0; i < num; i++) {
-			String test1 = getName() + "_" + i; //$NON-NLS-1$
-			String test2 = (String) ObjectPool.intern(test1);
-			assertTrue("Strings are not the same: " + test1, test1 == test2); //$NON-NLS-1$
-			objects.add(test2);
-		}
-		doGC();
-		// after doing a GC the interned objects should still be in the pool; interning a duplicate should return the objects that were added above
-		for (int i = 0; i < num; i++) {
-			String test1 = getName() + "_" + i; //$NON-NLS-1$
-			String test2 = (String) ObjectPool.intern(test1);
-			assertFalse("Strings are the same: " + test1, test1 == test2); //$NON-NLS-1$
-			assertTrue("Strings are not the same: " + test1, test2 == objects.get(i)); //$NON-NLS-1$
-		}
-		// clear the hard references to the interned objects
-		objects.clear();
-		doGC();
-		// after doing a GC the interned objects should have been removed from the object pool
-		for (int i = 0; i < num; i++) {
-			String test1 = getName() + "_" + i; //$NON-NLS-1$
-			String test2 = (String) ObjectPool.intern(test1);
-			assertTrue("Strings are not the same: " + test1, test1 == test2); //$NON-NLS-1$
-			objects.add(test2);
-		}
-		// flush out the objects again.
-		objects.clear();
-		doGC();
-	}
-
-	public void testObjectPool02() {
-		// Test both strings and versions
-		List strings = new ArrayList();
-		List versions = new ArrayList();
-		int num = 2000;
-		// new objects are added to the object pool; interning should add the object to the pool and return the same object
-		for (int i = 0; i < num; i++) {
-			String testString1 = getName() + "_" + i; //$NON-NLS-1$
-			String testString2 = (String) ObjectPool.intern(testString1);
-			assertTrue("Strings are not the same: " + testString1, testString1 == testString2); //$NON-NLS-1$
-			strings.add(testString2);
-			Version testVersion1 = new Version(i, i, i, getName() + "_" + i); //$NON-NLS-1$
-			Version testVersion2 = (Version) ObjectPool.intern(testVersion1);
-			assertTrue("Versions are not the same: " + testVersion1, testVersion1 == testVersion2); //$NON-NLS-1$
-			versions.add(testVersion2);
-		}
-		doGC();
-		// after doing a GC the interned objects should still be in the pool; interning a duplicate should return the objects that were added above
-		for (int i = 0; i < num; i++) {
-			String testString1 = getName() + "_" + i; //$NON-NLS-1$
-			String testString2 = (String) ObjectPool.intern(testString1);
-			assertFalse("Strings are the same: " + testString1, testString1 == testString2); //$NON-NLS-1$
-			assertTrue("Strings are not the same: " + testString1, testString2 == strings.get(i)); //$NON-NLS-1$
-			Version testVersion1 = new Version(i, i, i, getName() + "_" + i); //$NON-NLS-1$
-			Version testVersion2 = (Version) ObjectPool.intern(testVersion1);
-			assertFalse("Versions are the same: " + testVersion1, testVersion1 == testVersion2); //$NON-NLS-1$
-			assertTrue("Versions are not the same: " + testVersion1, testVersion2 == versions.get(i)); //$NON-NLS-1$
-		}
-		// clear the hard references to the interned objects
-		strings.clear();
-		versions.clear();
-		// after doing a GC the interned objects should have been removed from the object pool
-		doGC();
-		for (int i = 0; i < num; i++) {
-			String testString1 = getName() + "_" + i; //$NON-NLS-1$
-			String testString2 = (String) ObjectPool.intern(testString1);
-			assertTrue("Strings are not the same: " + testString1, testString1 == testString2); //$NON-NLS-1$
-			strings.add(testString2);
-			Version testVersion1 = new Version(i, i, i, getName() + "_" + i); //$NON-NLS-1$
-			Version testVersion2 = (Version) ObjectPool.intern(testVersion1);
-			assertTrue("Versions are not the same: " + testVersion1, testVersion1 == testVersion2); //$NON-NLS-1$
-			versions.add(testVersion2);
-		}
-		// flush out the objects again.
-		strings.clear();
-		versions.clear();
-		doGC();
-	}
-
-	private static void doGC() {
-		// We go through great effort to force the VM to throw our weakly referenced objects away.
-		System.gc();
-		System.runFinalization();
-		System.gc();
-		System.runFinalization();
-	}
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorSessionTest.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorSessionTest.java
deleted file mode 100644
index 6513426..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorSessionTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package org.eclipse.osgi.tests.util;
-
-import org.eclipse.core.tests.session.SessionTestSuite;
-import org.eclipse.core.tests.session.Setup;
-import org.eclipse.core.tests.session.SetupManager.SetupException;
-
-public class TextProcessorSessionTest extends SessionTestSuite {
-	private String lang = null;
-	
-	/**
-	 * Create a session test for the given class.  
-	 * @param pluginId tests plugin id
-	 * @param clazz the test class to run
-	 * @param language the language to run the tests under (the -nl parameter value)
-	 */
-	public TextProcessorSessionTest(String pluginId, Class clazz, String language) {
-		super(pluginId, clazz);
-		lang = language;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.tests.session.SessionTestSuite#newSetup()
-	 */
-	protected Setup newSetup() throws SetupException {
-		Setup base = super.newSetup();
-		// the base implementation will have set this to the host configuration
-		base.setEclipseArgument("nl", lang);	// Setup.NL is private
-		return base;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorTestCase.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorTestCase.java
deleted file mode 100644
index 0bc535e..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/TextProcessorTestCase.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.eclipse.osgi.tests.util;
-
-import junit.framework.TestCase;
-
-/**
- * Common class for TextProcessor test cases.
- *
- */
-public abstract class TextProcessorTestCase extends TestCase {
-	// some Hebrew strings to use for test cases
-	protected static String HEBREW_STRING_1 = "\u05d0\u05d1\u05d2\u05d3 \u05d4\u05d5";
-	protected static String HEBREW_STRING_2 = "\u05ea\u05e9\u05e8\u05e7\u05e6";
-	protected static String HEBREW_STRING_3 = "\u05e5\u05e4\u05e3";
-	protected static String HEBREW_STRING_4 = "\u05e2\u05e1\u05e0";
-	protected static String HEBREW_STRING_5 = "\u05df\u05fd\u05dd";
-	protected static String HEBREW_STRING_6 = "\u05dc\u05db\u05da";	
-	protected static String HEBREW_STRING_7 = "\u05d0";
-	protected static String HEBREW_STRING_8 = "\u05e9";
-	protected static String HEBREW_STRING_9 = "\u05dc";
-	protected static String HEBREW_STRING_10 = "\u05e3";
-	protected static String HEBREW_STRING_11 = "\u05d4";
-	protected static String HEBREW_STRING_12 = "\u05da";
-	protected static String HEBREW_STRING_13 = "\u05df";
-		
-	// strings to test
-	
-	// paths
-	protected static String PATH_1 = "d:\\test\\" + HEBREW_STRING_1 + "\\segment";
-	protected static String PATH_2 = "\\test\\" + HEBREW_STRING_1 + "\\segment";
-	protected static String PATH_3 = "d:\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\xyz\\abcdef\\" + HEBREW_STRING_4;
-	protected static String PATH_4 = "\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\xyz\\abcdef\\" + HEBREW_STRING_4;
-	protected static String PATH_5 = "d:\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\xyz\\abcdef\\" + HEBREW_STRING_4 + "\\" + HEBREW_STRING_5 + ".java";
-	protected static String PATH_6 = "d:\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\xyz\\abcdef\\" + HEBREW_STRING_4 + "\\" + HEBREW_STRING_5 + "." + HEBREW_STRING_6;
-	protected static String PATH_7 = "d:\\" + HEBREW_STRING_2 + " abcdef-" + HEBREW_STRING_3 + "\\xyz\\abcdef\\" + HEBREW_STRING_4 + "\\Test.java";
-	protected static String PATH_8 = "\\test\\jkl" + HEBREW_STRING_1 + "\\segment";
-	protected static String PATH_9 = "\\test\\" + HEBREW_STRING_1 + "jkl\\segment";
-	protected static String PATH_10 = "d:\\t\\" + HEBREW_STRING_7 + "\\segment";
-	protected static String PATH_11 = "\\t\\" + HEBREW_STRING_7 + "\\segment";
-	protected static String PATH_12 = "d:\\";
-	protected static String PATH_13 = "\\t";
-	
-	protected static String STRING_1 = "d:\\all\\english";
-	protected static String STRING_2 = "all english with neutrals (spaces) in the middle";
-	protected static String STRING_3 = "_d:all/english with leading neutral";
-	protected static String STRING_4 = "d:all/english with trailing neutral_";
-	protected static String STRING_5 = "3d:all/english with leading digit";
-	protected static String STRING_6 = "english with some " + HEBREW_STRING_5 + " in the middle";
-	protected static String STRING_7 = "d:all/english with trailing neutral then digits_123";
-	protected static String STRING_8 = "==>";
-	protected static String STRING_9 = "d:\\myFolder\\" + HEBREW_STRING_5 + "\\" + HEBREW_STRING_6 + ".java";
-	protected static String STRING_10 = "d:\\myFolder\\" + HEBREW_STRING_2 + "\\123/" + HEBREW_STRING_3 + ".java";
-	protected static String STRING_11 = "d:\\myFolder\\" + HEBREW_STRING_2 + "\\123/" + HEBREW_STRING_3 + "." + HEBREW_STRING_5;
-	protected static String STRING_12 = "d:\\myFolder\\" + HEBREW_STRING_2 + "\\123" + HEBREW_STRING_3 + "." + HEBREW_STRING_6;
-	protected static String STRING_13 = "d:\\myFolder\\" + HEBREW_STRING_2 + "\\123/myfile." + HEBREW_STRING_6;
-	protected static String STRING_14 = "d:\\myFolder\\" + HEBREW_STRING_2 + "\\123myfile." + HEBREW_STRING_6;
-	protected static String STRING_15= "d:\\myFolder\\" + HEBREW_STRING_2 + "12-=\\<>?34" + HEBREW_STRING_6 + ".java";
-	protected static String STRING_16 = HEBREW_STRING_2 + "/" + HEBREW_STRING_6 + "/" + HEBREW_STRING_4 + "." + HEBREW_STRING_5; 
-	protected static String STRING_17 = HEBREW_STRING_7 + "/" + HEBREW_STRING_8 + "/" + HEBREW_STRING_9 + "/" + HEBREW_STRING_10 + "/" +HEBREW_STRING_11 + "/" + HEBREW_STRING_12 + "/" + HEBREW_STRING_13;
-	protected static String STRING_18 = "_" + HEBREW_STRING_2 + " mixed text starts and ends with neutral.";
-	protected static String STRING_19 = "english and " + HEBREW_STRING_2 + " text starts with LTR ends with neutral _";
-
-	// other strings - file associations and assignment statements
-	protected static String OTHER_STRING_1 = "*.java";
-	protected static String OTHER_STRING_2 = "*.\u05d0\u05d1\u05d2";
-	protected static String OTHER_STRING_3 = "\u05d0\u05d1\u05d2 = \u05ea\u05e9\u05e8\u05e7\u05e6";
-
-	protected static String EMPTY_STRING = "";
-
-	protected static String[] TEST_DEFAULT_PATHS = { PATH_1, PATH_2, PATH_3,
-			PATH_4, PATH_5, PATH_6, PATH_7, PATH_8, PATH_9 };
-
-	protected static String[] TEST_ADDITIONAL_STRINGS = { STRING_1, STRING_2,
-			STRING_3, STRING_4, STRING_5, STRING_6, STRING_7, STRING_8,
-			STRING_9, STRING_10, STRING_11, STRING_12, STRING_13, STRING_14,
-			STRING_15, STRING_16, STRING_17, STRING_18, STRING_19 };
-
-	protected static String[] TEST_STAR_PATHS = { OTHER_STRING_1,
-			OTHER_STRING_2 };
-
-	protected static String[] TEST_EQUALS_PATHS = { OTHER_STRING_3 };
-
-	/**
-	 * Constructor for class
-	 * 
-	 * @param name
-	 */
-	public TextProcessorTestCase(String name) {
-		super(name);
-	}
-
-	protected void verifyResult(String testName, String expected, String result){
-		assertTrue(testName + " result string is not the same as string passed in.", result.equals(expected));		
-	}
-	
-}
diff --git a/bundles/org.eclipse.osgi.tests/test.xml b/bundles/org.eclipse.osgi.tests/test.xml
deleted file mode 100644
index 16a5594..0000000
--- a/bundles/org.eclipse.osgi.tests/test.xml
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0"?>
-<project name="Core Resources Automated Tests" default="run" basedir=".">
-
-  <!-- The property ${eclipse-home} should be passed into this script -->
-  <!-- sets the properties eclipse-home, and library-file -->
-  <property name="eclipse-home" value="${basedir}/../../"/>
-  <property name="library-file" value="${eclipse-home}/plugins/org.eclipse.test/library.xml"/>
-  <property name="osgi_location" value="${eclipse-home}/osgi_sniff_folder"/>  
-  <property name="plugin-name" value="org.eclipse.osgi.tests"/>
-
-  <!-- This target holds all initialization code that needs to be done for -->
-  <!-- all tests that are to be run. Initialization for individual tests -->
-  <!-- should be done within the body of the suite target. -->
-  <target name="init">
-    <tstamp/>
-  </target>
-
-  <!-- This target holds code to cleanup the testing environment after the tests -->
-  <!-- have been run. You can use this to delete temporary files that are created. -->
-  <target name="cleanup">
-    <delete dir="${runtime_location}" quiet="true"/>
-    <delete dir="${resources_location}" quiet="true"/>
-    <delete dir="${osgi_location}" quiet="true"/>    
-  </target>
-
-  <!-- This target runs the test suite. Any actions that need to happen after all -->
-  <!-- the tests have been run should go here. -->
-  <target name="run" depends="init,suite,cleanup">
-    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="includes" value="org*.xml"/>
-      <property name="output-file" value="${plugin-name}.xml"/>
-    </ant>
-  </target>
-  
-  <!-- This target runs the performance test suites. Any actions that need to happen after all -->
-  <!-- the tests have been run should go here. -->
-  <target name="performance" depends="init,performance-suite,cleanup">
-    <ant target="collect" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="includes" value="org*.xml"/>
-      <property name="output-file" value="${plugin-name}.xml"/>
-    </ant>  
-  </target>  
-
-  <target name="OSGiTests" depends="init,cleanup">
-    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="data-dir" value="${osgi_location}"/>
-      <property name="plugin-name" value="org.eclipse.osgi.tests"/>
-      <property name="classname" value="org.eclipse.osgi.tests.AutomatedTests"/>
-    </ant>
-  </target>
-   
-  <target name="OSGiPerformanceTests" depends="init,cleanup">
-    <ant target="core-test" antfile="${library-file}" dir="${eclipse-home}">
-      <property name="data-dir" value="${osgi_location}"/>
-      <property name="plugin-name" value="org.eclipse.osgi.tests"/>
-      <property name="classname" value="org.eclipse.osgi.tests.perf.AllTests"/>
-    </ant>
-  </target>  
-    
-  <!-- This target defines the tests that need to be run. -->
-  <target name="suite" depends="OSGiTests"/>  
-  
-  <!-- This target defines the performance tests that need to be run. -->
-  <target name="performance-suite" depends="OSGiPerformanceTests"/>  
-	
- </project>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle01/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle01/META-INF/MANIFEST.MF
deleted file mode 100644
index e480ba0..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle01/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Bundle-SymbolicName: bundle01
-Bundle-Version: 1.0
-Bundle-ClassPath: .
diff --git a/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle02/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle02/plugin.xml
deleted file mode 100644
index 8facff5..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle02/plugin.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle02"
-  id="bundle02"
-  provider-name="Eclipse.org"
-  version="1.0"/>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle03/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle03/META-INF/MANIFEST.MF
deleted file mode 100644
index 31ffa56..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/configuration/bundle03/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Bundle-SymbolicName: bundle03
-Bundle-Version: 1.0
-Bundle-ClassPath: .
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/META-INF/MANIFEST.MF
deleted file mode 100644
index bb0ba28..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,6 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: test1 bundle
-Bundle-SymbolicName: appadmin.test01;singleton:=true
-Bundle-Version: 1.0.0
-Import-Package: org.eclipse.osgi.tests.appadmin
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/plugin.xml
deleted file mode 100644
index 1836adf..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/appAdminTests/appadmin.test01/plugin.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.2"?>
-<plugin>
-   <extension
-         id="simpleApp"
-         point="org.eclipse.core.runtime.applications">
-      <application
-            cardinality="1"
-            thread="any"
-            visible="true">
-         <run
-               class="org.eclipse.osgi.tests.appadmin.SimpleApp">
-         </run>
-      </application>
-   </extension>
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle 01/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle 01/plugin.xml
deleted file mode 100644
index c7dda4b..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle 01/plugin.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle01"
-  id="bundle01"
-  provider-name="Eclipse.org"
-  version="1.0"/>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle02_1.0.0/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle02_1.0.0/plugin.xml
deleted file mode 100644
index f81c059..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle02_1.0.0/plugin.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle02"
-  id="bundle02"
-  provider-name="Eclipse.org"
-  version="2.0"/>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle03/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle03/plugin.xml
deleted file mode 100644
index 06ac671..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle03/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<!-- version attribute is intentionally missing -->
-<plugin
-  name="bundle03"
-  id="bundle03"
-  provider-name="Eclipse.org"    
-  />
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle04/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle04/plugin.xml
deleted file mode 100644
index f3ea6f2..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle04/plugin.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<!-- single extension point -->
-<plugin
-  name="bundle04"
-  id="bundle04"
-  version="1.3.7"
-  provider-name="Eclipse.org">
-  <extension-point id="id" name="name"/>
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle05/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle05/plugin.xml
deleted file mode 100644
index b66bad7..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle05/plugin.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<!-- single extension -->
-<plugin
-  name="bundle05"
-  id="bundle05"
-  version="1.3.8"
-  provider-name="Eclipse.org">
-  <extension point="id"/>
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle06/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle06/plugin.xml
deleted file mode 100644
index 85db4ff..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle06/plugin.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<!-- single extension -->
-<plugin
-  name="bundle06"
-  id="bundle06"
-  version="1.3.9"
-  provider-name="Eclipse.org">
-  <extension-point id="id" name="name"/>
-  <extension point="bundle06.id"/>  
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07/plugin.xml
deleted file mode 100644
index 4843296..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle07"
-  id="bundle07"
-  version="1.0.0"
-  provider-name="Eclipse.org">
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07b/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07b/plugin.xml
deleted file mode 100644
index f05780e..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle07b/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle07"
-  id="bundle07"
-  version="1.0.0.b"
-  provider-name="Eclipse.org">
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08/plugin.xml
deleted file mode 100644
index 1e3e9a1..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08/plugin.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle08"
-  id="bundle08"
-  version="1.0.0"
-  provider-name="Eclipse.org">
-  <extension-point id="id" name="name"/>
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08b/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08b/plugin.xml
deleted file mode 100644
index ff536d0..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle08b/plugin.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle08"
-  id="bundle08"
-  version="1.0.0.b"
-  provider-name="Eclipse.org">
-  <extension-point id="id" name="name"/>  
-</plugin>
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle09/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle09/plugin.xml
deleted file mode 100644
index acba287..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle09/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle09"
-  id="bundle09"
-  provider-name="Eclipse.org"    
-  version="1.0.0"
-  />
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle10/plugin.xml b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle10/plugin.xml
deleted file mode 100644
index 3a06969..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle10/plugin.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
-  name="bundle10"
-  id="bundle10"
-  provider-name="Eclipse.org"    
-  version="1.0.0"
-  />
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle11/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle11/META-INF/MANIFEST.MF
deleted file mode 100644
index f4ce85a..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle11/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name:  bundle11
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle12/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle12/META-INF/MANIFEST.MF
deleted file mode 100644
index b96f5cd..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle12/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: bundle12
-Bundle-SymbolicName: bundle12
-Export-package: a; test:=value2; test:=value1 
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle13/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle13/META-INF/MANIFEST.MF
deleted file mode 100644
index f9dcb87..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle13/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: bundle13
-Bundle-SymbolicName: bundle13
-Export-package: a; test=value2; test=value1 
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle14/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle14/META-INF/MANIFEST.MF
deleted file mode 100644
index 0ee19b1..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle14/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: bundle14
-Bundle-SymbolicName: bundle14
-Import-package: a; attr=value1, a; attr=value2
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle15/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle15/META-INF/MANIFEST.MF
deleted file mode 100644
index abf1275..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle15/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: bundle15
-Bundle-SymbolicName: bundle15
-Import-package: willnotresolve
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle16/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle16/META-INF/MANIFEST.MF
deleted file mode 100644
index e90f72d..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle16/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,4 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: bundle16
-Bundle-SymbolicName: bundle16
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle17/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle17/META-INF/MANIFEST.MF
deleted file mode 100644
index fe607de..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle17/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: bundle17
-Bundle-SymbolicName: bundle17
-Fragment-Host: bundle16
diff --git a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle18/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle18/META-INF/MANIFEST.MF
deleted file mode 100644
index d1a44a0..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/internal/plugins/installTests/bundle18/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: bundle18
-Bundle-SymbolicName: bundle18
-Fragment-Host: system.bundle; extension:=bootclasspath
diff --git a/bundles/org.eclipse.osgi.tests/test_files/resolverTests/c1.MF b/bundles/org.eclipse.osgi.tests/test_files/resolverTests/c1.MF
deleted file mode 100644
index ba4d7b3..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/resolverTests/c1.MF
+++ /dev/null
@@ -1,5 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: c1
-Bundle-Version: 1.0
-DynamicImport-Package: *
diff --git a/bundles/org.eclipse.osgi.tests/test_files/resolverTests/p1.MF b/bundles/org.eclipse.osgi.tests/test_files/resolverTests/p1.MF
deleted file mode 100644
index ed8eb8c..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/resolverTests/p1.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: p1
-Bundle-Version: 1.0
-Export-Package: 
- x; version="1.0"; uses:="x.sub",
- x.sub; version="2.0",
- x.extra
diff --git a/bundles/org.eclipse.osgi.tests/test_files/resolverTests/p2.MF b/bundles/org.eclipse.osgi.tests/test_files/resolverTests/p2.MF
deleted file mode 100644
index e97cb83..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/resolverTests/p2.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-SymbolicName: p2
-Bundle-Version: 1.0
-Export-Package: 
- x; version="2.0"; uses:="x.sub",
- x.sub; version="1.0"
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/README b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/README
deleted file mode 100644
index 7770c3e..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/README
+++ /dev/null
@@ -1 +0,0 @@
-Test jarfiles, signed by CA1_LEAFA (and sometimes CA1_LEAFB) as well.
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed.jar
deleted file mode 100644
index 82fc348..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed_with_corrupt.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed_with_corrupt.jar
deleted file mode 100644
index 84c087c..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/multiply_signed_with_corrupt.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed.jar
deleted file mode 100644
index e1cad7b..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_tsa.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_tsa.jar
deleted file mode 100644
index 9575425..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_tsa.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_corrupt.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_corrupt.jar
deleted file mode 100644
index e61fab4..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_corrupt.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata.jar
deleted file mode 100644
index 9d693ca..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_added.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_added.jar
deleted file mode 100644
index e97d7c0..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_added.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_corrupt.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_corrupt.jar
deleted file mode 100644
index fc717d2..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_corrupt.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_removed.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_removed.jar
deleted file mode 100644
index 3f6493b..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_metadata_removed.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_sf_corrupted.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_sf_corrupted.jar
deleted file mode 100644
index 99b9550..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/signed_with_sf_corrupted.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/test.bug252098.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/test.bug252098.jar
deleted file mode 100644
index 3f40316..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/test.bug252098.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/unsigned.jar b/bundles/org.eclipse.osgi.tests/test_files/security/bundles/unsigned.jar
deleted file mode 100644
index 9b62db0..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/bundles/unsigned.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/eclipse.jks b/bundles/org.eclipse.osgi.tests/test_files/security/eclipse.jks
deleted file mode 100644
index 8d8784f..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/eclipse.jks
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/keystore.jks b/bundles/org.eclipse.osgi.tests/test_files/security/keystore.jks
deleted file mode 100644
index f902fe2..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/keystore.jks
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/leafkeys.jks b/bundles/org.eclipse.osgi.tests/test_files/security/leafkeys.jks
deleted file mode 100644
index f84d2c7..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/leafkeys.jks
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/README b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/README
deleted file mode 100644
index 0698813..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/README
+++ /dev/null
@@ -1 +0,0 @@
-Certificate files for each test cert. Password is "password" (no quotes) for all files. 
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafa.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafa.p12
deleted file mode 100644
index 4b3a3e0..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafa.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafb.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafb.p12
deleted file mode 100644
index fd57d86..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_leafb.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_ou.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_ou.p12
deleted file mode 100644
index bf7744e..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_ou.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_root.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_root.p12
deleted file mode 100644
index 0a7cd38..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca1_root.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafa.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafa.p12
deleted file mode 100644
index 8e7e21b..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafa.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafb.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafb.p12
deleted file mode 100644
index 10c9c32..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_leafb.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_ou.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_ou.p12
deleted file mode 100644
index b64a2c4..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_ou.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_root.p12 b/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_root.p12
deleted file mode 100644
index 28796cb..0000000
--- a/bundles/org.eclipse.osgi.tests/test_files/security/pkcs12/ca2_root.p12
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.util/.classpath b/bundles/org.eclipse.osgi.util/.classpath
deleted file mode 100644
index ad7732c..0000000
--- a/bundles/org.eclipse.osgi.util/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry path="" kind="lib" sourcepath="src.zip"/>
-	<classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/OSGi%Minimum-1.2" kind="con"/>
-	<classpathentry path="org.eclipse.pde.core.requiredPlugins" kind="con"/>
-	<classpathentry path="bin" kind="output"/>
-</classpath>
diff --git a/bundles/org.eclipse.osgi.util/.cvsignore b/bundles/org.eclipse.osgi.util/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.osgi.util/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.osgi.util/.project b/bundles/org.eclipse.osgi.util/.project
deleted file mode 100644
index 778609c..0000000
--- a/bundles/org.eclipse.osgi.util/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.osgi.util</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.osgi.util/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.osgi.util/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 72b5ec5..0000000
--- a/bundles/org.eclipse.osgi.util/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Tue May 25 15:00:37 EDT 2004
-encoding/<project>=ISO-8859-1
-eclipse.preferences.version=1
diff --git a/bundles/org.eclipse.osgi.util/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.osgi.util/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index f786cfa..0000000
--- a/bundles/org.eclipse.osgi.util/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,76 +0,0 @@
-#Tue Jun 06 11:23:10 CDT 2006
-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.1
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.3
-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=ignore
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
-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.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.osgi.util/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.util/META-INF/MANIFEST.MF
deleted file mode 100644
index e8a692a..0000000
--- a/bundles/org.eclipse.osgi.util/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,22 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %osgiUtil
-Bundle-SymbolicName: org.eclipse.osgi.util
-Bundle-Version: 3.2.100.qualifier
-Bundle-Description: %osgiUtilDes
-Bundle-Vendor: %eclipse.org
-Bundle-Localization: plugin
-Bundle-DocUrl: http://www.eclipse.org
-Bundle-ContactAddress: www.eclipse.org
-Bundle-Copyright: %copyright
-Export-Package: org.osgi.util.measurement; version="1.0.1",
- org.osgi.util.position; version="1.0.1",
- org.osgi.util.xml; version="1.0.1"
-Import-Package: org.osgi.framework; version=1.1,
- javax.xml.parsers; resolution:=optional,
- org.osgi.util.measurement; version="[1.0.1, 1.2)",
- org.osgi.util.position; version="[1.0.1, 1.2)",
- org.osgi.util.xml; version="[1.0.1, 1.2)"
-Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.2,
- CDC-1.1/Foundation-1.1,
- J2SE-1.4
diff --git a/bundles/org.eclipse.osgi.util/about.html b/bundles/org.eclipse.osgi.util/about.html
deleted file mode 100644
index c57db22..0000000
--- a/bundles/org.eclipse.osgi.util/about.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>August 25, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">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
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor&rsquo;s license for 
-terms and conditions of use.</p>
-
-<h4>OSGi Materials</h4>
-
-<p>All files in the following sub-directories (and their sub-directories):</p>
-
-<ul>
-	<li>org/osgi</li>
-</ul>
-
-<p>and the following files (which may not be present in all cases):</p>
-
-<ul>
-	<li>osgi/ee.foundation.jar</li>
-	<li>osgi/ee.minimum.jar</li>	
-</ul>
-
-<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>
-
-<blockquote>
-Copyright (c) 2000, 2006
-<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 Apache License, Version 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE-2.0.txt" target="_blank">LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</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>
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi.util/about_files/LICENSE-2.0.txt b/bundles/org.eclipse.osgi.util/about_files/LICENSE-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/bundles/org.eclipse.osgi.util/about_files/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/bundles/org.eclipse.osgi.util/build.properties b/bundles/org.eclipse.osgi.util/build.properties
deleted file mode 100644
index 2a015f5..0000000
--- a/bundles/org.eclipse.osgi.util/build.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2007 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.properties,\
-               org/,\
-               about.html,\
-               META-INF/,\
-               about_files/
-src.includes = src.zip,\
-               about.html,\
-               about_files/
-source.. = .
-output.. = .
-customBuildCallbacks=customBuildCallbacks.xml
diff --git a/bundles/org.eclipse.osgi.util/customBuildCallbacks.xml b/bundles/org.eclipse.osgi.util/customBuildCallbacks.xml
deleted file mode 100644
index d6250e8..0000000
--- a/bundles/org.eclipse.osgi.util/customBuildCallbacks.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<!-- ===================================================================== -->
-<!-- Custom targets called from a project's generated build.xml            -->
-<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.-->
-<!-- ===================================================================== -->
-<project name="Build specific targets and properties" default="noDefault">
-
-	<!-- ===================================================================== -->
-	<!-- Default target                                                        -->
-	<!-- ===================================================================== -->
-	<target name="noDefault">
-		<echo message="This file must be called with explicit targets" />
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.jars                              -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.jars">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.jars                               -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.jars">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target build.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="pre.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target build.sources                            -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder to contain the build results           -->
-	<!-- ===================================================================== -->
-	<target name="post.build.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the compilation target <name>                      -->
-	<!-- Substitute "name" with the name of the compilation target, eg @dot    -->
-	<!-- Available parameters :                                                -->
-	<!--   source.foldern : n = 1 ... N, the source folders                    -->
-	<!--   target.folder  : where the results of the compilation go            -->
-	<!--   <name>.classpath : name = name of the compilation target. A         -->
-	<!--                      reference to the classpath structure.            -->
-	<!-- ===================================================================== -->
-	<target name="pre.name">
-	</target>
-
-	<target name="pre.@dot">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do during the compilation target <name>, after the compile   -->
-	<!-- but before jaring.  Substitute "name" with the name of the compilation-->
-	<!-- target, eg @dot                                                       -->
-	<!-- Available parameters :                                                -->
-	<!--   source.foldern : n = 1 ... N, the source folders                    -->
-	<!--   target.folder  : where the results of the compilation go            -->
-	<!--   <name>.classpath : name = name of the compilation target. A         -->
-	<!--                      reference to the classpath structure.            -->
-	<!-- ===================================================================== -->
-	<target name="post.compile.name">
-	</target>
-
-	<target name="post.compile.@dot">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the compilation target <name>                       -->
-	<!-- Substitute "name" with the name of the compilation target, eg @dot    -->
-	<!-- Available parameters :                                                -->
-	<!--   jar.location - the location of the compilation results              -->
-	<!--   <name>.classpath : name = name of the compilation target. A         -->
-	<!--                      reference to the classpath structure.            -->
-	<!-- ===================================================================== -->
-	<target name="post.name">
-	</target>
-
-	<target name="post.@dot">
-	</target>
-	
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.bin.parts">
-	</target>
-		
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.bin.parts                         -->
-	<!-- Available parameters :                                                -->
-	<!--   build.result.folder - folder containing the build results           -->
-	<!--   target.folder - destination folder                                  -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.bin.parts">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.sources                          -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.sources">
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.sources                           -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.sources">
-		<unzip src="${target.folder}/src.zip" dest="${target.folder}" overwrite="false"/>
-		<delete file="${destination.temp.folder}/src.zip" />	
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target gather.logs                             -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.gather.logs">        
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target gather.logs                              -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="post.gather.logs">       
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do before the target clean                                   -->
-	<!-- Available parameters :                                                -->
-	<!--   destination.temp.folder - destination folder                        -->
-	<!-- ===================================================================== -->
-	<target name="pre.clean">
-		<move file="src.zip" tofile="util_src.zip"/>
-	</target>
-
-	<!-- ===================================================================== -->
-	<!-- Steps to do after the target clean                                    -->
-	<!-- Available parameters :                                                -->
-	<!--   plugin.destination - final destination of the build                 -->
-	<!--   build.result.folder - results of the compilation                    -->
-	<!--   temp.folder - temporary folder                                      -->
-	<!-- ===================================================================== -->
-	<target name="post.clean">
-		<move file="util_src.zip" tofile="src.zip"/>
-	</target>
-</project>
diff --git a/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Measurement.class b/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Measurement.class
deleted file mode 100644
index 87566ff..0000000
--- a/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Measurement.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/State.class b/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/State.class
deleted file mode 100644
index 38e90d6..0000000
--- a/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/State.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Unit.class b/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Unit.class
deleted file mode 100644
index 83487e2..0000000
--- a/bundles/org.eclipse.osgi.util/org/osgi/util/measurement/Unit.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.util/org/osgi/util/position/Position.class b/bundles/org.eclipse.osgi.util/org/osgi/util/position/Position.class
deleted file mode 100644
index 1475b2c..0000000
--- a/bundles/org.eclipse.osgi.util/org/osgi/util/position/Position.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.util/org/osgi/util/xml/XMLParserActivator.class b/bundles/org.eclipse.osgi.util/org/osgi/util/xml/XMLParserActivator.class
deleted file mode 100644
index e215e38..0000000
--- a/bundles/org.eclipse.osgi.util/org/osgi/util/xml/XMLParserActivator.class
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi.util/plugin.properties b/bundles/org.eclipse.osgi.util/plugin.properties
deleted file mode 100644
index 7aa8609..0000000
--- a/bundles/org.eclipse.osgi.util/plugin.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-osgiUtil = OSGi Release 4.2.0 Utility Classes
-eclipse.org = Eclipse.org - Equinox
-osgiUtilDes = OSGi Service Platform Release 4.2.0 Utility Classes
-copyright = Copyright (c) 2003, 2005 IBM Corporation and others. All rights reserved. This program and the accompanying materials  are made available under the terms of the Eclipse Public License v1.0 which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
diff --git a/bundles/org.eclipse.osgi.util/src.zip b/bundles/org.eclipse.osgi.util/src.zip
deleted file mode 100644
index 8f64acb..0000000
--- a/bundles/org.eclipse.osgi.util/src.zip
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/.classpath b/bundles/org.eclipse.osgi/.classpath
deleted file mode 100644
index 0629761..0000000
--- a/bundles/org.eclipse.osgi/.classpath
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="lib" path="osgi/exceptions.jar"/>
-	<classpathentry kind="lib" path="osgi/xmlParserAPIs.jar"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/OSGi%Minimum-1.2"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="src" path="osgi/src"/>
-	<classpathentry kind="src" path="supplement/src"/>
-	<classpathentry kind="src" path="core/adaptor"/>
-	<classpathentry kind="src" path="core/framework"/>
-	<classpathentry kind="src" path="core/composite"/>
-	<classpathentry kind="src" path="resolver/src"/>
-	<classpathentry kind="src" path="defaultAdaptor/src"/>
-	<classpathentry kind="src" path="eclipseAdaptor/src"/>
-	<classpathentry kind="src" path="security/src"/>
-	<classpathentry kind="src" path="console/src"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.osgi/.cvsignore b/bundles/org.eclipse.osgi/.cvsignore
deleted file mode 100644
index cb7ca00..0000000
--- a/bundles/org.eclipse.osgi/.cvsignore
+++ /dev/null
@@ -1,8 +0,0 @@
-bin
-temp.folder
-build.xml
-console.jar
-core.jar
-defaultAdaptor.jar
-eclipseAdaptor.jar
-resolver.jar
diff --git a/bundles/org.eclipse.osgi/.options b/bundles/org.eclipse.osgi/.options
deleted file mode 100644
index 4fb0632..0000000
--- a/bundles/org.eclipse.osgi/.options
+++ /dev/null
@@ -1,100 +0,0 @@
-#### Debugging options for org.eclipse.osgi
-
-# Turn on general debugging for org.eclipse.osgi
-org.eclipse.osgi/debug=false
-# Prints out class loading debug information
-org.eclipse.osgi/debug/loader=false
-# Prints out event (FrameworkEvent/BundleEvent/ServiceEvent) and listener debug information
-org.eclipse.osgi/debug/events=false
-# Prints out OSGi service debug information (registration/getting/ungetting etc.)
-org.eclipse.osgi/debug/services=false
-# Prints out bundle manifest parsing debug information
-org.eclipse.osgi/debug/manifest=false
-# Prints out LDAP filter debug information
-org.eclipse.osgi/debug/filter=false
-# Prints out security (PermissionAdmin service) debug information
-org.eclipse.osgi/debug/security=false
-# Prints out start level service debug information
-org.eclipse.osgi/debug/startlevel=false
-# Prints out package admin service debug information
-org.eclipse.osgi/debug/packageadmin=false
-# Prints out timing information for bundle activation
-org.eclipse.osgi/debug/bundleTime=false
-# Debug the loading of message bundles
-org.eclipse.osgi/debug/messageBundles=false
-# Debug the object pool additions
-org.eclipse.osgi/debug/objectPool/adds=false
-# Debug the object pool duplications
-org.eclipse.osgi/debug/objectPool/dups=false
-
-# Eclipse adaptor options
-org.eclipse.osgi/eclipseadaptor/debug = false
-org.eclipse.osgi/eclipseadaptor/debug/location = false
-org.eclipse.osgi/eclipseadaptor/debug/cachedmanifest = false
-org.eclipse.osgi/eclipseadaptor/debug/platformadmin=false
-org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver=false
-org.eclipse.osgi/eclipseadaptor/converter/debug = false
-
-### OSGi resolver options
-# Turns on debugging for the resolver
-org.eclipse.osgi/resolver/debug = false
-# Prints out wiring information after the resolver has completed the resolve process
-org.eclipse.osgi/resolver/wiring = false
-# Prints out Import-Package information
-org.eclipse.osgi/resolver/imports = false
-# Prints out Require-Bundle information
-org.eclipse.osgi/resolver/requires = false
-# Prints out debug information form the "uses" clause
-org.eclipse.osgi/resolver/uses = false
-# Prints out cycle information
-org.eclipse.osgi/resolver/cycles = false
-# Prints out Eclipse-GenericRequire information
-org.eclipse.osgi/resolver/generics = false
-
-#### Profile settings
-org.eclipse.osgi/profile/startup = false
-org.eclipse.osgi/profile/benchmark = false
-org.eclipse.osgi/profile/debug = false
-
-# Override the default implemenation 
-org.eclipse.osgi/profile/impl = org.eclipse.osgi.internal.profile.DefaultProfileLogger
-
-# Append all profile messages to the filename specified
-org.eclipse.osgi/defaultprofile/logfilename = 
-
-# Output all profile log messages synchronously to the jvm console.
-# By default, all log messages are cached until the log buffer is
-# requested.
-org.eclipse.osgi/defaultprofile/logsynchronously = false
-
-# Specify the size of the default profile implementation log buffer.
-org.eclipse.osgi/defaultprofile/buffersize = 256
-
-#### Monitoring settings
-# monitor class loading
-org.eclipse.osgi/monitor/classes=false
-
-# monitor bundle activation
-org.eclipse.osgi/monitor/activation=false
-
-# monitor resource bundle (*.properties) loading
-org.eclipse.osgi/monitor/resources=false
-
-
-#### Trace settings
-# trace class loading - snapshot the execution stack when a class is loaded
-org.eclipse.osgi/trace/classLoading=false
-
-# trace location - file in which execution traces are written
-org.eclipse.osgi/trace/filename=runtime.traces
-
-# trace filters - Java properties file defining which classes should 
-# be traced (if trace/classLoading is true)
-# File format:
-# plugins=<comma separated list of plugins whose classes to trace>
-# packages=<comma separated list of package prefixes of classes to trace>
-# Note that there may be many 'plugins' and 'packages' lines in one file.
-org.eclipse.osgi/trace/filters=trace.properties
-
-# trace bundle activation - snapshot the execution stack when a bundle is activated
-org.eclipse.osgi/trace/activation=false
diff --git a/bundles/org.eclipse.osgi/.project b/bundles/org.eclipse.osgi/.project
deleted file mode 100644
index eb75f22..0000000
--- a/bundles/org.eclipse.osgi/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.osgi</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>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.osgi/.settings/.api_filters b/bundles/org.eclipse.osgi/.settings/.api_filters
deleted file mode 100644
index a6308bc..0000000
--- a/bundles/org.eclipse.osgi/.settings/.api_filters
+++ /dev/null
@@ -1,683 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component id="org.eclipse.osgi" version="2">
-<resource path="osgi/src/org/osgi/framework/Bundle.java" type="org.osgi.framework.Bundle">
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Bundle"/>
-<message_argument value="SIGNERS_TRUSTED"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Bundle"/>
-<message_argument value="SIGNERS_ALL"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.framework.Bundle"/>
-<message_argument value="getVersion()"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.framework.Bundle"/>
-<message_argument value="getSignerCertificates(int)"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="getSignerCertificates(int)"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="SIGNERS_TRUSTED"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="SIGNERS_ALL"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="getVersion()"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/BundleException.java" type="org.osgi.framework.BundleException">
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="DUPLICATE_BUNDLE_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="STATECHANGE_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="NATIVECODE_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="SECURITY_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="UNSUPPORTED_OPERATION"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="INVALID_OPERATION"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="MANIFEST_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="BundleException(String, int)"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="RESOLVE_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="ACTIVATOR_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="START_TRANSIENT_ERROR"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="getType()"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="BundleException(String, int, Throwable)"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="UNSPECIFIED"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/BundleReference.java" type="org.osgi.framework.BundleReference">
-<filter id="1108344834">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="org.osgi.framework.BundleReference"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/Constants.java" type="org.osgi.framework.Constants">
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_LIBRARY_EXTENSIONS"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_SECURITY"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_TRUST_REPOSITORIES"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_EXT"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_SECURITY_OSGI"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_FRAMEWORK"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_STORAGE"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="SERVICE_TYPE"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_APP"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_BEGINNING_STARTLEVEL"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_SYSTEMPACKAGES_EXTRA"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_BOOT"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_STORAGE_CLEAN"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_EXECPERMISSION"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.framework.Constants"/>
-<message_argument value="FRAMEWORK_WINDOWSYSTEM"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_FRAMEWORK"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_STORAGE"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_SECURITY_OSGI"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_SYSTEMPACKAGES_EXTRA"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="SERVICE_TYPE"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_BEGINNING_STARTLEVEL"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_TRUST_REPOSITORIES"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_SECURITY"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_APP"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_EXECPERMISSION"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_LIBRARY_EXTENSIONS"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_STORAGE_CLEAN"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_BOOT"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_WINDOWSYSTEM"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="FRAMEWORK_BUNDLE_PARENT_EXT"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/FrameworkEvent.java" type="org.osgi.framework.FrameworkEvent">
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="WAIT_TIMEDOUT"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="STOPPED"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="STOPPED_BOOTCLASSPATH_MODIFIED"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="STOPPED_UPDATE"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/FrameworkUtil.java" type="org.osgi.framework.FrameworkUtil">
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="matchDistinguishedNameChain(String, List)"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="getBundle(Class)"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/PackagePermission.java" type="org.osgi.framework.PackagePermission">
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="PackagePermission(String, Bundle, String)"/>
-</message_arguments>
-</filter>
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="EXPORTONLY"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/ServiceEvent.java" type="org.osgi.framework.ServiceEvent">
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="MODIFIED_ENDMATCH"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/ServiceException.java" type="org.osgi.framework.ServiceException">
-<filter id="1108344834">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="org.osgi.framework.ServiceException"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/ServicePermission.java" type="org.osgi.framework.ServicePermission">
-<filter id="1141899266">
-<message_arguments>
-<message_argument value="1.5"/>
-<message_argument value="3.5"/>
-<message_argument value="ServicePermission(ServiceReference, String)"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/hooks/service/EventHook.java" type="org.osgi.framework.hooks.service.EventHook">
-<filter id="1110441988">
-<message_arguments>
-<message_argument value="org.osgi.framework.hooks.service.EventHook"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/hooks/service/FindHook.java" type="org.osgi.framework.hooks.service.FindHook">
-<filter id="1110441988">
-<message_arguments>
-<message_argument value="org.osgi.framework.hooks.service.FindHook"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/hooks/service/ListenerHook.java" type="org.osgi.framework.hooks.service.ListenerHook">
-<filter id="1110441988">
-<message_arguments>
-<message_argument value="org.osgi.framework.hooks.service.ListenerHook"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/launch/Framework.java" type="org.osgi.framework.launch.Framework">
-<filter id="1110441988">
-<message_arguments>
-<message_argument value="org.osgi.framework.launch.Framework"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/framework/launch/FrameworkFactory.java" type="org.osgi.framework.launch.FrameworkFactory">
-<filter id="1110441988">
-<message_arguments>
-<message_argument value="org.osgi.framework.launch.FrameworkFactory"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionAdmin.java" type="org.osgi.service.condpermadmin.ConditionalPermissionAdmin">
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionAdmin"/>
-<message_argument value="newConditionalPermissionUpdate()"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionAdmin"/>
-<message_argument value="newConditionalPermissionInfo(String, ConditionInfo[], PermissionInfo[], String)"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionAdmin"/>
-<message_argument value="newConditionalPermissionInfo(String)"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="newConditionalPermissionUpdate()"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="newConditionalPermissionInfo(String, ConditionInfo[], PermissionInfo[], String)"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="newConditionalPermissionInfo(String)"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionInfo.java" type="org.osgi.service.condpermadmin.ConditionalPermissionInfo">
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionInfo"/>
-<message_argument value="DENY"/>
-</message_arguments>
-</filter>
-<filter id="403767336">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionInfo"/>
-<message_argument value="ALLOW"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionInfo"/>
-<message_argument value="toString()"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionInfo"/>
-<message_argument value="getEncoded()"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionInfo"/>
-<message_argument value="equals(Object)"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionInfo"/>
-<message_argument value="hashCode()"/>
-</message_arguments>
-</filter>
-<filter id="403804204">
-<message_arguments>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionInfo"/>
-<message_argument value="getAccessDecision()"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="equals(Object)"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="getAccessDecision()"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="DENY"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="getEncoded()"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="ALLOW"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="hashCode()"/>
-</message_arguments>
-</filter>
-<filter id="1209008130">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="toString()"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionUpdate.java" type="org.osgi.service.condpermadmin.ConditionalPermissionUpdate">
-<filter id="1108344834">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.5"/>
-<message_argument value="org.osgi.service.condpermadmin.ConditionalPermissionUpdate"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/util/tracker/BundleTracker.java" type="org.osgi.util.tracker.BundleTracker">
-<filter id="1108344834">
-<message_arguments>
-<message_argument value="1.4"/>
-<message_argument value="3.5"/>
-<message_argument value="org.osgi.util.tracker.BundleTracker"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="osgi/src/org/osgi/util/tracker/BundleTrackerCustomizer.java" type="org.osgi.util.tracker.BundleTrackerCustomizer">
-<filter id="1108344834">
-<message_arguments>
-<message_argument value="1.4"/>
-<message_argument value="3.5"/>
-<message_argument value="org.osgi.util.tracker.BundleTrackerCustomizer"/>
-</message_arguments>
-</filter>
-</resource>
-<resource path="supplement/src/org/eclipse/osgi/service/localization/LocaleProvider.java" type="org.eclipse.osgi.service.localization.LocaleProvider">
-<filter id="1108344834">
-<message_arguments>
-<message_argument value="1.1"/>
-<message_argument value="3.6"/>
-<message_argument value="org.eclipse.osgi.service.localization.LocaleProvider"/>
-</message_arguments>
-</filter>
-</resource>
-</component>
diff --git a/bundles/org.eclipse.osgi/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.osgi/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 5991b6b..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,6 +0,0 @@
-#Thu Aug 06 15:31:01 CDT 2009
-eclipse.preferences.version=1
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases=UTF-8
-encoding//osgi/src=UTF-8
-encoding/<project>=ISO-8859-1
diff --git a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index 5a56c43..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,354 +0,0 @@
-#Mon May 03 08:45:46 CDT 2010
-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.recreateModifiedClassFileInOutputFolder=ignore
-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.comparingIdentical=warning
-org.eclipse.jdt.core.compiler.problem.deadCode=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-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=error
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
-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.missingHashCodeMethod=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.missingJavadocTagDescription=return_tag
-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.missingOverrideAnnotationForInterfaceMethodImplementation=enabled
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
-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.nullReference=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore
-org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
-org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore
-org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled
-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=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-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.unusedObjectAllocation=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
-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.unusedWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.launching.prefs b/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.launching.prefs
deleted file mode 100644
index 7754db2..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.launching.prefs
+++ /dev/null
@@ -1,3 +0,0 @@
-#Mon May 03 08:45:46 CDT 2010
-eclipse.preferences.version=1
-org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=warning
diff --git a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 023a27a..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,57 +0,0 @@
-#Tue Aug 21 11:19:11 CDT 2007
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/bundles/org.eclipse.osgi/.settings/org.eclipse.pde.api.tools.prefs b/bundles/org.eclipse.osgi/.settings/org.eclipse.pde.api.tools.prefs
deleted file mode 100644
index 7ae2079..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.pde.api.tools.prefs
+++ /dev/null
@@ -1,91 +0,0 @@
-#Wed Mar 11 14:32:26 CDT 2009
-ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error
-ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error
-ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error
-API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error
-CLASS_ELEMENT_TYPE_ADDED_METHOD=Error
-CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error
-CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error
-CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error
-CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error
-ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error
-ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error
-ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-FIELD_ELEMENT_TYPE_ADDED_VALUE=Error
-FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error
-FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error
-FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error
-FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error
-ILLEGAL_EXTEND=Warning
-ILLEGAL_IMPLEMENT=Warning
-ILLEGAL_INSTANTIATE=Warning
-ILLEGAL_OVERRIDE=Warning
-ILLEGAL_REFERENCE=Warning
-INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error
-INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error
-INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error
-INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-INVALID_JAVADOC_TAG=Ignore
-INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Ignore
-LEAK_EXTEND=Warning
-LEAK_FIELD_DECL=Warning
-LEAK_IMPLEMENT=Warning
-LEAK_METHOD_PARAM=Warning
-LEAK_METHOD_RETURN_TYPE=Warning
-METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error
-METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error
-METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error
-METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error
-METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error
-METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error
-METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error
-TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error
-UNUSED_PROBLEM_FILTERS=Warning
-eclipse.preferences.version=1
-incompatible_api_component_version=Error
-incompatible_api_component_version_include_major_without_breaking_change=Disabled
-incompatible_api_component_version_include_minor_without_api_change=Disabled
-invalid_since_tag_version=Error
-malformed_since_tag=Error
-missing_since_tag=Error
-report_api_breakage_when_major_version_incremented=Disabled
-report_resolution_errors_api_component=Warning
diff --git a/bundles/org.eclipse.osgi/CDC-1.0_Foundation-1.0.profile b/bundles/org.eclipse.osgi/CDC-1.0_Foundation-1.0.profile
deleted file mode 100644
index dde120a..0000000
--- a/bundles/org.eclipse.osgi/CDC-1.0_Foundation-1.0.profile
+++ /dev/null
@@ -1,24 +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
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.microedition.io
-org.osgi.framework.bootdelegation = \
- javax.microedition.io
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- CDC-1.0/Foundation-1.0
-osgi.java.profile.name = CDC-1.0/Foundation-1.0
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
diff --git a/bundles/org.eclipse.osgi/CDC-1.1_Foundation-1.1.profile b/bundles/org.eclipse.osgi/CDC-1.1_Foundation-1.1.profile
deleted file mode 100644
index 67b20c7..0000000
--- a/bundles/org.eclipse.osgi/CDC-1.1_Foundation-1.1.profile
+++ /dev/null
@@ -1,30 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.microedition.io,\
- javax.microedition.pki,\
- javax.security.auth.x500
-org.osgi.framework.bootdelegation = \
- javax.microedition.io,\
- javax.microedition.pki,\
- javax.security.auth.x500
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- OSGi/Minimum-1.2,\
- CDC-1.0/Foundation-1.0,\
- CDC-1.1/Foundation-1.1
-osgi.java.profile.name = CDC-1.1/Foundation-1.1
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
diff --git a/bundles/org.eclipse.osgi/J2SE-1.2.profile b/bundles/org.eclipse.osgi/J2SE-1.2.profile
deleted file mode 100644
index aba27c4..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.2.profile
+++ /dev/null
@@ -1,47 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.accessibility,\
- javax.swing,\
- javax.swing.border,\
- javax.swing.colorchooser,\
- javax.swing.event,\
- javax.swing.filechooser,\
- javax.swing.plaf,\
- javax.swing.plaf.basic,\
- javax.swing.plaf.metal,\
- javax.swing.plaf.multi,\
- javax.swing.table,\
- javax.swing.text,\
- javax.swing.text.html,\
- javax.swing.text.html.parser,\
- javax.swing.text.rtf,\
- javax.swing.tree,\
- javax.swing.undo,\
- org.omg.CORBA,\
- org.omg.CORBA.DynAnyPackage,\
- org.omg.CORBA.ORBPackage,\
- org.omg.CORBA.portable,\
- org.omg.CORBA.TypeCodePackage,\
- org.omg.CosNaming,\
- org.omg.CosNaming.NamingContextPackage
-org.osgi.framework.bootdelegation = \
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- JRE-1.1,\
- J2SE-1.2
-osgi.java.profile.name = J2SE-1.2
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
diff --git a/bundles/org.eclipse.osgi/J2SE-1.3.profile b/bundles/org.eclipse.osgi/J2SE-1.3.profile
deleted file mode 100644
index da3538e..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.3.profile
+++ /dev/null
@@ -1,68 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.accessibility,\
- javax.naming,\
- javax.naming.directory,\
- javax.naming.event,\
- javax.naming.ldap,\
- javax.naming.spi,\
- javax.rmi,\
- javax.rmi.CORBA,\
- javax.sound.midi,\
- javax.sound.midi.spi,\
- javax.sound.sampled,\
- javax.sound.sampled.spi,\
- javax.swing,\
- javax.swing.border,\
- javax.swing.colorchooser,\
- javax.swing.event,\
- javax.swing.filechooser,\
- javax.swing.plaf,\
- javax.swing.plaf.basic,\
- javax.swing.plaf.metal,\
- javax.swing.plaf.multi,\
- javax.swing.table,\
- javax.swing.text,\
- javax.swing.text.html,\
- javax.swing.text.html.parser,\
- javax.swing.text.rtf,\
- javax.swing.tree,\
- javax.swing.undo,\
- javax.transaction,\
- org.omg.CORBA,\
- org.omg.CORBA_2_3,\
- org.omg.CORBA_2_3.portable,\
- org.omg.CORBA.DynAnyPackage,\
- org.omg.CORBA.ORBPackage,\
- org.omg.CORBA.portable,\
- org.omg.CORBA.TypeCodePackage,\
- org.omg.CosNaming,\
- org.omg.CosNaming.NamingContextPackage,\
- org.omg.SendingContext,\
- org.omg.stub.java.rmi
-org.osgi.framework.bootdelegation = \
- javax.*,\
- org.omg.*,\
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- JRE-1.1,\
- J2SE-1.2,\
- J2SE-1.3
-osgi.java.profile.name = J2SE-1.3
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
diff --git a/bundles/org.eclipse.osgi/J2SE-1.4.profile b/bundles/org.eclipse.osgi/J2SE-1.4.profile
deleted file mode 100644
index abaa0c3..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.4.profile
+++ /dev/null
@@ -1,129 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.accessibility,\
- javax.crypto,\
- javax.crypto.interfaces,\
- javax.crypto.spec,\
- javax.imageio,\
- javax.imageio.event,\
- javax.imageio.metadata,\
- javax.imageio.plugins.jpeg,\
- javax.imageio.spi,\
- javax.imageio.stream,\
- javax.naming,\
- javax.naming.directory,\
- javax.naming.event,\
- javax.naming.ldap,\
- javax.naming.spi,\
- javax.net,\
- javax.net.ssl,\
- javax.print,\
- javax.print.attribute,\
- javax.print.attribute.standard,\
- javax.print.event,\
- javax.rmi,\
- javax.rmi.CORBA,\
- javax.security.auth,\
- javax.security.auth.callback,\
- javax.security.auth.kerberos,\
- javax.security.auth.login,\
- javax.security.auth.spi,\
- javax.security.auth.x500,\
- javax.security.cert,\
- javax.sound.midi,\
- javax.sound.midi.spi,\
- javax.sound.sampled,\
- javax.sound.sampled.spi,\
- javax.sql,\
- javax.swing,\
- javax.swing.border,\
- javax.swing.colorchooser,\
- javax.swing.event,\
- javax.swing.filechooser,\
- javax.swing.plaf,\
- javax.swing.plaf.basic,\
- javax.swing.plaf.metal,\
- javax.swing.plaf.multi,\
- javax.swing.table,\
- javax.swing.text,\
- javax.swing.text.html,\
- javax.swing.text.html.parser,\
- javax.swing.text.rtf,\
- javax.swing.tree,\
- javax.swing.undo,\
- javax.transaction,\
- javax.transaction.xa,\
- javax.xml.parsers,\
- javax.xml.transform,\
- javax.xml.transform.dom,\
- javax.xml.transform.sax,\
- javax.xml.transform.stream,\
- org.ietf.jgss,\
- org.omg.CORBA,\
- org.omg.CORBA_2_3,\
- org.omg.CORBA_2_3.portable,\
- org.omg.CORBA.DynAnyPackage,\
- org.omg.CORBA.ORBPackage,\
- org.omg.CORBA.portable,\
- org.omg.CORBA.TypeCodePackage,\
- org.omg.CosNaming,\
- org.omg.CosNaming.NamingContextExtPackage,\
- org.omg.CosNaming.NamingContextPackage,\
- org.omg.Dynamic,\
- org.omg.DynamicAny,\
- org.omg.DynamicAny.DynAnyFactoryPackage,\
- org.omg.DynamicAny.DynAnyPackage,\
- org.omg.IOP,\
- org.omg.IOP.CodecFactoryPackage,\
- org.omg.IOP.CodecPackage,\
- org.omg.Messaging,\
- org.omg.PortableInterceptor,\
- org.omg.PortableInterceptor.ORBInitInfoPackage,\
- org.omg.PortableServer,\
- org.omg.PortableServer.CurrentPackage,\
- org.omg.PortableServer.POAManagerPackage,\
- org.omg.PortableServer.POAPackage,\
- org.omg.PortableServer.portable,\
- org.omg.PortableServer.ServantLocatorPackage,\
- org.omg.SendingContext,\
- org.omg.stub.java.rmi,\
- org.w3c.dom,\
- org.w3c.dom.css,\
- org.w3c.dom.events,\
- org.w3c.dom.html,\
- org.w3c.dom.stylesheets,\
- org.w3c.dom.views ,\
- org.xml.sax,\
- org.xml.sax.ext,\
- org.xml.sax.helpers
-org.osgi.framework.bootdelegation = \
- javax.*,\
- org.ietf.jgss,\
- org.omg.*,\
- org.w3c.*,\
- org.xml.*,\
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- OSGi/Minimum-1.2,\
- JRE-1.1,\
- J2SE-1.2,\
- J2SE-1.3,\
- J2SE-1.4
-osgi.java.profile.name = J2SE-1.4
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
diff --git a/bundles/org.eclipse.osgi/J2SE-1.5.profile b/bundles/org.eclipse.osgi/J2SE-1.5.profile
deleted file mode 100644
index e56a929..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.5.profile
+++ /dev/null
@@ -1,157 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.accessibility,\
- javax.activity,\
- javax.crypto,\
- javax.crypto.interfaces,\
- javax.crypto.spec,\
- javax.imageio,\
- javax.imageio.event,\
- javax.imageio.metadata,\
- javax.imageio.plugins.bmp,\
- javax.imageio.plugins.jpeg,\
- javax.imageio.spi,\
- javax.imageio.stream,\
- javax.management,\
- javax.management.loading,\
- javax.management.modelmbean,\
- javax.management.monitor,\
- javax.management.openmbean,\
- javax.management.relation,\
- javax.management.remote,\
- javax.management.remote.rmi,\
- javax.management.timer,\
- javax.naming,\
- javax.naming.directory,\
- javax.naming.event,\
- javax.naming.ldap,\
- javax.naming.spi,\
- javax.net,\
- javax.net.ssl,\
- javax.print,\
- javax.print.attribute,\
- javax.print.attribute.standard,\
- javax.print.event,\
- javax.rmi,\
- javax.rmi.CORBA,\
- javax.rmi.ssl,\
- javax.security.auth,\
- javax.security.auth.callback,\
- javax.security.auth.kerberos,\
- javax.security.auth.login,\
- javax.security.auth.spi,\
- javax.security.auth.x500,\
- javax.security.cert,\
- javax.security.sasl,\
- javax.sound.midi,\
- javax.sound.midi.spi,\
- javax.sound.sampled,\
- javax.sound.sampled.spi,\
- javax.sql,\
- javax.sql.rowset,\
- javax.sql.rowset.serial,\
- javax.sql.rowset.spi,\
- javax.swing,\
- javax.swing.border,\
- javax.swing.colorchooser,\
- javax.swing.event,\
- javax.swing.filechooser,\
- javax.swing.plaf,\
- javax.swing.plaf.basic,\
- javax.swing.plaf.metal,\
- javax.swing.plaf.multi,\
- javax.swing.plaf.synth,\
- javax.swing.table,\
- javax.swing.text,\
- javax.swing.text.html,\
- javax.swing.text.html.parser,\
- javax.swing.text.rtf,\
- javax.swing.tree,\
- javax.swing.undo,\
- javax.transaction,\
- javax.transaction.xa,\
- javax.xml,\
- javax.xml.datatype,\
- javax.xml.namespace,\
- javax.xml.parsers,\
- javax.xml.transform,\
- javax.xml.transform.dom,\
- javax.xml.transform.sax,\
- javax.xml.transform.stream,\
- javax.xml.validation,\
- javax.xml.xpath,\
- org.ietf.jgss,\
- org.omg.CORBA,\
- org.omg.CORBA_2_3,\
- org.omg.CORBA_2_3.portable,\
- org.omg.CORBA.DynAnyPackage,\
- org.omg.CORBA.ORBPackage,\
- org.omg.CORBA.portable,\
- org.omg.CORBA.TypeCodePackage,\
- org.omg.CosNaming,\
- org.omg.CosNaming.NamingContextExtPackage,\
- org.omg.CosNaming.NamingContextPackage,\
- org.omg.Dynamic,\
- org.omg.DynamicAny,\
- org.omg.DynamicAny.DynAnyFactoryPackage,\
- org.omg.DynamicAny.DynAnyPackage,\
- org.omg.IOP,\
- org.omg.IOP.CodecFactoryPackage,\
- org.omg.IOP.CodecPackage,\
- org.omg.Messaging,\
- org.omg.PortableInterceptor,\
- org.omg.PortableInterceptor.ORBInitInfoPackage,\
- org.omg.PortableServer,\
- org.omg.PortableServer.CurrentPackage,\
- org.omg.PortableServer.POAManagerPackage,\
- org.omg.PortableServer.POAPackage,\
- org.omg.PortableServer.portable,\
- org.omg.PortableServer.ServantLocatorPackage,\
- org.omg.SendingContext,\
- org.omg.stub.java.rmi,\
- org.w3c.dom,\
- org.w3c.dom.bootstrap,\
- org.w3c.dom.css,\
- org.w3c.dom.events,\
- org.w3c.dom.html,\
- org.w3c.dom.ls,\
- org.w3c.dom.ranges,\
- org.w3c.dom.stylesheets,\
- org.w3c.dom.traversal,\
- org.w3c.dom.views ,\
- org.xml.sax,\
- org.xml.sax.ext,\
- org.xml.sax.helpers
-org.osgi.framework.bootdelegation = \
- javax.*,\
- org.ietf.jgss,\
- org.omg.*,\
- org.w3c.*,\
- org.xml.*,\
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- OSGi/Minimum-1.2,\
- JRE-1.1,\
- J2SE-1.2,\
- J2SE-1.3,\
- J2SE-1.4,\
- J2SE-1.5
-osgi.java.profile.name = J2SE-1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
diff --git a/bundles/org.eclipse.osgi/JRE-1.1.profile b/bundles/org.eclipse.osgi/JRE-1.1.profile
deleted file mode 100644
index e739166..0000000
--- a/bundles/org.eclipse.osgi/JRE-1.1.profile
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = 
-org.osgi.framework.bootdelegation = \
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- JRE-1.1
-osgi.java.profile.name = JRE-1.1
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
diff --git a/bundles/org.eclipse.osgi/JavaSE-1.6.profile b/bundles/org.eclipse.osgi/JavaSE-1.6.profile
deleted file mode 100644
index 68e811f..0000000
--- a/bundles/org.eclipse.osgi/JavaSE-1.6.profile
+++ /dev/null
@@ -1,194 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.accessibility,\
- javax.activation,\
- javax.activity,\
- javax.annotation,\
- javax.annotation.processing,\
- javax.crypto,\
- javax.crypto.interfaces,\
- javax.crypto.spec,\
- javax.imageio,\
- javax.imageio.event,\
- javax.imageio.metadata,\
- javax.imageio.plugins.bmp,\
- javax.imageio.plugins.jpeg,\
- javax.imageio.spi,\
- javax.imageio.stream,\
- javax.jws,\
- javax.jws.soap,\
- javax.lang.model,\
- javax.lang.model.element,\
- javax.lang.model.type,\
- javax.lang.model.util,\
- javax.management,\
- javax.management.loading,\
- javax.management.modelmbean,\
- javax.management.monitor,\
- javax.management.openmbean,\
- javax.management.relation,\
- javax.management.remote,\
- javax.management.remote.rmi,\
- javax.management.timer,\
- javax.naming,\
- javax.naming.directory,\
- javax.naming.event,\
- javax.naming.ldap,\
- javax.naming.spi,\
- javax.net,\
- javax.net.ssl,\
- javax.print,\
- javax.print.attribute,\
- javax.print.attribute.standard,\
- javax.print.event,\
- javax.rmi,\
- javax.rmi.CORBA,\
- javax.rmi.ssl,\
- javax.script,\
- javax.security.auth,\
- javax.security.auth.callback,\
- javax.security.auth.kerberos,\
- javax.security.auth.login,\
- javax.security.auth.spi,\
- javax.security.auth.x500,\
- javax.security.cert,\
- javax.security.sasl,\
- javax.sound.midi,\
- javax.sound.midi.spi,\
- javax.sound.sampled,\
- javax.sound.sampled.spi,\
- javax.sql,\
- javax.sql.rowset,\
- javax.sql.rowset.serial,\
- javax.sql.rowset.spi,\
- javax.swing,\
- javax.swing.border,\
- javax.swing.colorchooser,\
- javax.swing.event,\
- javax.swing.filechooser,\
- javax.swing.plaf,\
- javax.swing.plaf.basic,\
- javax.swing.plaf.metal,\
- javax.swing.plaf.multi,\
- javax.swing.plaf.synth,\
- javax.swing.table,\
- javax.swing.text,\
- javax.swing.text.html,\
- javax.swing.text.html.parser,\
- javax.swing.text.rtf,\
- javax.swing.tree,\
- javax.swing.undo,\
- javax.tools,\
- javax.transaction,\
- javax.transaction.xa,\
- javax.xml,\
- javax.xml.bind,\
- javax.xml.bind.annotation,\
- javax.xml.bind.annotation.adapters,\
- javax.xml.bind.attachment,\
- javax.xml.bind.helpers,\
- javax.xml.bind.util,\
- javax.xml.crypto,\
- javax.xml.crypto.dom,\
- javax.xml.crypto.dsig,\
- javax.xml.crypto.dsig.dom,\
- javax.xml.crypto.dsig.keyinfo,\
- javax.xml.crypto.dsig.spec,\
- javax.xml.datatype,\
- javax.xml.namespace,\
- javax.xml.parsers,\
- javax.xml.soap,\
- javax.xml.stream,\
- javax.xml.stream.events,\
- javax.xml.stream.util,\
- javax.xml.transform,\
- javax.xml.transform.dom,\
- javax.xml.transform.sax,\
- javax.xml.transform.stax,\
- javax.xml.transform.stream,\
- javax.xml.validation,\
- javax.xml.ws,\
- javax.xml.ws.handler,\
- javax.xml.ws.handler.soap,\
- javax.xml.ws.http,\
- javax.xml.ws.soap,\
- javax.xml.ws.spi,\
- javax.xml.ws.wsaddressing,\
- javax.xml.xpath,\
- org.ietf.jgss,\
- org.omg.CORBA,\
- org.omg.CORBA_2_3,\
- org.omg.CORBA_2_3.portable,\
- org.omg.CORBA.DynAnyPackage,\
- org.omg.CORBA.ORBPackage,\
- org.omg.CORBA.portable,\
- org.omg.CORBA.TypeCodePackage,\
- org.omg.CosNaming,\
- org.omg.CosNaming.NamingContextExtPackage,\
- org.omg.CosNaming.NamingContextPackage,\
- org.omg.Dynamic,\
- org.omg.DynamicAny,\
- org.omg.DynamicAny.DynAnyFactoryPackage,\
- org.omg.DynamicAny.DynAnyPackage,\
- org.omg.IOP,\
- org.omg.IOP.CodecFactoryPackage,\
- org.omg.IOP.CodecPackage,\
- org.omg.Messaging,\
- org.omg.PortableInterceptor,\
- org.omg.PortableInterceptor.ORBInitInfoPackage,\
- org.omg.PortableServer,\
- org.omg.PortableServer.CurrentPackage,\
- org.omg.PortableServer.POAManagerPackage,\
- org.omg.PortableServer.POAPackage,\
- org.omg.PortableServer.portable,\
- org.omg.PortableServer.ServantLocatorPackage,\
- org.omg.SendingContext,\
- org.omg.stub.java.rmi,\
- org.w3c.dom,\
- org.w3c.dom.bootstrap,\
- org.w3c.dom.css,\
- org.w3c.dom.events,\
- org.w3c.dom.html,\
- org.w3c.dom.ls,\
- org.w3c.dom.ranges,\
- org.w3c.dom.stylesheets,\
- org.w3c.dom.traversal,\
- org.w3c.dom.views,\
- org.w3c.dom.xpath,\
- org.xml.sax,\
- org.xml.sax.ext,\
- org.xml.sax.helpers
-org.osgi.framework.bootdelegation = \
- javax.*,\
- org.ietf.jgss,\
- org.omg.*,\
- org.w3c.*,\
- org.xml.*,\
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- OSGi/Minimum-1.2,\
- JRE-1.1,\
- J2SE-1.2,\
- J2SE-1.3,\
- J2SE-1.4,\
- J2SE-1.5,\
- JavaSE-1.6
-osgi.java.profile.name = JavaSE-1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.source=1.6
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
diff --git a/bundles/org.eclipse.osgi/JavaSE-1.7.profile b/bundles/org.eclipse.osgi/JavaSE-1.7.profile
deleted file mode 100644
index 192b46e..0000000
--- a/bundles/org.eclipse.osgi/JavaSE-1.7.profile
+++ /dev/null
@@ -1,198 +0,0 @@
-###############################################################################
-# Copyright (c) 2009, 2010 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.accessibility,\
- javax.activation,\
- javax.activity,\
- javax.annotation,\
- javax.annotation.processing,\
- javax.crypto,\
- javax.crypto.interfaces,\
- javax.crypto.spec,\
- javax.imageio,\
- javax.imageio.event,\
- javax.imageio.metadata,\
- javax.imageio.plugins.bmp,\
- javax.imageio.plugins.jpeg,\
- javax.imageio.spi,\
- javax.imageio.stream,\
- javax.jws,\
- javax.jws.soap,\
- javax.lang.model,\
- javax.lang.model.element,\
- javax.lang.model.type,\
- javax.lang.model.util,\
- javax.management,\
- javax.management.event,\
- javax.management.loading,\
- javax.management.modelmbean,\
- javax.management.monitor,\
- javax.management.namespace,\
- javax.management.openmbean,\
- javax.management.relation,\
- javax.management.remote,\
- javax.management.remote.rmi,\
- javax.management.timer,\
- javax.naming,\
- javax.naming.directory,\
- javax.naming.event,\
- javax.naming.ldap,\
- javax.naming.spi,\
- javax.net,\
- javax.net.ssl,\
- javax.print,\
- javax.print.attribute,\
- javax.print.attribute.standard,\
- javax.print.event,\
- javax.rmi,\
- javax.rmi.CORBA,\
- javax.rmi.ssl,\
- javax.script,\
- javax.security.auth,\
- javax.security.auth.callback,\
- javax.security.auth.kerberos,\
- javax.security.auth.login,\
- javax.security.auth.spi,\
- javax.security.auth.x500,\
- javax.security.cert,\
- javax.security.sasl,\
- javax.sound.midi,\
- javax.sound.midi.spi,\
- javax.sound.sampled,\
- javax.sound.sampled.spi,\
- javax.sql,\
- javax.sql.rowset,\
- javax.sql.rowset.serial,\
- javax.sql.rowset.spi,\
- javax.swing,\
- javax.swing.border,\
- javax.swing.colorchooser,\
- javax.swing.event,\
- javax.swing.filechooser,\
- javax.swing.plaf,\
- javax.swing.plaf.basic,\
- javax.swing.plaf.metal,\
- javax.swing.plaf.multi,\
- javax.swing.plaf.nimbus,\
- javax.swing.plaf.synth,\
- javax.swing.table,\
- javax.swing.text,\
- javax.swing.text.html,\
- javax.swing.text.html.parser,\
- javax.swing.text.rtf,\
- javax.swing.tree,\
- javax.swing.undo,\
- javax.tools,\
- javax.transaction,\
- javax.transaction.xa,\
- javax.xml,\
- javax.xml.bind,\
- javax.xml.bind.annotation,\
- javax.xml.bind.annotation.adapters,\
- javax.xml.bind.attachment,\
- javax.xml.bind.helpers,\
- javax.xml.bind.util,\
- javax.xml.crypto,\
- javax.xml.crypto.dom,\
- javax.xml.crypto.dsig,\
- javax.xml.crypto.dsig.dom,\
- javax.xml.crypto.dsig.keyinfo,\
- javax.xml.crypto.dsig.spec,\
- javax.xml.datatype,\
- javax.xml.namespace,\
- javax.xml.parsers,\
- javax.xml.soap,\
- javax.xml.stream,\
- javax.xml.stream.events,\
- javax.xml.stream.util,\
- javax.xml.transform,\
- javax.xml.transform.dom,\
- javax.xml.transform.sax,\
- javax.xml.transform.stax,\
- javax.xml.transform.stream,\
- javax.xml.validation,\
- javax.xml.ws,\
- javax.xml.ws.handler,\
- javax.xml.ws.handler.soap,\
- javax.xml.ws.http,\
- javax.xml.ws.soap,\
- javax.xml.ws.spi,\
- javax.xml.ws.wsaddressing,\
- javax.xml.xpath,\
- org.ietf.jgss,\
- org.omg.CORBA,\
- org.omg.CORBA_2_3,\
- org.omg.CORBA_2_3.portable,\
- org.omg.CORBA.DynAnyPackage,\
- org.omg.CORBA.ORBPackage,\
- org.omg.CORBA.portable,\
- org.omg.CORBA.TypeCodePackage,\
- org.omg.CosNaming,\
- org.omg.CosNaming.NamingContextExtPackage,\
- org.omg.CosNaming.NamingContextPackage,\
- org.omg.Dynamic,\
- org.omg.DynamicAny,\
- org.omg.DynamicAny.DynAnyFactoryPackage,\
- org.omg.DynamicAny.DynAnyPackage,\
- org.omg.IOP,\
- org.omg.IOP.CodecFactoryPackage,\
- org.omg.IOP.CodecPackage,\
- org.omg.Messaging,\
- org.omg.PortableInterceptor,\
- org.omg.PortableInterceptor.ORBInitInfoPackage,\
- org.omg.PortableServer,\
- org.omg.PortableServer.CurrentPackage,\
- org.omg.PortableServer.POAManagerPackage,\
- org.omg.PortableServer.POAPackage,\
- org.omg.PortableServer.portable,\
- org.omg.PortableServer.ServantLocatorPackage,\
- org.omg.SendingContext,\
- org.omg.stub.java.rmi,\
- org.w3c.dom,\
- org.w3c.dom.bootstrap,\
- org.w3c.dom.css,\
- org.w3c.dom.events,\
- org.w3c.dom.html,\
- org.w3c.dom.ls,\
- org.w3c.dom.ranges,\
- org.w3c.dom.stylesheets,\
- org.w3c.dom.traversal,\
- org.w3c.dom.views,\
- org.w3c.dom.xpath,\
- org.xml.sax,\
- org.xml.sax.ext,\
- org.xml.sax.helpers
-org.osgi.framework.bootdelegation = \
- javax.*,\
- org.ietf.jgss,\
- org.omg.*,\
- org.w3c.*,\
- org.xml.*,\
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- OSGi/Minimum-1.2,\
- JRE-1.1,\
- J2SE-1.2,\
- J2SE-1.3,\
- J2SE-1.4,\
- J2SE-1.5,\
- JavaSE-1.6,\
- JavaSE-1.7
-osgi.java.profile.name = JavaSE-1.7
-org.eclipse.jdt.core.compiler.compliance=1.6
-org.eclipse.jdt.core.compiler.source=1.6
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
diff --git a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
deleted file mode 100644
index 68e239d..0000000
--- a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,79 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Export-Package: org.eclipse.osgi.event;version="1.0",
- org.eclipse.osgi.framework.console;version="1.1",
- org.eclipse.osgi.framework.eventmgr;version="1.2",
- org.eclipse.osgi.framework.log;version="1.0",
- org.eclipse.osgi.launch; version="1.0",
- org.eclipse.osgi.service.datalocation;version="1.3",
- org.eclipse.osgi.service.debug;version="1.2",
- org.eclipse.osgi.service.environment;version="1.3",
- org.eclipse.osgi.service.localization;version="1.1",
- org.eclipse.osgi.service.pluginconversion;version="1.0",
- org.eclipse.osgi.service.resolver;version="1.4",
- org.eclipse.osgi.service.runnable;version="1.1",
- org.eclipse.osgi.service.security; version="1.0",
- org.eclipse.osgi.service.urlconversion;version="1.0",
- org.eclipse.osgi.signedcontent; version="1.0",
- org.eclipse.osgi.storagemanager;version="1.0",
- org.eclipse.osgi.util;version="1.1",
- org.osgi.framework;version="1.5",
- org.osgi.framework.launch; version="1.0",
- org.osgi.framework.hooks.service; version="1.0",
- org.osgi.service.condpermadmin;version="1.1",
- org.osgi.service.framework; version="1.0"; x-internal:=true,
- org.osgi.service.packageadmin;version="1.2",
- org.osgi.service.permissionadmin;version="1.2",
- org.osgi.service.startlevel;version="1.1",
- org.osgi.service.url;version="1.0",
- org.osgi.util.tracker;version="1.4.0",
- org.osgi.util.tracker;version="1.4.2",
- org.eclipse.core.runtime.adaptor;x-friends:="org.eclipse.core.runtime",
- org.eclipse.core.runtime.internal.adaptor;x-internal:=true,
- org.eclipse.core.runtime.internal.stats;x-friends:="org.eclipse.core.runtime",
- org.eclipse.osgi.baseadaptor;x-internal:=true,
- org.eclipse.osgi.baseadaptor.bundlefile;x-internal:=true,
- org.eclipse.osgi.baseadaptor.hooks;x-internal:=true,
- org.eclipse.osgi.baseadaptor.loader;x-internal:=true,
- org.eclipse.osgi.framework.adaptor;x-internal:=true,
- org.eclipse.osgi.framework.debug;x-internal:=true,
- org.eclipse.osgi.framework.internal.core;x-internal:=true,
- org.eclipse.osgi.framework.internal.protocol;x-internal:=true,
- org.eclipse.osgi.framework.internal.protocol.bundleentry;x-internal:=true,
- org.eclipse.osgi.framework.internal.protocol.bundleresource;x-internal:=true,
- org.eclipse.osgi.framework.internal.protocol.reference;x-internal:=true,
- org.eclipse.osgi.framework.internal.reliablefile;x-internal:=true,
- org.eclipse.osgi.framework.util;x-internal:=true,
- org.eclipse.osgi.internal.baseadaptor;x-internal:=true,
- org.eclipse.osgi.internal.composite; x-internal:=true,
- org.eclipse.osgi.internal.loader;x-internal:=true,
- org.eclipse.osgi.internal.loader.buddy; x-internal:=true,
- org.eclipse.osgi.internal.module;x-internal:=true,
- org.eclipse.osgi.internal.profile;x-internal:=true,
- org.eclipse.osgi.internal.resolver;x-internal:=true,
- org.eclipse.osgi.internal.serviceregistry; x-internal:=true,
- org.eclipse.osgi.internal.permadmin;x-internal:=true,
- org.eclipse.osgi.internal.provisional.service.security; x-friends:="org.eclipse.equinox.security.ui";version="1.0.0",
- org.eclipse.osgi.internal.provisional.verifier;x-friends:="org.eclipse.update.core,org.eclipse.ui.workbench,org.eclipse.equinox.p2.artifact.repository",
- org.eclipse.osgi.internal.service.security;x-friends:="org.eclipse.equinox.security.ui",
- org.eclipse.osgi.internal.signedcontent; x-internal:=true,
- org.eclipse.osgi.service.internal.composite; x-internal:=true
-Export-Service: org.osgi.service.packageadmin.PackageAdmin,
- org.osgi.service.permissionadmin.PermissionAdmin,
- org.osgi.service.startlevel.StartLevel,
- org.eclipse.osgi.service.debug.DebugOptions
-Bundle-Name: %systemBundle
-Bundle-SymbolicName: org.eclipse.osgi; singleton:=true
-Bundle-Activator: org.eclipse.osgi.framework.internal.core.SystemBundleActivator
-Bundle-Description: %systemBundle
-Bundle-Copyright: %copyright
-Bundle-Vendor: %eclipse.org
-Bundle-Version: 3.6.1.qualifier
-Bundle-Localization: systembundle
-Bundle-DocUrl: http://www.eclipse.org
-Eclipse-ExtensibleAPI: true
-Eclipse-SystemBundle: true
-Main-Class: org.eclipse.core.runtime.adaptor.EclipseStarter
-Bundle-RequiredExecutionEnvironment: J2SE-1.5,
- OSGi/Minimum-1.2
-Eclipse-BundleShape: jar
diff --git a/bundles/org.eclipse.osgi/META-INF/services/org.osgi.framework.launch.FrameworkFactory b/bundles/org.eclipse.osgi/META-INF/services/org.osgi.framework.launch.FrameworkFactory
deleted file mode 100644
index 6cd04c1..0000000
--- a/bundles/org.eclipse.osgi/META-INF/services/org.osgi.framework.launch.FrameworkFactory
+++ /dev/null
@@ -1 +0,0 @@
-org.eclipse.osgi.launch.EquinoxFactory
diff --git a/bundles/org.eclipse.osgi/OSGi_Minimum-1.0.profile b/bundles/org.eclipse.osgi/OSGi_Minimum-1.0.profile
deleted file mode 100644
index 773501a..0000000
--- a/bundles/org.eclipse.osgi/OSGi_Minimum-1.0.profile
+++ /dev/null
@@ -1,22 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = 
-org.osgi.framework.bootdelegation = \
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0
-osgi.java.profile.name = OSGi/Minimum-1.0
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.1
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
diff --git a/bundles/org.eclipse.osgi/OSGi_Minimum-1.1.profile b/bundles/org.eclipse.osgi/OSGi_Minimum-1.1.profile
deleted file mode 100644
index 5031392..0000000
--- a/bundles/org.eclipse.osgi/OSGi_Minimum-1.1.profile
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = 
-org.osgi.framework.bootdelegation = \
- sun.*,\
- com.sun.*
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1
-osgi.java.profile.name = OSGi/Minimum-1.1
-org.eclipse.jdt.core.compiler.compliance=1.3
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
diff --git a/bundles/org.eclipse.osgi/OSGi_Minimum-1.2.profile b/bundles/org.eclipse.osgi/OSGi_Minimum-1.2.profile
deleted file mode 100644
index 601b373..0000000
--- a/bundles/org.eclipse.osgi/OSGi_Minimum-1.2.profile
+++ /dev/null
@@ -1,24 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-org.osgi.framework.system.packages = \
- javax.security.auth.x500
-org.osgi.framework.bootdelegation = \
- javax.security.auth.x500
-org.osgi.framework.executionenvironment = \
- OSGi/Minimum-1.0,\
- OSGi/Minimum-1.1,\
- OSGi/Minimum-1.2
-osgi.java.profile.name = OSGi/Minimum-1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
diff --git a/bundles/org.eclipse.osgi/about.html b/bundles/org.eclipse.osgi/about.html
deleted file mode 100644
index 60a8dda..0000000
--- a/bundles/org.eclipse.osgi/about.html
+++ /dev/null
@@ -1,74 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>August 25, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">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
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
-
-<h3>Third Party Content</h3>
-
-<p>The Content includes items that have been sourced from third parties as set out below. If you 
-did not receive this Content directly from the Eclipse Foundation, the following is provided 
-for informational purposes only, and you should look to the Redistributor's license for 
-terms and conditions of use.</p>
-
-<h4>OSGi Materials</h4>
-
-<p>All files in the following sub-directories (and their sub-directories):</p>
-
-<ul>
-	<li>org/osgi</li>
-</ul>
-
-<p>and the following files (which may not be present in all cases):</p>
-
-<ul>
-	<li>osgi/ee.foundation.jar</li>
-	<li>osgi/ee.minimum.jar</li>
-	<li>osgi/osgi.jar</li>
-</ul>
-
-<p>shall be defined as the &quot;OSGi Materials.&quot;  The OSGi Materials are:</p>
-
-<blockquote>
-Copyright (c) 2000, 2006
-<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 Apache License, Version 2.0.  A copy of the license is contained
-in the file <a href="about_files/LICENSE-2.0.txt" target="_blank">LICENSE-2.0.txt</a> and is also available at <a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank">http://www.apache.org/licenses/LICENSE-2.0.html</a>.</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>
-</body>
-</html>
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/about_files/LICENSE-2.0.txt b/bundles/org.eclipse.osgi/about_files/LICENSE-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/bundles/org.eclipse.osgi/about_files/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/bundles/org.eclipse.osgi/build.properties b/bundles/org.eclipse.osgi/build.properties
deleted file mode 100644
index d21ae37..0000000
--- a/bundles/org.eclipse.osgi/build.properties
+++ /dev/null
@@ -1,39 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = .options,\
-               .,\
-               about.html,\
-               META-INF/,\
-               systembundle.properties,\
-               *.profile,\
-               profile.list,\
-               hookconfigurators.properties,\
-               about_files/
-src.includes = about.html,\
-               about_files/
-source.. = osgi/src,\
-           core/adaptor/,\
-           core/framework/,\
-           core/composite/,\
-           resolver/src/,\
-           defaultAdaptor/src/,\
-           eclipseAdaptor/src/,\
-           console/src/,\
-           supplement/src/,\
-           security/src/
-output.. = bin/
-jre.compilation.profile = CDC-1.1/Foundation-1.1
-bootClasspath=osgi/exceptions.jar;osgi/xmlParserAPIs.jar;${CDC-1.1/Foundation-1.1}
-
-javacSource=1.3
-javacTarget=1.2
-
-javacWarnings..=-deadCode
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleManager.java b/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleManager.java
deleted file mode 100644
index c487509..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleManager.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.*;
-import java.lang.reflect.Method;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.Hashtable;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.eclipse.osgi.framework.console.ConsoleSession;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.ServiceRegistration;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-public class ConsoleManager implements ServiceTrackerCustomizer {
-	/**
-	 * ConsoleSocketGetter - provides a Thread that listens on the port
-	 * for FrameworkConsole.
-	 */
-	class ConsoleSocketGetter implements Runnable {
-
-		/** The ServerSocket to accept connections from */
-		private final ServerSocket server;
-		private volatile boolean shutdown = false;
-
-		/**
-		 * Constructor - sets the server and starts the thread to
-		 * listen for connections.
-		 *
-		 * @param server a ServerSocket to accept connections from
-		 */
-		ConsoleSocketGetter(ServerSocket server) {
-			this.server = server;
-			try {
-				Method reuseAddress = server.getClass().getMethod("setReuseAddress", new Class[] {boolean.class}); //$NON-NLS-1$
-				reuseAddress.invoke(server, new Object[] {Boolean.TRUE});
-			} catch (Exception ex) {
-				// try to set the socket re-use property, it isn't a problem if it can't be set
-			}
-			Thread t = new Thread(this, "ConsoleSocketGetter"); //$NON-NLS-1$
-			t.setDaemon(false);
-			t.start();
-		}
-
-		public void run() {
-			// Print message containing port console actually bound to..
-			System.out.println(NLS.bind(ConsoleMsg.CONSOLE_LISTENING_ON_PORT, Integer.toString(server.getLocalPort())));
-			while (!shutdown) {
-				try {
-					Socket socket = server.accept();
-					if (socket == null)
-						throw new IOException("No socket available.  Probably caused by a shutdown."); //$NON-NLS-1$
-					FrameworkConsoleSession session = new FrameworkConsoleSession(socket.getInputStream(), socket.getOutputStream(), socket);
-					framework.getSystemBundleContext().registerService(ConsoleSession.class.getName(), session, null);
-				} catch (Exception e) {
-					if (!shutdown)
-						e.printStackTrace();
-				}
-
-			}
-		}
-
-		public void shutdown() {
-			if (shutdown)
-				return;
-			shutdown = true;
-			try {
-				server.close();
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	public static final String PROP_CONSOLE = "osgi.console"; //$NON-NLS-1$
-	private static final String PROP_SYSTEM_IN_OUT = "console.systemInOut"; //$NON-NLS-1$
-	private static final String CONSOLE_NAME = "OSGi Console"; //$NON-NLS-1$
-	private final Framework framework;
-	private final ServiceTracker cpTracker;
-	private final ServiceTracker sessions;
-	private final String consolePort;
-	private FrameworkCommandProvider fwkCommands;
-	private ServiceRegistration builtinSession;
-	private ConsoleSocketGetter scsg;
-
-	public ConsoleManager(Framework framework, String consolePort) {
-		this.framework = framework;
-		this.consolePort = consolePort != null ? consolePort.trim() : consolePort;
-		this.cpTracker = new ServiceTracker(framework.getSystemBundleContext(), CommandProvider.class.getName(), null);
-		this.sessions = new ServiceTracker(framework.getSystemBundleContext(), ConsoleSession.class.getName(), this);
-	}
-
-	public static ConsoleManager startConsole(Framework framework) {
-		ConsoleManager consoleManager = new ConsoleManager(framework, FrameworkProperties.getProperty(PROP_CONSOLE));
-		consoleManager.startConsole();
-		return consoleManager;
-	}
-
-	private void startConsole() {
-		if ("none".equals(consolePort)) //$NON-NLS-1$
-			return; // disables all console sessions
-		this.cpTracker.open();
-		this.sessions.open();
-		fwkCommands = new FrameworkCommandProvider(framework);
-		fwkCommands.start();
-		if (consolePort == null)
-			return;
-		int port = -1;
-		try {
-			if (consolePort.length() > 0)
-				port = Integer.parseInt(consolePort);
-		} catch (NumberFormatException e) {
-			// do nothing;
-		}
-		if (port < 0) {
-			InputStream in = new FilterInputStream(System.in) {
-				public void close() throws IOException {
-					// We don't want to close System.in
-				}
-			};
-			OutputStream out = new FilterOutputStream(System.out) {
-				public void close() throws IOException {
-					// We don't want to close System.out
-				}
-
-				public void write(byte[] var0, int var1, int var2) throws IOException {
-					this.out.write(var0, var1, var2);
-				}
-
-			};
-			FrameworkConsoleSession session = new FrameworkConsoleSession(in, out, null);
-			Hashtable props = null;
-			props = new Hashtable(1);
-			props.put(PROP_SYSTEM_IN_OUT, Boolean.TRUE);
-			builtinSession = framework.getSystemBundleContext().registerService(ConsoleSession.class.getName(), session, props);
-		} else {
-			try {
-				scsg = new ConsoleManager.ConsoleSocketGetter(new ServerSocket(port));
-			} catch (IOException e) {
-				e.printStackTrace();
-			}
-		}
-	}
-
-	/**
-	 *  Stops the OSGi Command console
-	 *
-	 */
-	public void stopConsole() {
-		if (builtinSession != null)
-			try {
-				builtinSession.unregister();
-			} catch (IllegalStateException e) {
-				// ignore; this can happen if the session was closed manually (bug 314343)
-			}
-		sessions.close();
-		cpTracker.close();
-		if (scsg != null)
-			scsg.shutdown();
-		if (fwkCommands != null)
-			fwkCommands.stop();
-	}
-
-	public Object addingService(ServiceReference reference) {
-		FrameworkConsole console = null;
-
-		Boolean isSystemInOut = (Boolean) reference.getProperty(PROP_SYSTEM_IN_OUT);
-		if (isSystemInOut == null)
-			isSystemInOut = Boolean.FALSE;
-
-		ConsoleSession session = (ConsoleSession) framework.getSystemBundleContext().getService(reference);
-		console = new FrameworkConsole(framework.getSystemBundleContext(), session, isSystemInOut.booleanValue(), cpTracker);
-
-		Thread t = new Thread(console, CONSOLE_NAME);
-		t.setDaemon(false);
-		t.start();
-		return console;
-	}
-
-	public void modifiedService(ServiceReference reference, Object service) {
-		// nothing
-	}
-
-	public void removedService(ServiceReference reference, Object service) {
-		((FrameworkConsole) service).shutdown();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMessages.properties b/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMessages.properties
deleted file mode 100644
index f461a3c..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMessages.properties
+++ /dev/null
@@ -1,140 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-#External Messages for EN locale
-CONSOLE_PROMPT=osgi> 
-CONSOLE_ID=id
-CONSOLE_MORE=-- More...Press Enter to Continue...
-CONSOLE_HELP_CONTROLLING_CONSOLE_HEADING=---Controlling the Console---
-CONSOLE_HELP_MORE=More prompt for console output
-CONSOLE_HELP_DISCONNECT=Disconnects from telnet session
-CONSOLE_CONFIRM_MORE=Use 'more' prompt?
-CONSOLE_MORE_ENTER_LINES=Enter maximum number of lines to scroll:
-CONSOLE_CONFIRM_DISCONNECT=Disconnect from console?
-CONSOLE_CONFIRM=Confirm
-CONSOLE_CONFIRM_VALUES=y/n; default=
-CONSOLE_Y=y
-CONSOLE_N=n
-CONSOLE_ERROR_READING_RESOURCE=Error reading {0}
-CONSOLE_RESOURCE_NOT_IN_BUNDLE={0} not found in {1}
-CONSOLE_NESTED_EXCEPTION=Nested Exception:
-CONSOLE_PROMPT_DEFAULT=default
-CONSOLE_INVALID_INPUT=Invalid input.
-CONSOLE_TOO_MUCH_INVALID_INPUT=Too much invalid input.
-CONSOLE_LINES_TO_SCROLL_NEGATIVE_ERROR=Lines to scroll is set to a negative number
-CONSOLE_HELP_CONTROLLING_FRAMEWORK_HEADER=Controlling the OSGi framework
-CONSOLE_HELP_LAUNCH_COMMAND_DESCRIPTION=start the OSGi Framework
-CONSOLE_HELP_SHUTDOWN_COMMAND_DESCRIPTION=shutdown the OSGi Framework
-CONSOLE_HELP_CLOSE_COMMAND_DESCRIPTION=shutdown and exit
-CONSOLE_HELP_EXIT_COMMAND_DESCRIPTION=exit immediately (System.exit)
-CONSOLE_HELP_GC_COMMAND_DESCRIPTION=perform a garbage collection
-CONSOLE_HELP_INIT_COMMAND_DESCRIPTION=uninstall all bundles
-CONSOLE_HELP_SETPROP_COMMAND_DESCRIPTION=set the OSGi property
-CONSOLE_HELP_CONTROLLING_BUNDLES_HEADER=Controlling Bundles
-CONSOLE_HELP_INSTALL_COMMAND_DESCRIPTION=install and optionally start bundle from the given URL
-CONSOLE_HELP_UNINSTALL_COMMAND_DESCRIPTION=uninstall the specified bundle(s)
-CONSOLE_HELP_START_COMMAND_DESCRIPTION=start the specified bundle(s)
-CONSOLE_HELP_STOP_COMMAND_DESCRIPTION=stop the specified bundle(s)
-CONSOLE_HELP_REFRESH_COMMAND_DESCRIPTION=refresh the packages of the specified bundles
-CONSOLE_HELP_UPDATE_COMMAND_DESCRIPTION=update the specified bundle(s)
-CONSOLE_HELP_DISPLAYING_STATUS_HEADER=Displaying Status
-CONSOLE_HELP_STATUS_COMMAND_DESCRIPTION=display installed bundles and registered services
-CONSOLE_HELP_STATE_ARGUMENT_DESCRIPTION=[-s [<comma separated list of bundle states>]  [<segment of bsn>]]
-CONSOLE_HELP_SS_COMMAND_DESCRIPTION=display installed bundles (short status)
-CONSOLE_HELP_SERVICES_COMMAND_DESCRIPTION=display registered service details
-CONSOLE_HELP_PACKAGES_COMMAND_DESCRIPTION=display imported/exported package details
-CONSOLE_HELP_BUNDLES_COMMAND_DESCRIPTION=display details for all installed bundles
-CONSOLE_HELP_BUNDLE_COMMAND_DESCRIPTION=display details for the specified bundle(s)
-CONSOLE_HELP_HEADERS_COMMAND_DESCRIPTION=print bundle headers
-CONSOLE_HELP_EXTRAS_HEADER=Extras
-CONSOLE_HELP_EXEC_COMMAND_DESCRIPTION=execute a command in a separate process and wait
-CONSOLE_HELP_FORK_COMMAND_DESCRIPTION=execute a command in a separate process
-CONSOLE_HELP_KEYVALUE_ARGUMENT_DESCRIPTION=<key>=<value>
-CONSOLE_HELP_FILTER_ARGUMENT_DESCRIPTION=[filter]
-CONSOLE_HELP_PACKAGES_ARGUMENT_DESCRIPTION=[<pkgname>|<id>|<location>]
-CONSOLE_HELP_IDLOCATION_ARGUMENT_DESCRIPTION=(<id>|<location>)
-CONSOLE_HELP_OPTIONAL_IDLOCATION_ARGUMENT_DESCRIPTION=[<id>|<location>]
-CONSOLE_HELP_COMMAND_ARGUMENT_DESCRIPTION=<command>
-CONSOLE_HELP_GETPROP_COMMAND_DESCRIPTION=displays the system properties with the given name, or all of them.
-CONSOLE_HELP_GETPROP_ARGUMENT_DESCRIPTION=[ name ]
-CONSOLE_NO_BUNDLE_SPECIFIED_ERROR=No bundle(s) specified!
-CONSOLE_NOTHING_TO_INSTALL_ERROR=Nothing to install!
-CONSOLE_NO_INSTALLED_BUNDLES_ERROR=No installed bundles.
-CONSOLE_BUNDLE_ID_MESSAGE=Bundle id is 
-CONSOLE_FRAMEWORK_IS_LAUNCHED_MESSAGE=Framework is launched.
-CONSOLE_FRAMEWORK_IS_SHUTDOWN_MESSAGE=Framework is shutdown.
-CONSOLE_ID_MESSAGE=Id={0}
-CONSOLE_BUNDLE_LOCATION_MESSAGE=Bundle Location
-CONSOLE_STATE_BUNDLE_FILE_NAME_HEADER=State       Bundle File Name
-CONSOLE_REGISTERED_SERVICES_MESSAGE=Registered Services
-CONSOLE_REGISTERED_BY_BUNDLE_MESSAGE=Registered by bundle:
-CONSOLE_BUNDLES_USING_SERVICE_MESSAGE=Bundles using service:
-CONSOLE_NO_BUNDLES_USING_SERVICE_MESSAGE=No bundles using service.
-CONSOLE_NO_REGISTERED_SERVICES_MESSAGE=No registered services.
-CONSOLE_NO_EXPORTED_PACKAGES_MESSAGE=No exported packages
-CONSOLE_NO_IMPORTED_PACKAGES_MESSAGE=No imported packages
-CONSOLE_REMOVAL_PENDING_MESSAGE=removal pending
-CONSOLE_IMPORTS_MESSAGE=imports
-CONSOLE_STALE_MESSAGE=stale
-CONSOLE_NO_EXPORTED_PACKAGES_NO_PACKAGE_ADMIN_MESSAGE=No exported packages [PackageAdmin service is not registered]
-CONSOLE_SERVICES_IN_USE_MESSAGE=Services in use:
-CONSOLE_NO_SERVICES_IN_USE_MESSAGE=No services in use.
-CONSOLE_STATUS_MESSAGE=Status={0}
-CONSOLE_DATA_ROOT_MESSAGE=Data Root={0}
-CONSOLE_EXPORTED_PACKAGES_MESSAGE=Exported packages
-CONSOLE_IMPORTED_PACKAGES_MESSAGE=Imported packages
-CONSOLE_EXPORTED_REMOVAL_PENDING_MESSAGE=[exported(removal pending)]
-CONSOLE_EXPORTED_MESSAGE=[exported]
-CONSOLE_TOTAL_MEMORY_MESSAGE=Total memory:
-CONSOLE_FREE_MEMORY_BEFORE_GARBAGE_COLLECTION_MESSAGE=Free memory before GC:
-CONSOLE_FREE_MEMORY_AFTER_GARBAGE_COLLECTION_MESSAGE=Free memory after GC:
-CONSOLE_MEMORY_GAINED_WITH_GARBAGE_COLLECTION_MESSAGE=Memory gained with GC:
-CONSOLE_FRAMEWORK_LAUNCHED_PLEASE_SHUTDOWN_MESSAGE=Framework is launched. Please shutdown framework first.
-CONSOLE_INVALID_BUNDLE_SPECIFICATION_ERROR=Invalid bundle specification.
-CONSOLE_CAN_NOT_REFRESH_NO_PACKAGE_ADMIN_ERROR=Cannot refresh [PackageAdmin service is not registered]
-CONSOLE_CAN_NOT_USE_STARTLEVEL_NO_STARTLEVEL_SVC_ERROR=Cannot use Startlevel commands [Startlevel service is not registered]
-CONSOLE_NO_COMMAND_SPECIFIED_ERROR=No command specified
-CONSOLE_EXECUTED_RESULT_CODE_MESSAGE=Executed ({0}); result code = {1}
-CONSOLE_STARTED_IN_MESSAGE=Started({0}) in {1}
-CONSOLE_BUNDLE_HEADERS_TITLE=Bundle headers:
-CONSOLE_SYSTEM_PROPERTIES_TITLE=System properties:
-CONSOLE_NO_PARAMETERS_SPECIFIED_TITLE=No parameters specified:
-CONSOLE_SETTING_PROPERTIES_TITLE=Setting Properties:
-CONSOLE_STATE_BUNDLE_TITLE=State       Bundle
-CONSOLE_THREADGROUP_TITLE=ThreadGroupType:   Name:                 ParentGroup:   MaxP: Threads:
-CONSOLE_THREADTYPE_TITLE=ThreadType:        Name:                 ThreadGroup:   Prio:
-CONSOLE_CANNOT_FIND_BUNDLE_ERROR=Cannot find bundle {0}
-CONSOLE_LISTENING_ON_PORT=Listening on port {0} ... 
-STARTLEVEL_HELP_HEADING=Controlling Start Level
-STARTLEVEL_HELP_SL=display the start level for the specified bundle, or for the framework if no bundle specified
-STARTLEVEL_HELP_SETFWSL=set the framework start level
-STARTLEVEL_HELP_SETBSL=set the start level for the bundle(s)
-STARTLEVEL_HELP_SETIBSL=set the initial bundle start level
-STARTLEVEL_FRAMEWORK_ACTIVE_STARTLEVEL=Framework Active Start Level = {0}
-STARTLEVEL_NO_STARTLEVEL_GIVEN=No Start Level given.
-STARTLEVEL_NO_STARTLEVEL_OR_BUNDLE_GIVEN=No Bundle or Start Level given.
-STARTLEVEL_INITIAL_BUNDLE_STARTLEVEL=Initial Bundle Start Level = {0}
-STARTLEVEL_BUNDLE_STARTLEVEL=Bundle {0} Start Level = {1}
-STARTLEVEL_ARGUMENT_DESCRIPTION = <start level>
-STARTLEVEL_IDLOCATION_ARGUMENT_DESCRIPTION = <start level> (<id>|<location>)
-STARTLEVEL_POSITIVE_INTEGER=Startlevel must be a positive integer.
-CONSOLE_NAMED_CLASS_SPACE_MESSAGE=Named class space
-CONSOLE_PROVIDED_MESSAGE=[provided]
-CONSOLE_HOST_MESSAGE=Host bundles
-CONSOLE_NO_HOST_MESSAGE=No host bundles
-CONSOLE_FRAGMENT_MESSAGE=Fragment bundles
-CONSOLE_NO_FRAGMENT_MESSAGE=No fragment bundles
-CONSOLE_NO_NAMED_CLASS_SPACES_MESSAGE=No named class spaces
-CONSOLE_REQUIRED_BUNDLES_MESSAGE=Required bundles
-CONSOLE_NO_REQUIRED_BUNDLES_MESSAGE=No required bundles
-CONSOLE_REQUIRES_MESSAGE=[requires]
-CONSOLE_HELP_PROFILE_HEADING=Controlling the Profiling
-CONSOLE_HELP_PROFILELOG_DESCRIPTION=Display & flush the profile log messages
diff --git a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMsg.java b/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMsg.java
deleted file mode 100644
index 020f216..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMsg.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import org.eclipse.osgi.util.NLS;
-
-public class ConsoleMsg extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.osgi.framework.internal.core.ConsoleMessages"; //$NON-NLS-1$
-
-	public static String CONSOLE_LINES_TO_SCROLL_NEGATIVE_ERROR;
-	public static String CONSOLE_NESTED_EXCEPTION;
-	public static String CONSOLE_ERROR_READING_RESOURCE;
-	public static String CONSOLE_RESOURCE_NOT_IN_BUNDLE;
-	public static String CONSOLE_MORE;
-	public static String CONSOLE_HELP_CONTROLLING_CONSOLE_HEADING;
-	public static String CONSOLE_HELP_MORE;
-	public static String CONSOLE_HELP_DISCONNECT;
-	public static String CONSOLE_CONFIRM_MORE;
-	public static String CONSOLE_CONFIRM_DISCONNECT;
-	public static String CONSOLE_CONFIRM;
-	public static String CONSOLE_CONFIRM_VALUES;
-	public static String CONSOLE_Y;
-	public static String CONSOLE_N;
-	public static String CONSOLE_PROMPT_DEFAULT;
-	public static String CONSOLE_INVALID_INPUT;
-	public static String CONSOLE_TOO_MUCH_INVALID_INPUT;
-	public static String CONSOLE_MORE_ENTER_LINES;
-
-	public static String CONSOLE_LISTENING_ON_PORT;
-	public static String CONSOLE_PROMPT;
-
-	public static String CONSOLE_HELP_CONTROLLING_FRAMEWORK_HEADER;
-	public static String CONSOLE_HELP_LAUNCH_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_SHUTDOWN_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_CLOSE_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_EXIT_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_GC_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_INIT_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_KEYVALUE_ARGUMENT_DESCRIPTION;
-	public static String CONSOLE_HELP_SETPROP_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_CONTROLLING_BUNDLES_HEADER;
-	public static String CONSOLE_HELP_INSTALL_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_UNINSTALL_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_START_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_STOP_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_REFRESH_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_DISPLAYING_STATUS_HEADER;
-	public static String CONSOLE_HELP_STATUS_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_STATE_ARGUMENT_DESCRIPTION;
-	public static String CONSOLE_HELP_SS_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_FILTER_ARGUMENT_DESCRIPTION;
-	public static String CONSOLE_HELP_SERVICES_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_PACKAGES_ARGUMENT_DESCRIPTION;
-	public static String CONSOLE_HELP_PACKAGES_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_BUNDLES_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_IDLOCATION_ARGUMENT_DESCRIPTION;
-	public static String CONSOLE_HELP_BUNDLE_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_HEADERS_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_EXTRAS_HEADER;
-	public static String CONSOLE_HELP_COMMAND_ARGUMENT_DESCRIPTION;
-	public static String CONSOLE_HELP_GETPROP_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_GETPROP_ARGUMENT_DESCRIPTION;
-	public static String CONSOLE_HELP_EXEC_COMMAND_DESCRIPTION;
-	public static String CONSOLE_HELP_FORK_COMMAND_DESCRIPTION;
-	public static String STARTLEVEL_HELP_HEADING;
-	public static String CONSOLE_HELP_OPTIONAL_IDLOCATION_ARGUMENT_DESCRIPTION;
-	public static String STARTLEVEL_HELP_SL;
-	public static String STARTLEVEL_ARGUMENT_DESCRIPTION;
-	public static String STARTLEVEL_HELP_SETFWSL;
-	public static String STARTLEVEL_IDLOCATION_ARGUMENT_DESCRIPTION;
-	public static String STARTLEVEL_HELP_SETBSL;
-	public static String STARTLEVEL_HELP_SETIBSL;
-	public static String CONSOLE_HELP_PROFILE_HEADING;
-	public static String CONSOLE_HELP_PROFILELOG_DESCRIPTION;
-	public static String CONSOLE_HELP_UPDATE_COMMAND_DESCRIPTION;
-
-	public static String CONSOLE_NO_BUNDLE_SPECIFIED_ERROR;
-	public static String CONSOLE_NOTHING_TO_INSTALL_ERROR;
-	public static String CONSOLE_BUNDLE_ID_MESSAGE;
-	public static String CONSOLE_NO_INSTALLED_BUNDLES_ERROR;
-	public static String CONSOLE_REGISTERED_SERVICES_MESSAGE;
-	public static String CONSOLE_FRAMEWORK_IS_LAUNCHED_MESSAGE;
-	public static String CONSOLE_FRAMEWORK_IS_SHUTDOWN_MESSAGE;
-	public static String CONSOLE_ID;
-	public static String CONSOLE_BUNDLE_LOCATION_MESSAGE;
-	public static String CONSOLE_STATE_BUNDLE_FILE_NAME_HEADER;
-	public static String CONSOLE_BUNDLES_USING_SERVICE_MESSAGE;
-	public static String CONSOLE_NO_REGISTERED_SERVICES_MESSAGE;
-	public static String CONSOLE_NO_BUNDLES_USING_SERVICE_MESSAGE;
-	public static String CONSOLE_REGISTERED_BY_BUNDLE_MESSAGE;
-	public static String CONSOLE_IMPORTS_MESSAGE;
-	public static String CONSOLE_STALE_MESSAGE;
-	public static String CONSOLE_NO_EXPORTED_PACKAGES_NO_PACKAGE_ADMIN_MESSAGE;
-	public static String CONSOLE_NO_EXPORTED_PACKAGES_MESSAGE;
-	public static String CONSOLE_REMOVAL_PENDING_MESSAGE;
-	public static String CONSOLE_SERVICES_IN_USE_MESSAGE;
-	public static String CONSOLE_NO_SERVICES_IN_USE_MESSAGE;
-	public static String CONSOLE_ID_MESSAGE;
-	public static String CONSOLE_STATUS_MESSAGE;
-	public static String CONSOLE_DATA_ROOT_MESSAGE;
-
-	public static String CONSOLE_IMPORTED_PACKAGES_MESSAGE;
-	public static String CONSOLE_NO_IMPORTED_PACKAGES_MESSAGE;
-	public static String CONSOLE_HOST_MESSAGE;
-	public static String CONSOLE_EXPORTED_PACKAGES_MESSAGE;
-	public static String CONSOLE_EXPORTED_REMOVAL_PENDING_MESSAGE;
-	public static String CONSOLE_EXPORTED_MESSAGE;
-	public static String CONSOLE_NO_HOST_MESSAGE;
-	public static String CONSOLE_FRAGMENT_MESSAGE;
-	public static String CONSOLE_NO_FRAGMENT_MESSAGE;
-	public static String CONSOLE_NO_NAMED_CLASS_SPACES_MESSAGE;
-	public static String CONSOLE_NAMED_CLASS_SPACE_MESSAGE;
-	public static String CONSOLE_PROVIDED_MESSAGE;
-	public static String CONSOLE_REQUIRED_BUNDLES_MESSAGE;
-	public static String CONSOLE_NO_REQUIRED_BUNDLES_MESSAGE;
-	public static String CONSOLE_TOTAL_MEMORY_MESSAGE;
-	public static String CONSOLE_FREE_MEMORY_BEFORE_GARBAGE_COLLECTION_MESSAGE;
-	public static String CONSOLE_FREE_MEMORY_AFTER_GARBAGE_COLLECTION_MESSAGE;
-	public static String CONSOLE_MEMORY_GAINED_WITH_GARBAGE_COLLECTION_MESSAGE;
-	public static String CONSOLE_FRAMEWORK_LAUNCHED_PLEASE_SHUTDOWN_MESSAGE;
-	public static String CONSOLE_INVALID_BUNDLE_SPECIFICATION_ERROR;
-	public static String CONSOLE_CAN_NOT_REFRESH_NO_PACKAGE_ADMIN_ERROR;
-	public static String CONSOLE_NO_COMMAND_SPECIFIED_ERROR;
-	public static String CONSOLE_STARTED_IN_MESSAGE;
-	public static String CONSOLE_EXECUTED_RESULT_CODE_MESSAGE;
-	public static String CONSOLE_BUNDLE_HEADERS_TITLE;
-	public static String CONSOLE_SYSTEM_PROPERTIES_TITLE;
-	public static String CONSOLE_NO_PARAMETERS_SPECIFIED_TITLE;
-	public static String CONSOLE_SETTING_PROPERTIES_TITLE;
-	public static String CONSOLE_STATE_BUNDLE_TITLE;
-	public static String CONSOLE_THREADGROUP_TITLE;
-	public static String CONSOLE_THREADTYPE_TITLE;
-	public static String CONSOLE_REQUIRES_MESSAGE;
-	public static String CONSOLE_CAN_NOT_USE_STARTLEVEL_NO_STARTLEVEL_SVC_ERROR;
-	public static String CONSOLE_CANNOT_FIND_BUNDLE_ERROR;
-
-	public static String STARTLEVEL_FRAMEWORK_ACTIVE_STARTLEVEL;
-	public static String STARTLEVEL_BUNDLE_STARTLEVEL;
-	public static String STARTLEVEL_NO_STARTLEVEL_GIVEN;
-	public static String STARTLEVEL_NO_STARTLEVEL_OR_BUNDLE_GIVEN;
-	public static String STARTLEVEL_INITIAL_BUNDLE_STARTLEVEL;
-	public static String STARTLEVEL_POSITIVE_INTEGER;
-
-	static {
-		// initialize resource bundles
-		NLS.initializeMessages(BUNDLE_NAME, ConsoleMsg.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandInterpreter.java b/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandInterpreter.java
deleted file mode 100644
index a54f2d8..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandInterpreter.java
+++ /dev/null
@@ -1,521 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Bundle;
-
-/**
- * This class knows how to parse and execute the command line arguments to the FrameworkConsole.
- * It attempts to pass the command to each registered CommandProvider until it finds one
- * that knows what to do with it.
- *
- * FrameworkCommandInterpreter provides support for the "More" command which allows the operator to configure
- * the number of lines to display before being prompted to continue.
- *
- * FrameworkCommandInterpreter provides several print methods which handle the "More" command.
- */
-public class FrameworkCommandInterpreter implements CommandInterpreter {
-	private static final String WS_DELIM = " \t\n\r\f"; //$NON-NLS-1$
-
-	/** The command line in StringTokenizer form */
-	private StringTokenizer tok;
-	/** The active CommandProviders */
-	private Object[] commandProviders;
-	/** The FrameworkConsole */
-	private FrameworkConsole con;
-	/** The stream to send output to */
-	private PrintWriter out;
-
-	/** Strings used to format other strings */
-	private String tab = "\t"; //$NON-NLS-1$
-	private String newline = "\r\n"; //$NON-NLS-1$
-	private boolean firstCommand = true;
-
-	/**
-	 * The maximum number of lines to print without user prompt.
-	 * 0 means no user prompt is required, the window is scrollable.
-	 */
-	protected static int maxLineCount;
-
-	/** The number of lines printed without user prompt.*/
-	protected int currentLineCount;
-
-	/**
-	 *  The constructor.  It turns the cmdline string into a StringTokenizer and remembers
-	 *  the input parms.
-	 */
-	public FrameworkCommandInterpreter(String cmdline, Object[] commandProviders, FrameworkConsole con) {
-		tok = new StringTokenizer(cmdline);
-		this.commandProviders = commandProviders;
-		this.con = con;
-		this.out = con.getWriter();
-	}
-
-	/**
-	 Get the next argument in the input.
-	 
-	 E.g. if the commandline is hello world, the _hello method
-	 will get "world" as the first argument.
-	 
-	 @return A string containing the next argument on the command line
-	 */
-	public String nextArgument() {
-		if (tok == null || !tok.hasMoreElements())
-			return null;
-		return consumeQuotes(tok.nextToken());
-	}
-
-	private String consumeQuotes(String arg) {
-		if (!(arg.startsWith("\"") || arg.startsWith("'"))) //$NON-NLS-1$//$NON-NLS-2$
-			return arg;
-		String quote = arg.substring(0, 1);
-		if (arg.endsWith(quote)) {
-			if (arg.length() >= 2)
-				// strip the beginning and ending quotes
-				return arg.substring(1, arg.length() - 1);
-			// single quote case; return empty string
-			return ""; //$NON-NLS-1$
-		}
-
-		try {
-			arg = arg.substring(1) + tok.nextToken(quote);
-		} catch (NoSuchElementException e) {
-			// should not happen
-			printStackTrace(e);
-			return ""; //$NON-NLS-1$
-		}
-		try {
-			// skip to next whitespace separated token
-			tok.nextToken(WS_DELIM);
-		} catch (NoSuchElementException e) {
-			// this is ok we are at the end
-		}
-		return arg;
-	}
-
-	/**
-	 Execute a command line as if it came from the end user.
-	 
-	 Searches the list of command providers using introspection until
-	 it finds one that contains a matching method.  It searches for a method
-	 with the name "_cmd" where cmd is the command to execute.  For example,
-	 for a command of "launch" execute searches for a method called "_launch".
-	 
-	 @param cmd The name of the command to execute.
-	 @return The object returned by the method executed.
-	 */
-	public Object execute(String cmd) {
-		if (!firstCommand)
-			return innerExecute(cmd);
-		firstCommand = false;
-		resetLineCount();
-		Object retval = null;
-		// handle "more" command here
-		if (cmd.equalsIgnoreCase("more")) { //$NON-NLS-1$
-			try {
-				_more();
-			} catch (Exception e) {
-				printStackTrace(e);
-			}
-			return retval;
-		}
-		// handle "disconnect" command here
-		if (cmd.equalsIgnoreCase("disconnect")) { //$NON-NLS-1$
-			try {
-				_disconnect();
-			} catch (Exception e) {
-				printStackTrace(e);
-			}
-			return retval;
-		}
-		Class[] parameterTypes = new Class[] {CommandInterpreter.class};
-		Object[] parameters = new Object[] {this};
-		boolean executed = false;
-		int size = commandProviders.length;
-		for (int i = 0; !executed && (i < size); i++) {
-			try {
-				Object target = commandProviders[i];
-				Method method = target.getClass().getMethod("_" + cmd, parameterTypes); //$NON-NLS-1$
-				retval = method.invoke(target, parameters);
-				executed = true; // stop after the command has been found
-			} catch (NoSuchMethodException ite) {
-				// keep going - maybe another command provider will be able to execute this command
-			} catch (InvocationTargetException ite) {
-				executed = true; // don't want to keep trying - we found the method but got an error
-				printStackTrace(ite.getTargetException());
-			} catch (Exception ee) {
-				executed = true; // don't want to keep trying - we got an error we don't understand
-				printStackTrace(ee);
-			}
-		}
-		// if no command was found to execute, display help for all registered command providers
-		if (!executed) {
-			for (int i = 0; i < size; i++) {
-				try {
-					CommandProvider commandProvider = (CommandProvider) commandProviders[i];
-					out.print(commandProvider.getHelp());
-					out.flush();
-				} catch (Exception ee) {
-					printStackTrace(ee);
-				}
-			}
-			// call help for the more command provided by this class
-			out.print(getHelp());
-			out.flush();
-		}
-		return retval;
-	}
-
-	private Object innerExecute(String cmd) {
-		if (cmd != null && cmd.length() > 0) {
-			CommandInterpreter intcp = new FrameworkCommandInterpreter(cmd, commandProviders, con);
-			String command = intcp.nextArgument();
-			if (command != null)
-				return intcp.execute(command);
-		}
-		return null;
-	}
-
-	/**
-	 * Answers the number of lines output to the console
-	 * window should scroll without user interaction.
-	 *
-	 * @return	The number of lines to scroll.
-	 */
-	private int getMaximumLinesToScroll() {
-		return maxLineCount;
-	}
-
-	/**
-	 * Sets the number of lines output to the console
-	 * window will scroll without user interaction.
-	 * <p>
-	 * Note that this number does not include the line
-	 * for the 'more' prompt itself.
-	 * <p>
-	 * If the number of lines is 0 then no 'more' prompt
-	 * is disabled.
-	 *
-	 * @param	lines	the number of lines to scroll
-	 */
-	private void setMaximumLinesToScroll(int lines) {
-		if (lines < 0) {
-			throw new IllegalArgumentException(ConsoleMsg.CONSOLE_LINES_TO_SCROLL_NEGATIVE_ERROR);
-		}
-
-		maxLineCount = lines;
-	}
-
-	/**
-	 * Resets the line counter for the 'more' prompt.
-	 */
-	private void resetLineCount() {
-		currentLineCount = 0;
-	}
-
-	/**
-	 * Prints a string to the output medium (appended with newline character).
-	 * <p>
-	 * This method does not increment the line counter for the 'more' prompt.
-	 *
-	 * @param o the string to be printed
-	 */
-	private void printline(Object o) {
-		print(o + newline);
-	}
-
-	/**
-	 * Prints an object to the outputstream
-	 *
-	 * @param o	the object to be printed
-	 */
-	public void print(Object o) {
-		synchronized (out) {
-			check4More();
-			out.print(o);
-			out.flush();
-		}
-	}
-
-	/**
-	 * Prints a empty line to the outputstream
-	 */
-	public void println() {
-		println(""); //$NON-NLS-1$
-	}
-
-	/**
-	 * Print a stack trace including nested exceptions.
-	 * @param t The offending exception
-	 */
-	public void printStackTrace(Throwable t) {
-		t.printStackTrace(out);
-
-		Method[] methods = t.getClass().getMethods();
-
-		int size = methods.length;
-		Class throwable = Throwable.class;
-
-		for (int i = 0; i < size; i++) {
-			Method method = methods[i];
-
-			if (Modifier.isPublic(method.getModifiers()) && method.getName().startsWith("get") && throwable.isAssignableFrom(method.getReturnType()) && (method.getParameterTypes().length == 0)) { //$NON-NLS-1$
-				try {
-					Throwable nested = (Throwable) method.invoke(t, null);
-
-					if ((nested != null) && (nested != t)) {
-						out.println(ConsoleMsg.CONSOLE_NESTED_EXCEPTION);
-						printStackTrace(nested);
-					}
-				} catch (IllegalAccessException e) {
-				} catch (InvocationTargetException e) {
-				}
-			}
-		}
-	}
-
-	/**
-	 * Prints an object to the output medium (appended with newline character).
-	 * <p>
-	 * If running on the target environment, the user is prompted with '--more'
-	 * if more than the configured number of lines have been printed without user prompt.
-	 * This enables the user of the program to have control over scrolling.
-	 * <p>
-	 * For this to work properly you should not embed "\n" etc. into the string.
-	 *
-	 * @param	o	the object to be printed
-	 */
-	public void println(Object o) {
-		if (o == null) {
-			return;
-		}
-		synchronized (out) {
-			check4More();
-			printline(o);
-			currentLineCount++;
-			currentLineCount += o.toString().length() / 80;
-		}
-	}
-
-	/**
-	 * Prints the given dictionary sorted by keys.
-	 *
-	 * @param dic	the dictionary to print
-	 * @param title	the header to print above the key/value pairs
-	 */
-	public void printDictionary(Dictionary dic, String title) {
-		if (dic == null)
-			return;
-
-		int count = dic.size();
-		String[] keys = new String[count];
-		Enumeration keysEnum = dic.keys();
-		int i = 0;
-		while (keysEnum.hasMoreElements()) {
-			keys[i++] = (String) keysEnum.nextElement();
-		}
-		Util.sortByString(keys);
-
-		if (title != null) {
-			println(title);
-		}
-		for (i = 0; i < count; i++) {
-			println(" " + keys[i] + " = " + dic.get(keys[i])); //$NON-NLS-1$//$NON-NLS-2$
-		}
-		println();
-	}
-
-	/**
-	 * Prints the given bundle resource if it exists
-	 *
-	 * @param bundle	the bundle containing the resource
-	 * @param resource	the resource to print
-	 */
-	public void printBundleResource(Bundle bundle, String resource) {
-		URL entry = null;
-		entry = bundle.getEntry(resource);
-		if (entry != null) {
-			try {
-				println(resource);
-				InputStream in = entry.openStream();
-				byte[] buffer = new byte[1024];
-				int read = 0;
-				try {
-					while ((read = in.read(buffer)) != -1)
-						print(new String(buffer, 0, read));
-				} finally {
-					if (in != null) {
-						try {
-							in.close();
-						} catch (IOException e) {
-						}
-					}
-				}
-			} catch (Exception e) {
-				System.err.println(NLS.bind(ConsoleMsg.CONSOLE_ERROR_READING_RESOURCE, resource));
-			}
-		} else {
-			println(NLS.bind(ConsoleMsg.CONSOLE_RESOURCE_NOT_IN_BUNDLE, resource, bundle.toString()));
-		}
-	}
-
-	/**
-	 *  Displays the more... prompt if the max line count has been reached 
-	 *  and waits for the operator to hit enter.
-	 *
-	 */
-	private void check4More() {
-		int max = getMaximumLinesToScroll();
-		if (max > 0) {
-			if (currentLineCount >= max) {
-				out.print(ConsoleMsg.CONSOLE_MORE);
-				out.flush();
-				con.getInput(); // wait for user entry
-				resetLineCount(); //Reset the line counter for the 'more' prompt
-			}
-		}
-	}
-
-	/**
-	 Answer a string (may be as many lines as you like) with help
-	 texts that explain the command.
-	 */
-	public String getHelp() {
-		StringBuffer help = new StringBuffer(256);
-		help.append(ConsoleMsg.CONSOLE_HELP_CONTROLLING_CONSOLE_HEADING);
-		help.append(newline);
-		help.append(tab);
-		help.append("more - "); //$NON-NLS-1$
-		help.append(ConsoleMsg.CONSOLE_HELP_MORE);
-		help.append(newline);
-		help.append(tab);
-		help.append("disconnect - "); //$NON-NLS-1$
-		help.append(ConsoleMsg.CONSOLE_HELP_DISCONNECT);
-		help.append(newline);
-		return help.toString();
-	}
-
-	/**
-	 * Toggles the use of the more prompt for displayed output.
-	 *
-	 */
-	public void _more() throws Exception {
-		if (confirm(ConsoleMsg.CONSOLE_CONFIRM_MORE, true)) {
-			int lines = prompt(newline + ConsoleMsg.CONSOLE_MORE_ENTER_LINES, 24);
-			setMaximumLinesToScroll(lines);
-		} else {
-			setMaximumLinesToScroll(0);
-		}
-	}
-
-	private void _disconnect() throws Exception {
-		if (confirm(ConsoleMsg.CONSOLE_CONFIRM_DISCONNECT, true)) {
-			con.shutdown();
-		}
-	}
-
-	/**
-	 * Prompts the user for confirmation.
-	 *
-	 * @param	string			the message to present to the user to confirm
-	 * @param	defaultAnswer	the default result
-	 *
-	 * @return	<code>true</code> if the user confirms; <code>false</code> otherwise.
-	 */
-	protected boolean confirm(String string, boolean defaultAnswer) {
-		synchronized (out) {
-			if (string.length() > 0) {
-				print(string);
-			} else {
-				print(ConsoleMsg.CONSOLE_CONFIRM);
-			}
-			print(" (" + ConsoleMsg.CONSOLE_CONFIRM_VALUES); //$NON-NLS-1$
-			if (defaultAnswer) {
-				print(ConsoleMsg.CONSOLE_Y + ") "); //$NON-NLS-1$
-			} else {
-				print(ConsoleMsg.CONSOLE_N + ") "); //$NON-NLS-1$
-			}
-		}
-		String input = con.getInput();
-		resetLineCount();
-		if (input.length() == 0) {
-			return defaultAnswer;
-		}
-		return input.toLowerCase().charAt(0) == ConsoleMsg.CONSOLE_Y.charAt(0);
-	}
-
-	/**
-	 * Prompts the user for input from the input medium providing a default value.
-	 *
-	 * @param	string			the message to present to the user
-	 * @param	defaultAnswer	the string to use as a default return value
-	 *
-	 * @return	The user provided string or the defaultAnswer,
-	 *			if user provided string was empty.
-	 */
-	protected String prompt(String string, String defaultAnswer) {
-		if (string.length() > 0) {
-			if (defaultAnswer.length() > 0) {
-				StringBuffer buf = new StringBuffer(256);
-				buf.append(string);
-				buf.append(" "); //$NON-NLS-1$
-				buf.append(ConsoleMsg.CONSOLE_PROMPT_DEFAULT);
-				buf.append("="); //$NON-NLS-1$
-				buf.append(defaultAnswer);
-				buf.append(") "); //$NON-NLS-1$
-				print(buf.toString());
-			} else {
-				print(string);
-			}
-		}
-		String input = con.getInput();
-		resetLineCount();
-		if (input.length() > 0) {
-			return input;
-		}
-		return defaultAnswer;
-	}
-
-	/**
-	 * Prompts the user for input of a positive integer.
-	 *
-	 * @param	string			the message to present to the user
-	 * @param	defaultAnswer	the integer to use as a default return value
-	 *
-	 * @return	The user provided integer or the defaultAnswer,
-	 *			if user provided an empty input.
-	 */
-	protected int prompt(String string, int defaultAnswer) {
-		Integer i = new Integer(defaultAnswer);
-		int answer;
-		for (int j = 0; j < 3; j++) {
-			String s = prompt(string, i.toString());
-			try {
-				answer = Integer.parseInt(s);
-				if (answer >= 0) {
-					return answer;
-				}
-			} catch (NumberFormatException e) {
-			}
-			println(ConsoleMsg.CONSOLE_INVALID_INPUT);
-		}
-		println(ConsoleMsg.CONSOLE_TOO_MUCH_INVALID_INPUT);
-		return defaultAnswer;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java b/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java
deleted file mode 100644
index da34820..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java
+++ /dev/null
@@ -1,1876 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.*;
-import java.lang.reflect.Field;
-import java.net.URL;
-import java.security.ProtectionDomain;
-import java.util.*;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.eclipse.osgi.internal.permadmin.SecurityAdmin;
-import org.eclipse.osgi.internal.profile.Profile;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.condpermadmin.ConditionalPermissionInfo;
-import org.osgi.service.condpermadmin.ConditionalPermissionUpdate;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.packageadmin.RequiredBundle;
-
-/**
- * This class provides methods to execute commands from the command line.  It registers
- * itself as a CommandProvider so it can be invoked by a CommandInterpreter.  The
- * FrameworkCommandProvider registers itself with the highest ranking (Integer.MAXVALUE) so it will always be
- * called first.  Other CommandProviders should register with lower rankings.
- *
- * The commands provided by this class are:
- ---Controlling the OSGi framework---
- close - shutdown and exit
- exit - exit immediately (System.exit)
- gc - perform a garbage collection
- init - uninstall all bundles
- launch - start the Service Management Framework
- setprop <key>=<value> - set the OSGI property
- shutdown - shutdown the Service Management Framework
- ---Controlliing Bundles---
- install <url> {s[tart]} - install and optionally start bundle from the given URL
- refresh (<id>|<location>) - refresh the packages of the specified bundles
- start (<id>|<location>) - start the specified bundle(s)
- stop (<id>|<location>) - stop the specified bundle(s)
- uninstall (<id>|<location>) - uninstall the specified bundle(s)
- update (<id>|<location>|<*>) - update the specified bundle(s)
- ---Displaying Status---
- bundle (<id>|<location>) - display details for the specified bundle(s)
- bundles - display details for all installed bundles
- headers (<id>|<location>) - print bundle headers
- packages {<pkgname>|<id>|<location>} - display imported/exported package details
- props - display System properties
- services {filter} - display registered service details
- ss - display installed bundles (short status)
- status - display installed bundles and registered services
- threads - display threads and thread groups
- ---Extras---
- exec <command> - execute a command in a separate process and wait
- fork <command> - execute a command in a separate process
- getprop <name> -  Displays the system properties with the given name, or all of them.
- ---Controlling StartLevel---
- sl {(<id>|<location>)} - display the start level for the specified bundle, or for the framework if no bundle specified
- setfwsl <start level> - set the framework start level
- setbsl <start level> (<id>|<location>) - set the start level for the bundle(s)
- setibsl <start level> - set the initial bundle start level
- 
- *
- *  There is a method for each command which is named '_'+method.  The methods are
- *  invoked by a CommandInterpreter's execute method.
- */
-public class FrameworkCommandProvider implements CommandProvider, SynchronousBundleListener {
-
-	/** An instance of the OSGi framework */
-	private final Framework framework;
-	/** The system bundle context */
-	private final BundleContext context;
-	/** The start level implementation */
-	private final StartLevelManager slImpl;
-	private final SecurityAdmin securityAdmin;
-	private ServiceRegistration providerReg;
-
-	/** Strings used to format other strings */
-	private final static String tab = "\t"; //$NON-NLS-1$
-	private final static String newline = "\r\n"; //$NON-NLS-1$
-
-	/** this list contains the bundles known to be lazily awaiting activation */
-	private final List lazyActivation = new ArrayList();
-
-	/**
-	 *  Constructor.
-	 *
-	 *  initialize must be called after creating this object.
-	 *
-	 *  @param framework The current instance of the framework
-	 */
-	public FrameworkCommandProvider(Framework framework) {
-		this.framework = framework;
-		context = framework.systemBundle.getContext();
-		slImpl = framework.startLevelManager;
-		securityAdmin = framework.securityAdmin;
-	}
-
-	/**
-	 *  Starts this CommandProvider.
-	 *
-	 *  Registers this object as a CommandProvider with the highest ranking possible.
-	 *  Adds this object as a SynchronousBundleListener.
-	 */
-	void start() {
-		Dictionary props = new Hashtable();
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		providerReg = context.registerService(CommandProvider.class.getName(), this, props);
-		context.addBundleListener(this);
-	}
-
-	void stop() {
-		context.removeBundleListener(this);
-		if (providerReg != null)
-			providerReg.unregister();
-	}
-
-	/**
-	 Answer a string (may be as many lines as you like) with help
-	 texts that explain the command.  This getHelp() method uses the 
-	 ConsoleMsg class to obtain the correct NLS data to display to the user.
-	 
-	 @return The help string
-	 */
-	public String getHelp() {
-		StringBuffer help = new StringBuffer(1024);
-		addHeader(ConsoleMsg.CONSOLE_HELP_CONTROLLING_FRAMEWORK_HEADER, help);
-		addCommand("launch", ConsoleMsg.CONSOLE_HELP_LAUNCH_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("shutdown", ConsoleMsg.CONSOLE_HELP_SHUTDOWN_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("close", ConsoleMsg.CONSOLE_HELP_CLOSE_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("exit", ConsoleMsg.CONSOLE_HELP_EXIT_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("init", ConsoleMsg.CONSOLE_HELP_INIT_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("setprop", ConsoleMsg.CONSOLE_HELP_KEYVALUE_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_SETPROP_COMMAND_DESCRIPTION, help); //$NON-NLS-1$  
-		addHeader(ConsoleMsg.CONSOLE_HELP_CONTROLLING_BUNDLES_HEADER, help);
-		addCommand("install", ConsoleMsg.CONSOLE_HELP_INSTALL_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("uninstall", ConsoleMsg.CONSOLE_HELP_UNINSTALL_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("start", ConsoleMsg.CONSOLE_HELP_START_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("stop", ConsoleMsg.CONSOLE_HELP_STOP_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("refresh", ConsoleMsg.CONSOLE_HELP_REFRESH_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("update", ConsoleMsg.CONSOLE_HELP_UPDATE_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addHeader(ConsoleMsg.CONSOLE_HELP_DISPLAYING_STATUS_HEADER, help);
-		addCommand("status", ConsoleMsg.CONSOLE_HELP_STATE_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_STATUS_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("ss", ConsoleMsg.CONSOLE_HELP_STATE_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_SS_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("services", ConsoleMsg.CONSOLE_HELP_FILTER_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_SERVICES_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("packages", ConsoleMsg.CONSOLE_HELP_PACKAGES_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_PACKAGES_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("bundles", ConsoleMsg.CONSOLE_HELP_STATE_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_BUNDLES_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("bundle", ConsoleMsg.CONSOLE_HELP_IDLOCATION_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_BUNDLE_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("headers", ConsoleMsg.CONSOLE_HELP_IDLOCATION_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_HEADERS_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addHeader(ConsoleMsg.CONSOLE_HELP_EXTRAS_HEADER, help);
-		addCommand("exec", ConsoleMsg.CONSOLE_HELP_COMMAND_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_EXEC_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("fork", ConsoleMsg.CONSOLE_HELP_COMMAND_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_FORK_COMMAND_DESCRIPTION, help); //$NON-NLS-1$
-		addCommand("gc", ConsoleMsg.CONSOLE_HELP_GC_COMMAND_DESCRIPTION, help); //$NON-NLS-1$ 
-		addCommand("getprop ", ConsoleMsg.CONSOLE_HELP_GETPROP_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_GETPROP_COMMAND_DESCRIPTION, help);//$NON-NLS-1$
-		addHeader(ConsoleMsg.STARTLEVEL_HELP_HEADING, help);
-		addCommand("sl", ConsoleMsg.CONSOLE_HELP_OPTIONAL_IDLOCATION_ARGUMENT_DESCRIPTION, ConsoleMsg.STARTLEVEL_HELP_SL, help); //$NON-NLS-1$ 
-		addCommand("setfwsl", ConsoleMsg.STARTLEVEL_ARGUMENT_DESCRIPTION, ConsoleMsg.STARTLEVEL_HELP_SETFWSL, help); //$NON-NLS-1$ 
-		addCommand("setbsl", ConsoleMsg.STARTLEVEL_IDLOCATION_ARGUMENT_DESCRIPTION, ConsoleMsg.STARTLEVEL_HELP_SETBSL, help); //$NON-NLS-1$ 
-		addCommand("setibsl", ConsoleMsg.STARTLEVEL_ARGUMENT_DESCRIPTION, ConsoleMsg.STARTLEVEL_HELP_SETIBSL, help); //$NON-NLS-1$ 
-		addHeader(ConsoleMsg.CONSOLE_HELP_PROFILE_HEADING, help);
-		addCommand("profilelog", ConsoleMsg.CONSOLE_HELP_PROFILELOG_DESCRIPTION, help); //$NON-NLS-1$ 	
-		return help.toString();
-	}
-
-	/** Private helper method for getHelp.  Formats the help headers. */
-	private void addHeader(String header, StringBuffer help) {
-		help.append("---"); //$NON-NLS-1$
-		help.append(header);
-		help.append("---"); //$NON-NLS-1$
-		help.append(newline);
-	}
-
-	/** Private helper method for getHelp.  Formats the command descriptions. */
-	private void addCommand(String command, String description, StringBuffer help) {
-		help.append(tab);
-		help.append(command);
-		help.append(" - "); //$NON-NLS-1$
-		help.append(description);
-		help.append(newline);
-	}
-
-	/** Private helper method for getHelp.  Formats the command descriptions with command arguements. */
-	private void addCommand(String command, String parameters, String description, StringBuffer help) {
-		help.append(tab);
-		help.append(command);
-		help.append(" "); //$NON-NLS-1$
-		help.append(parameters);
-		help.append(" - "); //$NON-NLS-1$
-		help.append(description);
-		help.append(newline);
-	}
-
-	/**
-	 *  Handle the exit command.  Exit immediately (System.exit)
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _exit(CommandInterpreter intp) throws Exception {
-		intp.println();
-		System.exit(0);
-	}
-
-	/**
-	 *  Handle the launch command.  Start the OSGi framework.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _launch(CommandInterpreter intp) throws Exception {
-		framework.launch();
-	}
-
-	/**
-	 *  Handle the shutdown command.  Shutdown the OSGi framework.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _shutdown(CommandInterpreter intp) throws Exception {
-		framework.shutdown(FrameworkEvent.STOPPED);
-	}
-
-	/**
-	 *  Handle the start command's abbreviation.  Invoke _start()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _sta(CommandInterpreter intp) throws Exception {
-		_start(intp);
-	}
-
-	/**
-	 *  Handle the start command.  Start the specified bundle(s).
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _start(CommandInterpreter intp) throws Exception {
-		String nextArg = intp.nextArgument();
-		if (nextArg == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-		}
-		while (nextArg != null) {
-			AbstractBundle bundle = getBundleFromToken(intp, nextArg, true);
-			if (bundle != null) {
-				bundle.start();
-			}
-			nextArg = intp.nextArgument();
-		}
-	}
-
-	/**
-	 *  Handle the stop command's abbreviation.  Invoke _stop()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _sto(CommandInterpreter intp) throws Exception {
-		_stop(intp);
-	}
-
-	/**
-	 *  Handle the stop command.  Stop the specified bundle(s).
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _stop(CommandInterpreter intp) throws Exception {
-		String nextArg = intp.nextArgument();
-		if (nextArg == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-		}
-		while (nextArg != null) {
-			AbstractBundle bundle = getBundleFromToken(intp, nextArg, true);
-			if (bundle != null) {
-				bundle.stop();
-			}
-			nextArg = intp.nextArgument();
-		}
-	}
-
-	/**
-	 *  Handle the install command's abbreviation.  Invoke _install()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _i(CommandInterpreter intp) throws Exception {
-		_install(intp);
-	}
-
-	/**
-	 *  Handle the install command.  Install and optionally start bundle from the given URL\r\n"
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _install(CommandInterpreter intp) throws Exception {
-		String url = intp.nextArgument();
-		if (url == null) {
-			intp.println(ConsoleMsg.CONSOLE_NOTHING_TO_INSTALL_ERROR);
-		} else {
-			AbstractBundle bundle = (AbstractBundle) context.installBundle(url);
-			intp.print(ConsoleMsg.CONSOLE_BUNDLE_ID_MESSAGE);
-			intp.println(new Long(bundle.getBundleId()));
-
-			String nextArg = intp.nextArgument();
-			if (nextArg != null) {
-				String start = nextArg.toLowerCase();
-
-				if (matchCommand("start", start, 1)) { //$NON-NLS-1$
-					bundle.start();
-				}
-			}
-		}
-
-	}
-
-	private static boolean matchCommand(String command, String input, int minLength) {
-		if (minLength <= 0)
-			minLength = command.length();
-		int length = input.length();
-		if (minLength > length)
-			length = minLength;
-		return (command.regionMatches(0, input, 0, length));
-	}
-
-	/**
-	 *  Handle the update command's abbreviation.  Invoke _update()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _up(CommandInterpreter intp) throws Exception {
-		_update(intp);
-	}
-
-	/**
-	 *  Handle the update command.  Update the specified bundle(s).
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _update(CommandInterpreter intp) throws Exception {
-		String token = intp.nextArgument();
-		if (token == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-		}
-		while (token != null) {
-
-			if ("*".equals(token)) { //$NON-NLS-1$
-				AbstractBundle[] bundles = (AbstractBundle[]) context.getBundles();
-
-				int size = bundles.length;
-
-				if (size > 0) {
-					for (int i = 0; i < size; i++) {
-						AbstractBundle bundle = bundles[i];
-
-						if (bundle.getBundleId() != 0) {
-							try {
-								bundle.update();
-							} catch (BundleException e) {
-								intp.printStackTrace(e);
-							}
-						}
-					}
-				} else {
-					intp.println(ConsoleMsg.CONSOLE_NO_INSTALLED_BUNDLES_ERROR);
-				}
-			} else {
-				AbstractBundle bundle = getBundleFromToken(intp, token, true);
-				if (bundle != null) {
-					String source = intp.nextArgument();
-					try {
-						if (source != null) {
-							bundle.update(new URL(source).openStream());
-						} else {
-							bundle.update();
-						}
-					} catch (BundleException e) {
-						intp.printStackTrace(e);
-					}
-				}
-			}
-			token = intp.nextArgument();
-		}
-	}
-
-	/**
-	 *  Handle the uninstall command's abbreviation.  Invoke _uninstall()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _un(CommandInterpreter intp) throws Exception {
-		_uninstall(intp);
-	}
-
-	/**
-	 *  Handle the uninstall command.  Uninstall the specified bundle(s).
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _uninstall(CommandInterpreter intp) throws Exception {
-		String nextArg = intp.nextArgument();
-		if (nextArg == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-		}
-		while (nextArg != null) {
-			AbstractBundle bundle = getBundleFromToken(intp, nextArg, true);
-			if (bundle != null) {
-				bundle.uninstall();
-			}
-			nextArg = intp.nextArgument();
-		}
-	}
-
-	/**
-	 *  Handle the status command's abbreviation.  Invoke _status()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _s(CommandInterpreter intp) throws Exception {
-		_status(intp);
-	}
-
-	private Object[] processOption(CommandInterpreter intp) {
-		String option = intp.nextArgument();
-		String filteredName = null;
-		int stateFilter = -1;
-		if (option != null && option.equals("-s")) { //$NON-NLS-1$
-			String searchedState = intp.nextArgument();
-			if (searchedState == null)
-				searchedState = ""; //$NON-NLS-1$
-			StringTokenizer tokens = new StringTokenizer(searchedState, ","); //$NON-NLS-1$
-			while (tokens.hasMoreElements()) {
-				String desiredState = (String) tokens.nextElement();
-				Field match = null;
-				try {
-					match = Bundle.class.getField(desiredState.toUpperCase());
-					if (stateFilter == -1)
-						stateFilter = 0;
-					stateFilter |= match.getInt(match);
-				} catch (NoSuchFieldException e) {
-					intp.println(ConsoleMsg.CONSOLE_INVALID_INPUT + ": " + desiredState); //$NON-NLS-1$
-					return null;
-				} catch (IllegalAccessException e) {
-					intp.println(ConsoleMsg.CONSOLE_INVALID_INPUT + ": " + desiredState); //$NON-NLS-1$
-					return null;
-				}
-			}
-		} else {
-			filteredName = option;
-		}
-		String tmp = intp.nextArgument();
-		if (tmp != null)
-			filteredName = tmp;
-		return new Object[] {filteredName, new Integer(stateFilter)};
-	}
-
-	/**
-	 *  Handle the status command.  Display installed bundles and registered services.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _status(CommandInterpreter intp) throws Exception {
-		if (framework.isActive()) {
-			intp.println(ConsoleMsg.CONSOLE_FRAMEWORK_IS_LAUNCHED_MESSAGE);
-		} else {
-			intp.println(ConsoleMsg.CONSOLE_FRAMEWORK_IS_SHUTDOWN_MESSAGE);
-		}
-		intp.println();
-
-		Object[] options = processOption(intp);
-		if (options == null)
-			return;
-
-		AbstractBundle[] bundles = (AbstractBundle[]) context.getBundles();
-		int size = bundles.length;
-
-		if (size == 0) {
-			intp.println(ConsoleMsg.CONSOLE_NO_INSTALLED_BUNDLES_ERROR);
-			return;
-		}
-		intp.print(ConsoleMsg.CONSOLE_ID);
-		intp.print(tab);
-		intp.println(ConsoleMsg.CONSOLE_BUNDLE_LOCATION_MESSAGE);
-		intp.println(ConsoleMsg.CONSOLE_STATE_BUNDLE_FILE_NAME_HEADER);
-		for (int i = 0; i < size; i++) {
-			AbstractBundle bundle = bundles[i];
-			if (!match(bundle, (String) options[0], ((Integer) options[1]).intValue()))
-				continue;
-			intp.print(new Long(bundle.getBundleId()));
-			intp.print(tab);
-			intp.println(bundle.getLocation());
-			intp.print("  "); //$NON-NLS-1$
-			intp.print(getStateName(bundle));
-			intp.println(bundle.bundledata);
-		}
-
-		ServiceReference[] services = context.getServiceReferences(null, null);
-		if (services != null) {
-			intp.println(ConsoleMsg.CONSOLE_REGISTERED_SERVICES_MESSAGE);
-			size = services.length;
-			for (int i = 0; i < size; i++) {
-				intp.println(services[i]);
-			}
-		}
-	}
-
-	/**
-	 *  Handle the services command's abbreviation.  Invoke _services()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _se(CommandInterpreter intp) throws Exception {
-		_services(intp);
-	}
-
-	/**
-	 *  Handle the services command.  Display registered service details.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _services(CommandInterpreter intp) throws Exception {
-		String filter = null;
-
-		String nextArg = intp.nextArgument();
-		if (nextArg != null) {
-			StringBuffer buf = new StringBuffer();
-			while (nextArg != null) {
-				buf.append(' ');
-				buf.append(nextArg);
-				nextArg = intp.nextArgument();
-			}
-			filter = buf.toString();
-		}
-
-		ServiceReference[] services = context.getServiceReferences(null, filter);
-		if (services != null) {
-			int size = services.length;
-			if (size > 0) {
-				for (int j = 0; j < size; j++) {
-					ServiceReference service = services[j];
-					intp.println(service);
-					intp.print("  "); //$NON-NLS-1$
-					intp.print(ConsoleMsg.CONSOLE_REGISTERED_BY_BUNDLE_MESSAGE);
-					intp.print(" "); //$NON-NLS-1$
-					intp.println(service.getBundle());
-					Bundle[] users = service.getUsingBundles();
-					if (users != null) {
-						intp.print("  "); //$NON-NLS-1$
-						intp.println(ConsoleMsg.CONSOLE_BUNDLES_USING_SERVICE_MESSAGE);
-						for (int k = 0; k < users.length; k++) {
-							intp.print("    "); //$NON-NLS-1$
-							intp.println(users[k]);
-						}
-					} else {
-						intp.print("  "); //$NON-NLS-1$
-						intp.println(ConsoleMsg.CONSOLE_NO_BUNDLES_USING_SERVICE_MESSAGE);
-					}
-				}
-				return;
-			}
-		}
-		intp.println(ConsoleMsg.CONSOLE_NO_REGISTERED_SERVICES_MESSAGE);
-	}
-
-	/**
-	 *  Handle the packages command's abbreviation.  Invoke _packages()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _p(CommandInterpreter intp) throws Exception {
-		_packages(intp);
-	}
-
-	/**
-	 *  Handle the packages command.  Display imported/exported package details.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _packages(CommandInterpreter intp) throws Exception {
-		org.osgi.framework.Bundle bundle = null;
-
-		String token = intp.nextArgument();
-		if (token != null) {
-			bundle = getBundleFromToken(intp, token, false);
-		}
-
-		org.osgi.framework.ServiceReference packageAdminRef = context.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); //$NON-NLS-1$
-		if (packageAdminRef != null) {
-			org.osgi.service.packageadmin.PackageAdmin packageAdmin = (org.osgi.service.packageadmin.PackageAdmin) context.getService(packageAdminRef);
-			if (packageAdmin != null) {
-				try {
-					org.osgi.service.packageadmin.ExportedPackage[] packages = null;
-
-					if (token != null)
-						packages = packageAdmin.getExportedPackages(token);
-					if (packages == null)
-						packages = packageAdmin.getExportedPackages(bundle);
-
-					if (packages == null) {
-						intp.println(ConsoleMsg.CONSOLE_NO_EXPORTED_PACKAGES_MESSAGE);
-					} else {
-						for (int i = 0; i < packages.length; i++) {
-							org.osgi.service.packageadmin.ExportedPackage pkg = packages[i];
-							intp.print(pkg);
-
-							boolean removalPending = pkg.isRemovalPending();
-							if (removalPending) {
-								intp.print("("); //$NON-NLS-1$
-								intp.print(ConsoleMsg.CONSOLE_REMOVAL_PENDING_MESSAGE);
-								intp.println(")"); //$NON-NLS-1$
-							}
-
-							org.osgi.framework.Bundle exporter = pkg.getExportingBundle();
-							if (exporter != null) {
-								intp.print("<"); //$NON-NLS-1$
-								intp.print(exporter);
-								intp.println(">"); //$NON-NLS-1$
-
-								org.osgi.framework.Bundle[] importers = pkg.getImportingBundles();
-								for (int j = 0; j < importers.length; j++) {
-									intp.print("  "); //$NON-NLS-1$
-									intp.print(importers[j]);
-									intp.print(" "); //$NON-NLS-1$
-									intp.println(ConsoleMsg.CONSOLE_IMPORTS_MESSAGE);
-								}
-							} else {
-								intp.print("<"); //$NON-NLS-1$
-								intp.print(ConsoleMsg.CONSOLE_STALE_MESSAGE);
-								intp.println(">"); //$NON-NLS-1$
-							}
-
-						}
-					}
-				} finally {
-					context.ungetService(packageAdminRef);
-				}
-			}
-		} else {
-			intp.println(ConsoleMsg.CONSOLE_NO_EXPORTED_PACKAGES_NO_PACKAGE_ADMIN_MESSAGE);
-		}
-	}
-
-	/**
-	 *  Handle the bundles command.  Display details for all installed bundles.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _bundles(CommandInterpreter intp) throws Exception {
-		Object[] options = processOption(intp);
-		if (options == null)
-			return;
-
-		AbstractBundle[] bundles = (AbstractBundle[]) context.getBundles();
-		int size = bundles.length;
-
-		if (size == 0) {
-			intp.println(ConsoleMsg.CONSOLE_NO_INSTALLED_BUNDLES_ERROR);
-			return;
-		}
-
-		for (int i = 0; i < size; i++) {
-			AbstractBundle bundle = bundles[i];
-			if (!match(bundle, (String) options[0], ((Integer) options[1]).intValue()))
-				continue;
-			long id = bundle.getBundleId();
-			intp.println(bundle);
-			intp.print("  "); //$NON-NLS-1$
-			intp.print(NLS.bind(ConsoleMsg.CONSOLE_ID_MESSAGE, String.valueOf(id)));
-			intp.print(", "); //$NON-NLS-1$
-			intp.print(NLS.bind(ConsoleMsg.CONSOLE_STATUS_MESSAGE, getStateName(bundle)));
-			if (id != 0) {
-				File dataRoot = framework.getDataFile(bundle, ""); //$NON-NLS-1$
-
-				String root = (dataRoot == null) ? null : dataRoot.getAbsolutePath();
-
-				intp.print(NLS.bind(ConsoleMsg.CONSOLE_DATA_ROOT_MESSAGE, root));
-			} else {
-				intp.println();
-			}
-
-			ServiceReference[] services = bundle.getRegisteredServices();
-			if (services != null) {
-				intp.print("  "); //$NON-NLS-1$
-				intp.println(ConsoleMsg.CONSOLE_REGISTERED_SERVICES_MESSAGE);
-				for (int j = 0; j < services.length; j++) {
-					intp.print("    "); //$NON-NLS-1$
-					intp.println(services[j]);
-				}
-			} else {
-				intp.print("  "); //$NON-NLS-1$
-				intp.println(ConsoleMsg.CONSOLE_NO_REGISTERED_SERVICES_MESSAGE);
-			}
-
-			services = bundle.getServicesInUse();
-			if (services != null) {
-				intp.print("  "); //$NON-NLS-1$
-				intp.println(ConsoleMsg.CONSOLE_SERVICES_IN_USE_MESSAGE);
-				for (int j = 0; j < services.length; j++) {
-					intp.print("    "); //$NON-NLS-1$
-					intp.println(services[j]);
-				}
-			} else {
-				intp.print("  "); //$NON-NLS-1$
-				intp.println(ConsoleMsg.CONSOLE_NO_SERVICES_IN_USE_MESSAGE);
-			}
-		}
-	}
-
-	/**
-	 *  Handle the bundle command's abbreviation.  Invoke _bundle()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _b(CommandInterpreter intp) throws Exception {
-		_bundle(intp);
-	}
-
-	/**
-	 *  Handle the bundle command.  Display details for the specified bundle(s).
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _bundle(CommandInterpreter intp) throws Exception {
-		String nextArg = intp.nextArgument();
-		if (nextArg == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-		}
-		while (nextArg != null) {
-			AbstractBundle bundle = getBundleFromToken(intp, nextArg, true);
-			if (bundle != null) {
-				long id = bundle.getBundleId();
-				intp.println(bundle);
-				intp.print("  "); //$NON-NLS-1$
-				intp.print(NLS.bind(ConsoleMsg.CONSOLE_ID_MESSAGE, String.valueOf(id)));
-				intp.print(", "); //$NON-NLS-1$
-				intp.print(NLS.bind(ConsoleMsg.CONSOLE_STATUS_MESSAGE, getStateName(bundle)));
-				if (id != 0) {
-					File dataRoot = framework.getDataFile(bundle, ""); //$NON-NLS-1$
-
-					String root = (dataRoot == null) ? null : dataRoot.getAbsolutePath();
-
-					intp.print(NLS.bind(ConsoleMsg.CONSOLE_DATA_ROOT_MESSAGE, root));
-					intp.println();
-				} else {
-					intp.println();
-				}
-
-				ServiceReference[] services = bundle.getRegisteredServices();
-				if (services != null) {
-					intp.print("  "); //$NON-NLS-1$
-					intp.println(ConsoleMsg.CONSOLE_REGISTERED_SERVICES_MESSAGE);
-					for (int j = 0; j < services.length; j++) {
-						intp.print("    "); //$NON-NLS-1$
-						intp.println(services[j]);
-					}
-				} else {
-					intp.print("  "); //$NON-NLS-1$
-					intp.println(ConsoleMsg.CONSOLE_NO_REGISTERED_SERVICES_MESSAGE);
-				}
-
-				services = bundle.getServicesInUse();
-				if (services != null) {
-					intp.print("  "); //$NON-NLS-1$
-					intp.println(ConsoleMsg.CONSOLE_SERVICES_IN_USE_MESSAGE);
-					for (int j = 0; j < services.length; j++) {
-						intp.print("    "); //$NON-NLS-1$
-						intp.println(services[j]);
-					}
-				} else {
-					intp.print("  "); //$NON-NLS-1$
-					intp.println(ConsoleMsg.CONSOLE_NO_SERVICES_IN_USE_MESSAGE);
-				}
-
-				org.osgi.framework.ServiceReference packageAdminRef = context.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); //$NON-NLS-1$
-				if (packageAdminRef != null) {
-					BundleDescription desc = bundle.getBundleDescription();
-					if (desc != null) {
-						boolean title = true;
-						try {
-							ExportPackageDescription[] exports = desc.getExportPackages();
-							if (exports == null || exports.length == 0) {
-								intp.print("  "); //$NON-NLS-1$
-								intp.println(ConsoleMsg.CONSOLE_NO_EXPORTED_PACKAGES_MESSAGE);
-							} else {
-								title = true;
-
-								for (int i = 0; i < exports.length; i++) {
-									if (title) {
-										intp.print("  "); //$NON-NLS-1$
-										intp.println(ConsoleMsg.CONSOLE_EXPORTED_PACKAGES_MESSAGE);
-										title = false;
-									}
-									intp.print("    "); //$NON-NLS-1$
-									intp.print(exports[i].getName());
-									intp.print("; version=\""); //$NON-NLS-1$
-									intp.print(exports[i].getVersion());
-									intp.print("\""); //$NON-NLS-1$
-									if (desc.isRemovalPending()) {
-										intp.println(ConsoleMsg.CONSOLE_EXPORTED_REMOVAL_PENDING_MESSAGE);
-									} else {
-										intp.println(ConsoleMsg.CONSOLE_EXPORTED_MESSAGE);
-									}
-								}
-
-								if (title) {
-									intp.print("  "); //$NON-NLS-1$
-									intp.println(ConsoleMsg.CONSOLE_NO_EXPORTED_PACKAGES_MESSAGE);
-								}
-							}
-							title = true;
-							if (desc != null) {
-								ArrayList fragmentsImportPackages = new ArrayList();
-
-								// Get bundle' fragments imports
-								BundleDescription[] fragments = desc.getFragments();
-								for (int i = 0; i < fragments.length; i++) {
-									ImportPackageSpecification[] fragmentImports = fragments[i].getImportPackages();
-									for (int j = 0; j < fragmentImports.length; j++) {
-										fragmentsImportPackages.add(fragmentImports[j]);
-									}
-								}
-
-								// Get all bundle imports
-								ImportPackageSpecification[] importPackages;
-								if (fragmentsImportPackages.size() > 0) {
-									ImportPackageSpecification[] directImportPackages = desc.getImportPackages();
-									importPackages = new ImportPackageSpecification[directImportPackages.length + fragmentsImportPackages.size()];
-
-									for (int i = 0; i < directImportPackages.length; i++) {
-										importPackages[i] = directImportPackages[i];
-									}
-
-									int offset = directImportPackages.length;
-									for (int i = 0; i < fragmentsImportPackages.size(); i++) {
-										importPackages[offset + i] = (ImportPackageSpecification) fragmentsImportPackages.get(i);
-									}
-								} else {
-									importPackages = desc.getImportPackages();
-								}
-
-								// Get all resolved imports
-								ExportPackageDescription[] imports = null;
-								imports = desc.getContainingState().getStateHelper().getVisiblePackages(desc, StateHelper.VISIBLE_INCLUDE_EE_PACKAGES | StateHelper.VISIBLE_INCLUDE_ALL_HOST_WIRES);
-
-								// Get the unresolved optional and dynamic imports
-								ArrayList unresolvedImports = new ArrayList();
-
-								for (int i = 0; i < importPackages.length; i++) {
-									if (importPackages[i].getDirective(Constants.RESOLUTION_DIRECTIVE).equals(ImportPackageSpecification.RESOLUTION_OPTIONAL)) {
-										if (importPackages[i].getSupplier() == null) {
-											unresolvedImports.add(importPackages[i]);
-										}
-									} else if (importPackages[i].getDirective(org.osgi.framework.Constants.RESOLUTION_DIRECTIVE).equals(ImportPackageSpecification.RESOLUTION_DYNAMIC)) {
-										boolean isResolvable = false;
-
-										// Check if the dynamic import can be resolved by any of the wired imports, 
-										// and if not - add it to the list of unresolved imports
-										for (int j = 0; j < imports.length; j++) {
-											if (importPackages[i].isSatisfiedBy(imports[j])) {
-												isResolvable = true;
-											}
-										}
-
-										if (isResolvable == false) {
-											unresolvedImports.add(importPackages[i]);
-										}
-									}
-								}
-
-								title = printImportedPackages(imports, intp, title);
-
-								if (desc.isResolved() && (unresolvedImports.isEmpty() == false)) {
-									printUnwiredDynamicImports(unresolvedImports, intp);
-									title = false;
-								}
-							}
-
-							if (title) {
-								intp.print("  "); //$NON-NLS-1$
-								intp.println(ConsoleMsg.CONSOLE_NO_IMPORTED_PACKAGES_MESSAGE);
-							}
-
-							PackageAdmin packageAdmin = (PackageAdmin) context.getService(packageAdminRef);
-							if (packageAdmin != null) {
-								intp.print("  "); //$NON-NLS-1$
-								if ((packageAdmin.getBundleType(bundle) & PackageAdmin.BUNDLE_TYPE_FRAGMENT) > 0) {
-									org.osgi.framework.Bundle[] hosts = packageAdmin.getHosts(bundle);
-									if (hosts != null) {
-										intp.println(ConsoleMsg.CONSOLE_HOST_MESSAGE);
-										for (int i = 0; i < hosts.length; i++) {
-											intp.print("    "); //$NON-NLS-1$
-											intp.println(hosts[i]);
-										}
-									} else {
-										intp.println(ConsoleMsg.CONSOLE_NO_HOST_MESSAGE);
-									}
-								} else {
-									org.osgi.framework.Bundle[] fragments = packageAdmin.getFragments(bundle);
-									if (fragments != null) {
-										intp.println(ConsoleMsg.CONSOLE_FRAGMENT_MESSAGE);
-										for (int i = 0; i < fragments.length; i++) {
-											intp.print("    "); //$NON-NLS-1$
-											intp.println(fragments[i]);
-										}
-									} else {
-										intp.println(ConsoleMsg.CONSOLE_NO_FRAGMENT_MESSAGE);
-									}
-								}
-
-								RequiredBundle[] requiredBundles = packageAdmin.getRequiredBundles(null);
-								RequiredBundle requiredBundle = null;
-								if (requiredBundles != null) {
-									for (int i = 0; i < requiredBundles.length; i++) {
-										if (requiredBundles[i].getBundle() == bundle) {
-											requiredBundle = requiredBundles[i];
-											break;
-										}
-									}
-								}
-
-								if (requiredBundle == null) {
-									intp.print("  "); //$NON-NLS-1$
-									intp.println(ConsoleMsg.CONSOLE_NO_NAMED_CLASS_SPACES_MESSAGE);
-								} else {
-									intp.print("  "); //$NON-NLS-1$
-									intp.println(ConsoleMsg.CONSOLE_NAMED_CLASS_SPACE_MESSAGE);
-									intp.print("    "); //$NON-NLS-1$
-									intp.print(requiredBundle);
-									if (requiredBundle.isRemovalPending()) {
-										intp.println(ConsoleMsg.CONSOLE_REMOVAL_PENDING_MESSAGE);
-									} else {
-										intp.println(ConsoleMsg.CONSOLE_PROVIDED_MESSAGE);
-									}
-								}
-								title = true;
-								for (int i = 0; i < requiredBundles.length; i++) {
-									if (requiredBundles[i] == requiredBundle)
-										continue;
-
-									org.osgi.framework.Bundle[] depBundles = requiredBundles[i].getRequiringBundles();
-									if (depBundles == null)
-										continue;
-
-									for (int j = 0; j < depBundles.length; j++) {
-										if (depBundles[j] == bundle) {
-											if (title) {
-												intp.print("  "); //$NON-NLS-1$
-												intp.println(ConsoleMsg.CONSOLE_REQUIRED_BUNDLES_MESSAGE);
-												title = false;
-											}
-											intp.print("    "); //$NON-NLS-1$
-											intp.print(requiredBundles[i]);
-
-											org.osgi.framework.Bundle provider = requiredBundles[i].getBundle();
-											intp.print("<"); //$NON-NLS-1$
-											intp.print(provider);
-											intp.println(">"); //$NON-NLS-1$
-										}
-									}
-								}
-								if (title) {
-									intp.print("  "); //$NON-NLS-1$
-									intp.println(ConsoleMsg.CONSOLE_NO_REQUIRED_BUNDLES_MESSAGE);
-								}
-
-							}
-						} finally {
-							context.ungetService(packageAdminRef);
-						}
-					}
-				} else {
-					intp.print("  "); //$NON-NLS-1$
-					intp.println(ConsoleMsg.CONSOLE_NO_EXPORTED_PACKAGES_NO_PACKAGE_ADMIN_MESSAGE);
-				}
-
-				SecurityManager sm = System.getSecurityManager();
-				if (sm != null) {
-					ProtectionDomain domain = bundle.getProtectionDomain();
-
-					intp.println(domain);
-				}
-			}
-			nextArg = intp.nextArgument();
-		}
-	}
-
-	private boolean printImportedPackages(ExportPackageDescription[] importedPkgs, CommandInterpreter intp, boolean title) {
-		for (int i = 0; i < importedPkgs.length; i++) {
-			if (title) {
-				intp.print("  "); //$NON-NLS-1$
-				intp.println(ConsoleMsg.CONSOLE_IMPORTED_PACKAGES_MESSAGE);
-				title = false;
-			}
-			intp.print("    "); //$NON-NLS-1$
-			intp.print(importedPkgs[i].getName());
-			intp.print("; version=\""); //$NON-NLS-1$
-			intp.print(importedPkgs[i].getVersion());
-			intp.print("\""); //$NON-NLS-1$
-			Bundle exporter = context.getBundle(importedPkgs[i].getSupplier().getBundleId());
-			if (exporter != null) {
-				intp.print("<"); //$NON-NLS-1$
-				intp.print(exporter);
-				intp.println(">"); //$NON-NLS-1$
-			} else {
-				intp.print("<"); //$NON-NLS-1$
-				intp.print(ConsoleMsg.CONSOLE_STALE_MESSAGE);
-				intp.println(">"); //$NON-NLS-1$
-			}
-		}
-		return title;
-	}
-
-	private void printUnwiredDynamicImports(ArrayList dynamicImports, CommandInterpreter intp) {
-		for (int i = 0; i < dynamicImports.size(); i++) {
-			ImportPackageSpecification importPackage = (ImportPackageSpecification) dynamicImports.get(i);
-			intp.print("    "); //$NON-NLS-1$
-			intp.print(importPackage.getName());
-			intp.print("; version=\""); //$NON-NLS-1$
-			intp.print(importPackage.getVersionRange());
-			intp.print("\""); //$NON-NLS-1$
-			intp.print("<"); //$NON-NLS-1$
-			intp.print("unwired"); //$NON-NLS-1$
-			intp.print(">"); //$NON-NLS-1$
-			intp.print("<"); //$NON-NLS-1$
-			intp.print(importPackage.getDirective(org.osgi.framework.Constants.RESOLUTION_DIRECTIVE));
-			intp.println(">"); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 *  Handle the gc command.  Perform a garbage collection.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _gc(CommandInterpreter intp) throws Exception {
-		long before = Runtime.getRuntime().freeMemory();
-
-		/* Let the finilizer finish its work and remove objects from its queue */
-		System.gc(); /* asyncronous garbage collector might already run */
-		System.gc(); /* to make sure it does a full gc call it twice */
-		System.runFinalization();
-		try {
-			Thread.sleep(100);
-		} catch (InterruptedException e) {
-			// do nothing
-		}
-
-		long after = Runtime.getRuntime().freeMemory();
-		intp.print(ConsoleMsg.CONSOLE_TOTAL_MEMORY_MESSAGE);
-		intp.println(String.valueOf(Runtime.getRuntime().totalMemory()));
-		intp.print(ConsoleMsg.CONSOLE_FREE_MEMORY_BEFORE_GARBAGE_COLLECTION_MESSAGE);
-		intp.println(String.valueOf(before));
-		intp.print(ConsoleMsg.CONSOLE_FREE_MEMORY_AFTER_GARBAGE_COLLECTION_MESSAGE);
-		intp.println(String.valueOf(after));
-		intp.print(ConsoleMsg.CONSOLE_MEMORY_GAINED_WITH_GARBAGE_COLLECTION_MESSAGE);
-		intp.println(String.valueOf(after - before));
-	}
-
-	/**
-	 *  Handle the init command.  Uninstall all bundles.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _init(CommandInterpreter intp) throws Exception {
-		if (framework.isActive()) {
-			intp.print(newline);
-			intp.println(ConsoleMsg.CONSOLE_FRAMEWORK_LAUNCHED_PLEASE_SHUTDOWN_MESSAGE);
-			return;
-		}
-
-		AbstractBundle[] bundles = (AbstractBundle[]) context.getBundles();
-
-		int size = bundles.length;
-
-		if (size > 0) {
-			for (int i = 0; i < size; i++) {
-				AbstractBundle bundle = bundles[i];
-
-				if (bundle.getBundleId() != 0) {
-					try {
-						bundle.uninstall();
-					} catch (BundleException e) {
-						intp.printStackTrace(e);
-					}
-				}
-			}
-		} else {
-			intp.println(ConsoleMsg.CONSOLE_NO_INSTALLED_BUNDLES_ERROR);
-		}
-		if (securityAdmin != null) {
-			// clear the permissions from permission admin
-			securityAdmin.setDefaultPermissions(null);
-			String[] permLocations = securityAdmin.getLocations();
-			if (permLocations != null)
-				for (int i = 0; i < permLocations.length; i++)
-					securityAdmin.setPermissions(permLocations[i], null);
-			ConditionalPermissionUpdate update = securityAdmin.newConditionalPermissionUpdate();
-			update.getConditionalPermissionInfos().clear();
-			update.commit();
-		}
-		// clear the permissions from conditional permission admin
-		if (securityAdmin != null)
-			for (Enumeration infos = securityAdmin.getConditionalPermissionInfos(); infos.hasMoreElements();)
-				((ConditionalPermissionInfo) infos.nextElement()).delete();
-	}
-
-	/**
-	 *  Handle the close command.  Shutdown and exit.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _close(CommandInterpreter intp) throws Exception {
-		intp.println();
-		framework.close();
-		System.exit(0);
-	}
-
-	/**
-	 *  Handle the refresh command's abbreviation.  Invoke _refresh()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _r(CommandInterpreter intp) throws Exception {
-		_refresh(intp);
-	}
-
-	/**
-	 *  Handle the refresh command.  Refresh the packages of the specified bundles.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _refresh(CommandInterpreter intp) throws Exception {
-		org.osgi.framework.ServiceReference packageAdminRef = context.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); //$NON-NLS-1$
-		if (packageAdminRef != null) {
-			org.osgi.service.packageadmin.PackageAdmin packageAdmin = (org.osgi.service.packageadmin.PackageAdmin) context.getService(packageAdminRef);
-			if (packageAdmin != null) {
-				try {
-					AbstractBundle[] refresh = null;
-
-					String token = intp.nextArgument();
-					if (token != null) {
-						Vector bundles = new Vector();
-
-						while (token != null) {
-							AbstractBundle bundle = getBundleFromToken(intp, token, true);
-
-							if (bundle != null) {
-								bundles.addElement(bundle);
-							}
-							token = intp.nextArgument();
-						}
-
-						int size = bundles.size();
-
-						if (size == 0) {
-							intp.println(ConsoleMsg.CONSOLE_INVALID_BUNDLE_SPECIFICATION_ERROR);
-							return;
-						}
-
-						refresh = new AbstractBundle[size];
-						bundles.copyInto(refresh);
-					}
-
-					packageAdmin.refreshPackages(refresh);
-				} finally {
-					context.ungetService(packageAdminRef);
-				}
-			}
-		} else {
-			intp.println(ConsoleMsg.CONSOLE_CAN_NOT_REFRESH_NO_PACKAGE_ADMIN_ERROR);
-		}
-	}
-
-	/**
-	 * Executes the given system command in a separate system process
-	 * and waits for it to finish.
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _exec(CommandInterpreter intp) throws Exception {
-		String command = intp.nextArgument();
-		if (command == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_COMMAND_SPECIFIED_ERROR);
-			return;
-		}
-
-		Process p = Runtime.getRuntime().exec(command);
-
-		intp.println(NLS.bind(ConsoleMsg.CONSOLE_STARTED_IN_MESSAGE, command, String.valueOf(p)));
-		int result = p.waitFor();
-		intp.println(NLS.bind(ConsoleMsg.CONSOLE_EXECUTED_RESULT_CODE_MESSAGE, command, String.valueOf(result)));
-	}
-
-	/**
-	 * Executes the given system command in a separate system process.  It does
-	 * not wait for a result.
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _fork(CommandInterpreter intp) throws Exception {
-		String command = intp.nextArgument();
-		if (command == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_COMMAND_SPECIFIED_ERROR);
-			return;
-		}
-
-		Process p = Runtime.getRuntime().exec(command);
-		intp.println(NLS.bind(ConsoleMsg.CONSOLE_STARTED_IN_MESSAGE, command, String.valueOf(p)));
-	}
-
-	/**
-	 * Handle the headers command's abbreviation.  Invoke _headers()
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _h(CommandInterpreter intp) throws Exception {
-		_headers(intp);
-	}
-
-	/**
-	 * Handle the headers command.  Display headers for the specified bundle(s).
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _headers(CommandInterpreter intp) throws Exception {
-
-		String nextArg = intp.nextArgument();
-		if (nextArg == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-		}
-		while (nextArg != null) {
-			AbstractBundle bundle = getBundleFromToken(intp, nextArg, true);
-			if (bundle != null) {
-				intp.printDictionary(bundle.getHeaders(), ConsoleMsg.CONSOLE_BUNDLE_HEADERS_TITLE);
-			}
-			nextArg = intp.nextArgument();
-		}
-	}
-
-	/**
-	 * Handles the props command's abbreviation.  Invokes _props()
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _pr(CommandInterpreter intp) throws Exception {
-		_props(intp);
-	}
-
-	/**
-	 * Handles the _props command.  Prints the system properties sorted.
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _props(CommandInterpreter intp) throws Exception {
-		intp.printDictionary(FrameworkProperties.getProperties(), ConsoleMsg.CONSOLE_SYSTEM_PROPERTIES_TITLE);
-	}
-
-	/**
-	 * Handles the setprop command's abbreviation.  Invokes _setprop()
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _setp(CommandInterpreter intp) throws Exception {
-		_setprop(intp);
-	}
-
-	/**
-	 * Handles the setprop command.  Sets the CDS property in the given argument.
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _setprop(CommandInterpreter intp) throws Exception {
-		String argument = intp.nextArgument();
-		if (argument == null) {
-			intp.println(ConsoleMsg.CONSOLE_NO_PARAMETERS_SPECIFIED_TITLE);
-			_props(intp);
-		} else {
-			InputStream in = new ByteArrayInputStream(argument.getBytes());
-			try {
-				Properties sysprops = FrameworkProperties.getProperties();
-				Properties newprops = new Properties();
-				newprops.load(in);
-				intp.println(ConsoleMsg.CONSOLE_SETTING_PROPERTIES_TITLE);
-				Enumeration keys = newprops.propertyNames();
-				while (keys.hasMoreElements()) {
-					String key = (String) keys.nextElement();
-					String value = (String) newprops.get(key);
-					sysprops.put(key, value);
-					intp.println(tab + key + " = " + value); //$NON-NLS-1$
-				}
-			} catch (IOException e) {
-				// ignore
-			} finally {
-				try {
-					in.close();
-				} catch (IOException e) {
-					// ignore
-				}
-			}
-		}
-	}
-
-	/**
-	 * Prints the short version of the status.
-	 * For the long version use "status".
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _ss(CommandInterpreter intp) throws Exception {
-		if (framework.isActive()) {
-			intp.println();
-			intp.println(ConsoleMsg.CONSOLE_FRAMEWORK_IS_LAUNCHED_MESSAGE);
-		} else {
-			intp.println();
-			intp.println(ConsoleMsg.CONSOLE_FRAMEWORK_IS_SHUTDOWN_MESSAGE);
-		}
-
-		Object[] options = processOption(intp);
-		if (options == null)
-			return;
-
-		AbstractBundle[] bundles = (AbstractBundle[]) context.getBundles();
-		if (bundles.length == 0) {
-			intp.println(ConsoleMsg.CONSOLE_NO_INSTALLED_BUNDLES_ERROR);
-		} else {
-			intp.print(newline);
-			intp.print(ConsoleMsg.CONSOLE_ID);
-			intp.print(tab);
-			intp.println(ConsoleMsg.CONSOLE_STATE_BUNDLE_TITLE);
-			for (int i = 0; i < bundles.length; i++) {
-				AbstractBundle b = bundles[i];
-				if (!match(b, (String) options[0], ((Integer) options[1]).intValue()))
-					continue;
-				String label = b.getSymbolicName();
-				if (label == null || label.length() == 0)
-					label = b.toString();
-				else
-					label = label + "_" + b.getVersion(); //$NON-NLS-1$
-				intp.println(b.getBundleId() + "\t" + getStateName(b) + label); //$NON-NLS-1$ 
-				if (b.isFragment()) {
-					Bundle[] hosts = b.getHosts();
-					if (hosts != null)
-						for (int j = 0; j < hosts.length; j++)
-							intp.println("\t            Master=" + hosts[j].getBundleId()); //$NON-NLS-1$
-				} else {
-					Bundle[] fragments = b.getFragments();
-					if (fragments != null) {
-						intp.print("\t            Fragments="); //$NON-NLS-1$
-						for (int f = 0; f < fragments.length; f++) {
-							AbstractBundle fragment = (AbstractBundle) fragments[f];
-							intp.print((f > 0 ? ", " : "") + fragment.getBundleId()); //$NON-NLS-1$ //$NON-NLS-2$
-						}
-						intp.println();
-					}
-				}
-			}
-		}
-	}
-
-	private boolean match(Bundle toFilter, String searchedName, int searchedState) {
-		if ((toFilter.getState() & searchedState) == 0) {
-			return false;
-		}
-		if (searchedName != null && toFilter.getSymbolicName() != null && toFilter.getSymbolicName().indexOf(searchedName) == -1) {
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Handles the threads command abbreviation.  Invokes _threads().
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _t(CommandInterpreter intp) throws Exception {
-		_threads(intp);
-	}
-
-	/**
-	 * Prints the information about the currently running threads
-	 * in the embedded system.
-	 *
-	 * @param intp A CommandInterpreter object containing the command
-	 * and it's arguments.
-	 */
-	public void _threads(CommandInterpreter intp) throws Exception {
-
-		ThreadGroup[] threadGroups = getThreadGroups();
-		Util.sortByString(threadGroups);
-
-		ThreadGroup tg = getTopThreadGroup();
-		Thread[] threads = new Thread[tg.activeCount()];
-		int count = tg.enumerate(threads, true);
-		Util.sortByString(threads);
-
-		StringBuffer sb = new StringBuffer(120);
-		intp.println();
-		intp.println(ConsoleMsg.CONSOLE_THREADGROUP_TITLE);
-		for (int i = 0; i < threadGroups.length; i++) {
-			tg = threadGroups[i];
-			int all = tg.activeCount(); //tg.allThreadsCount();
-			int local = tg.enumerate(new Thread[all], false); //tg.threadsCount();
-			ThreadGroup p = tg.getParent();
-			String parent = (p == null) ? "-none-" : p.getName(); //$NON-NLS-1$
-			sb.setLength(0);
-			sb.append(Util.toString(simpleClassName(tg), 18)).append(" ").append(Util.toString(tg.getName(), 21)).append(" ").append(Util.toString(parent, 16)).append(Util.toString(new Integer(tg.getMaxPriority()), 3)).append(Util.toString(new Integer(local), 4)).append("/").append(Util.toString(String.valueOf(all), 6)); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			intp.println(sb.toString());
-		}
-		intp.print(newline);
-		intp.println(ConsoleMsg.CONSOLE_THREADTYPE_TITLE);
-		for (int j = 0; j < count; j++) {
-			Thread t = threads[j];
-			if (t != null) {
-				sb.setLength(0);
-				sb.append(Util.toString(simpleClassName(t), 18)).append(" ").append(Util.toString(t.getName(), 21)).append(" ").append(Util.toString(t.getThreadGroup().getName(), 16)).append(Util.toString(new Integer(t.getPriority()), 3)); //$NON-NLS-1$ //$NON-NLS-2$
-				if (t.isDaemon())
-					sb.append(" [daemon]"); //$NON-NLS-1$
-				intp.println(sb.toString());
-			}
-		}
-	}
-
-	/**
-	 * Handles the sl (startlevel) command. 
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _sl(CommandInterpreter intp) throws Exception {
-		if (isStartLevelSvcPresent(intp)) {
-			org.osgi.framework.Bundle bundle = null;
-			String token = intp.nextArgument();
-			int value = 0;
-			if (token != null) {
-				bundle = getBundleFromToken(intp, token, true);
-				if (bundle == null) {
-					return;
-				}
-			}
-			if (bundle == null) { // must want framework startlevel
-				value = slImpl.getStartLevel();
-				intp.println(NLS.bind(ConsoleMsg.STARTLEVEL_FRAMEWORK_ACTIVE_STARTLEVEL, String.valueOf(value)));
-			} else { // must want bundle startlevel
-				value = slImpl.getBundleStartLevel(bundle);
-				intp.println(NLS.bind(ConsoleMsg.STARTLEVEL_BUNDLE_STARTLEVEL, new Long(bundle.getBundleId()), new Integer(value)));
-			}
-		}
-	}
-
-	/**
-	 * Handles the setfwsl (set framework startlevel) command. 
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _setfwsl(CommandInterpreter intp) throws Exception {
-		if (isStartLevelSvcPresent(intp)) {
-			int value = 0;
-			String token = intp.nextArgument();
-			if (token == null) {
-				intp.println(ConsoleMsg.STARTLEVEL_NO_STARTLEVEL_GIVEN);
-				value = slImpl.getStartLevel();
-				intp.println(NLS.bind(ConsoleMsg.STARTLEVEL_FRAMEWORK_ACTIVE_STARTLEVEL, String.valueOf(value)));
-			} else {
-				value = this.getStartLevelFromToken(intp, token);
-				if (value > 0) {
-					try {
-						slImpl.setStartLevel(value);
-						intp.println(NLS.bind(ConsoleMsg.STARTLEVEL_FRAMEWORK_ACTIVE_STARTLEVEL, String.valueOf(value)));
-					} catch (IllegalArgumentException e) {
-						intp.println(e.getMessage());
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Handles the setbsl (set bundle startlevel) command. 
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _setbsl(CommandInterpreter intp) throws Exception {
-		if (isStartLevelSvcPresent(intp)) {
-			String token;
-			AbstractBundle bundle = null;
-			token = intp.nextArgument();
-			if (token == null) {
-				intp.println(ConsoleMsg.STARTLEVEL_NO_STARTLEVEL_OR_BUNDLE_GIVEN);
-				return;
-			}
-
-			int newSL = this.getStartLevelFromToken(intp, token);
-
-			token = intp.nextArgument();
-			if (token == null) {
-				intp.println(ConsoleMsg.STARTLEVEL_NO_STARTLEVEL_OR_BUNDLE_GIVEN);
-				return;
-			}
-			while (token != null) {
-				bundle = getBundleFromToken(intp, token, true);
-				if (bundle != null) {
-					try {
-						slImpl.setBundleStartLevel(bundle, newSL);
-						intp.println(NLS.bind(ConsoleMsg.STARTLEVEL_BUNDLE_STARTLEVEL, new Long(bundle.getBundleId()), new Integer(newSL)));
-					} catch (IllegalArgumentException e) {
-						intp.println(e.getMessage());
-					}
-				}
-				token = intp.nextArgument();
-			}
-		}
-	}
-
-	/**
-	 * Handles the setibsl (set initial bundle startlevel) command. 
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _setibsl(CommandInterpreter intp) throws Exception {
-		if (isStartLevelSvcPresent(intp)) {
-			int value = 0;
-			String token = intp.nextArgument();
-			if (token == null) {
-				intp.println(ConsoleMsg.STARTLEVEL_NO_STARTLEVEL_GIVEN);
-				value = slImpl.getInitialBundleStartLevel();
-				intp.println(NLS.bind(ConsoleMsg.STARTLEVEL_INITIAL_BUNDLE_STARTLEVEL, String.valueOf(value)));
-			} else {
-				value = this.getStartLevelFromToken(intp, token);
-				if (value > 0) {
-					try {
-						slImpl.setInitialBundleStartLevel(value);
-						intp.println(NLS.bind(ConsoleMsg.STARTLEVEL_INITIAL_BUNDLE_STARTLEVEL, String.valueOf(value)));
-					} catch (IllegalArgumentException e) {
-						intp.println(e.getMessage());
-					}
-				}
-			}
-		}
-	}
-
-	public void _requiredBundles(CommandInterpreter intp) {
-		_classSpaces(intp);
-	}
-
-	public void _classSpaces(CommandInterpreter intp) {
-
-		String token = intp.nextArgument();
-
-		org.osgi.framework.ServiceReference packageAdminRef = context.getServiceReference("org.osgi.service.packageadmin.PackageAdmin"); //$NON-NLS-1$
-		if (packageAdminRef != null) {
-			org.osgi.service.packageadmin.PackageAdmin packageAdmin = (org.osgi.service.packageadmin.PackageAdmin) context.getService(packageAdminRef);
-			if (packageAdmin != null) {
-				try {
-					org.osgi.service.packageadmin.RequiredBundle[] symBundles = null;
-
-					symBundles = packageAdmin.getRequiredBundles(token);
-
-					if (symBundles == null) {
-						intp.println(ConsoleMsg.CONSOLE_NO_NAMED_CLASS_SPACES_MESSAGE);
-					} else {
-						for (int i = 0; i < symBundles.length; i++) {
-							org.osgi.service.packageadmin.RequiredBundle symBundle = symBundles[i];
-							intp.print(symBundle);
-
-							boolean removalPending = symBundle.isRemovalPending();
-							if (removalPending) {
-								intp.print("("); //$NON-NLS-1$
-								intp.print(ConsoleMsg.CONSOLE_REMOVAL_PENDING_MESSAGE);
-								intp.println(")"); //$NON-NLS-1$
-							}
-
-							org.osgi.framework.Bundle provider = symBundle.getBundle();
-							if (provider != null) {
-								intp.print("<"); //$NON-NLS-1$
-								intp.print(provider);
-								intp.println(">"); //$NON-NLS-1$
-
-								org.osgi.framework.Bundle[] requiring = symBundle.getRequiringBundles();
-								if (requiring != null)
-									for (int j = 0; j < requiring.length; j++) {
-										intp.print("  "); //$NON-NLS-1$
-										intp.print(requiring[j]);
-										intp.print(" "); //$NON-NLS-1$
-										intp.println(ConsoleMsg.CONSOLE_REQUIRES_MESSAGE);
-									}
-							} else {
-								intp.print("<"); //$NON-NLS-1$
-								intp.print(ConsoleMsg.CONSOLE_STALE_MESSAGE);
-								intp.println(">"); //$NON-NLS-1$
-							}
-
-						}
-					}
-				} finally {
-					context.ungetService(packageAdminRef);
-				}
-			}
-		} else {
-			intp.println(ConsoleMsg.CONSOLE_NO_EXPORTED_PACKAGES_NO_PACKAGE_ADMIN_MESSAGE);
-		}
-	}
-
-	/**
-	 * Handles the profilelog command. 
-	 *
-	 * @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _profilelog(CommandInterpreter intp) throws Exception {
-		intp.println(Profile.getProfileLog());
-	}
-
-	public void _getPackages(CommandInterpreter intp) {
-
-		String nextArg = intp.nextArgument();
-		if (nextArg == null)
-			return;
-		AbstractBundle bundle = getBundleFromToken(intp, nextArg, true);
-		ServiceReference ref = context.getServiceReference("org.eclipse.osgi.service.resolver.PlatformAdmin"); //$NON-NLS-1$
-		if (ref == null)
-			return;
-		PlatformAdmin platformAdmin = (PlatformAdmin) context.getService(ref);
-		try {
-			ExportPackageDescription[] exports = platformAdmin.getStateHelper().getVisiblePackages(bundle.getBundleDescription(), StateHelper.VISIBLE_INCLUDE_EE_PACKAGES | StateHelper.VISIBLE_INCLUDE_ALL_HOST_WIRES);
-			for (int i = 0; i < exports.length; i++) {
-				intp.println(exports[i] + ": " + platformAdmin.getStateHelper().getAccessCode(bundle.getBundleDescription(), exports[i])); //$NON-NLS-1$
-			}
-		} finally {
-			context.ungetService(ref);
-		}
-	}
-
-	/**
-	 * Checks for the presence of the StartLevel Service.  Outputs a message if it is not present.
-	 * @param intp The CommandInterpreter object to be used to write to the console
-	 * @return true or false if service is present or not
-	 */
-	protected boolean isStartLevelSvcPresent(CommandInterpreter intp) {
-		boolean retval = false;
-		org.osgi.framework.ServiceReference slSvcRef = context.getServiceReference("org.osgi.service.startlevel.StartLevel"); //$NON-NLS-1$
-		if (slSvcRef != null) {
-			org.osgi.service.startlevel.StartLevel slSvc = (org.osgi.service.startlevel.StartLevel) context.getService(slSvcRef);
-			if (slSvc != null) {
-				retval = true;
-			}
-		} else {
-			intp.println(ConsoleMsg.CONSOLE_CAN_NOT_USE_STARTLEVEL_NO_STARTLEVEL_SVC_ERROR);
-		}
-		return retval;
-	}
-
-	/**
-	 *  Given a number or a token representing a bundle symbolic name or bundle location,
-	 *  retrieve the Bundle object with that id.  The bundle symbolic name token is parsed as
-	 *  symbolicname[@version]
-	 *  
-	 *	@param intp The CommandInterpreter
-	 *  @param token A string containing a potential bundle it
-	 *  @param error A boolean indicating whether or not to output a message
-	 *  @return The requested Bundle object
-	 */
-	protected AbstractBundle getBundleFromToken(CommandInterpreter intp, String token, boolean error) {
-		AbstractBundle bundle = null;
-		try {
-			long id = Long.parseLong(token);
-			bundle = (AbstractBundle) context.getBundle(id);
-		} catch (NumberFormatException nfe) {
-
-			// if not found, assume token is either symbolic name@version, or location
-			String symbolicName = token;
-			Version version = null;
-
-			// check for @ -- this may separate either the version string, or be part of the
-			// location
-			int ix = token.indexOf("@"); //$NON-NLS-1$
-			if (ix != -1) {
-				if ((ix + 1) != token.length()) {
-					try {
-						// if the version parses, then use the token prior to @ as a symbolic name
-						version = Version.parseVersion(token.substring(ix + 1, token.length()));
-						symbolicName = token.substring(0, ix);
-					} catch (IllegalArgumentException e) {
-						// version doesn't parse, assume token is symbolic name without version, or location
-					}
-				}
-			}
-
-			Bundle[] bundles = context.getBundles();
-			for (int i = 0, n = bundles.length; i < n; i++) {
-				AbstractBundle b = (AbstractBundle) bundles[i];
-				// if symbolicName matches, then matches if there is no version specific on command, or the version matches
-				// if there is no version specified on command, pick first matching bundle
-				if ((symbolicName.equals(b.getSymbolicName()) && (version == null || version.equals(b.getVersion()))) || token.equals(b.getLocation())) {
-					bundle = b;
-					break;
-				}
-			}
-		}
-
-		if ((bundle == null) && error) {
-			intp.println(NLS.bind(ConsoleMsg.CONSOLE_CANNOT_FIND_BUNDLE_ERROR, token));
-		}
-
-		return (bundle);
-	}
-
-	/**
-	 *  Given a string containing a startlevel value, validate it and convert it to an int
-	 * 
-	 *  @param intp A CommandInterpreter object used for printing out error messages
-	 *  @param value A string containing a potential startlevel
-	 *  @return The start level or an int <0 if it was invalid
-	 */
-	protected int getStartLevelFromToken(CommandInterpreter intp, String value) {
-		int retval = -1;
-		try {
-			retval = Integer.parseInt(value);
-			if (Integer.parseInt(value) <= 0) {
-				intp.println(ConsoleMsg.STARTLEVEL_POSITIVE_INTEGER);
-			}
-		} catch (NumberFormatException nfe) {
-			intp.println(ConsoleMsg.STARTLEVEL_POSITIVE_INTEGER);
-		}
-		return retval;
-	}
-
-	/**
-	 *  Given a bundle, return the string describing that bundle's state.
-	 *
-	 *  @param bundle A bundle to return the state of
-	 *  @return A String describing the state
-	 */
-	protected String getStateName(Bundle bundle) {
-		int state = bundle.getState();
-		switch (state) {
-			case Bundle.UNINSTALLED :
-				return "UNINSTALLED "; //$NON-NLS-1$
-
-			case Bundle.INSTALLED :
-				if (isDisabled(bundle)) {
-					return "<DISABLED>  "; //$NON-NLS-1$	
-				}
-				return "INSTALLED   "; //$NON-NLS-1$
-
-			case Bundle.RESOLVED :
-				return "RESOLVED    "; //$NON-NLS-1$
-
-			case Bundle.STARTING :
-				synchronized (lazyActivation) {
-					if (lazyActivation.contains(bundle)) {
-						return "<<LAZY>>    "; //$NON-NLS-1$
-					}
-					return "STARTING    "; //$NON-NLS-1$
-				}
-
-			case Bundle.STOPPING :
-				return "STOPPING    "; //$NON-NLS-1$
-
-			case Bundle.ACTIVE :
-				return "ACTIVE      "; //$NON-NLS-1$
-
-			default :
-				return Integer.toHexString(state);
-		}
-	}
-
-	private boolean isDisabled(Bundle bundle) {
-		boolean disabled = false;
-		ServiceReference platformAdminRef = null;
-		try {
-			platformAdminRef = context.getServiceReference(PlatformAdmin.class.getName());
-			if (platformAdminRef != null) {
-				PlatformAdmin platAdmin = (PlatformAdmin) context.getService(platformAdminRef);
-				if (platAdmin != null) {
-					State state = platAdmin.getState(false);
-					BundleDescription bundleDesc = state.getBundle(bundle.getBundleId());
-					DisabledInfo[] disabledInfos = state.getDisabledInfos(bundleDesc);
-					if ((disabledInfos != null) && (disabledInfos.length != 0)) {
-						disabled = true;
-					}
-				}
-			}
-		} finally {
-			if (platformAdminRef != null)
-				context.ungetService(platformAdminRef);
-		}
-		return disabled;
-	}
-
-	/**
-	 * Answers all thread groups in the system.
-	 *
-	 * @return	An array of all thread groups.
-	 */
-	protected ThreadGroup[] getThreadGroups() {
-		ThreadGroup tg = getTopThreadGroup();
-		ThreadGroup[] groups = new ThreadGroup[tg.activeGroupCount()];
-		int count = tg.enumerate(groups, true);
-		if (count == groups.length) {
-			return groups;
-		}
-		// get rid of null entries
-		ThreadGroup[] ngroups = new ThreadGroup[count];
-		System.arraycopy(groups, 0, ngroups, 0, count);
-		return ngroups;
-	}
-
-	/**
-	 * Answers the top level group of the current thread.
-	 * <p>
-	 * It is the 'system' or 'main' thread group under
-	 * which all 'user' thread groups are allocated.
-	 *
-	 * @return	The parent of all user thread groups.
-	 */
-	protected ThreadGroup getTopThreadGroup() {
-		ThreadGroup topGroup = Thread.currentThread().getThreadGroup();
-		if (topGroup != null) {
-			while (topGroup.getParent() != null) {
-				topGroup = topGroup.getParent();
-			}
-		}
-		return topGroup;
-	}
-
-	/**
-	 * Returns the simple class name of an object.
-	 *
-	 * @param o The object for which a class name is requested
-	 * @return	The simple class name.
-	 */
-	public String simpleClassName(Object o) {
-		java.util.StringTokenizer t = new java.util.StringTokenizer(o.getClass().getName(), "."); //$NON-NLS-1$
-		int ct = t.countTokens();
-		for (int i = 1; i < ct; i++) {
-			t.nextToken();
-		}
-		return t.nextToken();
-	}
-
-	public void _getprop(CommandInterpreter ci) throws Exception {
-		Properties allProperties = FrameworkProperties.getProperties();
-		String filter = ci.nextArgument();
-		Iterator propertyNames = new TreeSet(allProperties.keySet()).iterator();
-		while (propertyNames.hasNext()) {
-			String prop = (String) propertyNames.next();
-			if (filter == null || prop.startsWith(filter)) {
-				ci.println(prop + '=' + allProperties.getProperty(prop));
-			}
-		}
-	}
-
-	/**
-	 * This is used to track lazily activated bundles.
-	 */
-	public void bundleChanged(BundleEvent event) {
-		int type = event.getType();
-		Bundle bundle = event.getBundle();
-		synchronized (lazyActivation) {
-			switch (type) {
-				case BundleEvent.LAZY_ACTIVATION :
-					if (!lazyActivation.contains(bundle)) {
-						lazyActivation.add(bundle);
-					}
-					break;
-
-				default :
-					lazyActivation.remove(bundle);
-					break;
-			}
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java b/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java
deleted file mode 100644
index 317e2bb..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.*;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.ConsoleSession;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * This class starts OSGi with a console for development use.
- *
- * FrameworkConsole provides a printStackTrace method to print Exceptions and their
- * nested Exceptions.
- */
-public class FrameworkConsole implements Runnable {
-	/** The stream to receive commands on  */
-	private final BufferedReader in;
-	/** The stream to write command results to */
-	private final PrintWriter out;
-	/** The current bundle context */
-	private final BundleContext context;
-	/** A tracker containing the service object of all registered command providers */
-	private final ServiceTracker cptracker;
-	private final ConsoleSession consoleSession;
-	private final boolean isSystemInOut;
-	/** Default code page which must be supported by all JVMs */
-	static final String defaultEncoding = "iso8859-1"; //$NON-NLS-1$
-	/** The current setting for code page */
-	static final String encoding = FrameworkProperties.getProperty("osgi.console.encoding", FrameworkProperties.getProperty("file.encoding", defaultEncoding)); //$NON-NLS-1$ //$NON-NLS-2$
-	private static final boolean blockOnready = FrameworkProperties.getProperty("osgi.dev") != null || FrameworkProperties.getProperty("osgi.console.blockOnReady") != null; //$NON-NLS-1$ //$NON-NLS-2$
-	volatile boolean shutdown = false;
-
-	public FrameworkConsole(BundleContext context, ConsoleSession consoleSession, boolean isSystemInOut, ServiceTracker cptracker) {
-		this.context = context;
-		this.cptracker = cptracker;
-		this.isSystemInOut = isSystemInOut;
-		this.consoleSession = consoleSession;
-		in = createBufferedReader(consoleSession.getInput());
-		out = createPrintWriter(consoleSession.getOutput());
-	}
-
-	/**
-	 * Return a BufferedReader from an InputStream.  Handle encoding.
-	 *
-	 * @param _in An InputStream to wrap with a BufferedReader
-	 * @return a BufferedReader
-	 */
-	static BufferedReader createBufferedReader(InputStream _in) {
-		BufferedReader reader;
-		try {
-			reader = new BufferedReader(new InputStreamReader(_in, encoding));
-		} catch (UnsupportedEncodingException uee) {
-			// if the encoding is not supported by the jvm, punt and use whatever encodiing there is
-			reader = new BufferedReader(new InputStreamReader(_in));
-		}
-		return reader;
-	}
-
-	/**
-	 * Return a PrintWriter from an OutputStream.  Handle encoding.
-	 *
-	 * @param _out An OutputStream to wrap with a PrintWriter
-	 * @return a PrintWriter
-	 */
-	static PrintWriter createPrintWriter(OutputStream _out) {
-		PrintWriter writer;
-		try {
-			writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(_out, encoding)), true);
-		} catch (UnsupportedEncodingException uee) {
-			// if the encoding is not supported by the jvm, punt and use whatever encoding there is
-			writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(_out)), true);
-		}
-		return writer;
-	}
-
-	/**
-	 *  Return the current output PrintWriter
-	 * @return The currently active PrintWriter
-	 */
-	public PrintWriter getWriter() {
-		return out;
-	}
-
-	/**
-	 * Command Line Interface for OSGi. The method processes the initial commands
-	 * and then reads and processes commands from the console InputStream.
-	 * Command output is written to the console PrintStream. The method will
-	 * loop reading commands from the console InputStream until end-of-file
-	 * is reached. This method will then return.
-	 */
-	public void run() {
-		try {
-			runConsole();
-		} finally {
-			// ensure the console is shutdown before exiting the thread
-			shutdown();
-		}
-	}
-
-	private void runConsole() {
-		// wait to receive commands from console and handle them
-		//cache the console prompt String
-		String consolePrompt = "\r\n" + ConsoleMsg.CONSOLE_PROMPT; //$NON-NLS-1$
-		while (!shutdown) {
-			out.print(consolePrompt);
-			out.flush();
-
-			String cmdline = null;
-			try {
-				if (blockOnready && isSystemInOut) {
-					// bug 40066: avoid waiting on input stream - apparently generates contention with other native calls 
-					try {
-						while (!in.ready())
-							Thread.sleep(300);
-						cmdline = in.readLine();
-					} catch (InterruptedException e) {
-						// do nothing; probably got disconnected
-					}
-				} else
-					cmdline = in.readLine();
-			} catch (IOException ioe) {
-				if (!shutdown)
-					ioe.printStackTrace(out);
-			}
-			if (cmdline == null)
-				// we assume the session is done and break out of the loop.
-				break;
-			if (!shutdown)
-				docommand(cmdline);
-		}
-	}
-
-	/**
-	 *  Process the args on the command line.
-	 *  This method invokes a CommandInterpreter to do the actual work.
-	 *
-	 *  @param cmdline a string containing the command line arguments
-	 */
-	protected void docommand(String cmdline) {
-		if (cmdline != null && cmdline.length() > 0) {
-			CommandInterpreter intcp = new FrameworkCommandInterpreter(cmdline, getServices(), this);
-			String command = intcp.nextArgument();
-			if (command != null) {
-				intcp.execute(command);
-			}
-		}
-	}
-
-	/**
-	 * Reads a string from standard input until user hits the Enter key.
-	 *
-	 * @return	The string read from the standard input without the newline character.
-	 */
-	public String getInput() {
-		String input;
-		try {
-			/** The buffered input reader on standard in. */
-			input = in.readLine();
-			System.out.println("<" + input + ">"); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (IOException e) {
-			input = ""; //$NON-NLS-1$
-		}
-		return input;
-	}
-
-	/**
-	 * Return an array of service objects for all services
-	 * being tracked by this <tt>ServiceTracker</tt> object.
-	 *
-	 * The array is sorted primarily by descending Service Ranking and
-	 * secondarily by ascending Service ID.
-	 *
-	 * @return Array of service objects; if no service
-	 * are being tracked then an empty array is returned
-	 */
-	public Object[] getServices() {
-		ServiceReference[] serviceRefs = cptracker.getServiceReferences();
-		if (serviceRefs == null)
-			return new Object[0];
-		Util.dsort(serviceRefs, 0, serviceRefs.length);
-
-		Object[] serviceObjects = new Object[serviceRefs.length];
-		for (int i = 0; i < serviceRefs.length; i++)
-			serviceObjects[i] = FrameworkConsole.this.context.getService(serviceRefs[i]);
-		return serviceObjects;
-	}
-
-	/**
-	 * Stops the console so the thread can be GC'ed
-	 */
-	public synchronized void shutdown() {
-		if (shutdown)
-			return;
-		shutdown = true;
-		consoleSession.close();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsoleSession.java b/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsoleSession.java
deleted file mode 100644
index 91b7c24..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsoleSession.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.*;
-import java.net.Socket;
-import org.eclipse.osgi.framework.console.ConsoleSession;
-
-public class FrameworkConsoleSession extends ConsoleSession {
-	private final Socket s;
-	private final InputStream in;
-	private final OutputStream out;
-
-	public FrameworkConsoleSession(InputStream in, OutputStream out, Socket s) {
-		this.in = in;
-		this.out = out;
-		this.s = s;
-	}
-
-	public synchronized InputStream getInput() {
-		return in;
-	}
-
-	public synchronized OutputStream getOutput() {
-		return out;
-	}
-
-	public void doClose() {
-		if (s != null)
-			try {
-				s.close();
-			} catch (IOException ioe) {
-				// do nothing
-			}
-		if (out != null)
-			try {
-				out.close();
-			} catch (IOException e) {
-				// do nothing
-			}
-		if (in != null)
-			try {
-				in.close();
-			} catch (IOException ioe) {
-				// do nothing
-			}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleClassLoader.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleClassLoader.java
deleted file mode 100644
index 34c9602..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleClassLoader.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.ProtectionDomain;
-import java.util.Enumeration;
-import org.osgi.framework.BundleReference;
-
-/**
- * The BundleClassLoader interface is used by the Framework to load local 
- * classes and resources from a Bundle.  Classes that implement this
- * interface must extend java.lang.ClassLoader, either directly or by extending
- * a subclass of java.lang.ClassLoader.<p>
- * 
- * ClassLoaders that implement the <code>BundleClassLoader</code> interface
- * must use a <code>ClassLoaderDelegate</code> to delegate all class, resource
- * and native library lookups.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- * @see org.eclipse.osgi.framework.adaptor.BundleData#createClassLoader(ClassLoaderDelegate, BundleProtectionDomain, String[])
- */
-public interface BundleClassLoader /*extends ClassLoader*/extends BundleReference {
-
-	/**
-	 * Initializes the ClassLoader.  This is called after all currently resolved fragment
-	 * bundles have been attached to the BundleClassLoader by the Framework.
-	 */
-	public void initialize();
-
-	/**
-	 * Finds a local resource in the BundleClassLoader without
-	 * consulting the delegate.
-	 * @param resource the resource path to find.
-	 * @return a URL to the resource or null if the resource does not exist.
-	 */
-	public URL findLocalResource(String resource);
-
-	/**
-	 * Finds all local resources in the BundleClassLoader with the specified
-	 * path without consulting the delegate.
-	 * @param resource the resource path to find.
-	 * @return An Enumeration of all resources found or null if the resource.
-	 * does not exist.
-	 */
-	public Enumeration findLocalResources(String resource);
-
-	/**
-	 * Finds a local class in the BundleClassLoader without
-	 * consulting the delegate.
-	 * @param classname the classname to find.
-	 * @return The class object found.
-	 * @throws ClassNotFoundException if the classname does not exist locally.
-	 */
-	public Class findLocalClass(String classname) throws ClassNotFoundException;
-
-	/**
-	 * This method will first search the parent class loader for the resource;
-	 * That failing, this method will invoke 
-	 * {@link ClassLoaderDelegate#findResource(String)} to find the resource.   
-	 * @param name the resource path to get.
-	 * @return a URL for the resource or <code>null</code> if the resource is not found.
-	 */
-	public URL getResource(String name);
-
-	/**
-	 * This method will first search the parent class loader for the resource;
-	 * That failing, this method will invoke 
-	 * {@link ClassLoaderDelegate#findResource(String)} to find the resource.   
-	 * @param name the resource path to get.
-	 * @return an Enumeration of URL objects for the resource or <code>null</code> if the resource is not found.
-	 */
-	public Enumeration getResources(String name) throws IOException;
-
-	/**
-	 * This method will first search the parent class loader for the class;
-	 * That failing, this method will invoke 
-	 * {@link ClassLoaderDelegate#findClass(String)} to find the resource.   
-	 * @param name the class name to load.
-	 * @return the Class.
-	 * @throws ClassNotFoundException
-	 */
-	public Class loadClass(String name) throws ClassNotFoundException;
-
-	/**
-	 * Closes this class loader.  After this method is called
-	 * loadClass will always throw ClassNotFoundException,
-	 * getResource, getResourceAsStream, getResources and will
-	 * return null.
-	 *
-	 */
-	public void close();
-
-	/**
-	 * Attaches the BundleData for a fragment to this BundleClassLoader.
-	 * The Fragment BundleData resources must be appended to the end of
-	 * this BundleClassLoader's classpath.  Fragment BundleData resources 
-	 * must be searched ordered by Bundle ID's.  
-	 * @param bundledata The BundleData of the fragment.
-	 * @param domain The ProtectionDomain of the resources of the fragment.
-	 * Any classes loaded from the fragment's BundleData must belong to this
-	 * ProtectionDomain.
-	 * @param classpath An array of Bundle-ClassPath entries to
-	 * use for loading classes and resources.  This is specified by the 
-	 * Bundle-ClassPath manifest entry of the fragment.
-	 */
-	public void attachFragment(BundleData bundledata, ProtectionDomain domain, String[] classpath);
-
-	/**
-	 * Returns the ClassLoaderDelegate used by this BundleClassLoader
-	 * @return the ClassLoaderDelegate used by this BundleClassLoader
-	 */
-	public ClassLoaderDelegate getDelegate();
-
-	/**
-	 * Returns the parent classloader used by this BundleClassLoader
-	 * @return the parent classloader used by this BundleClassLoader
-	 */
-	public ClassLoader getParent();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleData.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleData.java
deleted file mode 100644
index ff33a02..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleData.java
+++ /dev/null
@@ -1,248 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import org.osgi.framework.*;
-
-/**
- * The <code>BundleData</code> represents a single bundle that is persistently 
- * stored by a <code>FrameworkAdaptor</code>.  A <code>BundleData</code> creates
- * the ClassLoader for a bundle, finds native libraries installed in the
- * FrameworkAdaptor for the bundle, creates data files for the bundle,
- * used to access bundle entries, manifest information, and getting and saving
- * metadata.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface BundleData {
-
-	/** The BundleData is for a fragment bundle */
-	public static final int TYPE_FRAGMENT = 0x00000001;
-	/** The BundleData is for a framework extension bundle */
-	public static final int TYPE_FRAMEWORK_EXTENSION = 0x00000002;
-	/** The BundleData is for a bootclasspath extension bundle */
-	public static final int TYPE_BOOTCLASSPATH_EXTENSION = 0x00000004;
-	/** The BundleData is for a singleton bundle */
-	public static final int TYPE_SINGLETON = 0x00000008;
-	/** The BundleData is for an extension classpath bundle */
-	public static final int TYPE_EXTCLASSPATH_EXTENSION = 0x00000010;
-	/** The BundleData is for a composite bundle */
-	public static final int TYPE_COMPOSITEBUNDLE = 0x00000020;
-	/** The BundleData is for a composite bundle surrogate */
-	public static final int TYPE_SURROGATEBUNDLE = 0x00000040;
-
-	/**
-	 * Creates the ClassLoader for the BundleData.  The ClassLoader created
-	 * must use the <code>ClassLoaderDelegate</code> to delegate class, resource
-	 * and library loading.  The delegate is responsible for finding any resource
-	 * or classes imported by the bundle through an imported package or a required
-	 * bundle. <p>
-	 * The <code>ProtectionDomain</code> domain must be used by the Classloader when 
-	 * defining a class.  
-	 * @param delegate The <code>ClassLoaderDelegate</code> to delegate to.
-	 * @param domain The <code>BundleProtectionDomain</code> to use when defining a class.
-	 * @param bundleclasspath An array of bundle classpaths to use to create this
-	 * classloader.  This is specified by the Bundle-ClassPath manifest entry.
-	 * @return The new ClassLoader for the BundleData.
-	 */
-	public BundleClassLoader createClassLoader(ClassLoaderDelegate delegate, BundleProtectionDomain domain, String[] bundleclasspath);
-
-	/**
-	 * Gets a <code>URL</code> to the bundle entry specified by path.
-	 * This method must not use the BundleClassLoader to find the
-	 * bundle entry since the ClassLoader will delegate to find the resource.
-	 * @see org.osgi.framework.Bundle#getEntry(String)
-	 * @param path The bundle entry path.
-	 * @return A URL used to access the entry or null if the entry
-	 * does not exist.
-	 */
-	public URL getEntry(String path);
-
-	/**
-	 * Gets all of the bundle entries that exist under the specified path.
-	 * For example: <p>
-	 * <code>getEntryPaths("/META-INF")</code> <p>
-	 * This will return all entries from the /META-INF directory of the bundle.
-	 * @see org.osgi.framework.Bundle#getEntryPaths(String path)
-	 * @param path The path to a directory in the bundle.
-	 * @return An Enumeration of the entry paths or null if the specified path
-	 * does not exist.
-	 */
-	public Enumeration getEntryPaths(String path);
-
-	/**
-	 * Returns the absolute path name of a native library. The BundleData
-	 * ClassLoader invokes this method to locate the native libraries that 
-	 * belong to classes loaded from this BundleData. Returns 
-	 * null if the library does not exist in this BundleData.
-	 * @param libname The name of the library to find the absolute path to.
-	 * @return The absolute path name of the native library or null if
-	 * the library does not exist.
-	 */
-	public String findLibrary(String libname);
-
-	/**
-	 * Installs the native code paths for this BundleData.  Each
-	 * element of nativepaths must be installed for lookup when findLibrary 
-	 * is called.
-	 * @param nativepaths The array of native code paths to install for
-	 * the bundle.
-	 * @throws BundleException If any error occurs during install.
-	 */
-	public void installNativeCode(String[] nativepaths) throws BundleException;
-
-	/**
-	 * Return the bundle data directory.
-	 * Attempt to create the directory if it does not exist.
-	 *
-	 * @see org.osgi.framework.BundleContext#getDataFile(String)
-	 * @return Bundle data directory or null if not supported.
-	 */
-
-	public File getDataFile(String path);
-
-	/**
-	 * Return the Dictionary of manifest headers for the BundleData.
-	 * @return Dictionary that contains the Manifest headers for the BundleData.
-	 * @throws BundleException if an error occurred while reading the
-	 * bundle manifest data.
-	 */
-	public Dictionary getManifest() throws BundleException;
-
-	/**
-	 * Get the BundleData bundle ID.  This will be used as the bundle
-	 * ID by the framework.
-	 * @return The BundleData ID.
-	 */
-	public long getBundleID();
-
-	/**
-	 * Get the BundleData Location.  This will be used as the bundle
-	 * location by the framework.
-	 * @return the BundleData location.
-	 */
-	public String getLocation();
-
-	/**
-	 * Get the last time this BundleData was modified.
-	 * @return the last time this BundleData was modified
-	 */
-	public long getLastModified();
-
-	/**
-	 * Close all resources for this BundleData
-	 * @throws IOException If an error occurs closing.
-	 */
-	public void close() throws IOException;
-
-	/**
-	 * Open the BundleData. This method will reopen the BundleData if it has been
-	 * previously closed.
-	 * @throws IOException If an error occurs opening.
-	 */
-	public void open() throws IOException;
-
-	/**
-	 * Sets the Bundle object for this BundleData.
-	 * @param bundle The Bundle Object for this BundleData.
-	 */
-	public void setBundle(Bundle bundle);
-
-	/**
-	 * Returns the start level metadata for this BundleData.
-	 * @return the start level metadata for this BundleData.
-	 */
-	public int getStartLevel();
-
-	/**
-	 * Returns the status metadata for this BundleData.  A value of 1
-	 * indicates that this bundle is started persistently.  A value of 0
-	 * indicates that this bundle is not started persistently.
-	 * @return the status metadata for this BundleData.
-	 */
-	public int getStatus();
-
-	/**
-	 * Sets the start level metatdata for this BundleData.  Metadata must be
-	 * stored persistently when BundleData.save() is called.
-	 * @param value the start level metadata
-	 */
-	public void setStartLevel(int value);
-
-	/**
-	 * Sets the status metadata for this BundleData.  Metadata must be
-	 * stored persistently when BundleData.save() is called.
-	 * @param value the status metadata.
-	 */
-	public void setStatus(int value);
-
-	/**
-	 * Persistently stores all the metadata for this BundleData
-	 * @throws IOException
-	 */
-	public void save() throws IOException;
-
-	/**
-	 * Returns the Bundle-SymbolicName for this BundleData as specified in the bundle
-	 * manifest file.
-	 * @return the Bundle-SymbolicName for this BundleData.
-	 */
-	public String getSymbolicName();
-
-	/**
-	 * Returns the Bundle-Version for this BundleData as specified in the bundle 
-	 * manifest file.
-	 * @return the Bundle-Version for this BundleData.
-	 */
-	public Version getVersion();
-
-	/**
-	 * Returns the type of bundle this BundleData is for.  
-	 * @return returns the type of bundle this BundleData is for
-	 */
-	public int getType();
-
-	/**
-	 * Returns the Bundle-ClassPath for this BundleData as specified in 
-	 * the bundle manifest file.
-	 * @return the classpath for this BundleData.
-	 */
-	public String[] getClassPath() throws BundleException;
-
-	/**
-	 * Returns the Bundle-Activator for this BundleData as specified in 
-	 * the bundle manifest file.
-	 * @return the Bundle-Activator for this BundleData.
-	 */
-	public String getActivator();
-
-	/**
-	 * Returns the Bundle-RequiredExecutionEnvironment for this BundleData as 
-	 * specified in the bundle manifest file.
-	 * @return the Bundle-RequiredExecutionEnvironment for this BundleData.
-	 */
-	public String getExecutionEnvironment();
-
-	/**
-	 * Returns the DynamicImport-Package for this BundleData as 
-	 * specified in the bundle manifest file.
-	 * @return the DynamicImport-Packaget for this BundleData.
-	 */
-	public String getDynamicImports();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleOperation.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleOperation.java
deleted file mode 100644
index da5e17b..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleOperation.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import org.osgi.framework.BundleException;
-
-/**
- * Bundle Storage interface for managing a persistent storage life
- * cycle operation upon a bundle.
- *
- * <p>This class is used to provide methods to manage a life cycle
- * operation on a bundle in persistent storage. BundleOperation objects
- * are returned by the FrameworkAdaptor object and are called by OSGi
- * to complete the persistent storage life cycle operation.
- *
- * <p>For example
- * <pre>
- *      Bundle bundle;
- *      BundleOperation storage = adaptor.installBundle(location, source);
- *      try {
- *          bundle = storage.begin();
- *
- *          // Perform some implementation specific work
- *          // which may fail.
- *
- *          storage.commit(false);
- *          // bundle has been successfully installed
- *      } catch (BundleException e) {
- *          storage.undo();
- *          throw e; // rethrow the error
- *      }
- *      return bundle;
- * </pre>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public abstract interface BundleOperation {
-
-	/**
-	 * Begin the operation on the bundle (install, update, uninstall).
-	 *
-	 * @return BundleData object for the target bundle.
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public abstract BundleData begin() throws BundleException;
-
-	/**
-	 * Commit the operation performed.
-	 *
-	 * @param postpone If true, the bundle's persistent
-	 * storage cannot be immediately reclaimed. This may occur if the
-	 * bundle is still exporting a package.
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public abstract void commit(boolean postpone) throws BundleException;
-
-	/**
-	 * Undo the change to persistent storage.
-	 * <p>This method can be called before calling commit or if commit
-	 * throws an exception to undo any changes in progress.
-	 *
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public abstract void undo() throws BundleException;
-
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleProtectionDomain.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleProtectionDomain.java
deleted file mode 100644
index f9a23f7..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleProtectionDomain.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.security.*;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleReference;
-
-/**
- * 
- * This is a specialized ProtectionDomain for a bundle.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * @since 3.1
- */
-public class BundleProtectionDomain extends ProtectionDomain implements BundleReference {
-
-	private volatile Bundle bundle;
-
-	/**
-	 * Constructs a special ProtectionDomain for a bundle.
-	 * 
-	 * @param permCollection
-	 *            the PermissionCollection for the Bundle
-	 * @deprecated use {@link #BundleProtectionDomain(PermissionCollection, CodeSource, Bundle)}
-	 */
-	public BundleProtectionDomain(PermissionCollection permCollection) {
-		this(permCollection, null, null);
-	}
-
-	/**
-	 * Constructs a special ProtectionDomain for a bundle.
-	 * 
-	 * @param permCollection
-	 *            the PermissionCollection for the Bundle
-	 * @param codeSource
-	 *            the code source for this domain, may be null
-	 * @param bundle
-	 *            the bundle associated with this domain, may be null
-	 */
-	public BundleProtectionDomain(PermissionCollection permCollection, CodeSource codeSource, Bundle bundle) {
-		super(codeSource, permCollection);
-		this.bundle = bundle;
-	}
-
-	/**
-	 * Sets the bundle object associated with this protection domain.
-	 * The bundle can only be set once with either this method or with 
-	 * the constructor.
-	 * @param bundle the bundle object associated with this protection domain
-	 */
-	public void setBundle(Bundle bundle) {
-		if (this.bundle != null || bundle == null)
-			return;
-		this.bundle = bundle;
-	}
-
-	public Bundle getBundle() {
-		return bundle;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleWatcher.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleWatcher.java
deleted file mode 100644
index 75bb33d..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleWatcher.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.adaptor;
-
-import org.osgi.framework.Bundle;
-
-/**
- * Watches bundle lifecyle processes.  This interface is different than that of
- * a BundleLisener because it gets notified before and after all lifecycle 
- * changes.  A bundle watcher acts as the main entry point for logging 
- * bundle activity.
- * <p>
- * Note that a bundle watcher is always notified of when a lifecycle processes 
- * has ended even in cases where the lifecycle process may have failed.  For 
- * example, if activating a bundle fails the {@link #END_ACTIVATION} flag will
- * still be sent to the bundle watcher to notify them that the activation 
- * process has ended.
- * </p>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface BundleWatcher {
-	/**
-	 * The install process is beginning for a bundle
-	 * @since 3.2
-	 */
-	public static final int START_INSTALLING = 0x0001;
-	/**
-	 * The install process has ended for a bundle
-	 * @since 3.2
-	 */
-	public static final int END_INSTALLING = 0x0002;
-	/**
-	 * The activation process is beginning for a bundle
-	 * @since 3.2
-	 */
-	public static final int START_ACTIVATION = 0x0004;
-	/**
-	 * The activation process has ended for a bundle
-	 * @since 3.2
-	 */
-	public static final int END_ACTIVATION = 0x0008;
-	/**
-	 * The deactivation process is beginning for a bundle
-	 * @since 3.2
-	 */
-	public static final int START_DEACTIVATION = 0x0010;
-	/**
-	 * The deactivation process has ended for a bundle
-	 * @since 3.2
-	 */
-	public static final int END_DEACTIVATION = 0x0020;
-	/**
-	 * The uninstallation process is beginning for a bundle
-	 * @since 3.2
-	 */
-	public static final int START_UNINSTALLING = 0x0040;
-	/**
-	 * The uninstallation process has ended for a bundle
-	 * @since 3.2
-	 */
-	public static final int END_UNINSTALLING = 0x0080;
-
-	/**
-	 * Receives notification that a lifecycle change is going to start or has
-	 * ended.
-	 * @param bundle the bundle for which the lifecycle change is occurring on.
-	 * @param type the type of lifecycle change which is occurring.
-	 * @see #START_INSTALLING
-	 * @see #END_INSTALLING
-	 * @see #START_ACTIVATION
-	 * @see #END_ACTIVATION
-	 * @see #START_DEACTIVATION
-	 * @see #END_DEACTIVATION
-	 * @see #START_UNINSTALLING
-	 * @see #END_UNINSTALLING
-	 * @since 3.2
-	 */
-	public void watchBundle(Bundle bundle, int type);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegate.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegate.java
deleted file mode 100644
index 997cadc..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegate.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import org.osgi.framework.BundleException;
-
-/**
- * A ClassLoaderDelegate is used by the BundleClassLoader in a similar
- * fashion that a parent ClassLoader is used.  A ClassLoaderDelegate must
- * be queried for any resource or class before it is loaded by the 
- * BundleClassLoader.  The Framework implements the ClassLoaderDelegate
- * and supplies it to the BundleClassLoader.  FrameworkAdaptor implementations
- * are not responsible for suppling an implementation for ClassLoaderDelegate.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- * @since 3.1
- */
-public interface ClassLoaderDelegate {
-	/**
-	 * Finds a class for a bundle that may be outside of the actual bundle
-	 * (i.e. a class from an imported package or required bundle).<p>
-	 * 
-	 * If the class does not belong to an imported package or is not 
-	 * found in a required bundle then the ClassloaderDelegate will call 
-	 * BundleClassLoader.findLocalClass(). <p>
-	 *   
-	 * If no class is found then a ClassNotFoundException is thrown.
-	 * @param classname the class to find. 
-	 * @return the Class.
-	 * @throws ClassNotFoundException if the class is not found.
-	 */
-	public Class findClass(String classname) throws ClassNotFoundException;
-
-	/**
-	 * Finds a resource for a bundle that may be outside of the actual bundle
-	 * (i.e. a resource from an imported package or required bundle).<p>
-	 * 
-	 * If the resource does not belong to an imported package or is not 
-	 * found in a required bundle then the ClassloaderDelegate will call 
-	 * BundleClassLoader.findLocalResource(). <p>
-	 * 
-	 * If no resource is found then return null.
-	 * @param resource the resource to load.
-	 * @return the resource or null if resource is not found.
-	 */
-	public URL findResource(String resource);
-
-	/**
-	 * Finds an enumeration of resources for a bundle that may be outside of 
-	 * the actual bundle (i.e. a resource from an imported package or required 
-	 * bundle).<p>
-	 * 
-	 * If the resource does not belong to an imported package or is not 
-	 * found in a required bundle then the ClassloaderDelegate will call 
-	 * BundleClassLoader.findLocalResource(). <p>
-	 * If no resource is found then return null.
-	 * @param resource the resource to find.
-	 * @return the enumeration of resources found or null if the resource
-	 * does not exist.
-	 */
-	public Enumeration findResources(String resource) throws IOException;
-
-	/**
-	 * Returns the absolute path name of a native library.  The following is
-	 * a list of steps that a ClassLoaderDelegate must take when trying to 
-	 * find a library:
-	 * <ul>
-	 * <li>If the bundle is a fragment then try to find the library in the
-	 * host bundle.
-	 * <li>if the bundle is a host then try to find the library in the
-	 * host bundle and then try to find the library in the fragment
-	 * bundles.
-	 * </ul>
-	 * If no library is found return null.
-	 * @param libraryname the library to find the path to.
-	 * @return the path to the library or null if not found.
-	 */
-	public String findLibrary(String libraryname);
-
-	/**
-	 * Returns true if the lazy trigger has been set for this 
-	 * delegate.  The lazy trigger is set when a bundle has been 
-	 * marked for lazy activation due to a successful class load.
-	 * @return true if the lazy trigger has been set
-	 * @since 3.6
-	 */
-	public boolean isLazyTriggerSet();
-
-	/**
-	 * Sets the lazy trigger for this delegate.  This will activate
-	 * the bundle if the bundle has been started with the activation
-	 * policy and the bundle's start level is met.
-	 * @throws BundleException if an error occurred while activating the bundle
-	 * @see ClassLoaderDelegate#isLazyTriggerSet()
-	 * @since 3.6
-	 */
-	public void setLazyTrigger() throws BundleException;
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java
deleted file mode 100644
index e77e76d..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegateHook.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.io.FileNotFoundException;
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.baseadaptor.HookRegistry;
-
-/**
- * A ClassLoaderDelegateHook hooks into the <code>ClassLoaderDelegate</code>.
- * @see ClassLoaderDelegate
- * @see HookRegistry#getClassLoaderDelegateHooks()
- * @see HookRegistry#addClassLoaderDelegateHook(ClassLoaderDelegateHook)
- * @since 3.4
- */
-public interface ClassLoaderDelegateHook {
-	/**
-	 * Called by a {@link ClassLoaderDelegate#findClass(String)} method before delegating to the resolved constraints and 
-	 * local bundle for a class load.  If this method returns null then normal delegation is done.  If this method 
-	 * returns a non-null value then the rest of the delegation process is skipped and the returned value is used.
-	 * If this method throws a <code>ClassNotFoundException</code> then the calling 
-	 * {@link ClassLoaderDelegate#findClass(String)} method re-throws the exception.
-	 * @param name the name of the class to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the class found by this hook or null if normal delegation should continue
-	 * @throws ClassNotFoundException to terminate the delegation and throw an exception
-	 */
-	public Class preFindClass(String name, BundleClassLoader classLoader, BundleData data) throws ClassNotFoundException;
-
-	/**
-	 * Called by a {@link ClassLoaderDelegate#findClass(String)} method after delegating to the resolved constraints and 
-	 * local bundle for a class load.  This method will only be called if no class was found
-	 * from the normal delegation.
-	 * @param name the name of the class to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the class found by this hook or null if normal delegation should continue
-	 * @throws ClassNotFoundException to terminate the delegation and throw an exception
-	 */
-	public Class postFindClass(String name, BundleClassLoader classLoader, BundleData data) throws ClassNotFoundException;
-
-	/**
-	 * Called by a {@link ClassLoaderDelegate #findResource(String)} before delegating to the resolved constraints and 
-	 * local bundle for a resource load.  If this method returns null then normal delegation is done.  
-	 * If this method returns a non-null value then the rest of the delegation process is skipped and the returned value is used.
-	 * If this method throws an <code>FileNotFoundException</code> then the delegation is terminated.
-	 * @param name the name of the resource to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the resource found by this hook or null if normal delegation should continue
-	 * @throws FileNotFoundException to terminate the delegation
-	 */
-	public URL preFindResource(String name, BundleClassLoader classLoader, BundleData data) throws FileNotFoundException;
-
-	/**
-	 * Called by a {@link ClassLoaderDelegate} after delegating to the resolved constraints and 
-	 * local bundle for a resource load.  This method will only be called if no resource was found
-	 * from the normal delegation.
-	 * @param name the name of the resource to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the resource found by this hook or null if normal delegation should continue
-	 * @throws FileNotFoundException to terminate the delegation
-	 */
-	public URL postFindResource(String name, BundleClassLoader classLoader, BundleData data) throws FileNotFoundException;
-
-	/**
-	 * Called by a {@link ClassLoaderDelegate} before delegating to the resolved constraints and 
-	 * local bundle for a resource load.  If this method returns null then normal delegation is done.  
-	 * If this method returns  a non-null value then the rest of the delegation process is skipped and the returned value is used.
-	 * If this method throws an <code>FileNotFoundException</code> then the delegation is terminated
-	 * @param name the name of the resource to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the resources found by this hook or null if normal delegation should continue
-	 * @throws FileNotFoundException to terminate the delegation
-	 */
-	public Enumeration preFindResources(String name, BundleClassLoader classLoader, BundleData data) throws FileNotFoundException;
-
-	/**
-	 * Called by a {@link ClassLoaderDelegate} after delegating to the resolved constraints and 
-	 * local bundle for a resource load.  This method will only be called if no resources were found
-	 * from the normal delegation.
-	 * @param name the name of the resource to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the resources found by this hook or null if normal delegation should continue
-	 * @throws FileNotFoundException to terminate the delegation
-	 */
-	public Enumeration postFindResources(String name, BundleClassLoader classLoader, BundleData data) throws FileNotFoundException;
-
-	/**
-	 * Called by a {@link ClassLoaderDelegate} before normal delegation.  If this method returns 
-	 * a non-null value then the rest of the delegation process is skipped and the returned value
-	 * is used.
-	 * @param name the name of the library to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the library found by this hook or null if normal delegation should continue
-	 * @throws FileNotFoundException to terminate the delegation
-	 */
-	public String preFindLibrary(String name, BundleClassLoader classLoader, BundleData data) throws FileNotFoundException;
-
-	/**
-	 * Called by a {@link ClassLoaderDelegate} after normal delegation.  This method will only be called
-	 * if no library was found from the normal delegation.
-	 * @param name the name of the library to find
-	 * @param classLoader the bundle class loader
-	 * @param data the bundle data
-	 * @return the library found by this hook or null if normal delegation should continue
-	 */
-	public String postFindLibrary(String name, BundleClassLoader classLoader, BundleData data);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/EventPublisher.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/EventPublisher.java
deleted file mode 100644
index 4298487..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/EventPublisher.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import org.osgi.framework.Bundle;
-
-/**
- * The EventPublisher is used by FrameworkAdaptors to publish events to the
- * Framework.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- */
-public interface EventPublisher {
-
-	/**
-	 * Publish a FrameworkEvent.
-	 *
-	 * @param type FrameworkEvent type.
-	 * @param bundle Bundle related to FrameworkEven or <tt>null</tt> to for the
-	 * system bundle.
-	 * @param throwable Related exception or <tt>null</tt>.
-	 * @see org.osgi.framework.FrameworkEvent
-	 */
-	public abstract void publishFrameworkEvent(int type, Bundle bundle, Throwable throwable);
-
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FilePath.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FilePath.java
deleted file mode 100644
index fbb69c1..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FilePath.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.adaptor;
-
-import java.io.File;
-
-/** 
- * A utility class for manipulating file system paths.
- * <p>
- * This class is not intended to be subclassed by clients but
- * may be instantiated.
- * </p>
- * 
- * @since 3.1
- */
-public class FilePath {
-	// Constant value indicating if the current platform is Windows
-	private static final boolean WINDOWS = java.io.File.separatorChar == '\\';
-	private final static String CURRENT_DIR = "."; //$NON-NLS-1$
-	// Device separator character constant ":" used in paths.
-	private static final char DEVICE_SEPARATOR = ':';
-	private static final byte HAS_LEADING = 1;
-	private static final byte HAS_TRAILING = 4;
-	// Constant value indicating no segments
-	private static final String[] NO_SEGMENTS = new String[0];
-	private final static String PARENT_DIR = ".."; //$NON-NLS-1$
-	private final static char SEPARATOR = '/';
-	private final static String UNC_SLASHES = "//"; //$NON-NLS-1$
-	// if UNC, device will be \\host\share, otherwise, it will be letter/name + colon
-	private String device;
-	private byte flags;
-	private String[] segments;
-
-	/**
-	 * Constructs a new file path from the given File object.
-	 * 
-	 * @param location
-	 */
-	public FilePath(File location) {
-		initialize(location.getPath());
-		if (location.isDirectory())
-			flags |= HAS_TRAILING;
-		else
-			flags &= ~HAS_TRAILING;
-	}
-
-	/**
-	 * Constructs a new file path from the given string path.
-	 * 
-	 * @param original
-	 */
-	public FilePath(String original) {
-		initialize(original);
-	}
-
-	/*
-	 * 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;
-	}
-
-	/*
-	 * Splits the given path string into an array of segments. 
-	 */
-	private String[] computeSegments(String path) {
-		int maxSegmentCount = computeSegmentCount(path);
-		if (maxSegmentCount == 0)
-			return NO_SEGMENTS;
-		String[] newSegments = new String[maxSegmentCount];
-		int len = path.length();
-		// allways absolute
-		int firstPosition = isAbsolute() ? 1 : 0;
-		int lastPosition = hasTrailingSlash() ? len - 2 : len - 1;
-		// for non-empty paths, the number of segments is 
-		// the number of slashes plus 1, ignoring any leading
-		// and trailing slashes
-		int next = firstPosition;
-		int actualSegmentCount = 0;
-		for (int i = 0; i < maxSegmentCount; i++) {
-			int start = next;
-			int end = path.indexOf(SEPARATOR, next);
-			next = end + 1;
-			String segment = path.substring(start, end == -1 ? lastPosition + 1 : end);
-			if (CURRENT_DIR.equals(segment))
-				continue;
-			if (PARENT_DIR.equals(segment)) {
-				if (actualSegmentCount > 0)
-					actualSegmentCount--;
-				continue;
-			}
-			newSegments[actualSegmentCount++] = segment;
-		}
-		if (actualSegmentCount == newSegments.length)
-			return newSegments;
-		if (actualSegmentCount == 0)
-			return NO_SEGMENTS;
-		String[] actualSegments = new String[actualSegmentCount];
-		System.arraycopy(newSegments, 0, actualSegments, 0, actualSegments.length);
-		return actualSegments;
-	}
-
-	/**
-	 * Returns the device for this file system path, or <code>null</code> if 
-	 * none exists. The device string ends with a colon.
-	 * 
-	 * @return the device string or null 
-	 */
-	public String getDevice() {
-		return device;
-	}
-
-	/**
-	 * Returns the segments in this path. If this path has no segments, returns an empty array.
-	 * 
-	 * @return an array containing all segments for this path 
-	 */
-	public String[] getSegments() {
-		return (String[]) segments.clone();
-	}
-
-	/**
-	 * Returns whether this path ends with a slash.
-	 * 
-	 * @return <code>true</code> if the path ends with a slash, false otherwise
-	 */
-	public boolean hasTrailingSlash() {
-		return (flags & HAS_TRAILING) != 0;
-	}
-
-	private void initialize(String original) {
-		original = original.indexOf('\\') == -1 ? original : original.replace('\\', SEPARATOR);
-		if (WINDOWS) {
-			// only deal with devices/UNC paths on Windows
-			int deviceSeparatorPos = original.indexOf(DEVICE_SEPARATOR);
-			if (deviceSeparatorPos >= 0) {
-				//extract device if any				
-				//remove leading slash from device part to handle output of URL.getFile()
-				int start = original.charAt(0) == SEPARATOR ? 1 : 0;
-				device = original.substring(start, deviceSeparatorPos + 1);
-				original = original.substring(deviceSeparatorPos + 1, original.length());
-			} else if (original.startsWith(UNC_SLASHES)) {
-				// handle UNC paths
-				int uncPrefixEnd = original.indexOf(SEPARATOR, 2);
-				if (uncPrefixEnd >= 0)
-					uncPrefixEnd = original.indexOf(SEPARATOR, uncPrefixEnd + 1);
-				if (uncPrefixEnd >= 0) {
-					device = original.substring(0, uncPrefixEnd);
-					original = original.substring(uncPrefixEnd, original.length());
-				} else
-					// not a valid UNC
-					throw new IllegalArgumentException("Not a valid UNC: " + original); //$NON-NLS-1$
-			}
-		}
-		// device names letters and UNCs properly stripped off
-		if (original.charAt(0) == SEPARATOR)
-			flags |= HAS_LEADING;
-		if (original.charAt(original.length() - 1) == SEPARATOR)
-			flags |= HAS_TRAILING;
-		segments = computeSegments(original);
-	}
-
-	/**
-	 * Returns whether this path is absolute (begins with a slash).
-	 * 
-	 * @return <code>true</code> if this path is absolute, <code>false</code> otherwise
-	 */
-	public boolean isAbsolute() {
-		return (flags & HAS_LEADING) != 0;
-	}
-
-	/**
-	 * Returns a string representing this path as a relative to the given base path.
-	 * <p>
-	 * If this path and the given path do not use the same device letter, this path's
-	 * string representation is returned as is. 
-	 * </p>
-	 * 
-	 * @param base the path this path should be made relative to
-	 * @return a string representation for this path as relative to the given base path 
-	 */
-	public String makeRelative(FilePath base) {
-		if (base.device != null && !base.device.equalsIgnoreCase(this.device))
-			return base.toString();
-		int baseCount = this.segments.length;
-		int count = this.matchingFirstSegments(base);
-		if (baseCount == count && count == base.segments.length)
-			return base.hasTrailingSlash() ? ("." + SEPARATOR) : "."; //$NON-NLS-1$ //$NON-NLS-2$
-		StringBuffer relative = new StringBuffer(); //	
-		for (int j = 0; j < baseCount - count; j++)
-			relative.append(PARENT_DIR + SEPARATOR);
-		for (int i = 0; i < base.segments.length - count; i++) {
-			relative.append(base.segments[count + i]);
-			relative.append(SEPARATOR);
-		}
-		if (!base.hasTrailingSlash())
-			relative.deleteCharAt(relative.length() - 1);
-		return relative.toString();
-	}
-
-	/* 
-	 * Returns the number of segments in this matching the first segments of the
-	 * given path.
-	 */
-	private int matchingFirstSegments(FilePath anotherPath) {
-		int anotherPathLen = anotherPath.segments.length;
-		int max = Math.min(segments.length, anotherPathLen);
-		int count = 0;
-		for (int i = 0; i < max; i++) {
-			if (!segments[i].equals(anotherPath.segments[i]))
-				return count;
-			count++;
-		}
-		return count;
-	}
-
-	/**
-	 * Returns a string representation of this path.
-	 * 
-	 * @return  a string representation of this path
-	 */
-	public String toString() {
-		StringBuffer result = new StringBuffer();
-		if (device != null)
-			result.append(device);
-		if (isAbsolute())
-			result.append(SEPARATOR);
-		for (int i = 0; i < segments.length; i++) {
-			result.append(segments[i]);
-			result.append(SEPARATOR);
-		}
-		if (segments.length > 0 && !hasTrailingSlash())
-			result.deleteCharAt(result.length() - 1);
-		return result.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FrameworkAdaptor.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FrameworkAdaptor.java
deleted file mode 100644
index ef19ed7..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FrameworkAdaptor.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.io.IOException;
-import java.net.URLConnection;
-import java.util.Properties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.service.resolver.PlatformAdmin;
-import org.eclipse.osgi.service.resolver.State;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-/**
- * FrameworkAdaptor interface to the osgi framework. This class is used to provide
- * platform specific support for the osgi framework.
- *
- * <p>The OSGi framework will call this class to perform platform specific functions.
- *
- * Classes that implement FrameworkAdaptor MUST provide a constructor that takes as a
- * parameter an array of Strings.  This array will contain arguments to be
- * handled by the FrameworkAdaptor.  The FrameworkAdaptor implementation may define the format
- * and content of its arguments.
- *
- * The constructor should parse the arguments passed to it and remember them.
- * The initialize method should perform the actual processing of the adaptor
- * arguments.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-
-public interface FrameworkAdaptor {
-
-	public static final String FRAMEWORK_SYMBOLICNAME = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	/**
-	 * Initialize the FrameworkAdaptor object so that it is ready to be
-	 * called by the framework.  Handle the arguments that were
-	 * passed to the constructor.
-	 * This method must be called before any other FrameworkAdaptor methods.
-	 * @param eventPublisher The EventPublisher used to publish any events to 
-	 * the framework.
-	 */
-	public void initialize(EventPublisher eventPublisher);
-
-	/**
-	 * Initialize the persistent storage for the adaptor.
-	 *
-	 * @throws IOException If the adaptor is unable to
-	 * initialize the bundle storage.
-	 */
-	public void initializeStorage() throws IOException;
-
-	/**
-	 * Compact/cleanup the persistent storage for the adaptor.
-	 * @throws IOException If the adaptor is unable to 
-	 * compact the bundle storage.
-	 *
-	 */
-	public void compactStorage() throws IOException;
-
-	/**
-	 * Return the properties object for the adaptor.
-	 * The properties in the returned object supplement
-	 * the System properties.
-	 * The framework may modify this object.  The Framework
-	 * will use the returned properties to set the System
-	 * properties.
-	 *
-	 * @return The properties object for the adaptor.
-	 */
-	public Properties getProperties();
-
-	/**
-	 * Return a list of the installed bundles.  Each element in the
-	 * list must be of type <code>BundleData</code>.  Each <code>BundleData</code>
-	 * corresponds to one bundle that is persistently stored.
-	 * This method must construct <code>BundleData</code> objects for all 
-	 * installed bundles and return an array containing the objects.
-	 * The returned array becomes the property of the framework.
-	 *
-	 * @return Array of installed BundleData objects, or null if none can be found.
-	 */
-	public BundleData[] getInstalledBundles();
-
-	/**
-	 * Map a location to a URLConnection.  This is used by the Framework when installing a bundle
-	 * from a spacified location.
-	 *
-	 * @param location of the bundle.
-	 * @return URLConnection that represents the location.
-	 * @throws BundleException if the mapping fails.
-	 */
-	public URLConnection mapLocationToURLConnection(String location) throws BundleException;
-
-	/**
-	 * Prepare to install a bundle from a URLConnection.
-	 * <p>To complete the install,
-	 * begin and then commit
-	 * must be called on the returned <code>BundleOperation</code> object.
-	 * If either of these methods throw a BundleException
-	 * or some other error occurs,
-	 * then undo must be called on the <code>BundleOperation</code> object
-	 * to undo the change to persistent storage.
-	 *
-	 * @param location Bundle location.
-	 * @param source URLConnection from which the bundle may be read.
-	 * Any InputStreams returned from the source
-	 * (URLConnections.getInputStream) must be closed by the
-	 * <code>BundleOperation</code> object.
-	 * @return BundleOperation object to be used to complete the install.
-	 */
-	public BundleOperation installBundle(String location, URLConnection source);
-
-	/**
-	 * Prepare to update a bundle from a URLConnection.
-	 * <p>To complete the update
-	 * begin and then commit
-	 * must be called on the returned <code>BundleOperation</code> object.
-	 * If either of these methods throw a BundleException
-	 * or some other error occurs,
-	 * then undo must be called on the <code>BundleOperation</code> object
-	 * to undo the change to persistent storage.
-	 *
-	 * @param bundledata BundleData to update.
-	 * @param source URLConnection from which the updated bundle may be read.
-	 * Any InputStreams returned from the source
-	 * (URLConnections.getInputStream) must be closed by the
-	 * <code>BundleOperation</code> object.
-	 * @return BundleOperation object to be used to complete the update.
-	 */
-	public BundleOperation updateBundle(BundleData bundledata, URLConnection source);
-
-	/**
-	 * Prepare to uninstall a bundle.
-	 * <p>To complete the uninstall,
-	 * begin and then commit
-	 * must be called on the returned <code>BundleOperation</code> object.
-	 * If either of these methods throw a BundleException
-	 * or some other error occurs,
-	 * then undo must be called on the <code>BundleOperation</code> object
-	 * to undo the change to persistent storage.
-	 *
-	 * @param bundledata BundleData to uninstall.
-	 * @return BundleOperation object to be used to complete the uninstall.
-	 */
-	public BundleOperation uninstallBundle(BundleData bundledata);
-
-	/**
-	 * Returns the total amount of free space available for bundle storage on the device.
-	 *
-	 * @return Free space available in bytes or -1 if it does not apply to this adaptor
-	 * @exception IOException if an I/O error occurs determining the available space
-	 */
-	public long getTotalFreeSpace() throws IOException;
-
-	/**
-	 * Returns the PermissionStorage object which will be used to
-	 * to manage the permission data.
-	 *
-	 * @return The PermissionStorage object for the adaptor.
-	 * @see "org.osgi.service.permissionadmin.PermissionAdmin"
-	 */
-	public PermissionStorage getPermissionStorage() throws IOException;
-
-	/**
-	 * The framework will call this method after the 
-	 * System BundleActivator.start(BundleContext) has been called.  The context is 
-	 * the System Bundle's BundleContext.  This method allows FrameworkAdaptors to 
-	 * have access to the OSGi framework to get services, register services and 
-	 * perform other OSGi operations. 
-	 * @param context The System Bundle's BundleContext.
-	 * @exception BundleException on any error that may occur.
-	 */
-	public void frameworkStart(BundleContext context) throws BundleException;
-
-	/**
-	 * The framework will call this method before the 
-	 * System BundleActivator.stop(BundleContext) has been called.  The context is 
-	 * the System Bundle's BundleContext.  This method allows FrameworkAdaptors to 
-	 * have access to the OSGi framework to get services, register services and 
-	 * perform other OSGi operations. 
-	 * @param context The System Bundle's BundleContext.
-	 * @exception BundleException on any error that may occur.
-	 */
-	public void frameworkStop(BundleContext context) throws BundleException;
-
-	/**
-	 * The framework will call this method before the process of framework
-	 * shutdown is started.  This gives FrameworkAdaptors a chance to
-	 * perform actions before the framework start level is decremented and
-	 * all the bundles are stopped.  This method will get called before the
-	 * {@link #frameworkStop(BundleContext)} method.
-	 * @param context The System Bundle's BundleContext.
-	 */
-	public void frameworkStopping(BundleContext context);
-
-	/**
-	 * Returns the initial bundle start level as maintained by this adaptor
-	 * @return the initial bundle start level
-	 */
-	public int getInitialBundleStartLevel();
-
-	/**
-	 * Sets the initial bundle start level 
-	 * @param value the initial bundle start level
-	 */
-	public void setInitialBundleStartLevel(int value);
-
-	/**
-	 * Returns the FrameworkLog for the FrameworkAdaptor.  The FrameworkLog
-	 * is used by the Framework and FrameworkAdaptor to log any error messages 
-	 * and FramworkEvents of type ERROR.  
-	 * @return The FrameworkLog to be used by the Framework.
-	 */
-	public FrameworkLog getFrameworkLog();
-
-	/**
-	 * Creates a BundleData object for the System Bundle.  The BundleData
-	 * returned will be used to define the System Bundle for the Framework.
-	 * @return the BundleData for the System Bundle.
-	 * @throws BundleException if any error occurs while creating the 
-	 * System BundleData.
-	 */
-	public BundleData createSystemBundleData() throws BundleException;
-
-	/**
-	 * Returns the bundle watcher for this FrameworkAdaptor.
-	 * @return the bundle watcher for this FrameworkAdaptor.
-	 */
-	public BundleWatcher getBundleWatcher();
-
-	/**
-	 * Returns the PlatformAdmin for this FrameworkAdaptor.
-	 * <p>
-	 * This method will not be called until after 
-	 * {@link FrameworkAdaptor#frameworkStart(BundleContext)} is called.
-	 * @return the PlatformAdmin for this FrameworkAdaptor.
-	 */
-	public PlatformAdmin getPlatformAdmin();
-
-	/**
-	 * Returns the State for this FrameworkAdaptor.
-	 * <p>
-	 * This method will not be called until after 
-	 * {@link FrameworkAdaptor#frameworkStart(BundleContext)} is called.
-	 * The State returned is used by the framework to resolve bundle
-	 * dependencies.
-	 * @return the State for this FrameworkAdaptor.
-	 */
-	public State getState();
-
-	/**
-	 * Returns the parent ClassLoader all BundleClassLoaders created.  All
-	 * BundleClassLoaders that are created must use the ClassLoader returned
-	 * by this method as a parent ClassLoader.  Each call to this method must 
-	 * return the same ClassLoader object.
-	 * @return the parent ClassLoader for all BundleClassLoaders created.
-	 */
-	public ClassLoader getBundleClassLoaderParent();
-
-	/**
-	 * Handles a RuntimeException or Error that was caught by the Framework and
-	 * there is not a suitable caller to propagate the Throwable to.  This gives
-	 * the FrameworkAdaptor the ablity to handle such cases.  For example, a 
-	 * FrameworkAdaptor may decide that such unexpected errors should cause an error
-	 * message to be logged, or that the Framework should be terminated immediately.
-	 * @param error The Throwable for the runtime error that is to be handled.
-	 */
-	public void handleRuntimeError(Throwable error);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/PermissionStorage.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/PermissionStorage.java
deleted file mode 100644
index 6ad1d04..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/PermissionStorage.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.io.IOException;
-
-/**
- * Permission Storage interface for managing a persistent storage of
- * bundle permissions.
- *
- * <p>This class is used to provide methods to manage
- * persistent storage of bundle permissions. The PermissionStorage object
- * is returned by the FrameworkAdaptor object and is called 
- * to persistently store bundle permissions.
- *
- * <p>The permission data will typically take the form of encoded
- * <tt>PermissionInfo</tt> Strings.
- * See org.osgi.service.permissionadmin.PermissionInfo.
- *
- * <p>For example
- * <pre>
- *      PermissionStorage storage = adaptor.getPermissionStorage();
- *      try {
- *          storage.setPermissionData(location, permissions);
- *      } catch (IOException e) {
- *          // Take some error action.
- *      }
- * </pre>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface PermissionStorage {
-	/**
-	 * Returns the locations that have permission data assigned to them,
-	 * that is, locations for which permission data
-	 * exists in persistent storage.
-	 *
-	 * @return The locations that have permission data in
-	 * persistent storage, or <tt>null</tt> if there is no permission data
-	 * in persistent storage.
-	 * @throws IOException If a failure occurs accessing persistent storage.
-	 */
-	public String[] getLocations() throws IOException;
-
-	/**
-	 * Gets the permission data assigned to the specified
-	 * location.
-	 *
-	 * @param location The location whose permission data is to
-	 * be returned.
-	 * The location can be <tt>null</tt> for the default permission data.
-	 *
-	 * @return The permission data assigned to the specified
-	 * location, or <tt>null</tt> if that location has not been assigned any
-	 * permission data.
-	 * @throws IOException If a failure occurs accessing persistent storage.
-	 */
-	public String[] getPermissionData(String location) throws IOException;
-
-	/**
-	 * Assigns the specified permission data to the specified
-	 * location.
-	 *
-	 * @param location The location that will be assigned the
-	 * permissions.
-	 * The location can be <tt>null</tt> for the default permission data.
-	 * @param data The permission data to be assigned, or <tt>null</tt>
-	 * if the specified location is to be removed from persistent storaqe.
-	 * @throws IOException If a failure occurs modifying persistent storage.
-	 */
-	public void setPermissionData(String location, String[] data) throws IOException;
-
-	/**
-	 * Persists the array of encoded ConditionalPermissionInfo strings
-	 * @param infos an array of encoded ConditionalPermissionInfo strings
-	 * @throws IOException If a failure occurs modifying persistent storage.
-	 * @since 3.2
-	 */
-	public void saveConditionalPermissionInfos(String[] infos) throws IOException;
-
-	/**
-	 * Returns the persistent array of encoded ConditionalPermissionInfo strings
-	 * @return an array of encoded ConditionalPermissionInfo strings or null 
-	 * if none exist in persistent storage.
-	 * @throws IOException If a failure occurs accessing persistent storage.
-	 * @since 3.2
-	 */
-	public String[] getConditionalPermissionInfos() throws IOException;
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/StatusException.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/StatusException.java
deleted file mode 100644
index 86dfd30..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/StatusException.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.adaptor;
-
-/**
- * An exception my implement the StatusException interface to give more status information about the type of exception.
- */
-public interface StatusException {
-	/**
-	 * The exception is ok and expected
-	 */
-	public static final int CODE_OK = 0x01;
-	/**
-	 * The exception is for informational purposes
-	 */
-	public static final int CODE_INFO = 0x02;
-	/**
-	 * The exception is unexpected by may be handled, but a warning should be logged
-	 */
-	public static final int CODE_WARNING = 0x04;
-	/**
-	 * The exception is unexpected and should result in an error.
-	 */
-	public static final int CODE_ERROR = 0x08;
-
-	/**
-	 * Returns the status object
-	 * @return the status object
-	 */
-	public Object getStatus();
-
-	/**
-	 * Returns the status code
-	 * @return the status code
-	 */
-	public int getStatusCode();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/Headers.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/Headers.java
deleted file mode 100644
index 053c6fc..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/Headers.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.util;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Msg;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleException;
-
-/**
- * Headers classes. This class implements a Dictionary that has
- * the following behaviour:
- * <ul>
- * <li>put and remove clear throw UnsupportedOperationException.
- * The Dictionary is thus read-only to others.
- * <li>The String keys in the Dictionary are case-preserved,
- * but the get operation is case-insensitive.
- * </ul>
- * @since 3.1
- */
-public class Headers extends Dictionary implements Map {
-	private boolean readOnly = false;
-	private Object[] headers;
-	private Object[] values;
-	private int size = 0;
-
-	/**
-	 * Create an empty Headers dictionary.
-	 *
-	 * @param initialCapacity The initial capacity of this Headers object.
-	 */
-	public Headers(int initialCapacity) {
-		super();
-		headers = new Object[initialCapacity];
-		values = new Object[initialCapacity];
-	}
-
-	/**
-	 * Create a Headers dictionary from a Dictionary.
-	 *
-	 * @param values The initial dictionary for this Headers object.
-	 * @exception IllegalArgumentException If a case-variant of the key is
-	 * in the dictionary parameter.
-	 */
-	public Headers(Dictionary values) {
-		this(values.size());
-		/* initialize the headers and values */
-		Enumeration keys = values.keys();
-		while (keys.hasMoreElements()) {
-			Object key = keys.nextElement();
-			set(key, values.get(key));
-		}
-	}
-
-	/**
-	 * Case-preserved keys.
-	 */
-	public synchronized Enumeration keys() {
-		return new ArrayEnumeration(headers, size);
-	}
-
-	/**
-	 * Values.
-	 */
-	public synchronized Enumeration elements() {
-		return new ArrayEnumeration(values, size);
-	}
-
-	private int getIndex(Object key) {
-		boolean stringKey = key instanceof String;
-		for (int i = 0; i < size; i++) {
-			if (stringKey && (headers[i] instanceof String)) {
-				if (((String) headers[i]).equalsIgnoreCase((String) key))
-					return i;
-			} else {
-				if (headers[i].equals(key))
-					return i;
-			}
-		}
-		return -1;
-	}
-
-	private Object remove(int remove) {
-		Object removed = values[remove];
-		for (int i = remove; i < size; i++) {
-			if (i == headers.length - 1) {
-				headers[i] = null;
-				values[i] = null;
-			} else {
-				headers[i] = headers[i + 1];
-				values[i] = values[i + 1];
-			}
-		}
-		if (remove < size)
-			size--;
-		return removed;
-	}
-
-	private void add(Object header, Object value) {
-		if (size == headers.length) {
-			// grow the arrays
-			Object[] newHeaders = new Object[headers.length + 10];
-			Object[] newValues = new Object[values.length + 10];
-			System.arraycopy(headers, 0, newHeaders, 0, headers.length);
-			System.arraycopy(values, 0, newValues, 0, values.length);
-			headers = newHeaders;
-			values = newValues;
-		}
-		headers[size] = header;
-		values[size] = value;
-		size++;
-	}
-
-	/**
-	 * Support case-insensitivity for keys.
-	 *
-	 * @param key name.
-	 */
-	public synchronized Object get(Object key) {
-		int i = -1;
-		if ((i = getIndex(key)) != -1)
-			return values[i];
-		return null;
-	}
-
-	/**
-	 * Set a header value or optionally replace it if it already exists.
-	 *
-	 * @param key Key name.
-	 * @param value Value of the key or null to remove key.
-	 * @param replace A value of true will allow a previous
-	 * value of the key to be replaced.  A value of false 
-	 * will cause an IllegalArgumentException to be thrown 
-	 * if a previous value of the key exists.
-	 * @return the previous value to which the key was mapped,
-	 * or null if the key did not have a previous mapping.
-	 *
-	 * @exception IllegalArgumentException If a case-variant of the key is
-	 * already present.
-	 * @since 3.2
-	 */
-	public synchronized Object set(Object key, Object value, boolean replace) {
-		if (readOnly)
-			throw new UnsupportedOperationException();
-		if (key instanceof String)
-			key = ((String) key).intern();
-		int i = getIndex(key);
-		if (value == null) { /* remove */
-			if (i != -1)
-				return remove(i);
-		} else { /* put */
-			if (i != -1) { /* duplicate key */
-				if (!replace)
-					throw new IllegalArgumentException(NLS.bind(Msg.HEADER_DUPLICATE_KEY_EXCEPTION, key));
-				Object oldVal = values[i];
-				values[i] = value;
-				return oldVal;
-			}
-			add(key, value);
-		}
-		return null;
-	}
-
-	/**
-	 * Set a header value.
-	 *
-	 * @param key Key name.
-	 * @param value Value of the key or null to remove key.
-	 * @return the previous value to which the key was mapped,
-	 * or null if the key did not have a previous mapping.
-	 *
-	 * @exception IllegalArgumentException If a case-variant of the key is
-	 * already present.
-	 */
-	public synchronized Object set(Object key, Object value) {
-		return set(key, value, false);
-	}
-
-	public synchronized void setReadOnly() {
-		readOnly = true;
-	}
-
-	/**
-	 * Returns the number of entries (distinct keys) in this dictionary.
-	 *
-	 * @return  the number of keys in this dictionary.
-	 */
-	public synchronized int size() {
-		return size;
-	}
-
-	/**
-	 * Tests if this dictionary maps no keys to value. The general contract
-	 * for the <tt>isEmpty</tt> method is that the result is true if and only
-	 * if this dictionary contains no entries.
-	 *
-	 * @return  <code>true</code> if this dictionary maps no keys to values;
-	 *          <code>false</code> otherwise.
-	 */
-	public synchronized boolean isEmpty() {
-		return size == 0;
-	}
-
-	/**
-	 * Always throws UnsupportedOperationException.
-	 *
-	 * @param key header name.
-	 * @param value header value.
-	 * @throws UnsupportedOperationException
-	 */
-	public synchronized Object put(Object key, Object value) {
-		if (readOnly)
-			throw new UnsupportedOperationException();
-		return set(key, value, true);
-	}
-
-	/**
-	 * Always throws UnsupportedOperationException.
-	 *
-	 * @param key header name.
-	 * @throws UnsupportedOperationException
-	 */
-	public Object remove(Object key) {
-		throw new UnsupportedOperationException();
-	}
-
-	public String toString() {
-		return (values.toString());
-	}
-
-	public static Headers parseManifest(InputStream in) throws BundleException {
-		Headers headers = new Headers(10);
-		try {
-			ManifestElement.parseBundleManifest(in, headers);
-		} catch (IOException e) {
-			throw new BundleException(Msg.MANIFEST_IOEXCEPTION, BundleException.MANIFEST_ERROR, e);
-		}
-		headers.setReadOnly();
-		return headers;
-	}
-
-	class ArrayEnumeration implements Enumeration {
-		private Object[] array;
-		int cur = 0;
-
-		public ArrayEnumeration(Object[] array, int size) {
-			this.array = new Object[size];
-			System.arraycopy(array, 0, this.array, 0, this.array.length);
-		}
-
-		public boolean hasMoreElements() {
-			return cur < array.length;
-		}
-
-		public Object nextElement() {
-			return array[cur++];
-		}
-	}
-
-	public synchronized void clear() {
-		if (readOnly)
-			throw new UnsupportedOperationException();
-	}
-
-	public synchronized boolean containsKey(Object key) {
-		return getIndex(key) >= 0;
-	}
-
-	public boolean containsValue(Object var0) {
-		throw new UnsupportedOperationException();
-	}
-
-	public Set entrySet() {
-		throw new UnsupportedOperationException();
-	}
-
-	public Set keySet() {
-		throw new UnsupportedOperationException();
-	}
-
-	public void putAll(Map var0) {
-		throw new UnsupportedOperationException();
-	}
-
-	public Collection values() {
-		throw new UnsupportedOperationException();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedElement.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedElement.java
deleted file mode 100644
index a995e58..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedElement.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.util;
-
-/**
- * An element of an <code>KeyedHashSet</code>.  A KeyedElement privides the key which is used to hash 
- * the elements in an <code>KeyedHashSet</code>.
- * @see KeyedHashSet
- * @since 3.2
- */
-// This class was moved from  /org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/KeyedElement.java
-public interface KeyedElement {
-	/**
-	 * Returns the hash code of the key
-	 * @return the hash code of the key
-	 */
-	public int getKeyHashCode();
-
-	/**
-	 * Compares this element with a specified element
-	 * @param other the element to compare with
-	 * @return returns true if the specified element equals this element
-	 */
-	public boolean compare(KeyedElement other);
-
-	/**
-	 * Returns the key for this element
-	 * @return the key for this element
-	 */
-	public Object getKey();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedHashSet.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedHashSet.java
deleted file mode 100644
index 17bd38b..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/KeyedHashSet.java
+++ /dev/null
@@ -1,490 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.util;
-
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-/**
- * A set data structure which only accepts {@link KeyedElement} objects as elements of the set. 
- * Unlike typical set implementations this set requires each element to provide its own key.  This helps
- * reduce the overhead of storing the keys of each individual element<p>
- * This class in not thread safe, clients must ensure synchronization when modifying an object of this type.
- * @since 3.2 
- */
-// This class was moved from  /org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/KeyedHashSet.java
-public class KeyedHashSet {
-	public static final int MINIMUM_SIZE = 7;
-	int elementCount = 0;
-	KeyedElement[] elements;
-	private boolean replace;
-	private int capacity;
-
-	/**
-	 * Constructs an KeyedHashSet which allows elements to be replaced and with the minimum initial capacity.
-	 */
-	public KeyedHashSet() {
-		this(MINIMUM_SIZE, true);
-	}
-
-	/**
-	 * Constructs an KeyedHashSet with the minimum initial capacity.
-	 * @param replace true if this set allows elements to be replaced
-	 */
-	public KeyedHashSet(boolean replace) {
-		this(MINIMUM_SIZE, replace);
-	}
-
-	/**
-	 * Constructs an KeyedHashSet which allows elements to be replaced.
-	 * @param capacity the initial capacity of this set
-	 */
-	public KeyedHashSet(int capacity) {
-		this(capacity, true);
-	}
-
-	/**
-	 * Constructs an KeyedHashSet
-	 * @param capacity the initial capacity of this set
-	 * @param replace true if this set allows elements to be replaced
-	 */
-	public KeyedHashSet(int capacity, boolean replace) {
-		elements = new KeyedElement[Math.max(MINIMUM_SIZE, capacity * 2)];
-		this.replace = replace;
-		this.capacity = capacity;
-	}
-
-	/**
-	 * Constructs a new KeyedHashSet and copies to specified KeyedHashSet's contents to the new KeyedHashSet.
-	 * @param original the KeyedHashSet to copy
-	 */
-	public KeyedHashSet(KeyedHashSet original) {
-		elements = new KeyedElement[original.elements.length];
-		System.arraycopy(original.elements, 0, elements, 0, original.elements.length);
-		elementCount = original.elementCount;
-		replace = original.replace;
-		capacity = original.capacity;
-	}
-
-	/**
-	 * Adds an element to this set. If an element with the same key already exists,
-	 * replaces it depending on the replace flag.
-	 * @return true if the element was added/stored, false otherwise
-	 */
-	public boolean add(KeyedElement element) {
-		int hash = hash(element);
-
-		// search for an empty slot at the end of the array
-		for (int i = hash; i < elements.length; i++) {
-			if (elements[i] == null) {
-				elements[i] = element;
-				elementCount++;
-				// grow if necessary
-				if (shouldGrow())
-					expand();
-				return true;
-			}
-			if (elements[i].compare(element)) {
-				if (replace)
-					elements[i] = element;
-				return replace;
-			}
-		}
-
-		// search for an empty slot at the beginning of the array
-		for (int i = 0; i < hash - 1; i++) {
-			if (elements[i] == null) {
-				elements[i] = element;
-				elementCount++;
-				// grow if necessary
-				if (shouldGrow())
-					expand();
-				return true;
-			}
-			if (elements[i].compare(element)) {
-				if (replace)
-					elements[i] = element;
-				return replace;
-			}
-		}
-
-		// if we didn't find a free slot, then try again with the expanded set
-		expand();
-		return add(element);
-	}
-
-	/**
-	 * Adds the specified list of elements to this set.  Some elements may not
-	 * get added if the replace flag is set.
-	 * @param toAdd the list of elements to add to this set.
-	 */
-	public void addAll(KeyedElement[] toAdd) {
-		for (int i = 0; i < toAdd.length; i++)
-			add(toAdd[i]);
-	}
-
-	/**
-	 * Returns true if the specified element exists in this set.
-	 * @param element the requested element
-	 * @return true if the specified element exists in this set; false otherwise.
-	 */
-	public boolean contains(KeyedElement element) {
-		return get(element) != null;
-	}
-
-	/**
-	 * Returns true if an element with the specified key exists in this set.
-	 * @param key the key of the requested element
-	 * @return true if an element with the specified key exists in this set; false otherwise
-	 */
-	public boolean containsKey(Object key) {
-		return getByKey(key) != null;
-	}
-
-	/**
-	 * Returns all elements that exist in this set
-	 * @return all elements that exist in this set
-	 */
-	public KeyedElement[] elements() {
-		return (KeyedElement[]) elements(new KeyedElement[elementCount]);
-	}
-
-	/**
-	 * Copies all elements that exist in this set into the specified array.  No size 
-	 * checking is done.  If the specified array is to small an ArrayIndexOutOfBoundsException
-	 * will be thrown.
-	 * @param result the array to copy the existing elements into.
-	 * @return the specified array.
-	 * @throws ArrayIndexOutOfBoundsException if the specified array is to small.
-	 */
-	public Object[] elements(Object[] result) {
-		int j = 0;
-		for (int i = 0; i < elements.length; i++) {
-			KeyedElement element = elements[i];
-			if (element != null)
-				result[j++] = element;
-		}
-		return result;
-	}
-
-	/**
-	 * The array isn't large enough so double its size and rehash
-	 * all its current values.
-	 */
-	protected void expand() {
-		KeyedElement[] oldElements = elements;
-		elements = new KeyedElement[elements.length * 2];
-
-		int maxArrayIndex = elements.length - 1;
-		for (int i = 0; i < oldElements.length; i++) {
-			KeyedElement element = oldElements[i];
-			if (element != null) {
-				int hash = hash(element);
-				while (elements[hash] != null) {
-					hash++;
-					if (hash > maxArrayIndex)
-						hash = 0;
-				}
-				elements[hash] = element;
-			}
-		}
-	}
-
-	/**
-	 * Returns the element with the specified key, or null if not found.
-	 * @param key the requested element's key
-	 * @return the element with the specified key, or null if not found.
-	 */
-	public KeyedElement getByKey(Object key) {
-		if (elementCount == 0)
-			return null;
-		int hash = keyHash(key);
-
-		// search the last half of the array
-		for (int i = hash; i < elements.length; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return null;
-			if (element.getKey().equals(key))
-				return element;
-		}
-
-		// search the beginning of the array
-		for (int i = 0; i < hash - 1; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return null;
-			if (element.getKey().equals(key))
-				return element;
-		}
-
-		// nothing found so return null
-		return null;
-	}
-
-	/**
-	 * Returns the element which compares to the specified element, or null if not found.
-	 * @see KeyedElement#compare(KeyedElement)
-	 * @param otherElement the requested element 
-	 * @return the element which compares to the specified element, or null if not found.
-	 */
-	public KeyedElement get(KeyedElement otherElement) {
-		if (elementCount == 0)
-			return null;
-		int hash = hash(otherElement);
-
-		// search the last half of the array
-		for (int i = hash; i < elements.length; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return null;
-			if (element.compare(otherElement))
-				return element;
-		}
-
-		// search the beginning of the array
-		for (int i = 0; i < hash - 1; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return null;
-			if (element.compare(otherElement))
-				return element;
-		}
-
-		// nothing found so return null
-		return null;
-	}
-
-	/**
-	 * Returns true if this set is empty
-	 * @return true if this set is empty
-	 */
-	public boolean isEmpty() {
-		return elementCount == 0;
-	}
-
-	/**
-	 * The element at the given index has been removed so move
-	 * elements to keep the set properly hashed.
-	 * @param anIndex the index that has been removed
-	 */
-	protected void rehashTo(int anIndex) {
-
-		int target = anIndex;
-		int index = anIndex + 1;
-		if (index >= elements.length)
-			index = 0;
-		KeyedElement element = elements[index];
-		while (element != null) {
-			int hashIndex = hash(element);
-			boolean match;
-			if (index < target)
-				match = !(hashIndex > target || hashIndex <= index);
-			else
-				match = !(hashIndex > target && hashIndex <= index);
-			if (match) {
-				elements[target] = element;
-				target = index;
-			}
-			index++;
-			if (index >= elements.length)
-				index = 0;
-			element = elements[index];
-		}
-		elements[target] = null;
-	}
-
-	/**
-	 * Removes the element with the specified key
-	 * @param key the requested element's key
-	 * @return true if an element was removed
-	 */
-	public boolean removeByKey(Object key) {
-		if (elementCount == 0)
-			return false;
-		int hash = keyHash(key);
-
-		for (int i = hash; i < elements.length; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return false;
-			if (element.getKey().equals(key)) {
-				rehashTo(i);
-				elementCount--;
-				return true;
-			}
-		}
-
-		for (int i = 0; i < hash - 1; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return false;
-			if (element.getKey().equals(key)) {
-				rehashTo(i);
-				elementCount--;
-				return true;
-			}
-		}
-
-		return true;
-	}
-
-	/**
-	 * Removes the element which compares to the specified element
-	 * @param toRemove the requested element to remove
-	 * @return true if an element was removed
-	 */
-	public boolean remove(KeyedElement toRemove) {
-		if (elementCount == 0)
-			return false;
-
-		int hash = hash(toRemove);
-
-		for (int i = hash; i < elements.length; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return false;
-			if (element.compare(toRemove)) {
-				rehashTo(i);
-				elementCount--;
-				return true;
-			}
-		}
-
-		for (int i = 0; i < hash - 1; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				return false;
-			if (element.compare(toRemove)) {
-				rehashTo(i);
-				elementCount--;
-				return true;
-			}
-		}
-		return false;
-	}
-
-	private int hash(KeyedElement element) {
-		return Math.abs(element.getKeyHashCode()) % elements.length;
-	}
-
-	private int keyHash(Object key) {
-		return Math.abs(key.hashCode()) % elements.length;
-	}
-
-	/**
-	 * Removes all of the specified elements from this set
-	 * @param toRemove the requested elements to remove
-	 */
-	public void removeAll(KeyedElement[] toRemove) {
-		for (int i = 0; i < toRemove.length; i++)
-			remove(toRemove[i]);
-	}
-
-	private boolean shouldGrow() {
-		return elementCount > elements.length * 0.75;
-	}
-
-	/**
-	 * Returns the number of elements in this set
-	 * @return the number of elements in this set
-	 */
-	public int size() {
-		return elementCount;
-	}
-
-	public String toString() {
-		StringBuffer result = new StringBuffer(100);
-		result.append("{"); //$NON-NLS-1$
-		boolean first = true;
-		for (int i = 0; i < elements.length; i++) {
-			if (elements[i] != null) {
-				if (first)
-					first = false;
-				else
-					result.append(", "); //$NON-NLS-1$
-				result.append(elements[i]);
-			}
-		}
-		result.append("}"); //$NON-NLS-1$
-		return result.toString();
-	}
-
-	/**
-	 * Returns the number of collisions this set currently has
-	 * @return the number of collisions this set currently has
-	 */
-	public int countCollisions() {
-		int result = 0;
-		int lastHash = 0;
-		boolean found = false;
-		for (int i = 0; i < elements.length; i++) {
-			KeyedElement element = elements[i];
-			if (element == null)
-				found = false;
-			else {
-				int hash = hash(element);
-				if (found)
-					if (lastHash == hash)
-						result++;
-					else
-						found = false;
-				else {
-					lastHash = hash;
-					found = true;
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns an iterator of elements in this set
-	 * @return an iterator of elements in this set
-	 */
-	public Iterator iterator() {
-		return new EquinoxSetIterator();
-	}
-
-	class EquinoxSetIterator implements Iterator {
-		private int currentIndex = -1;
-		private int found;
-
-		public boolean hasNext() {
-			return found < elementCount;
-		}
-
-		public Object next() {
-			if (!hasNext())
-				throw new NoSuchElementException();
-			while (++currentIndex < elements.length)
-				if (elements[currentIndex] != null) {
-					found++;
-					return elements[currentIndex];
-				}
-			// this would mean we have less elements than we thought
-			throw new NoSuchElementException();
-		}
-
-		public void remove() {
-			// as allowed by the API
-			throw new UnsupportedOperationException();
-		}
-	}
-
-	/**
-	 * Clears all elements from this set
-	 */
-	public void clear() {
-		elements = new KeyedElement[Math.max(MINIMUM_SIZE, capacity * 2)];
-		elementCount = 0;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/ObjectPool.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/ObjectPool.java
deleted file mode 100644
index e80bd1a..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/ObjectPool.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.util;
-
-import java.lang.ref.WeakReference;
-import java.util.Map;
-import java.util.WeakHashMap;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-
-public class ObjectPool {
-	private static String OPTION_DEBUG_OBJECTPOOL_ADDS = Debug.ECLIPSE_OSGI + "/debug/objectPool/adds"; //$NON-NLS-1$
-	private static String OPTION_DEBUG_OBJECTPOOL_DUPS = Debug.ECLIPSE_OSGI + "/debug/objectPool/dups"; //$NON-NLS-1$
-	private static final boolean DEBUG_OBJECTPOOL_ADDS;
-	private static final boolean DEBUG_OBJECTPOOL_DUPS;
-	private static Map objectCache = new WeakHashMap();
-	static {
-		FrameworkDebugOptions dbgOptions = FrameworkDebugOptions.getDefault();
-		if (dbgOptions != null) {
-			DEBUG_OBJECTPOOL_ADDS = dbgOptions.getBooleanOption(OPTION_DEBUG_OBJECTPOOL_ADDS, false);
-			DEBUG_OBJECTPOOL_DUPS = dbgOptions.getBooleanOption(OPTION_DEBUG_OBJECTPOOL_DUPS, false);
-		} else {
-			DEBUG_OBJECTPOOL_ADDS = false;
-			DEBUG_OBJECTPOOL_DUPS = false;
-		}
-	}
-
-	public static Object intern(Object obj) {
-		synchronized (objectCache) {
-			WeakReference ref = (WeakReference) objectCache.get(obj);
-			if (ref != null) {
-				Object refValue = ref.get();
-				if (refValue != null) {
-					obj = refValue;
-					if (DEBUG_OBJECTPOOL_DUPS)
-						Debug.println("[ObjectPool] Found duplicate object: " + getObjectString(obj)); //$NON-NLS-1$
-				}
-			} else {
-				objectCache.put(obj, new WeakReference(obj));
-				if (DEBUG_OBJECTPOOL_ADDS)
-					Debug.println("[ObjectPool] Added unique object to pool: " + getObjectString(obj) + " Pool size: " + objectCache.size()); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		return obj;
-	}
-
-	private static String getObjectString(Object obj) {
-		return "[(" + obj.getClass().getName() + ") " + obj.toString() + "]"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BaseDescription.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BaseDescription.java
deleted file mode 100644
index 50b1078..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BaseDescription.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import org.osgi.framework.Version;
-
-/**
- * This class represents a base description object for a state.  All description
- * objects in a state have a name and a version.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface BaseDescription {
-	/**
-	 * Returns the name.
-	 * @return the name
-	 */
-	public String getName();
-
-	/**
-	 * Returns the version.
-	 * @return the version
-	 */
-	public Version getVersion();
-
-	/**
-	 * Returns the bundle which supplies this base description
-	 * @return the bundle which supplies this base description
-	 * @since 3.2
-	 */
-	public BundleDescription getSupplier();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDelta.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDelta.java
deleted file mode 100644
index 74e7931..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDelta.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * BundleDeltas represent the changes related to an individual bundle between two
- * states.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface BundleDelta extends Comparable {
-
-	/**
-	 * Delta type constant (bit mask) indicating that the bundle has been added
-	 * to the new state. 
-	 * @see BundleDelta#getType
-	 */
-	public static final int ADDED = 0x1;
-	/**
-	 * Delta type constant (bit mask) indicating that the bundle is no longer present in 
-	 * the new state.
-	 * @see BundleDelta#getType
-	 */
-	public static final int REMOVED = 0x2;
-	/**
-	 * Delta type constant (bit mask) indicating that the bundle has been updated
-	 * between the old and new state.  Note that an update delta may in fact represent
-	 * a downgrading of the bundle to a previous version. 
-	 * @see BundleDelta#getType
-	 */
-	public static final int UPDATED = 0x4;
-	/**
-	 * Delta type constant (bit mask) indicating that the bundle has become resolved
-	 * in the new state.  
-	 * @see BundleDelta#getType
-	 */
-	public static final int RESOLVED = 0x8;
-	/**
-	 * Delta type constant (bit mask) indicating that the bundle has become unresolved
-	 * in the new state. Note that newly added bundles are unresolved by default and 
-	 * as such, do not transition to unresolved state so this flag is not set.
-	 * @see BundleDelta#getType
-	 */
-	public static final int UNRESOLVED = 0x10;
-	/**
-	 * Delta type constant (bit mask) indicating that the bundles and packages which this
-	 * bundle requires/imports (respectively) have changed in the new state.
-	 * @see BundleDelta#getType
-	 * @deprecated this type is no longer valid
-	 */
-	public static final int LINKAGE_CHANGED = 0x20;
-
-	/**
-	 * Delta type constant (bit mask) indicating that the bundles which this
-	 * bundle optionally requires have changed in the new state.
-	 * @see BundleDelta#getType
-	 * @deprecated this type is no longer valid
-	 */
-	public static final int OPTIONAL_LINKAGE_CHANGED = 0x40;
-
-	/**
-	 * Delta type constant (bit mask) indicating that the this bundle is
-	 * pending a removal.  Note that bundles with this flag set will also
-	 * have the {@link BundleDelta#REMOVED} flag set.  A bundle will have
-	 * this flag set if it has been removed from the state but has other 
-	 * existing bundles in the state that depend on it.
-	 * @see BundleDelta#getType
-	 */
-	public static final int REMOVAL_PENDING = 0x80;
-
-	/**
-	 * Delta type constant (bit mask) indicating that the this bundle has
-	 * completed a pending removal.  A bundle will complete a pending removal only
-	 * after it has been re-resolved by the resolver. 
-	 */
-	public static final int REMOVAL_COMPLETE = 0x100;
-
-	/**
-	 * Returns the BundleDescription that this bundle delta is for.
-	 * @return the BundleDescription that this bundle delta is for. 
-	 */
-	public BundleDescription getBundle();
-
-	/**
-	 * Returns the type of change which occured.  The return value is composed
-	 * of by bit-wise masking the relevant flags from the set ADDED, REMOVED, 
-	 * UPDATED, RESOLVED, UNRESOLVED, LINKAGE_CHANGED, REMOVAL_PENDING, REMOVAL_COMPLETE. 
-	 * Note that bundle start and stop state changes are not captured in the 
-	 * delta as they do not represent structural changes but rather transient
-	 * runtime states.
-	 * @return the type of change which occured
-	 */
-	public int getType();
-
-	/**
-	 * Answers an integer indicating the relative positions of the receiver and
-	 * the argument in the natural order of elements of the receiver's class.
-	 * <p>
-	 * The natural order of elements is determined by the bundle id of the
-	 * BundleDescription that this bundle delta is for.
-	 * 
-	 * @return int which should be <0 if the receiver should sort before the
-	 *         argument, 0 if the receiver should sort in the same position as
-	 *         the argument, and >0 if the receiver should sort after the
-	 *         argument.
-	 * @param obj
-	 *            another BundleDelta an object to compare the receiver to
-	 * @exception ClassCastException
-	 *                if the argument can not be converted into something
-	 *                comparable with the receiver.
-	 */
-	public int compareTo(Object obj);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDescription.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDescription.java
deleted file mode 100644
index 8cfb270..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDescription.java
+++ /dev/null
@@ -1,251 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * This class represents a specific version of a bundle in the system.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface BundleDescription extends BaseDescription {
-
-	/**
-	 * Gets the Bundle-SymbolicName of this BundleDescription.
-	 * Same as calling {@link BaseDescription#getName()}.
-	 * @return The bundle symbolic name or null if the bundle
-	 * does not have a symbolic name.
-	 */
-	public String getSymbolicName();
-
-	/**
-	 * The location string for this bundle.
-	 * @return The bundle location or null if the bundle description
-	 * does not have a location
-	 */
-	public String getLocation();
-
-	/**
-	 * Returns an array of bundle specifications defined by the Require-Bundle
-	 * clause in this bundle.
-	 * 
-	 * @return an array of bundle specifications
-	 */
-	public BundleSpecification[] getRequiredBundles();
-
-	/**
-	 * Returns an array of export package descriptions defined by the Export-Package clauses.
-	 * All export package descriptions are returned even if they have not been selected by
-	 * the resolver as an exporter of the package.
-	 *
-	 * @return an array of export package descriptions
-	 */
-	public ExportPackageDescription[] getExportPackages();
-
-	/**
-	 * Returns an array of import package specifications defined by the Import-Package clause.
-	 * @return an array of import package specifications
-	 */
-	public ImportPackageSpecification[] getImportPackages();
-
-	/**
-	 * Returns an array of generic specifications constraints required by this bundle.
-	 * @return an array of generic specifications
-	 * @since 3.2
-	 */
-	public GenericSpecification[] getGenericRequires();
-
-	/**
-	 * Returns an array of generic descriptions for the capabilities of this bundle.
-	 * @return an array of generic descriptions
-	 * @since 3.2
-	 */
-	public GenericDescription[] getGenericCapabilities();
-
-	/**
-	 * Returns true if this bundle has one or more dynamically imported packages.
-	 * @return true if this bundle has one or more dynamically imported packages.
-	 */
-	public boolean hasDynamicImports();
-
-	/**
-	 * Returns all the exported packages from this bundle that have been selected by
-	 * the resolver.  The returned list will include the ExportPackageDescriptions
-	 * returned by {@link #getExportPackages()} that have been selected by the resolver and
-	 * packages which are propagated by this bundle.
-	 * @return the selected list of packages that this bundle exports.  If the bundle is
-	 * unresolved or has no shared packages then an empty array is returned.
-	 */
-	public ExportPackageDescription[] getSelectedExports();
-
-	/**
-	 * Returns all the bundle descriptions that satisfy all the require bundles for this bundle.
-	 * If the bundle is not resolved or the bundle does not require any bundles then an empty array is
-	 * returned.
-	 * @return the bundles descriptions that satisfy all the require bundles for this bundle.
-	 */
-	public BundleDescription[] getResolvedRequires();
-
-	/**
-	 * Returns all the export packages that satisfy all the imported packages for this bundle.
-	 * If the bundle is not resolved or the bundle does not import any packages then an empty array is
-	 * returned.
-	 * @return the exported packages that satisfy all the imported packages for this bundle.
-	 */
-	public ExportPackageDescription[] getResolvedImports();
-
-	/**
-	 * Returns true if this bundle is resolved in its host state.
-	 * 
-	 * @return true if this bundle is resolved in its host state.
-	 */
-	public boolean isResolved();
-
-	/**
-	 * Returns the state object which hosts this bundle. null is returned if
-	 * this bundle is not currently in a state.
-	 * 
-	 * @return the state object which hosts this bundle.
-	 */
-	public State getContainingState();
-
-	/**
-	 * Returns the string representation of this bundle.
-	 * 
-	 * @return String representation of this bundle.
-	 */
-	public String toString();
-
-	/**
-	 * Returns the host for this bundle. null is returned if this bundle is not
-	 * a fragment.
-	 * 
-	 * @return the host for this bundle.
-	 */
-	public HostSpecification getHost();
-
-	/**
-	 * Returns the numeric id of this bundle.  Typically a bundle description
-	 * will only have a numeric id if it represents a bundle that is installed in a 
-	 * framework as the framework assigns the ids.  -1 is returned if the id is not known.
-	 * 
-	 * @return the numeric id of this bundle description
-	 */
-	public long getBundleId();
-
-	/**
-	 * Returns all fragments known to this bundle (regardless resolution status).
-	 * 
-	 * @return an array of BundleDescriptions containing all known fragments
-	 */
-	public BundleDescription[] getFragments();
-
-	/**
-	 * Returns whether this bundle is a singleton.  Singleton bundles require 
-	 * that at most one single version of the bundle can be resolved at a time. 
-	 * <p>
-	 * The existence of a single bundle marked as singleton causes all bundles
-	 * with the same symbolic name to be treated as singletons as well.  
-	 * </p>
-	 * 
-	 * @return <code>true</code>, if this bundle is a singleton, 
-	 * <code>false</code> otherwise
-	 */
-	public boolean isSingleton();
-
-	/**
-	 * Returns whether this bundle is pending a removal.  A bundle is pending
-	 * removal if it has been removed from the state but other bundles in
-	 * the state currently depend on it.
-	 * @return <code>true</code>, if this bundle is pending a removal,
-	 * <code>false</code> otherwise
-	 */
-	public boolean isRemovalPending();
-
-	/**
-	 * Returns all bundles which depend on this bundle.  A bundle depends on
-	 * another bundle if it requires the bundle, imports a package which is 
-	 * exported by the bundle, is a fragment to the bundle or is the host
-	 * of the bundle.
-	 * @return all bundles which depend on this bundle.
-	 */
-	public BundleDescription[] getDependents();
-
-	/**
-	 * Returns the user object associated to this bundle description, or 
-	 * <code>null</code> if none exists.
-	 *  
-	 * @return the user object associated to this bundle  description,
-	 * or <code>null</code>
-	 */
-	public Object getUserObject();
-
-	/**
-	 * Associates a user-provided object to this bundle description, or
-	 * removes an existing association, if <code>null</code> is provided. The 
-	 * provided object is not interpreted in any ways by this bundle 
-	 * description.
-	 * 
-	 * @param userObject an arbitrary object provided by the user, or 
-	 * <code>null</code>
-	 */
-	public void setUserObject(Object userObject);
-
-	/**
-	 * Returns the platform filter in the form of an LDAP filter
-	 * @return the platfomr filter in the form of an LDAP filter
-	 */
-	public String getPlatformFilter();
-
-	/**
-	 * Returns true if this bundle allows fragments to attach
-	 * @return true if this bundle allows fragments to attach
-	 */
-	public boolean attachFragments();
-
-	/**
-	 * Returns true if this bundle allows fragments to attach dynamically
-	 * after it has been resolved.
-	 * @return true if this bundle allows fragments to attach dynamically
-	 */
-	public boolean dynamicFragments();
-
-	/**
-	 * Returns the list of execution environments that are required by 
-	 * this bundle.  Any one of the listed execution environments will 
-	 * allow this bundle to be resolved.
-	 * @since 3.2
-	 * @return the list of execution environments that are required.
-	 */
-	public String[] getExecutionEnvironments();
-
-	/**
-	 *  Returns the native code specification for this bundle.  A value
-	 *  of <code>null</code> is returned if there is no native code
-	 *  specification.
-	 * @return the native code specification.
-	 * @since 3.4
-	 */
-	public NativeCodeSpecification getNativeCodeSpecification();
-
-	/**
-	 * Returns the export packages that satisfy imported packages for this bundle description
-	 * and substitute one of the exports for this bundle description.  If the bundle is not resolved
-	 * or the bundle does not have substituted exports then an empty array is
-	 * returned.
-	 * @return all substituted exports for this bundle description
-	 * @since 3.4
-	 */
-	public ExportPackageDescription[] getSubstitutedExports();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleSpecification.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleSpecification.java
deleted file mode 100644
index bb5d4ac..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleSpecification.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * A representation of one bundle import constraint as seen in a 
- * bundle manifest and managed by a state and resolver.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface BundleSpecification extends VersionConstraint {
-
-	/**
-	 * Returns whether or not this bundle specificiation is exported from the 
-	 * declaring bundle.
-	 * 
-	 * @return whether this specification is exported
-	 */
-	public boolean isExported();
-
-	/**
-	 * Returns whether or not this bundle specificiation is optional.
-	 * 
-	 * @return whether this specification is optional
-	 */
-	public boolean isOptional();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/DisabledInfo.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/DisabledInfo.java
deleted file mode 100644
index 9f79ddb..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/DisabledInfo.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * A disabled info represents a policy decision to disable a bundle which exists in a {@link State}.
- * Bundles may be disabled by adding disabled info with the {@link State#addDisabledInfo(DisabledInfo)}
- * method and enabled by removing disabled info with the {@link State#removeDisabledInfo(DisabledInfo)} method.
- * A bundle is not considered to be enabled unless there are no disabled info objects for the bundle.
- * <p>
- * While resolving the bundle if the {@link Resolver} encounters a {@link BundleDescription} which 
- * has disabled info returned by {@link State#getDisabledInfos(BundleDescription)} then the bundle 
- * must not be allowed to resolve and a ResolverError of type {@link ResolverError#DISABLED_BUNDLE}
- * must be added to the state.
- * </p>
- * @see State
- * @since 3.4
- */
-public final class DisabledInfo {
-	private final String policyName;
-	private final String message;
-	private final BundleDescription bundle;
-
-	/**
-	 * DisabledInfo constructor.
-	 * @param policyName the name of the policy
-	 * @param message the message, may be <code>null</code>
-	 * @param bundle the bundle
-	 */
-	public DisabledInfo(String policyName, String message, BundleDescription bundle) {
-		if (policyName == null || bundle == null)
-			throw new IllegalArgumentException();
-		this.policyName = policyName;
-		this.message = message;
-		this.bundle = bundle;
-	}
-
-	/**
-	 * Returns the name of the policy which disabled the bundle.
-	 * @return the name of the policy
-	 */
-	public String getPolicyName() {
-		return policyName;
-	}
-
-	/**
-	 * Returns the message describing the reason the bundle is disabled.
-	 * @return the message
-	 */
-	public String getMessage() {
-		return message;
-	}
-
-	/**
-	 * Returns the bundle which is disabled
-	 * @return the bundle which is disabled
-	 */
-	public BundleDescription getBundle() {
-		return bundle;
-	}
-
-	public boolean equals(Object obj) {
-		if (obj == this)
-			return true;
-		if (!(obj instanceof DisabledInfo))
-			return false;
-		DisabledInfo other = (DisabledInfo) obj;
-		if (getBundle() == other.getBundle() && getPolicyName().equals(other.getPolicyName())) {
-			if (getMessage() == null ? other.getMessage() == null : getMessage().equals(other.getMessage()))
-				return true;
-		}
-		return false;
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + (bundle == null ? 0 : bundle.hashCode());
-		result = prime * result + (policyName == null ? 0 : policyName.hashCode());
-		result = prime * result + (message == null ? 0 : message.hashCode());
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ExportPackageDescription.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ExportPackageDescription.java
deleted file mode 100644
index cb9a839..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ExportPackageDescription.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import java.util.Map;
-
-/**
- * This class represents a specific version of an exported package in the system.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ExportPackageDescription extends BaseDescription {
-
-	/**
-	 * Returns true if the export package is a root package; false otherwise.
-	 * A ExportPackageDescription is not a root package the exporting bundle
-	 * is re-exporting the package using the Reexport-Package header.
-	 * @return true if the export package is a root package; false otherwise
-	 * @deprecated all export package descriptions are roots.  The Reexport-Package header
-	 * never became API.
-	 */
-	public boolean isRoot();
-
-	/**
-	 * Returns the arbitrary attributes for this package.
-	 * @return the arbitrary attributes for this package
-	 */
-	public Map getAttributes();
-
-	/**
-	 * Returns the directives for this package.
-	 * @return the directives for this package
-	 */
-	public Map getDirectives();
-
-	/**
-	 * Returns the specified directive for this package.
-	 * @param key the directive to fetch
-	 * @return the specified directive for this package
-	 */
-	public Object getDirective(String key);
-
-	/**
-	 * Returns the exporter of this package. 
-	 * @return the exporter of this package.
-	 */
-	public BundleDescription getExporter();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericDescription.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericDescription.java
deleted file mode 100644
index 33c27bf..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericDescription.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import java.util.Dictionary;
-
-/**
- * A description of a generic capability.
- * @since 3.2
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface GenericDescription extends BaseDescription {
-	/**
-	 * The default type of generic capability.
-	 */
-	public static String DEFAULT_TYPE = "generic"; //$NON-NLS-1$
-
-	/**
-	 * Returns the arbitrary attributes for this description
-	 * @return the arbitrary attributes for this description
-	 */
-	public Dictionary getAttributes();
-
-	/**
-	 * Returns the type of generic description capability
-	 * @return the type of generic description capability
-	 */
-	public String getType();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericSpecification.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericSpecification.java
deleted file mode 100644
index 3ebc34a..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericSpecification.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * A specification which depends on a generic capability
- * @since 3.2
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface GenericSpecification extends VersionConstraint {
-	/**
-	 * The optional resolution type
-	 * @see #getResolution()
-	 */
-	public static final int RESOLUTION_OPTIONAL = 0x01;
-	/**
-	 * The multiple resolution type
-	 * @see #getResolution()
-	 */
-	public static final int RESOLUTION_MULTIPLE = 0x02;
-
-	/**
-	 * Returns a matching filter used to match with a suppliers attributes
-	 * @return a matching filter used to match with a suppliers attributes
-	 */
-	public String getMatchingFilter();
-
-	/**
-	 * Returns the type of generic specification
-	 * @return the type of generic specification
-	 */
-	public String getType();
-
-	/**
-	 * Returns the resolution type of the required capability.  The returned
-	 * value is a bit mask that may have the optional bit {@link #RESOLUTION_OPTIONAL}
-	 * and/or the multiple bit {@link #RESOLUTION_MULTIPLE} set.
-	 * 
-	 * @return the resolution type of the required capability
-	 */
-	public int getResolution();
-
-	/**
-	 * Returns the suppliers of the capability.  If the the resolution is multiple then
-	 * more than one supplier may be returned
-	 * @return the suppliers of the capability
-	 */
-	public GenericDescription[] getSuppliers();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/HostSpecification.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/HostSpecification.java
deleted file mode 100644
index 3f6a46f..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/HostSpecification.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * A representation of one host bundle constraint as seen in a 
- * bundle manifest and managed by a state and resolver.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface HostSpecification extends VersionConstraint {
-	/**
-	 * Returns the list of host BundleDescriptions that satisfy this HostSpecification
-	 * @return the list of host BundleDescriptions that satisfy this HostSpecification
-	 */
-	public BundleDescription[] getHosts();
-
-	/**
-	 * Returns if this HostSpecification is allowed to have multiple hosts
-	 * @return true if this HostSpecification is allowed to have multiple hosts
-	 */
-	public boolean isMultiHost();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ImportPackageSpecification.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ImportPackageSpecification.java
deleted file mode 100644
index 8e12846..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ImportPackageSpecification.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import java.util.Map;
-
-/**
- * A representation of one package import constraint as seen in a 
- * bundle manifest and managed by a state and resolver.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ImportPackageSpecification extends VersionConstraint {
-	/**
-	 * The static resolution directive value.
-	 */
-	public static final String RESOLUTION_STATIC = "static"; //$NON-NLS-1$
-	/**
-	 * The optional resolution directive value.
-	 */
-	public static final String RESOLUTION_OPTIONAL = "optional"; //$NON-NLS-1$
-	/**
-	 * The dynamic resolution directive value.
-	 */
-	public static final String RESOLUTION_DYNAMIC = "dynamic"; //$NON-NLS-1$
-
-	/**
-	 * Returns the symbolic name of the bundle this import package must be resolved to.
-	 * @return the symbolic name of the bundle this import pacakge must be resolved to.
-	 * A value of <code>null</code> indicates any symbolic name.
-	 */
-	public String getBundleSymbolicName();
-
-	/**
-	 * Returns the version range which this import package may be resolved to. 
-	 * @return the version range which this import package may be resolved to.
-	 */
-	public VersionRange getBundleVersionRange();
-
-	/**
-	 * Returns the arbitrary attributes which this import package may be resolved to.
-	 * @return the arbitrary attributes which this import package may be resolved to.
-	 */
-	public Map getAttributes();
-
-	/**
-	 * Returns the directives that control this import package.
-	 * @return the directives that control this import package.
-	 */
-	public Map getDirectives();
-
-	/**
-	 * Returns the specified directive that control this import package.
-	 * @return the specified directive that control this import package.
-	 */
-	public Object getDirective(String key);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeDescription.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeDescription.java
deleted file mode 100644
index c788a99..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeDescription.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import org.osgi.framework.Filter;
-
-/**
- * This class represents a native code description.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.4
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface NativeCodeDescription extends BaseDescription, Comparable {
-	/**
-	 * Returns the paths to the native code libraries.
-	 * @return the paths to the native code libraries.
-	 */
-	public String[] getNativePaths();
-
-	/**
-	 * Returns the processors supported by the native code.
-	 * @return the processors supported by the native code.  An 
-	 * empty array is returned if no processors are supported.
-	 */
-	public String[] getProcessors();
-
-	/**
-	 * Returns the operating system names supported by the native code.
-	 * @return the operating system names supported by the native code.
-	 * An empty array is returned if no operating systems are supported.
-	 */
-	public String[] getOSNames();
-
-	/**
-	 * Returns the operating system version ranges supported by the native code.
-	 * @return the operating system version ranges supported by the native code.
-	 * An empty array is returned if all versions are supported.
-	 */
-	public VersionRange[] getOSVersions();
-
-	/**
-	 * Returns the languages supported by the native code.
-	 * @return the languages supported by the native code.  An empty array is 
-	 * returned if all languages are supported.
-	 */
-	public String[] getLanguages();
-
-	/**
-	 * Returns the selection filter used to select the native code.
-	 * @return the selection filter used to select the native code.
-	 */
-	public Filter getFilter();
-
-	/**
-	 * Native code descriptions are sorted with the following preferences:
-	 * <ul>
-	 * <li>The minimum version of the os version ranges</li>
-	 * <li>The language<li>
-	 * </ul>
-	 * @param other the native code description to be compared
-	 * @return a negative integer, zero, or a positive integer as this natve
-	 * code description is less than, equal to, or greater than the specified object.
-	 */
-	public int compareTo(Object other);
-
-	/**
-	 * Indicates if this native code description has invalid native code paths.  Native
-	 * code paths are invalid if they can not be found in the bundle content. 
-	 * @return true if the native code paths are invalid; otherwise false is returned.
-	 */
-	public boolean hasInvalidNativePaths();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeSpecification.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeSpecification.java
deleted file mode 100644
index 1c37fd3..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/NativeCodeSpecification.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * This class represents a native code specification.  A 
- * native code specification is different from other 
- * specification constraints which typically are resolved against
- * suppliers provided by other bundles.   A native code 
- * specification supplies it own suppliers which are matched
- * against the platform properties at resolve time and the 
- * supplier with the best match is selected.
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.4
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface NativeCodeSpecification extends VersionConstraint {
-	/**
-	 * Returns the list of possible suppliers to this native code specification.  When 
-	 * this native code specification is resolved one of the possible suppliers
-	 * will be selected and returned by {@link VersionConstraint#getSupplier()}.
-	 * @return the list of possible suppliers.
-	 */
-	public NativeCodeDescription[] getPossibleSuppliers();
-
-	/**
-	 * Returns whether or not this native code specification is optional.
-	 * 
-	 * @return whether this specification is optional
-	 */
-	public boolean isOptional();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/PlatformAdmin.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/PlatformAdmin.java
deleted file mode 100644
index f7f58ac..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/PlatformAdmin.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import org.osgi.framework.BundleException;
-
-/**
- * Framework service which allows bundle programmers to inspect the bundles and
- * packages known to the Framework.  The PlatformAdmin service also allows bundles
- * with sufficient privileges to update the state of the framework by committing a new
- * configuration of bundles and packages.
- *
- * If present, there will only be a single instance of this service
- * registered with the Framework.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface PlatformAdmin {
-
-	/** 
-	 * Returns a mutable state representing the current system.
-	 * <p>
-	 * This is a convenience method, fully equivalent to 
-	 * <code>getState(true)</code>.
-	 * </p> 
-	 * @return a state representing the current framework.
-	 */
-	public State getState();
-
-	/** 
-	 * Returns a state representing the current system. If there is need to make
-	 * changes to the returned state, a mutable state must be requested. 
-	 * Otherwise, an immutable state should be requested. In this case, invoking 
-	 * any of the operations that could cause the state to be changed will throw 
-	 * an <code>java.lang.UnsupportedOperationException</code>.
-	 * <p>
-	 * If a mutable state is requested, the resulting state will <strong>not</strong> 
-	 * be resolved. 
-	 * </p> 
-	 * @param mutable whether the returned state should mutable
-	 * @return a state representing the current framework.
-	 */
-	public State getState(boolean mutable);
-
-	/**
-	 * Returns a state helper object. State helpers provide convenience methods 
-	 * for manipulating states. 
-	 * <p>
-	 * A possible implementation for this
-	 * method would provide the same single StateHelper instance to all clients.
-	 * </p>
-	 * 
-	 * @return a state helper
-	 * @see StateHelper
-	 */
-	public StateHelper getStateHelper();
-
-	/**
-	 * Commit the differences between the current state and the given state.
-	 * The given state must return true from State.isResolved() or an exception 
-	 * is thrown.  The resolved state is committed verbatim, as-is.  
-	 * 
-	 * @param state the future state of the framework
-	 * @throws BundleException if the id of the given state does not match that of the
-	 * 	current state or if the given state is not resolved.
-	 */
-	public void commit(State state) throws BundleException;
-
-	/**
-	 * Returns a resolver supplied by the system.  The returned resolver 
-	 * will not be associated with any state.
-	 * @return a system resolver
-	 * @deprecated in favour of {@link #createResolver()}.
-	 */
-	public Resolver getResolver();
-
-	/**
-	 * Creates a new {@link Resolver} that is not associated with any {@link State}.
-	 * @return the new <code>Resolver</code>.
-	 * @since 3.5
-	 */
-	public Resolver createResolver();
-
-	/**
-	 * Returns a factory that knows how to create state objects, such as bundle 
-	 * descriptions and the different types of version constraints.
-	 * @return a state object factory
-	 */
-	public StateObjectFactory getFactory();
-
-	/**
-	 * Adds the disabled info to the state managed by this platform admin. 
-	 *  If a disable info already exists for the specified policy and the specified bundle 
-	 *  then it is replaced with the given disabled info.
-	 * @param disabledInfo the disabled info to add.
-	 * @throws IllegalArgumentException if the <code>BundleDescription</code> for
-	 * the specified disabled info does not exist in the state managed by this platform admin.
-	 * @since 3.4
-	 */
-	public void addDisabledInfo(DisabledInfo disabledInfo);
-
-	/**
-	 * Removes the disabled info from the state managed by this platform admin.
-	 * @param disabledInfo the disabled info to remove
-	 * @since 3.4
-	 */
-	public void removeDisabledInfo(DisabledInfo disabledInfo);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/Resolver.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/Resolver.java
deleted file mode 100644
index e24e855..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/Resolver.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import java.util.Comparator;
-import java.util.Dictionary;
-
-/**
- * An implementation of a resolver which resolves the constraints of the bundles
- * in a system.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface Resolver {
-
-	/**
-	 * Resolves the state associated with this resolver and returns an array of
-	 * bundle deltas describing the changes.. The state and version bindings
-	 * for the various bundles and packages in this state are updated and a
-	 * array containing bundle deltas describing the changes returned.
-	 * <p>
-	 * This method is intended to be called only by State objects in response
-	 * to a user invocation of State.resolve(). States will typically refuse to
-	 * update their constituents (see State.resolveBundle() and
-	 * State.resolveConstraint()) if their resolve method is not currently
-	 * being invoked.
-	 * </p>
-	 * <p>
-	 * Note the given state is destructively modified to reflect the results of
-	 * resolution.
-	 * </p>
-	 * @param discard the list of bundles to discard the resolve status and 
-	 * reresolve.  A <tt>null</tt> value indicates that all currently unresolved
-	 * bundles in the state should be resolved.
-	 * @param platformProperties the platform properties used to match platform filters
-	 * against.  A <tt>null</tt> value indicates that the system properties should
-	 * be used to match against
-	 */
-	public void resolve(BundleDescription[] discard, Dictionary[] platformProperties);
-
-	/**
-	 * Flushes this resolver of any stored/cached data it may be keeping to
-	 * facilitate incremental processing on its associated state. This is
-	 * typicaly used when switching the resolver's state object.
-	 */
-	public void flush();
-
-	/**
-	 * Returns the state associated with this resolver. A state can work with
-	 * at most one resolver at any given time. Similarly, a resolver can work
-	 * with at most one state at a time.
-	 * 
-	 * @return the state for this resolver. null is returned if the resolver
-	 * does not have a state
-	 */
-	public State getState();
-
-	/**
-	 * Sets the state associated with this resolver. A state can work with at
-	 * most one resolver at any given time. Similarly, a resolver can work with
-	 * at most one state at a time.
-	 * <p>
-	 * To ensure that this resolver and the given state are properly linked,
-	 * the following expression must be included in this method if the given
-	 * state (value) is not identical to the result of this.getState().
-	 * </p>
-	 * 
-	 * <pre>
-	 *  if (this.getState() != value) value.setResolver(this);
-	 * </pre>
-	 */
-	public void setState(State value);
-
-	/**
-	 * Notifies the resolver a bundle has been added to the state.
-	 * @param bundle
-	 */
-	public void bundleAdded(BundleDescription bundle);
-
-	/**
-	 * Notifies the resolver a bundle has been removed from the state.
-	 * @param bundle the bundle description to remove
-	 * @param pending indicates if the bundle to be remove has current dependents and
-	 * will pend complete removal until the bundle has been re-resolved.
-	 */
-	public void bundleRemoved(BundleDescription bundle, boolean pending);
-
-	/**
-	 * Notifies the resolver a bundle has been updated in the state.
-	 * @param newDescription the new description
-	 * @param existingDescription the existing description
-	 * @param pending indicates if the bundle to be updated has current dependents and
-	 * will pend complete removal until the bundle has been re-resolved.
-	 */
-	public void bundleUpdated(BundleDescription newDescription, BundleDescription existingDescription, boolean pending);
-
-	/**
-	 * Attempts to find an ExportPackageDescription that will satisfy a dynamic import
-	 * for the specified requestedPackage for the specified importingBundle.  If no
-	 * ExportPackageDescription is available that satisfies a dynamic import for the 
-	 * importingBundle then <code>null</code> is returned.
-	 * @param importingBundle the BundleDescription that is requesting a dynamic package
-	 * @param requestedPackage the name of the package that is being requested
-	 * @return the ExportPackageDescription that satisfies the dynamic import request; 
-	 * a value of <code>null</code> is returned if none is available.
-	 */
-	public ExportPackageDescription resolveDynamicImport(BundleDescription importingBundle, String requestedPackage);
-
-	/**
-	 * Sets the selection policy for this resolver.  A selection policy is used to sort 
-	 * possible suppliers of a version constraint in descending order.  That is an order
-	 * which is from most desired to least desired.  The objects passed to the 
-	 * selection policy {@link Comparator#compare(Object, Object)} method 
-	 * will be of type {@link BaseDescription}.  The selection policy should return a 
-	 * negative number, zero, or a positive number depending on if the first object is 
-	 * more desired, equal amount of desire, or less desired than the second object respectively.
-	 * <p>
-	 * If no selection policy is set then a default policy will be used which sorts according
-	 * to the following rules: 
-	 * <ol>
-	 * <li> The resolution status of the bundle which supplies the base description.  Resolved bundles take priority over unresolved ones.
-	 * <li> The version of the base description.  Higher versions take priority over lower versions.
-	 * <li> The bundle ID which supplies the base description.  Lower IDs take priority over higher IDs. 
-	 * </ol>
-	 * @param selectionPolicy the selection policy for this resolver
-	 * @since 3.2
-	 */
-	public void setSelectionPolicy(Comparator selectionPolicy);
-
-	/**
-	 * Returns the selection policy for this resolver or null if it is not set 
-	 * @return the selection policy for this resolver or null if it is not set
-	 * @since 3.2 
-	 */
-	public Comparator getSelectionPolicy();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ResolverError.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ResolverError.java
deleted file mode 100644
index ea7ae4b..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ResolverError.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * ResolverErrors represent a single error that prevents a bundle from resolving
- * in a <code>State</code> object.
- *  * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.2
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ResolverError {
-	/**
-	 * Error type constant (bit mask) indicating that an Import-Package could 
-	 * not be resolved.
-	 * @see ResolverError#getType()
-	 */
-	public static final int MISSING_IMPORT_PACKAGE = 0x0001;
-	/**
-	 * Error type constant (bit mask) indicating that a Require-Bundle could
-	 * not be resolved.
-	 * @see ResolverError#getType()
-	 */
-	public static final int MISSING_REQUIRE_BUNDLE = 0x0002;
-	/**
-	 * Error type constant (bit mask) indicating that a Fragment-Host could
-	 * not be resolved.
-	 * @see ResolverError#getType()
-	 */
-	public static final int MISSING_FRAGMENT_HOST = 0x0004;
-	/**
-	 * Error type constant (bit mask) indicating that the bundle could not
-	 * be resolved because another singleton bundle was selected.
-	 * @see ResolverError#getType()
-	 */
-	public static final int SINGLETON_SELECTION = 0x0008;
-	/**
-	 * Error type constant (bit mask) indicating that the bundle fragment
-	 * could not be resolved because a constraint conflict with a host.
-	 * @see ResolverError#getType()
-	 */
-	public static final int FRAGMENT_CONFLICT = 0x0010;
-	/**
-	 * Error type constant (bit mask) indicating that an Import-Package could
-	 * not be resolved because of a uses directive conflict. 
-	 * @see ResolverError#getType()
-	 */
-	public static final int IMPORT_PACKAGE_USES_CONFLICT = 0x0020;
-	/**
-	 * Error type constant (bit mask) indicating that a Require-Bundle could
-	 * not be resolved because of a uses directive conflict.
-	 * @see ResolverError#getType()
-	 */
-	public static final int REQUIRE_BUNDLE_USES_CONFLICT = 0x0040;
-	/**
-	 * Error type constant (bit mask) indicating that an Import-Package could
-	 * not be resolved because the importing bundle does not have the correct
-	 * permissions to import the package.
-	 * @see ResolverError#getType()
-	 */
-	public static final int IMPORT_PACKAGE_PERMISSION = 0x0080;
-	/**
-	 * Error type constant (bit mask) indicating that an Import-Package could
-	 * not be resolved because no exporting bundle has the correct
-	 * permissions to export the package.
-	 * @see ResolverError#getType()
-	 */
-	public static final int EXPORT_PACKAGE_PERMISSION = 0x0100;
-	/**
-	 * Error type constant (bit mask) indicating that a Require-Bundle could
-	 * not be resolved because the requiring bundle does not have the correct
-	 * permissions to require the bundle.
-	 * @see ResolverError#getType()
-	 */
-	public static final int REQUIRE_BUNDLE_PERMISSION = 0x0200;
-	/**
-	 * Error type constant (bit mask) indicating that a Require-Bundle could
-	 * not be resolved because no bundle with the required symbolic name has 
-	 * the correct permissions to provied the required symbolic name.
-	 * @see ResolverError#getType()
-	 */
-	public static final int PROVIDE_BUNDLE_PERMISSION = 0x0400;
-	/**
-	 * Error type constant (bit mask) indicating that a Fragment-Host could
-	 * not be resolved because no bundle with the required symbolic name has 
-	 * the correct permissions to host a fragment.
-	 * @see ResolverError#getType()
-	 */
-	public static final int HOST_BUNDLE_PERMISSION = 0x0800;
-	/**
-	 * Error type constant (bit mask) indicating that a Fragment-Host could
-	 * not be resolved because the fragment bundle does not have the correct
-	 * permissions to be a fragment.
-	 * @see ResolverError#getType()
-	 */
-	public static final int FRAGMENT_BUNDLE_PERMISSION = 0x1000;
-	/**
-	 * Error type constant (bit mask) indicating that a bundle could not be
-	 * resolved because a platform filter did not match the runtime environment.
-	 * @see ResolverError#getType()
-	 */
-	public static final int PLATFORM_FILTER = 0x2000;
-
-	/**
-	 * Error type constant (bit mask) indicating that a bundle could not be
-	 * resolved because the required execution enviroment did not match the runtime
-	 * environment.
-	 * @see ResolverError#getType()
-	 */
-	public static final int MISSING_EXECUTION_ENVIRONMENT = 0x4000;
-
-	/**
-	 * Error type constant (bit mask) indicating that a bundle could not be 
-	 * resolved because the required generic capability could not be resolved.
-	 */
-	public static final int MISSING_GENERIC_CAPABILITY = 0x8000;
-
-	/**
-	 * Error type constant (bit mask) indicating that a bundle could not be
-	 * resolved because no match was found for the  native code specification.
-	 * @since 3.4
-	 */
-	public static final int NO_NATIVECODE_MATCH = 0x10000;
-
-	/**
-	 * Error type constant (bit mask) indicating that a bundle could not be
-	 * resolved because the matching native code paths are invalid.
-	 * @since 3.4
-	 */
-	public static final int INVALID_NATIVECODE_PATHS = 0x20000;
-
-	/**
-	 * Error type constant (bit mask) indicating that a bundle could not be
-	 * resolved because the bundle was disabled
-	 * @since 3.4
-	 */
-	public static final int DISABLED_BUNDLE = 0x40000;
-
-	/**
-	 * Returns the bundle which this ResolverError is for
-	 * @return the bundle which this ResolverError is for
-	 */
-	public BundleDescription getBundle();
-
-	/**
-	 * Returns the type of ResolverError this is
-	 * @return the type of ResolverError this is
-	 */
-	public int getType();
-
-	/**
-	 * Returns non-translatable data associated with this ResolverError.
-	 * For example, the data for a ResolverError of type MISSING_IMPORT_PACKAGE
-	 * could be the Import-Package manifest statement which did not resolve.
-	 * @return non-translatable data associated with this ResolverError
-	 */
-	public String getData();
-
-	/**
-	 * Returns the unsatisfied constraint if this ResolverError occurred 
-	 * because of an unsatisfied constraint; otherwise <code>null</code> 
-	 * is returned.
-	 * @return the unsatisfied constraint or <code>null</code>.
-	 */
-	public VersionConstraint getUnsatisfiedConstraint();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/State.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/State.java
deleted file mode 100644
index 56c42ca..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/State.java
+++ /dev/null
@@ -1,544 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import java.util.Dictionary;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Version;
-
-/**
- * The state of a system as reported by a resolver. This includes all bundles
- * presented to the resolver relative to this state (i.e., both resolved and
- * unresolved).
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface State {
-	/**
-	 * Adds the given bundle to this state.
-	 * <p>
-	 * If the bundle already exists in another state then an <code>IllegalStateException</code>
-	 * will be thrown.  Note that even if you remove a <code>BundleDescription</code> from
-	 * one <code>State</code> object using {@link State#removeBundle(BundleDescription)} it 
-	 * may still be considered as removing pending if other bundles in that state depend on the
-	 * bundle you removed.  To complete a pending removal a call must be done to 
-	 * {@link State#resolve(BundleDescription[])} with the removed bundle.
-	 * </p>
-	 * 
-	 * @param description the description to add
-	 * @return a boolean indicating whether the bundle was successfully added
-	 * @throws IllegalStateException if the bundle already exists in another state
-	 */
-	public boolean addBundle(BundleDescription description);
-
-	/**
-	 * Returns a delta describing the differences between this state and the
-	 * given state. The given state is taken as the base so the absence of a bundle
-	 * in this state is reported as a deletion, etc.
-	 *<p>Note that the generated StateDelta will contain BundleDeltas with one
-	 *of the following types: BundleDelta.ADDED, BundleDelta.REMOVED and 
-	 *BundleDelta.UPDATED</p>
-	 * 
-	 * @param baseState the base state
-	 * @return a delta describing differences between this and the base state state 
-	 */
-	public StateDelta compare(State baseState) throws BundleException;
-
-	/**
-	 * Removes a bundle description with the given bundle id.
-	 * 
-	 * @param bundleId the id of the bundle description to be removed
-	 * @return the removed bundle description, or <code>null</code>, if a bundle
-	 * 	with the given id does not exist in this state
-	 */
-	public BundleDescription removeBundle(long bundleId);
-
-	/**
-	 * Removes the given bundle description.
-	 * 
-	 * @param bundle the bundle description to be removed
-	 * @return <code>true</code>, if if the bundle description was removed, 
-	 * 	<code>false</code> otherwise 	
-	 */
-	public boolean removeBundle(BundleDescription bundle);
-
-	/**
-	 * Updates an existing bundle description with the given description. 
-	 * 
-	 * @param newDescription the bundle description to replace an existing one
-	 * @return <code>true</code>, if if the bundle description was updated, 
-	 * 	<code>false</code> otherwise 	
-	 */
-	public boolean updateBundle(BundleDescription newDescription);
-
-	/**
-	 * Returns the delta representing the changes from the time this state was
-	 * first captured until now.
-	 * 
-	 * @return the state delta
-	 */
-	public StateDelta getChanges();
-
-	/**
-	 * Returns descriptions for all bundles known to this state.
-	 * 
-	 * @return the descriptions for all bundles known to this state.
-	 */
-	public BundleDescription[] getBundles();
-
-	/**
-	 * Returns the bundle descriptor for the bundle with the given id. 
-	 * <code>null</code> is returned if no such bundle is found in 
-	 * this state. 
-	 * 
-	 * @return the descriptor for the identified bundle
-	 * @see BundleDescription#getBundleId()
-	 */
-	public BundleDescription getBundle(long id);
-
-	/**
-	 * Returns the bundle descriptor for the bundle with the given name and
-	 * version. A null value is returned if no such bundle is found in this state.
-	 * A resolved bundle is always preferably returned over an unresolved bundle.
-	 * If multiple bundles with the same resolution state are available, the bundle
-	 * with the highest version number is returned if the <code>version<code> is
-	 * null.
-	 * 
-	 * @param symbolicName symbolic name of the bundle to query
-	 * @param version version of the bundle to query. null matches any bundle
-	 * @return the descriptor for the identified bundle
-	 */
-	public BundleDescription getBundle(String symbolicName, Version version);
-
-	/**
-	 * Returns the bundle descriptor for the bundle with the given location
-	 * identifier. null is returned if no such bundle is found in this state. 
-	 * 
-	 * @param location location identifier of the bundle to query
-	 * @return the descriptor for the identified bundle
-	 */
-	public BundleDescription getBundleByLocation(String location);
-
-	/**
-	 * Returns the timestamp for this state. This
-	 * correlates this timestamp to the system state. For example, if
-	 * the system state timestamp is 4 but then some bundles are installed,
-	 * the system state timestamp is updated. By comparing 4 to the current system
-	 * state timestamp it is possible to detect if the states are out of sync.
-	 * 
-	 * @return the timestamp of this state
-	 */
-	public long getTimeStamp();
-
-	/**
-	 * Sets the timestamp for this state
-	 * @param newTimeStamp the new timestamp for this state
-	 */
-	public void setTimeStamp(long newTimeStamp);
-
-	/**
-	 * Returns true if there have been no modifications to this state since the
-	 * last time resolve() was called.
-	 * 
-	 * @return whether or not this state has changed since last resolved.
-	 */
-	public boolean isResolved();
-
-	/**
-	 * Resolves the given version constraint with the given supplier. The given
-	 * constraint object is destructively modified to reflect its new resolved
-	 * state. Note that a constraint can be unresolved by passing null for 
-	 * the supplier.
-	 * <p>
-	 * This method is intended to be used by resolvers in the process of
-	 * determining which constraints are satisfied by which components.
-	 * </p>
-	 * 
-	 * @param constraint the version constraint to update
-	 * @param supplier the supplier which satisfies the constraint. May be null if 
-	 * the constraint is to be unresolved.
-	 * @throws IllegalStateException if this is not done during a call to
-	 * <code>resolve</code>
-	 */
-	public void resolveConstraint(VersionConstraint constraint, BaseDescription supplier);
-
-	/**
-	 * Sets whether or not the given bundle is selected in this state.
-	 * <p>
-	 * This method is intended to be used by resolvers in the process of
-	 * determining which constraints are satisfied by which components.
-	 * </p>
-	 * 
-	 * @param bundle the bundle to update
-	 * @param status whether or not the given bundle is resolved, if false the other parameters are ignored
-	 * @param hosts the host for the resolve fragment, can be <code>null</code>
-	 * @param selectedExports the selected exported packages for this resolved bundle, can be <code>null</code>
-	 * @param resolvedRequires the BundleDescriptions that resolve the required bundles for this bundle, can be <code>null</code>
-	 * @param resolvedImports the exported packages that resolve the imports for this bundle, can be <code>null</code>
-	 * @throws IllegalStateException if this is not done during a call to <code>resolve</code>
-	 * @deprecated use {@link #resolveBundle(BundleDescription, boolean, BundleDescription[], ExportPackageDescription[], ExportPackageDescription[], BundleDescription[], ExportPackageDescription[])}
-	 */
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports);
-
-	/**
-	 * Sets whether or not the given bundle is selected in this state.
-	 * <p>
-	 * This method is intended to be used by resolvers in the process of
-	 * determining which constraints are satisfied by which components.
-	 * </p>
-	 * 
-	 * @param bundle the bundle to update
-	 * @param status whether or not the given bundle is resolved, if false the other parameters are ignored
-	 * @param hosts the host for the resolve fragment, can be <code>null</code>
-	 * @param selectedExports the selected exported packages for this resolved bundle, can be <code>null</code>
-	 * @param substitutedExports the exported packages that resolve imports for this bundle and substitute exports, can be <code>null</code>
-	 * @param resolvedRequires the BundleDescriptions that resolve the required bundles for this bundle, can be <code>null</code>
-	 * @param resolvedImports the exported packages that resolve the imports for this bundle, can be <code>null</code>
-	 * @throws IllegalStateException if this is not done during a call to <code>resolve</code>
-	 * @since 3.4
-	 */
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, ExportPackageDescription[] substitutedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports);
-
-	/**
-	 * Sets the given removal pending bundle to removal complete for this state.
-	 * <p>
-	 * This method is intended to be used by resolvers in the process of 
-	 * resolving bundles.
-	 * </p>
-	 * @param bundle the bundle to set a removal complete.
-	 * @throws IllegalStateException if this is not done during a call to
-	 * <code>resolve</code>
-	 */
-	public void removeBundleComplete(BundleDescription bundle);
-
-	/**
-	 * Adds a new <code>ResolverError</code> for the specified bundle.
-	 * <p>
-	 * This method is intended to be used by resolvers in the process of
-	 * resolving.
-	 * </p>
-	 * 
-	 * @param bundle the bundle to add a new <code>ResolverError</code> for
-	 * @param type the type of <code>ResolverError</code> to add
-	 * @param data the data for the <code>ResolverError</code>
-	 * @param unsatisfied the unsatisfied constraint or null if the resolver error was not caused
-	 * by an unsatisfied constraint.
-	 * @throws IllegalStateException if this is not done during a call to <code>resolve</code>
-	 * @since 3.2
-	 */
-	public void addResolverError(BundleDescription bundle, int type, String data, VersionConstraint unsatisfied);
-
-	/**
-	 * Removes all <code>ResolverError</code>s for the specified bundle.
-	 * <p>
-	 * This method is intended to be used by resolvers in the process of
-	 * resolving.
-	 * </p>
-	 * 
-	 * @param bundle the bundle to remove all <code>ResolverError</code>s for
-	 * @throws IllegalStateException if this is not done during a call to <code>resolve</code>
-	 * @since 3.2
-	 */
-	public void removeResolverErrors(BundleDescription bundle);
-
-	/**
-	 * Returns all <code>ResolverError</code>s for the given bundle
-	 * @param bundle the bundle to get all <code>ResolverError</code>s for
-	 * @return all <code>ResolverError</code>s for the given bundle
-	 * @since 3.2
-	 */
-	public ResolverError[] getResolverErrors(BundleDescription bundle);
-
-	/**
-	 * Returns the resolver associated with this state. A state can work with
-	 * at most one resolver at any given time. Similarly, a resolver can work
-	 * with at most one state at a time.
-	 * 
-	 * @return the resolver for this state. null is returned if the state does
-	 * not have a resolver
-	 */
-	public Resolver getResolver();
-
-	/**
-	 * Sets the resolver associated with this state. A state can work with at
-	 * most one resolver at any given time. Similarly, a resolver can work with
-	 * at most one state at a time.
-	 * <p>
-	 * To ensure that this state and the given resovler are properly linked,
-	 * the following expression must be included in this method if the given
-	 * resolver (value) is not identical to the result of this.getResolver().
-	 * 
-	 * <pre>
-	 *  if (this.getResolver() != value) value.setState(this);
-	 * </pre>
-	 * 
-	 * </p>
-	 */
-	// TODO what happens if you set the Resolver after some bundles have
-	// been added to the state but it is not resolved?  Should setting
-	// the resolver force a state to be unresolved?
-	public void setResolver(Resolver value);
-
-	/**
-	 * Resolves the constraints contained in this state using the resolver
-	 * currently associated with the state and returns a delta describing the
-	 * changes in resolved states and dependencies in the state.
-	 * <p>
-	 * Note that this method is typically implemented using
-	 * 
-	 * <pre>
-	 *  this.getResolver().resolve();
-	 * </pre>
-	 * 
-	 * and is the preferred path for invoking resolution. In particular, states
-	 * should refuse to perform updates (@see #select() and
-	 * #resolveConstraint()) if they are not currently involved in a resolution
-	 * cycle.
-	 * <p>
-	 * Note the given state is destructively modified to reflect the results of
-	 * resolution.
-	 * </p>
-	 * 
-	 * @param incremental a flag controlling whether resolution should be incremental
-	 * @return a delta describing the changes in resolved state and 
-	 * interconnections
-	 */
-	public StateDelta resolve(boolean incremental);
-
-	/**
-	 * Same as State.resolve(true);
-	 */
-	public StateDelta resolve();
-
-	/**
-	 * Resolves the constraints contained in this state using the resolver
-	 * currently associated with the state in a incremental, "least-perturbing" 
-	 * mode, and returns a delta describing the changes in resolved states and 
-	 * dependencies in the state.
-	 * 
-	 * @param discard an array containing descriptions for bundles whose 
-	 * 	current resolution state should be forgotten.  If <code>null</code>
-	 *  then all the current removal pending BundleDescriptions are refreshed.
-	 * @return a delta describing the changes in resolved state and 
-	 * 	interconnections
-	 */
-	public StateDelta resolve(BundleDescription[] discard);
-
-	/**
-	 * Sets the version overrides which are to be applied during the resolutoin
-	 * of this state. Version overrides allow external forces to
-	 * refine/override the version constraints setup by the components in the
-	 * state.
-	 * 
-	 * @param value
-	 */
-	// TODO the exact form of this is not defined as yet.
-	public void setOverrides(Object value);
-
-	/**
-	 * Returns descriptions for all bundles currently resolved in this state.
-	 * 
-	 * @return the descriptions for all bundles currently resolved in this
-	 * state.
-	 */
-	public BundleDescription[] getResolvedBundles();
-
-	/**
-	 * Returns whether this state is empty.
-	 * @return <code>true</code> if this state is empty, <code>false</code> 
-	 * 	otherwise
-	 */
-	public boolean isEmpty();
-
-	/**
-	 * Returns all exported packages in this state, according to the OSGi rules for resolution. 
-	 * @see org.osgi.service.packageadmin.PackageAdmin#getExportedPackages(org.osgi.framework.Bundle)
-	 */
-	public ExportPackageDescription[] getExportedPackages();
-
-	/**
-	 * Returns all bundle descriptions with the given bundle symbolic name.
-	 * @param symbolicName symbolic name of the bundles to query
-	 * @return the descriptors for all bundles known to this state with the
-	 * specified symbolic name.
-	 */
-	public BundleDescription[] getBundles(String symbolicName);
-
-	/**
-	 * Returns the factory that created this state.
-	 * @return the state object factory that created this state 
-	 */
-	public StateObjectFactory getFactory();
-
-	/**
-	 * Attempts to find an ExportPackageDescription that will satisfy a dynamic import
-	 * for the specified requestedPackage for the specified importingBundle.  If no
-	 * ExportPackageDescription is available that satisfies a dynamic import for the 
-	 * importingBundle then <code>null</code> is returned.
-	 * @param importingBundle the BundleDescription that is requesting a dynamic package
-	 * @param requestedPackage the name of the package that is being requested
-	 * @return the ExportPackageDescription that satisfies the dynamic import request; 
-	 * a value of <code>null</code> is returned if none is available.
-	 */
-	public ExportPackageDescription linkDynamicImport(BundleDescription importingBundle, String requestedPackage);
-
-	/**
-	 * Sets the platform properties of the state.  The platform properties
-	 * are used to resolve the following constraints:
-	 * <ul>
-	 * <li> The execution environment requirements (i.e. Bundle-RequiredExecutionEnvironment).</li>
-	 * <li>The platform filter requirements (i.e. Eclipse-PlatformFilter).</li>
-	 * <li>The native code requirements (i.e. Bundle-NativeCode).</li>
-	 * </ul>
-	 * Arbitrary keys  may be used in the platform properties but the following keys have a specified meaning:
-	 * <ul>
-	 * <li>osgi.nl - the platform language setting.</li>
-	 * <li>osgi.os - the platform operating system.</li>
-	 * <li>osgi.arch - the platform architecture.</li>
-	 * <li>osgi.ws - the platform windowing system.</li>
-	 * <li>osgi.resolverMode - the resolver mode.  A value of "strict" will set the resolver mode to strict.</li>
-	 * <li>org.osgi.framework.system.packages - the packages exported by the system bundle.</li>
-	 * <li>org.osgi.framework.executionenvironment - the comma separated list of supported execution environments.  
-	 * This property is then used to resolve the required execution environment the bundles in a state.</li>
-	 * <li>org.osgi.framework.os.name - the name of the operating system.  This property is used to resolve the osname attribute of 
-	 * bundle native code (i.e. Bundle-NativeCode).</li>
-	 * <li>org.osgi.framework.os.version - the version of the operating system.  This property is used to resolve the osversion attribute 
-	 * of bundle native code (i.e. Bundle-NativeCode).</li>
-	 * <li>org.osgi.framework.processor - the processor name.  This property is used to resolve the processor attribute 
-	 * of bundle native code (i.e. Bundle-NativeCode).</li>
-	 * <li>org.osgi.framework.language - the language being used.  This property is used to resolve the language attribute 
-	 * of bundle native code (i.e. Bundle-NativeCode).</li>
-	 * </ul>
-	 * <p>
-	 * The values used for the supported properties can be <tt>String</tt> type
-	 * to specify a single value for the property or they can by <tt>String[]</tt>
-	 * to specify a list of values for the property. 
-	 * @param platformProperties the platform properties of the state
-	 * @return false if the platformProperties specified do not change any of the
-	 * supported properties already set.  If any of the supported property values 
-	 * are changed as a result of calling this method then true is returned.
-	 */
-	public boolean setPlatformProperties(Dictionary platformProperties);
-
-	/**
-	 * Sets the platform properties of the state to a list of platform properties.  
-	 * @see #setPlatformProperties(Dictionary)
-	 * 
-	 * @param platformProperties a set of platform properties for the state
-	 * @return false if the platformProperties specified do not change any of the
-	 * supported properties already set.  If any of the supported property values 
-	 * are changed as a result of calling this method then true is returned.
-	 */
-	public boolean setPlatformProperties(Dictionary[] platformProperties);
-
-	/**
-	 * Returns the list of platform properties currently set for this state.
-	 * @return the list of platform properties currently set for this state.
-	 */
-	public Dictionary[] getPlatformProperties();
-
-	/**
-	 * Returns the list of system packages which are exported by the system bundle.  
-	 * The list of system packages is set by the org.osgi.framework.system.packages
-	 * value in the platform properties for this state.
-	 * @see #setPlatformProperties(Dictionary)
-	 * @return the list of system packages
-	 */
-	public ExportPackageDescription[] getSystemPackages();
-
-	/**
-	 * Returns a state helper object. State helpers provide convenience methods 
-	 * for manipulating states. 
-	 * <p>
-	 * A possible implementation for this
-	 * method would provide the same single StateHelper instance to all clients.
-	 * </p>
-	 * 
-	 * @return a state helper
-	 * @see StateHelper
-	 * @since 3.2
-	 */
-	public StateHelper getStateHelper();
-
-	/**
-	 * Returns the highest bundle ID.  The value -1 is returned if no 
-	 * bundles exist in this state.
-	 * <p>
-	 * Note that this method returns the highest bundle ID the ever existed in this 
-	 * this state object.  This bundle may have been removed from the state.
-	 * @return the highest bundle ID.
-	 * @since 3.3
-	 */
-	public long getHighestBundleId();
-
-	/**
-	 * Sets the native code paths of a native code description as invalid.  Native
-	 * code paths are invalid if they can not be found in the bundle content.
-	 * <p>
-	 * The framework, or some other entity which has access to bundle content,
-	 * will call this method to validate or invalidate native code paths.
-	 * </p>
-	 * @param nativeCodeDescription the native code description.
-	 * @param hasInvalidNativePaths true if the native code paths are invalid; false otherwise.
-	 * @since 3.4
-	 */
-	public void setNativePathsInvalid(NativeCodeDescription nativeCodeDescription, boolean hasInvalidNativePaths);
-
-	/**
-	 * Returns an array of BundleDescriptions for the bundles that are disabled
-	 * in the system. Use {@link #getDisabledInfos(BundleDescription)} to interrogate the reason that
-	 * each bundle is disabled.
-	 * @return the array of disabled bundles.  An empty array is returned if no bundles are disabled.
-	 * @see DisabledInfo
-	 * @since 3.4
-	 */
-	public BundleDescription[] getDisabledBundles();
-
-	/**
-	 * Adds the disabled info to this state.  If a disable info already exists
-	 * for the specified policy and the specified bundle then it is replaced with 
-	 * the given disabled info.
-	 * @param disabledInfo the disabled info to add.
-	 * @throws IllegalArgumentException if the <code>BundleDescription</code> for
-	 * the specified disabled info does not exist in this state.
-	 * @since 3.4
-	 */
-	public void addDisabledInfo(DisabledInfo disabledInfo);
-
-	/**
-	 * Removes the disabled info from the state.
-	 * @param disabledInfo the disabled info to remove
-	 * @since 3.4
-	 */
-	public void removeDisabledInfo(DisabledInfo disabledInfo);
-
-	/**
-	 * Returns an array of disabled info for the specified bundle.  If no disabled info exist
-	 * then an empty array is returned.
-	 * @param bundle the bundle to get the disabled info for.
-	 * @return the array of disabled info.
-	 * @since 3.4
-	 */
-	public DisabledInfo[] getDisabledInfos(BundleDescription bundle);
-
-	/**
-	 * Returns the disabled info for the specified bundle with the specified policy name.
-	 * If no disabled info exists then <code>null</code> is returned.
-	 * @param bundle the bundle to get the disabled info for
-	 * @return the disabled info.
-	 * @since 3.4
-	 */
-	public DisabledInfo getDisabledInfo(BundleDescription bundle, String policyName);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateDelta.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateDelta.java
deleted file mode 100644
index ab6dfcb..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateDelta.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * A state delta contains all the changes to bundles within a state.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface StateDelta {
-	/**
-	 * Returns an array of all the bundle deltas in this delta regardless of type.
-	 * @return an array of bundle deltas
-	 */
-	public BundleDelta[] getChanges();
-
-	/**
-	 * Returns an array of all the members
-	 * of this delta which match the given flags.  If an exact match is requested 
-	 * then only delta members whose type exactly matches the given mask are
-	 * included.  Otherwise, all bundle deltas whose type's bit-wise and with the
-	 * mask is non-zero are included. 
-	 * 
-	 * @param mask
-	 * @param exact
-	 * @return an array of bundle deltas matching the given match criteria.
-	 */
-	public BundleDelta[] getChanges(int mask, boolean exact);
-
-	/**
-	 * Returns the state whose changes are represented by this delta.
-	 * @return the state
-	 */
-	public State getState();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateHelper.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateHelper.java
deleted file mode 100644
index a5156eb..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateHelper.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * A helper class that provides convenience methods for manipulating 
- * state objects. <code>PlatformAdmin</code> provides an access point
- * for a state helper.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- * @see PlatformAdmin#getStateHelper
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface StateHelper {
-	/**
-	 * Indicates that access is encouraged to an <code>ExportPackageDescription</code>.
-	 */
-	public static int ACCESS_ENCOURAGED = 0x01;
-	/**
-	 * Indicates that access is discouraged to an <code>ExportPackageDescription</code>.
-	 */
-	public static int ACCESS_DISCOURAGED = 0x02;
-
-	/**
-	 * An option to include packages available from the execution environment when 
-	 * getting the visible packages of a bundle.  For example, when running on a 
-	 * J2SE 1.4 VM the system bundle will export the javax.xml.parsers package as part of the 
-	 * execution environment.  When this option is used then any packages from the execution
-	 * environment which the bundle is wired to will be included.
-	 * @see StateHelper#getVisiblePackages(BundleDescription, int)
-	 */
-	public static int VISIBLE_INCLUDE_EE_PACKAGES = 0x01;
-
-	/**
-	 * An option to get all visible packages that a host bundle is currently wired to.  This 
-	 * includes packages wired to as a result of a dynamic import and packages wired to as a 
-	 * result of additional constraints specified by a fragment bundle.  Using this option 
-	 * with a fragment will cause an empty array to be returned.
-	 * @see StateHelper#getVisiblePackages(BundleDescription, int)
-	 * @since 3.6
-	 */
-	public static int VISIBLE_INCLUDE_ALL_HOST_WIRES = 0x02;
-
-	/**
-	 * Returns all bundles in the state depending on the given bundles. The given bundles
-	 * appear in the returned array.
-	 * 
-	 * @param bundles the initial set of bundles
-	 * @return an array containing bundle descriptions for the given roots and all
-	 * bundles in the state that depend on them
-	 */
-	public BundleDescription[] getDependentBundles(BundleDescription[] bundles);
-
-	/**
-	 * Returns all the prerequisite bundles in the state for the given bundles.  The given
-	 * bundles appear in the returned array.
-	 * @param bundles the inital set of bundles
-	 * @return an array containing bundle descriptions for the given leaves and their
-	 * prerequisite bundles in the state.
-	 * @since 3.2
-	 */
-	public BundleDescription[] getPrerequisites(BundleDescription[] bundles);
-
-	/**
-	 * Returns all unsatisfied constraints in the given bundle. Returns an 
-	 * empty array if no unsatisfied constraints can be found.
-	 * <p>
-	 * Note that a bundle may have no unsatisfied constraints and still not be 
-	 * resolved.
-	 * </p>  
-	 * 
-	 * @param bundle the bundle to examine
-	 * @return an array containing all unsatisfied constraints for the given bundle
-	 */
-	public VersionConstraint[] getUnsatisfiedConstraints(BundleDescription bundle);
-
-	/**
-	 * Returns all unsatisfied constraints in the given bundles that have no possible supplier. 
-	 * Returns an empty array if no unsatisfied leaf constraints can be found.
-	 * <p>
-	 * The returned constraints include only the unsatisfied constraints in the given 
-	 * state that have no possible supplier (leaf constraints).  There may 
-	 * be additional unsatisfied constraints in the given bundles but these will have at 
-	 * least one possible supplier.  In this case the possible supplier of the constraint 
-	 * is not resolved for some reason.  For example, a given state only has Bundles X and Y
-	 * installed and Bundles X and Y have the following constraints:
-	 * </p>
-	 * <pre>
-	 * Bundle X requires Bundle Y
-	 * Bundle Y requires Bundle Z</pre>
-	 * <p>
-	 * In this case Bundle Y has an unsatisfied constraint leaf on Bundle Z.  This will 
-	 * cause Bundle X's constraint on Bundle Y to be unsatisfied as well because the 
-	 * bundles are involved in a dependency chain.  Bundle X's constraint on Bundle Y is 
-	 * not considered a leaf because there is a possible supplier Y in the given state.
-	 * </p>
-	 * <p>
-	 * Note that a bundle may have no unsatisfied constraints and still not be 
-	 * resolved.
-	 * </p>  
-	 * 
-	 * @param bundles the bundles to examine
-	 * @return an array containing all unsatisfied leaf constraints for the given bundles
-	 * @since 3.2
-	 */
-	public VersionConstraint[] getUnsatisfiedLeaves(BundleDescription[] bundles);
-
-	/**
-	 * Returns whether the given package specification constraint is resolvable. 
-	 * A package specification constraint may be 
-	 * resolvable but not resolved, which means that the bundle that provides
-	 * it has not been resolved for some other reason (e.g. another constraint 
-	 * could not be resolved, another version has been picked, etc).
-	 *  
-	 * @param specification the package specification constraint to be examined
-	 * @return <code>true</code> if the constraint can be resolved, 
-	 * <code>false</code> otherwise
-	 */
-	public boolean isResolvable(ImportPackageSpecification specification);
-
-	/**
-	 * Returns whether the given bundle specification constraint is resolvable. 
-	 * A bundle specification constraint may be 
-	 * resolvable but not resolved, which means that the bundle that provides
-	 * it has not been resolved for some other reason (e.g. another constraint 
-	 * could not be resolved, another version has been picked, etc).
-	 *  
-	 * @param specification the bundle specification constraint to be examined
-	 * @return <code>true</code> if the constraint can be resolved, 
-	 * <code>false</code> otherwise
-	 */
-	public boolean isResolvable(BundleSpecification specification);
-
-	/**
-	 * Returns whether the given host specification constraint is resolvable. 
-	 * A host specification constraint may be 
-	 * resolvable but not resolved, which means that the bundle that provides
-	 * it has not been resolved for some other reason (e.g. another constraint 
-	 * could not be resolved, another version has been picked, etc).
-	 *  
-	 * @param specification the host specification constraint to be examined
-	 * @return <code>true</code> if the constraint can be resolved, 
-	 * <code>false</code> otherwise
-	 */
-	public boolean isResolvable(HostSpecification specification);
-
-	/**
-	 * Sorts the given array of <strong>resolved</strong> bundles in pre-requisite order. If A 
-	 * requires B, A appears after B. 
-	 * Fragments will appear after all of their hosts. Constraints contributed by fragments will 
-	 * be treated as if contributed by theirs hosts, affecting their position. This is true even if
-	 * the fragment does not appear in the given bundle array.
-	 * <p>
-	 * Unresolved bundles are ignored.
-	 * </p>
-	 *  
-	 * @param toSort an array of bundles to be sorted
-	 * @return any cycles found 
-	 */
-	public Object[][] sortBundles(BundleDescription[] toSort);
-
-	/**
-	 * Returns a list of all packages that the specified bundle has access to which are
-	 * exported by other bundles.
-	 * <p>
-	 * Same as calling getVisiblePackages(bundle, 0)
-	 * </p>
-	 * @param bundle a bundle to get the list of packages for.
-	 * @return a list of all packages that the specified bundle has access to which are
-	 * exported by other bundles.
-	 */
-	public ExportPackageDescription[] getVisiblePackages(BundleDescription bundle);
-
-	/**
-	 * Returns a list of all packages that the specified bundle has access to which are
-	 * exported by other bundles.  This takes into account all constraint specifications
-	 * (Import-Package, Require-Bundle etc).  A deep dependency search is done for all 
-	 * packages which are available through the required bundles and any bundles which 
-	 * are reexported.  This method also takes into account all directives
-	 * which may be specified on the constraint specifications (e.g. uses, x-friends etc.)
-	 * 
-	 * @param bundle a bundle to get the list of packages for.
-	 * @param options the options for selecting the visible packages
-	 * @return a list of all packages that the specified bundle has access to which are
-	 * exported by other bundles.
-	 * @see StateHelper#VISIBLE_INCLUDE_EE_PACKAGES
-	 * @see StateHelper#VISIBLE_INCLUDE_ALL_HOST_WIRES
-	 * @since 3.3
-	 */
-	public ExportPackageDescription[] getVisiblePackages(BundleDescription bundle, int options);
-
-	/**
-	 * Returns the access code that the specified <code>BundleDescription</code> has to the 
-	 * specified <code>ExportPackageDescription</code>.
-	 * @param bundle the bundle to find the access code for
-	 * @param export the export to find the access code for
-	 * @return the access code to the export.
-	 * @see StateHelper#ACCESS_ENCOURAGED
-	 * @see StateHelper#ACCESS_DISCOURAGED
-	 */
-	public int getAccessCode(BundleDescription bundle, ExportPackageDescription export);
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateObjectFactory.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateObjectFactory.java
deleted file mode 100644
index 37cc205..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateObjectFactory.java
+++ /dev/null
@@ -1,399 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import java.io.*;
-import java.util.Dictionary;
-import java.util.Map;
-import org.eclipse.osgi.internal.resolver.StateObjectFactoryImpl;
-import org.osgi.framework.*;
-
-/**
- * A factory for states and their component objects.  
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface StateObjectFactory {
-
-	/**
-	 * The default object factory that can be used to create, populate and resolve
-	 * states.  This is particularly useful when using the resolver outside the context
-	 * of a running Equinox framework.
-	 */
-	public static final StateObjectFactory defaultFactory = new StateObjectFactoryImpl();
-
-	/**
-	 * Creates an empty state. The returned state does not have an 
-	 * attached resolver.
-	 * 
-	 * @return the created state
-	 * @deprecated use {@link #createState(boolean) }
-	 */
-	public State createState();
-
-	/**
-	 * Creates an empty state with or without a resolver.
-	 * 
-	 * @param resolver true if the created state should be initialized with a resolver.
-	 * @return the created state
-	 * @since 3.2
-	 */
-	public State createState(boolean resolver);
-
-	/**
-	 * Creates a new state that is a copy of the given state. The returned state 
-	 * will contain copies of all bundle descriptions in the given state. No data 
-	 * pertaining to resolution is copied.  The returned state will have a 
-	 * new resolver attached to it.
-	 *  
-	 * @param state a state to be copied
-	 * @return the created state
-	 */
-	public State createState(State state);
-
-	/**
-	 * Creates a bundle description from the given parameters.
-	 * 
-	 * @param id id for the bundle 
-	 * @param symbolicName symbolic name for the bundle (may be 
-	 * <code>null</code>) 
-	 * @param version version for the bundle (may be <code>null</code>)
-	 * @param location location for the bundle (may be <code>null</code>)
-	 * @param required version constraints for all required bundles (may be 
-	 * <code>null</code>)
-	 * @param host version constraint specifying the host for the bundle to be  
-	 * created. Should be <code>null</code> if the bundle is not a fragment
-	 * @param imports version constraints for all packages imported 
-	 * (may be <code>null</code>)
-	 * @param exports package descriptions of all the exported packages
-	 * (may be <code>null</code>)
-	 * @param providedPackages the list of provided packages (may be <code>null</code>) 
-	 * @param singleton whether the bundle created should be a singleton
-	 * @return the created bundle description
-	 * @deprecated use {@link #createBundleDescription(long, String, Version, String, BundleSpecification[], HostSpecification, ImportPackageSpecification[], ExportPackageDescription[], boolean, boolean, boolean, String, String[], GenericSpecification[], GenericDescription[])}
-	 */
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, String[] providedPackages, boolean singleton);
-
-	/**
-	 * Creates a bundle description from the given parameters.
-	 * 
-	 * @param id id for the bundle 
-	 * @param symbolicName symbolic name for the bundle (may be 
-	 * <code>null</code>) 
-	 * @param version version for the bundle (may be <code>null</code>)
-	 * @param location location for the bundle (may be <code>null</code>)
-	 * @param required version constraints for all required bundles (may be 
-	 * <code>null</code>)
-	 * @param host version constraint specifying the host for the bundle to be  
-	 * created. Should be <code>null</code> if the bundle is not a fragment
-	 * @param imports version constraints for all packages imported 
-	 * (may be <code>null</code>)
-	 * @param exports package descriptions of all the exported packages
-	 * (may be <code>null</code>)
-	 * @param providedPackages the list of provided packages (may be <code>null</code>) 
-	 * @param singleton whether the bundle created should be a singleton
-	 * @param attachFragments whether the bundle allows fragments to attach
-	 * @param dynamicFragments whether the bundle allows fragments to dynamically attach
-	 * @param platformFilter the platform filter (may be <code>null</code>)
-	 * @param executionEnvironment the execution environment (may be <code>null</code>)
-	 * @param genericRequires the version constraints for all required capabilities (may be <code>null</code>)
-	 * @param genericCapabilities the specifications of all the capabilities of the bundle (may be <code>null</code>)
-	 * @return the created bundle description
-	 * @deprecated use {@link #createBundleDescription(long, String, Version, String, BundleSpecification[], HostSpecification, ImportPackageSpecification[], ExportPackageDescription[], boolean, boolean, boolean, String, String[], GenericSpecification[], GenericDescription[])}
-	 */
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, String[] providedPackages, boolean singleton, boolean attachFragments, boolean dynamicFragments, String platformFilter, String executionEnvironment, GenericSpecification[] genericRequires, GenericDescription[] genericCapabilities);
-
-	/**
-	 * Creates a bundle description from the given parameters.
-	 * 
-	 * @param id id for the bundle 
-	 * @param symbolicName symbolic name for the bundle (may be  <code>null</code>) 
-	 * @param version version for the bundle (may be <code>null</code>)
-	 * @param location location for the bundle (may be <code>null</code>)
-	 * @param required version constraints for all required bundles (may be  <code>null</code>)
-	 * @param host version constraint specifying the host for the bundle to be created. Should be <code>null</code> if the bundle is not a fragment
-	 * @param imports version constraints for all packages imported  (may be <code>null</code>)
-	 * @param exports package descriptions of all the exported packages (may be <code>null</code>)
-	 * @param singleton whether the bundle created should be a singleton
-	 * @param attachFragments whether the bundle allows fragments to attach
-	 * @param dynamicFragments whether the bundle allows fragments to dynamically attach
-	 * @param platformFilter the platform filter (may be <code>null</code>)
-	 * @param executionEnvironments the execution environment (may be <code>null</code>)
-	 * @param genericRequires the version constraints for all required capabilities (may be <code>null</code>)
-	 * @param genericCapabilities the specifications of all the capabilities of the bundle (may be <code>null</code>)
-	 * @return the created bundle description
-	 */
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, boolean singleton, boolean attachFragments, boolean dynamicFragments, String platformFilter, String[] executionEnvironments, GenericSpecification[] genericRequires, GenericDescription[] genericCapabilities);
-
-	/**
-	 * Creates a bundle description from the given parameters.
-	 * 
-	 * @param id id for the bundle 
-	 * @param symbolicName symbolic name for the bundle (may be  <code>null</code>) 
-	 * @param version version for the bundle (may be <code>null</code>)
-	 * @param location location for the bundle (may be <code>null</code>)
-	 * @param required version constraints for all required bundles (may be  <code>null</code>)
-	 * @param host version constraint specifying the host for the bundle to be created. Should be <code>null</code> if the bundle is not a fragment
-	 * @param imports version constraints for all packages imported  (may be <code>null</code>)
-	 * @param exports package descriptions of all the exported packages (may be <code>null</code>)
-	 * @param singleton whether the bundle created should be a singleton
-	 * @param attachFragments whether the bundle allows fragments to attach
-	 * @param dynamicFragments whether the bundle allows fragments to dynamically attach
-	 * @param platformFilter the platform filter (may be <code>null</code>)
-	 * @param executionEnvironments the execution environment (may be <code>null</code>)
-	 * @param genericRequires the version constraints for all required capabilities (may be <code>null</code>)
-	 * @param genericCapabilities the specifications of all the capabilities of the bundle (may be <code>null</code>)
-	 * @param nativeCode the native code specification of the bundle (may be <code>null</code>)
-	 * @return the created bundle description
-	 * @since 3.4
-	 */
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, boolean singleton, boolean attachFragments, boolean dynamicFragments, String platformFilter, String[] executionEnvironments, GenericSpecification[] genericRequires, GenericDescription[] genericCapabilities, NativeCodeSpecification nativeCode);
-
-	/**
-	 * Returns a bundle description based on the information in the supplied manifest dictionary.
-	 * The manifest should contain String keys and String values which correspond to 
-	 * proper OSGi manifest headers and values.
-	 * 
-	 * @param state the state for which the description is being created
-	 * @param manifest a collection of OSGi manifest headers and values
-	 * @param location the URL location of the bundle (may be <code>null</code>)
-	 * @param id the id of the bundle
-	 * @return a bundle description derived from the given information
-	 * @throws BundleException if an error occurs while reading the manifest 
-	 */
-	public BundleDescription createBundleDescription(State state, Dictionary manifest, String location, long id) throws BundleException;
-
-	/**
-	 * Returns a bundle description based on the information in the supplied manifest dictionary.
-	 * The manifest should contain String keys and String values which correspond to 
-	 * proper OSGi manifest headers and values.
-	 * 
-	 * @param manifest a collection of OSGi manifest headers and values
-	 * @param location the URL location of the bundle (may be <code>null</code>)
-	 * @param id the id of the bundle
-	 * @return a bundle description derived from the given information
-	 * @throws BundleException if an error occurs while reading the manifest 
-	 * @deprecated use {@link #createBundleDescription(State, Dictionary, String, long)}
-	 */
-	public BundleDescription createBundleDescription(Dictionary manifest, String location, long id) throws BundleException;
-
-	/**
-	 * Creates a bundle description that is a copy of the given description.
-	 * 
-	 * @param original the bundle description to be copied
-	 * @return the created bundle description
-	 */
-	public BundleDescription createBundleDescription(BundleDescription original);
-
-	/**
-	 * Creates a bundle specification from the given parameters.
-	 * 
-	 * @param requiredSymbolicName the symbolic name for the required bundle
-	 * @param requiredVersionRange the required version range (may be <code>null</code>)
-	 * @param export whether the required bundle should be re-exported 
-	 * @param optional whether the constraint should be optional
-	 * @return the created bundle specification
-	 * @see VersionConstraint for information on the available match rules
-	 */
-	public BundleSpecification createBundleSpecification(String requiredSymbolicName, VersionRange requiredVersionRange, boolean export, boolean optional);
-
-	/**
-	 * Creates a bundle specification that is a copy of the given constraint.
-	 *  
-	 * @param original the constraint to be copied
-	 * @return the created bundle specification
-	 */
-	public BundleSpecification createBundleSpecification(BundleSpecification original);
-
-	/**
-	 * Creates a host specification from the given parameters.
-	 *  
-	 * @param hostSymbolicName the symbolic name for the host bundle
-	 * @param hostVersionRange the version range for the host bundle (may be <code>null</code>)
-	 * @return the created host specification
-	 * @see VersionConstraint for information on the available match rules 
-	 */
-	public HostSpecification createHostSpecification(String hostSymbolicName, VersionRange hostVersionRange);
-
-	/**
-	 * Creates a host specification that is a copy of the given constraint.
-	 * 
-	 * @param original the constraint to be copied
-	 * @return the created host specification
-	 */
-	public HostSpecification createHostSpecification(HostSpecification original);
-
-	/**
-	 * Creates an import package specification from the given parameters.
-	 *  
-	 * @param packageName the package name
-	 * @param versionRange the package versionRange (may be <code>null</code>).
-	 * @param bundleSymbolicName the Bundle-SymbolicName of the bundle that must export the package (may be <code>null</code>)
-	 * @param bundleVersionRange the bundle versionRange (may be <code>null</code>).
-	 * @param directives the directives for this package (may be <code>null</code>)
-	 * @param attributes the arbitrary attributes for the package import (may be <code>null</code>)
-	 * @param importer the importing bundle (may be <code>null</code>)
-	 * @return the created package specification
-	 */
-	public ImportPackageSpecification createImportPackageSpecification(String packageName, VersionRange versionRange, String bundleSymbolicName, VersionRange bundleVersionRange, Map directives, Map attributes, BundleDescription importer);
-
-	/**
-	 * Creates an import package specification that is a copy of the given import package
-	 * @param original the import package to be copied
-	 * @return the created package specification 
-	 */
-	public ImportPackageSpecification createImportPackageSpecification(ImportPackageSpecification original);
-
-	/**
-	 * Used by the Resolver to dynamically create ExportPackageDescription objects during the resolution process.
-	 * The Resolver needs to create ExportPackageDescriptions dynamically for a host when a fragment.
-	 * exports a package<p>
-	 * 
-	 * @param packageName the package name
-	 * @param version the version of the package (may be <code>null</code>)
-	 * @param directives the directives for the package (may be <code>null</code>)
-	 * @param attributes the attributes for the package (may be <code>null</code>)
-	 * @param root whether the package is a root package
-	 * @param exporter the exporter of the package (may be <code>null</code>)
-	 * @return the created package
-	 */
-	public ExportPackageDescription createExportPackageDescription(String packageName, Version version, Map directives, Map attributes, boolean root, BundleDescription exporter);
-
-	/**
-	 * Creates a generic description from the given parameters
-	 * @param name the name of the generic description
-	 * @param type the type of the generic description (may be <code>null</code>)
-	 * @param version the version of the generic description (may be <code>null</code>)
-	 * @param attributes the attributes for the generic description (may be <code>null</code>)
-	 * @return the created generic description
-	 */
-	public GenericDescription createGenericDescription(String name, String type, Version version, Map attributes);
-
-	/**
-	 * Creates a generic specification from the given parameters
-	 * @param name the name of the generic specification
-	 * @param type the type of the generic specification (may be <code>null</code>)
-	 * @param matchingFilter the matching filter (may be <code>null</code>)
-	 * @param optional whether the specification is optional
-	 * @param multiple whether the specification allows for multiple suppliers
-	 * @return the created generic specification
-	 * @throws InvalidSyntaxException if the matching filter is invalid
-	 */
-	public GenericSpecification createGenericSpecification(String name, String type, String matchingFilter, boolean optional, boolean multiple) throws InvalidSyntaxException;
-
-	/**
-	 * Creates a native code specification from the given parameters
-	 * @param nativeCodeDescriptions the native code descriptors
-	 * @param optional whether the specification is optional
-	 * @return the created native code specification
-	 * @since 3.4
-	 */
-	public NativeCodeSpecification createNativeCodeSpecification(NativeCodeDescription[] nativeCodeDescriptions, boolean optional);
-
-	/**
-	 * Creates a native code description from the given parameters
-	 * @param nativePaths the native code paths (may be <code>null</code>)
-	 * @param processors the supported processors (may be <code>null</code>)
-	 * @param osNames the supported operating system names (may be <code>null</code>)
-	 * @param osVersions the supported operating system version ranges (may be <code>null</code>)
-	 * @param languages the supported languages (may be <code>null</code>)
-	 * @param filter the selection filter (may be <code>null</code>)
-	 * @return the created native code description
-	 * @throws InvalidSyntaxException if the selection filter is invalid
-	 * @since 3.4
-	 */
-	public NativeCodeDescription createNativeCodeDescription(String[] nativePaths, String[] processors, String[] osNames, VersionRange[] osVersions, String[] languages, String filter) throws InvalidSyntaxException;
-
-	/**
-	 * Creates an import package specification that is a copy of the given constraint
-	 * @param original the export package to be copied
-	 * @return the created package
-	 */
-	public ExportPackageDescription createExportPackageDescription(ExportPackageDescription original);
-
-	/**
-	 * Persists the given state in the given output stream. Closes the stream.
-	 * 
-	 * @param state the state to be written
-	 * @param stream the stream where to write the state to
-	 * @throws IOException if an IOException happens while writing the state to 
-	 * the stream
-	 * @throws IllegalArgumentException if the state provided was not created by 
-	 * this factory
-	 * @deprecated use {@link #writeState(State, File)} instead
-	 * @since 3.1
-	 */
-	public void writeState(State state, OutputStream stream) throws IOException;
-
-	/**
-	 * Persists the given state in the given output stream. Closes the stream.
-	 * 
-	 * @param state the state to be written
-	 * @param stream the stream where to write the state to
-	 * @throws IOException if an IOException happens while writing the state to 
-	 * the stream
-	 * @throws IllegalArgumentException if the state provided was not created by 
-	 * this factory
-	 * @deprecated use {@link #writeState(State, File)} instead
-	 * @see #writeState(State, OutputStream)
-	 */
-	public void writeState(State state, DataOutputStream stream) throws IOException;
-
-	/**
-	 * Persists the given state in the given directory.
-	 * 
-	 * @param state the state to be written
-	 * @param stateDirectory the directory where to write the state to
-	 * @throws IOException if an IOException happens while writing the state to 
-	 * the stream
-	 * @throws IllegalArgumentException if the state provided was not created by 
-	 * this factory
-	 */
-	public void writeState(State state, File stateDirectory) throws IOException;
-
-	/**
-	 * Reads a persisted state from the given stream. Closes the stream.
-	 * 
-	 * @param stream the stream where to read the state from
-	 * @return the state read
-	 * @throws IOException if an IOException happens while reading the state from 
-	 * the stream
-	 * @deprecated use {@link #readState(File)} instead
-	 * @since 3.1
-	 */
-	public State readState(InputStream stream) throws IOException;
-
-	/**
-	 * Reads a persisted state from the given stream. Closes the stream.
-	 * 
-	 * @param stream the stream where to read the state from
-	 * @return the state read
-	 * @throws IOException if an IOException happens while reading the state from 
-	 * the stream
-	 * @deprecated use {@link #readState(File)} instead
-	 * @see #readState(InputStream)
-	 */
-	public State readState(DataInputStream stream) throws IOException;
-
-	/**
-	 * Reads a persisted state from the given directory.
-	 * 
-	 * @param stateDirectory the directory where to read the state from
-	 * @return the state read
-	 * @throws IOException if an IOException happens while reading the state from 
-	 * the stream
-	 */
-	public State readState(File stateDirectory) throws IOException;
-
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionConstraint.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionConstraint.java
deleted file mode 100644
index b61ad42..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionConstraint.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-/**
- * VersionConstraints represent the relationship between two bundles (in the 
- * case of bundle requires) or a bundle and a package (in the case of import/export).
- * <p>
- * This interface is not intended to be implemented by clients.  The
- * {@link StateObjectFactory} should be used to construct instances.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface VersionConstraint extends Cloneable {
-
-	/**
-	 * Returns this constraint's name.
-	 * 
-	 * @return this constraint's name
-	 */
-	public String getName();
-
-	/**
-	 * Returns the version range for this constraint.
-	 * @return the version range for this constraint, or <code>null</code>
-	 */
-	public VersionRange getVersionRange();
-
-	/**
-	 * Returns the bundle that declares this constraint.
-	 * 
-	 * @return a bundle description
-	 */
-	public BundleDescription getBundle();
-
-	/**
-	 * Returns whether this constraint is resolved. A resolved constraint 
-	 * is guaranteed to have its supplier defined. 
-	 * 
-	 * @return <code>true</code> if this bundle is resolved, <code>false</code> 
-	 * otherwise
-	 */
-	public boolean isResolved();
-
-	/**
-	 * Returns whether this constraint could be satisfied by the given supplier.
-	 * This will depend on the suppliers different attributes including its name,
-	 * versions and other arbitrary attributes
-	 * 
-	 * @param supplier a supplier to be tested against this constraint (may be 
-	 * <code>null</code>)
-	 * @return <code>true</code> if this constraint could be resolved using the supplier, 
-	 * <code>false</code> otherwise 
-	 */
-	public boolean isSatisfiedBy(BaseDescription supplier);
-
-	/**
-	 * Returns the supplier that satisfies this constraint, if it is resolved.
-	 *  
-	 * @return a supplier, or <code>null</code> 
-	 * @see #isResolved()
-	 */
-	public BaseDescription getSupplier();
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionRange.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionRange.java
deleted file mode 100644
index d58bec7..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionRange.java
+++ /dev/null
@@ -1,211 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.resolver;
-
-import org.osgi.framework.Version;
-
-/**
- * This class represents a version range.
- * @since 3.1
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class VersionRange {
-	private static final Version versionMax = new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE);
-	/**
-	 * An empty version range: "0.0.0".  The empty version range includes all valid versions
-	 * (any version greater than or equal to the version 0.0.0).
-	 */
-	public static final VersionRange emptyRange = new VersionRange(null);
-
-	private final Version minVersion;
-	private final boolean includeMin;
-	private final Version maxVersion;
-	private final boolean includeMax;
-
-	/**
-	 * Constructs a VersionRange with the specified minVersion and maxVersion.
-	 * @param minVersion the minimum version of the range. If <code>null</code>
-	 * then {@link Version#emptyVersion} is used.
-	 * @param maxVersion the maximum version of the range. If <code>null</code>
-	 * then new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE)
-	 * is used. 
-	 */
-	public VersionRange(Version minVersion, boolean includeMin, Version maxVersion, boolean includeMax) {
-		this.minVersion = minVersion == null ? Version.emptyVersion : minVersion;
-		this.includeMin = includeMin;
-		this.maxVersion = maxVersion == null ? VersionRange.versionMax : maxVersion;
-		this.includeMax = includeMax;
-	}
-
-	/**
-	 * Creates a version range from the specified string.
-	 * 
-	 * <p>
-	 * Here is the grammar for version range strings.
-	 * <pre>
-	 * version-range ::= interval | atleast
-	 * interval ::= ( include-min | exclude-min ) min-version ',' max-version ( include-max | exclude-max )
-	 * atleast ::= version
-	 * floor ::= version
-	 * ceiling ::= version
-	 * include-min ::= '['
-	 * exclude-min ::= '('
-	 * include-max ::= ']'
-	 * exclude-max ::= ')'
-	 * </pre>
-	 * </p>
-	 * 
-	 * @param versionRange string representation of the version range or <code>null</code>
-	 * for the empty range "0.0.0"
-	 * @see Version#Version(String) definition of <code>version</code>
-	 */
-	public VersionRange(String versionRange) {
-		if (versionRange == null || versionRange.length() == 0) {
-			minVersion = Version.emptyVersion;
-			includeMin = true;
-			maxVersion = VersionRange.versionMax;
-			includeMax = true;
-			return;
-		}
-		versionRange = versionRange.trim();
-		if (versionRange.charAt(0) == '[' || versionRange.charAt(0) == '(') {
-			int comma = versionRange.indexOf(',');
-			if (comma < 0)
-				throw new IllegalArgumentException();
-			char last = versionRange.charAt(versionRange.length() - 1);
-			if (last != ']' && last != ')')
-				throw new IllegalArgumentException();
-
-			minVersion = Version.parseVersion(versionRange.substring(1, comma).trim());
-			includeMin = versionRange.charAt(0) == '[';
-			maxVersion = Version.parseVersion(versionRange.substring(comma + 1, versionRange.length() - 1).trim());
-			includeMax = last == ']';
-		} else {
-			minVersion = Version.parseVersion(versionRange.trim());
-			includeMin = true;
-			maxVersion = VersionRange.versionMax;
-			includeMax = true;
-		}
-	}
-
-	/**
-	 * Returns the minimum Version of this VersionRange.
-	 * @return the minimum Version of this VersionRange
-	 */
-	public Version getMinimum() {
-		return minVersion;
-	}
-
-	/**
-	 * Indicates if the minimum version is included in the version range.
-	 * @return true if the minimum version is included in the version range;
-	 * otherwise false is returned
-	 */
-	public boolean getIncludeMinimum() {
-		return includeMin;
-	}
-
-	/**
-	 * Returns the maximum Version of this VersionRange.
-	 * @return the maximum Version of this VersionRange
-	 */
-	public Version getMaximum() {
-		return maxVersion;
-	}
-
-	/**
-	 * Indicates if the maximum version is included in the version range.
-	 * @return true if the maximum version is included in the version range;
-	 * otherwise false is returned
-	 */
-	public boolean getIncludeMaximum() {
-		return includeMax;
-	}
-
-	/**
-	 * Returns whether the given version is included in this VersionRange.
-	 * This will depend on the minimum and maximum versions of this VersionRange
-	 * and the given version.
-	 * 
-	 * @param version a version to be tested for inclusion in this VersionRange. 
-	 * If <code>null</code> then {@link Version#emptyVersion} is used.
-	 * @return <code>true</code> if the version is included, 
-	 * <code>false</code> otherwise 
-	 */
-	public boolean isIncluded(Version version) {
-		if (version == null)
-			version = Version.emptyVersion;
-		int minCheck = includeMin ? 0 : 1;
-		int maxCheck = includeMax ? 0 : -1;
-		return version.compareTo(minVersion) >= minCheck && version.compareTo(maxVersion) <= maxCheck;
-
-	}
-
-	public boolean equals(Object object) {
-		if (!(object instanceof VersionRange))
-			return false;
-		VersionRange vr = (VersionRange) object;
-		if (minVersion.equals(vr.getMinimum()) && includeMin == vr.includeMin)
-			if (maxVersion.equals(vr.getMaximum()) && includeMax == vr.includeMax)
-				return true;
-		return false;
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + maxVersion.hashCode();
-		result = prime * result + minVersion.hashCode();
-		result = prime * result + (includeMax ? 1231 : 1237);
-		result = prime * result + (includeMin ? 1231 : 1237);
-		return result;
-	}
-
-	/**
-	 * Returns the string representation of this version range.
-	 * The encoded format uses the following grammar:
-	 * <pre>
-	 * version-range ::= interval | atleast
-	 * interval ::= ( include-min | exclude-min ) min-version ',' max-version ( include-max | exclude-max )
-	 * atleast ::= version
-	 * floor ::= version
-	 * ceiling ::= version
-	 * include-min ::= '['
-	 * exclude-min ::= '('
-	 * include-max ::= ']'
-	 * exclude-max ::= ')'
-	 * </pre>
-	 * The following are some examples of version range strings and their predicate 
-	 * equivalent:
-	 * <pre>
-	 * [1.2.3, 4.5.6) -> 1.2.3 <= x < 4.5.6
-	 * [1.2.3, 4.5.6] -> 1.2.3 <= x <= 4.5.6
-	 * (1.2.3, 4.5.6) -> 1.2.3 < x < 4.5.6
-	 * (1.2.3, 4.5.6] -> 1.2.3 < x <= 4.5.6
-	 * 1.2.3          -> 1.2.3 <= x
-	 * </pre>
-	 * Note that a simple version (e.g. &quot;1.2.3&quot;) indicates a version range which is
-	 * any version greater than or equal to the specified version.
-	 * @return The string representation of this version range.
-	 * @see Version#toString() string representation of <code>version</code>
-	 */
-	public String toString() {
-		if (VersionRange.versionMax.equals(maxVersion))
-			return minVersion.toString(); // we assume infinity max; use simple version (i.e version="1.0")
-		StringBuffer result = new StringBuffer();
-		result.append(includeMin ? '[' : '(');
-		result.append(minVersion);
-		result.append(',');
-		result.append(maxVersion);
-		result.append(includeMax ? ']' : ')');
-		return result.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/package.html b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/package.html
deleted file mode 100644
index 04babd0..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/package.html
+++ /dev/null
@@ -1,17 +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 the Equinox resolver API.
-<h2>
-Package Specification</h2>
-This package specifies the API for Equinox resolver.
-<p>
-Clients that need access to the Equinox runtime resolver will likely be interested  
-in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java
deleted file mode 100644
index 6f2b039..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.util;
-
-import java.util.Locale;
-
-/**
- * This class is used to process strings that have special semantic meaning
- * (such as file paths) in RTL-oriented locales so that they render in a way
- * that does not corrupt the semantic meaning of the string but also maintains
- * compliance with the Unicode BiDi algorithm of rendering Bidirectional text.
- * <p>
- * Processing of the string is done by breaking it down into segments that are
- * specified by a set of user provided delimiters. Directional punctuation
- * characters are injected into the string in order to ensure the string retains
- * its semantic meaning and conforms with the Unicode BiDi algorithm within each
- * segment.
- * </p>
- * 
- * @since 3.2
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class TextProcessor {
-
-	// commonly used delimiters
-	/**
-	 * Dot (.) delimiter. Used most often in package names and file extensions.
-	 */
-	private static final String DOT = "."; //$NON-NLS-1$
-
-	/**
-	 * Colon (:) delimiter. Used most often in file paths and URLs.
-	 */
-	private static final String COLON = ":"; //$NON-NLS-1$
-
-	/**
-	 * Forward slash (/) delimiter. Used most often in file paths and URLs.
-	 */
-	private static final String FILE_SEP_FSLASH = "/"; //$NON-NLS-1$
-
-	/**
-	 * Backslash (\) delimiter. Used most often in file paths.
-	 */
-	private static final String FILE_SEP_BSLASH = "\\"; //$NON-NLS-1$
-
-	/**
-	 * The default set of delimiters to use to segment a string.
-	 */
-	private static final String delimiterString = DOT + COLON + FILE_SEP_FSLASH + FILE_SEP_BSLASH;
-
-	// left to right marker
-	private static final char LRM = '\u200e';
-
-	// left to right embedding
-	private static final char LRE = '\u202a';
-
-	// pop directional format
-	private static final char PDF = '\u202c';
-
-	// whether or not processing is needed
-	private static boolean IS_PROCESSING_NEEDED = false;
-
-	// constant used to indicate an LRM need not precede a delimiter 
-	private static final int INDEX_NOT_SET = 999999999;
-
-	static {
-		Locale locale = Locale.getDefault();
-		String lang = locale.getLanguage();
-
-		if ("iw".equals(lang) || "he".equals(lang) || "ar".equals(lang) || "fa".equals(lang) || "ur".equals(lang)) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-			String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
-			if (osName.startsWith("windows") || osName.startsWith("linux") || osName.startsWith("mac")) { //$NON-NLS-1$	//$NON-NLS-2$ //$NON-NLS-3$
-				IS_PROCESSING_NEEDED = true;
-			}
-		}
-	}
-
-	/**
-	 * Process the given text and return a string with the appropriate
-	 * substitution based on the locale. This is equivalent to calling
-	 * <code>process(String, String)</code> with the default set of
-	 * delimiters.
-	 * 
-	 * @param text
-	 *            the text to be processed
-	 * @return the manipulated string
-	 * @see #process(String, String)
-	 * @see #getDefaultDelimiters()
-	 */
-	public static String process(String text) {
-		if (!IS_PROCESSING_NEEDED || text == null || text.length() <= 1)
-			return text;
-		return process(text, getDefaultDelimiters());
-	}
-
-	/**
-	 * Process a string that has a particular semantic meaning to render on BiDi
-	 * locales in way that maintains the semantic meaning of the text, but
-	 * differs from the Unicode BiDi algorithm. The text is segmented according
-	 * to the provided delimiters. Each segment has the Unicode BiDi algorithm
-	 * applied to it, but as a whole, the string is oriented left to right.
-	 * <p>
-	 * For example a file path such as <tt>d:\myFolder\FOLDER\MYFILE.java</tt>
-	 * (where capital letters indicate RTL text) should render as
-	 * <tt>d:\myFolder\REDLOF\ELIFYM.java</tt> when using the Unicode BiDi
-	 * algorithm and segmenting the string according to the specified delimiter
-	 * set.
-	 * </p>
-	 * <p>
-	 * The following algorithm is used:
-	 * <ol>
-	 * <li>Scan the string to locate the delimiters.</li>
-	 * <li>While scanning, note the direction of the last strong character
-	 * scanned. Strong characters are characters which have a BiDi
-	 * classification of L, R or AL as defined in the Unicode standard.</li>
-	 * <li>If the last strong character before a separator is of class R or AL,
-	 * add a LRM before the separator. Since LRM itself is a strong L character,
-	 * following separators do not need an LRM until a strong R or AL character
-	 * is found.</li>
-	 * <li>If the component where the pattern is displayed has a RTL basic
-	 * direction, add a LRE at the beginning of the pattern and a PDF at its
-	 * end. The string is considered to have RTL direction if it contains RTL
-	 * characters and the runtime locale is BiDi. There is no need to add
-	 * LRE/PDF if the string begins with an LTR letter, contains no RTL letter,
-	 * and ends with either a LTR letter or a digit.</li>
-	 * </ol>
-	 * </p>
-	 * <p>
-	 * NOTE: this method will change the shape of the original string passed in
-	 * by inserting punctuation characters into the text in order to make it
-	 * render to correctly reflect the semantic meaning of the text. Methods
-	 * like <code>String.equals(String)</code> and
-	 * <code>String.length()</code> called on the resulting string will not
-	 * return the same values as would be returned for the original string.
-	 * </p>
-	 * 
-	 * @param str
-	 *            the text to process, if <code>null</code> return the string
-	 *            as it was passed in
-	 * @param delimiter
-	 *            delimiters by which the string will be segmented, if
-	 *            <code>null</code> the default delimiters are used
-	 * @return the processed string
-	 */
-	public static String process(String str, String delimiter) {
-		if (!IS_PROCESSING_NEEDED || str == null || str.length() <= 1)
-			return str;
-
-		// do not process a string that has already been processed.
-		if (str.charAt(0) == LRE && str.charAt(str.length() - 1) == PDF) {
-			return str;
-		}
-
-		// String contains RTL characters
-		boolean isStringBidi = false;
-		// Last strong character is RTL
-		boolean isLastRTL = false;
-		// Last candidate delimiter index
-		int delimIndex = INDEX_NOT_SET;
-
-		delimiter = delimiter == null ? getDefaultDelimiters() : delimiter;
-
-		StringBuffer target = new StringBuffer();
-		target.append(LRE);
-		char ch;
-
-		for (int i = 0, n = str.length(); i < n; i++) {
-			ch = str.charAt(i);
-			if (delimiter.indexOf(ch) != -1) {
-				// character is a delimiter, note its index in the buffer
-				if (isLastRTL) {
-					delimIndex = target.length();
-				}
-			} else if (Character.isDigit(ch)) {
-				if (delimIndex != INDEX_NOT_SET) {
-					// consecutive neutral and weak directional characters
-					// explicitly force direction to be LRM					
-					target.insert(delimIndex, LRM);
-					delimIndex = INDEX_NOT_SET;
-					isLastRTL = false;
-				}
-			} else if (Character.isLetter(ch)) {
-				if (isRTL(ch)) {
-					isStringBidi = true;
-					if (delimIndex != INDEX_NOT_SET) {
-						// neutral character followed by strong right directional character
-						// explicitly force direction to be LRM	
-						target.insert(delimIndex, LRM);
-						delimIndex = INDEX_NOT_SET;
-					}
-					isLastRTL = true;
-				} else {
-					// strong LTR character, no LRM will be required
-					delimIndex = INDEX_NOT_SET;
-					isLastRTL = false;
-				}
-			}
-			target.append(ch);
-		}
-		/*
-		 * TextProcessor is not aware of the orientation of the component owning
-		 * the processed string. Enclose the string in LRE/PDF in either of 2
-		 * cases: 
-		 * (1) The string contains BiDi characters - implying that the
-		 * string appearance depends on the basic orientation 
-		 * (2) The runtime locale is BiDi AND either the string does not start with 
-		 * an LTR character or it ends with LTR char or digit.
-		 */
-		if (isStringBidi || !Character.isLetter(str.charAt(0)) || isNeutral(str.charAt(str.length() - 1))) {
-			target.append(PDF);
-			return target.toString();
-		}
-		// Otherwise, return the original string
-		return str;
-	}
-
-	/**
-	 * Removes directional marker characters in the given string that were inserted by 
-	 * utilizing the <code>process(String)</code> or <code>process(String, String)</code>
-	 * methods.
-	 * 
-	 * @param str string with directional markers to remove
-	 * @return string with no directional markers 
-	 * @see #process(String)
-	 * @see #process(String, String)
-	 * @since 3.3
-	 */
-	public static String deprocess(String str) {
-		if (!IS_PROCESSING_NEEDED || str == null || str.length() <= 1)
-			return str;
-
-		StringBuffer buf = new StringBuffer();
-		for (int i = 0; i < str.length(); i++) {
-			char c = str.charAt(i);
-			switch (c) {
-				case LRE :
-					continue;
-				case PDF :
-					continue;
-				case LRM :
-					continue;
-				default :
-					buf.append(c);
-			}
-		}
-
-		return buf.toString();
-	}
-
-	/**
-	 * Return the string containing all the default delimiter characters to be
-	 * used to segment a given string.
-	 * 
-	 * @return delimiter string
-	 */
-	public static String getDefaultDelimiters() {
-		return delimiterString;
-	}
-
-	/*
-	 * Return whether or not the character falls is right to left oriented.
-	 */
-	private static boolean isRTL(char c) {
-		/*
-		 * Cannot use Character.getDirectionality() since the OSGi library can
-		 * be compiled with execution environments that pre-date that API.
-		 * 
-		 * The first range of characters is Unicode Hebrew and Arabic
-		 * characters. The second range of characters is Unicode Hebrew and
-		 * Arabic presentation forms.
-		 * 
-		 * NOTE: Farsi and Urdu fall within the Arabic scripts.
-		 */
-		return (((c >= 0x05d0) && (c <= 0x07b1)) || ((c >= 0xfb1d) && (c <= 0xfefc)));
-	}
-
-	/*
-	 * Return whether or not the given character has a weak directional type
-	 */
-	private static boolean isNeutral(char c) {
-		return !(Character.isDigit(c) || Character.isLetter(c));
-	}
-
-	/*
-	 * Constructor for the class.
-	 */
-	private TextProcessor() {
-		// prevent instantiation
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/package.html b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/package.html
deleted file mode 100644
index 08e65ed..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/package.html
+++ /dev/null
@@ -1,17 +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 utility classes for NLS support and bundle manifest header parsing.
-<h2>
-Package Specification</h2>
-This package specifies the API related to NLS support and bundle manifest header parsing.
-<p>
-Clients with translatable text or parsing bundle manifest headers will likely be interested in the types
-provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeBase.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeBase.java
deleted file mode 100644
index d6413f4..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeBase.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.composite;
-
-import java.io.IOException;
-import java.io.InputStream;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.ClassLoaderDelegate;
-import org.eclipse.osgi.framework.internal.core.BundleHost;
-import org.eclipse.osgi.internal.module.CompositeResolveHelper;
-import org.eclipse.osgi.service.internal.composite.CompositeModule;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.launch.Framework;
-
-/**
- * This is a base class for both composite and surrogate bundles.
- */
-public abstract class CompositeBase extends BundleHost implements CompositeResolveHelper, CompositeModule {
-	protected static String PROP_COMPOSITE = "org.eclipse.equinox.Composite"; //$NON-NLS-1$
-	protected static String PROP_PARENTFRAMEWORK = "org.eclipse.equinox.parentFramework"; //$NON-NLS-1$
-
-	protected final Framework companionFramework;
-	protected final ThreadLocal resolving = new ThreadLocal();
-
-	public CompositeBase(BundleData bundledata, org.eclipse.osgi.framework.internal.core.Framework framework) throws BundleException {
-		super(bundledata, framework);
-		this.companionFramework = findCompanionFramework(framework, bundledata);
-	}
-
-	/* 
-	 * Finds the companion framework for the composite/surrogate.
-	 * For surrogate bundles this is the parent framework.
-	 * For composite bundles this is the child framework.
-	 */
-	protected abstract Framework findCompanionFramework(org.eclipse.osgi.framework.internal.core.Framework thisFramework, BundleData thisData) throws BundleException;
-
-	/*
-	 * Gets the companion bundle for the composite/surrogate.
-	 * For surrogate bundles this is the composite bundle.
-	 * For composite bundles this is the surrogate bundle.
-	 */
-	abstract protected Bundle getCompanionBundle();
-
-	protected boolean isSurrogate() {
-		return false;
-	}
-
-	public BundleDescription getCompositeDescription() {
-		return getBundleDescription();
-	}
-
-	public ClassLoaderDelegate getDelegate() {
-		return getBundleLoader();
-	}
-
-	public void refreshContent() {
-		resolving.set(Boolean.TRUE);
-		try {
-			framework.getPackageAdmin().refreshPackages(new Bundle[] {this}, true);
-		} finally {
-			resolving.set(null);
-		}
-	}
-
-	public boolean resolveContent() {
-		resolving.set(Boolean.TRUE);
-		try {
-			return framework.getPackageAdmin().resolveBundles(new Bundle[] {this});
-		} finally {
-			resolving.set(null);
-		}
-	}
-
-	public void started(CompositeModule surrogate) {
-		// nothing
-	}
-
-	public void stopped(CompositeModule surrogate) {
-		// nothing
-	}
-
-	public void updateContent(InputStream content) throws BundleException {
-		super.update(content);
-	}
-
-	public void update() throws BundleException {
-		throw new BundleException("Cannot update composite bundles", BundleException.INVALID_OPERATION); //$NON-NLS-1$
-	}
-
-	public void update(InputStream in) throws BundleException {
-		try {
-			in.close();
-		} catch (IOException e) {
-			// ignore
-		}
-		throw new BundleException("Cannot update composite bundles", BundleException.INVALID_OPERATION); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeClassLoader.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeClassLoader.java
deleted file mode 100644
index 65f2795..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeClassLoader.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.composite;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.ProtectionDomain;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.ClassLoaderDelegate;
-import org.osgi.framework.Bundle;
-
-public class CompositeClassLoader extends ClassLoader implements BaseClassLoader {
-
-	private final ClassLoaderDelegate delegate;
-	private final ClasspathManager manager;
-	private final ClassLoaderDelegate companionDelegate;
-	//Support to cut class / resource loading cycles in the context of one thread. The contained object is a set of classname
-	private final ThreadLocal beingLoaded = new ThreadLocal();
-
-	public CompositeClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, ClassLoaderDelegate companionDelegate, BaseData data) {
-		super(parent);
-		this.delegate = delegate;
-		this.manager = new ClasspathManager(data, new String[0], this);
-		this.companionDelegate = companionDelegate;
-	}
-
-	public ClasspathEntry createClassPathEntry(BundleFile bundlefile, ProtectionDomain cpDomain) {
-		// nothing
-		return null;
-	}
-
-	public Class defineClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry) {
-		// nothing
-		return null;
-	}
-
-	public ClasspathManager getClasspathManager() {
-		return manager;
-	}
-
-	public ProtectionDomain getDomain() {
-		// no domain
-		return null;
-	}
-
-	public Object publicDefinePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) {
-		return definePackage(name, specTitle, specVersion, specVendor, implTitle, implVersion, implVendor, sealBase);
-	}
-
-	public Class publicFindLoaded(String classname) {
-		return findLoadedClass(classname);
-	}
-
-	public Object publicGetPackage(String pkgname) {
-		return getPackage(pkgname);
-	}
-
-	public void attachFragment(BundleData bundledata, ProtectionDomain domain, String[] classpath) {
-		// nothing
-	}
-
-	public void close() {
-		// nothing
-	}
-
-	public Class findLocalClass(String classname) throws ClassNotFoundException {
-		if (!startLoading(classname))
-			throw new ClassNotFoundException(classname);
-		try {
-			return companionDelegate.findClass(classname);
-		} finally {
-			stopLoading(classname);
-		}
-	}
-
-	public URL findLocalResource(String resource) {
-		if (!startLoading(resource))
-			return null;
-		try {
-			return companionDelegate.findResource(resource);
-		} finally {
-			stopLoading(resource);
-		}
-	}
-
-	public Enumeration findLocalResources(String resource) {
-		if (!startLoading(resource))
-			return null;
-		try {
-			return companionDelegate.findResources(resource);
-		} catch (IOException e) {
-			return null;
-		} finally {
-			stopLoading(resource);
-		}
-	}
-
-	public ClassLoaderDelegate getDelegate() {
-		return delegate;
-	}
-
-	public URL getResource(String name) {
-		return delegate.findResource(name);
-	}
-
-	public void initialize() {
-		manager.initialize();
-	}
-
-	public Class loadClass(String name) throws ClassNotFoundException {
-		return delegate.findClass(name);
-	}
-
-	private boolean startLoading(String name) {
-		Set classesAndResources = (Set) beingLoaded.get();
-		if (classesAndResources != null && classesAndResources.contains(name))
-			return false;
-
-		if (classesAndResources == null) {
-			classesAndResources = new HashSet(3);
-			beingLoaded.set(classesAndResources);
-		}
-		classesAndResources.add(name);
-		return true;
-	}
-
-	private void stopLoading(String name) {
-		((Set) beingLoaded.get()).remove(name);
-	}
-
-	public Bundle getBundle() {
-		return manager.getBaseData().getBundle();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeConfigurator.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeConfigurator.java
deleted file mode 100644
index 90c86a9..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeConfigurator.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.composite;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URLConnection;
-import java.security.AllPermission;
-import java.security.ProtectionDomain;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.hooks.AdaptorHook;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.internal.module.*;
-import org.eclipse.osgi.service.internal.composite.CompositeModule;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.osgi.framework.*;
-import org.osgi.framework.launch.Framework;
-import org.osgi.service.framework.CompositeBundle;
-import org.osgi.service.framework.CompositeBundleFactory;
-
-public class CompositeConfigurator implements SynchronousBundleListener, HookConfigurator, AdaptorHook, ClassLoadingHook, CompositeBundleFactory, CompositeResolveHelperRegistry {
-
-	// the base adaptor
-	private BaseAdaptor adaptor;
-	// the composite bundle factory service reference
-	private ServiceRegistration factoryService;
-	// the system bundle context
-	private BundleContext systemContext;
-	// The composite resolver helpers
-	private final Collection helpers = new ArrayList(0);
-
-	public void addHooks(HookRegistry hookRegistry) {
-		// this is an adaptor hook to register the composite factory and 
-		// to shutdown child frameworks on shutdown
-		hookRegistry.addAdaptorHook(this);
-		// this is a class loading hook in order to create special class loaders for composites
-		hookRegistry.addClassLoadingHook(this);
-	}
-
-	public void addProperties(Properties properties) {
-		// nothing
-	}
-
-	public FrameworkLog createFrameworkLog() {
-		// nothing
-		return null;
-	}
-
-	/**
-	 * @throws BundleException  
-	 */
-	public void frameworkStart(BundleContext context) throws BundleException {
-		this.systemContext = context;
-		context.addBundleListener(this);
-		addHelpers(context.getBundles());
-		// this is a composite resolve helper registry; add it to the resolver
-		((ResolverImpl) adaptor.getState().getResolver()).setCompositeResolveHelperRegistry(this);
-		// register this as the composite bundle factory
-		factoryService = context.registerService(new String[] {CompositeBundleFactory.class.getName()}, this, null);
-	}
-
-	public void frameworkStop(BundleContext context) {
-		// unregister the factory
-		if (factoryService != null)
-			factoryService.unregister();
-		factoryService = null;
-		// stop any child frameworks than may still be running.
-		stopFrameworks();
-		context.removeBundleListener(this);
-		removeAllHelpers();
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		// nothing
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// nothing
-	}
-
-	public void initialize(BaseAdaptor initAdaptor) {
-		this.adaptor = initAdaptor;
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) {
-		// nothing
-		return null;
-	}
-
-	public boolean matchDNChain(String pattern, String[] dnChain) {
-		// nothing
-		return false;
-	}
-
-	public CompositeBundle installCompositeBundle(Map frameworkConfig, String location, Map compositeManifest) throws BundleException {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			// must have AllPermission to do this
-			sm.checkPermission(new AllPermission());
-		// make a local copy of the manifest first
-		compositeManifest = new HashMap(compositeManifest);
-		// make sure the manifest is valid
-		CompositeHelper.validateCompositeManifest(compositeManifest);
-
-		try {
-			// get an in memory input stream to jar content of the composite we want to install
-			InputStream content = CompositeHelper.getCompositeInput(frameworkConfig, compositeManifest);
-			CompositeBundle result = (CompositeBundle) systemContext.installBundle(location, content);
-			// set the permissions
-			CompositeHelper.setCompositePermissions(location, systemContext);
-			return result;
-		} catch (IOException e) {
-			throw new BundleException("Error creating composite bundle", e); //$NON-NLS-1$
-		}
-	}
-
-	private void stopFrameworks() {
-		Bundle[] allBundles = systemContext.getBundles();
-		// stop each child framework
-		for (int i = 0; i < allBundles.length; i++) {
-			if (!(allBundles[i] instanceof CompositeBundle))
-				continue;
-			CompositeBundle composite = (CompositeBundle) allBundles[i];
-			try {
-				Framework child = composite.getCompositeFramework();
-				child.stop();
-				// need to wait for each child to stop
-				child.waitForStop(30000);
-				// TODO need to figure out a way to invalid the child
-			} catch (Throwable t) {
-				// TODO consider logging
-				t.printStackTrace();
-			}
-		}
-	}
-
-	public CompositeResolveHelper getCompositeResolveHelper(BundleDescription bundle) {
-		// Composite bundles implement the resolver helper
-		synchronized (helpers) {
-			if (helpers.size() == 0)
-				return null;
-			for (Iterator iHelpers = helpers.iterator(); iHelpers.hasNext();) {
-				CompositeBase composite = (CompositeBase) iHelpers.next();
-				if (composite.getBundleId() == bundle.getBundleId())
-					// If we found a resolver helper bundle; return it
-					return composite;
-			}
-			return null;
-		}
-	}
-
-	public boolean addClassPathEntry(ArrayList cpEntries, String cp, ClasspathManager hostmanager, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		// nothing
-		return false;
-	}
-
-	public BaseClassLoader createClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, BundleProtectionDomain domain, BaseData data, String[] bundleclasspath) {
-		if ((data.getType() & (BundleData.TYPE_COMPOSITEBUNDLE | BundleData.TYPE_SURROGATEBUNDLE)) == 0)
-			return null;
-		// only create composite class loaders for bundles that are of type composite | surrogate
-		ClassLoaderDelegate companionDelegate = ((CompositeModule) ((CompositeBase) data.getBundle()).getCompanionBundle()).getDelegate();
-		return new CompositeClassLoader(parent, delegate, companionDelegate, data);
-	}
-
-	public String findLibrary(BaseData data, String libName) {
-		// nothing
-		return null;
-	}
-
-	public ClassLoader getBundleClassLoaderParent() {
-		// nothing
-		return null;
-	}
-
-	public void initializedClassLoader(BaseClassLoader baseClassLoader, BaseData data) {
-		// nothing
-	}
-
-	public byte[] processClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager) {
-		// nothing
-		return null;
-	}
-
-	private void addHelpers(Bundle[] bundles) {
-		synchronized (helpers) {
-			for (int i = 0; i < bundles.length; i++)
-				addHelper(bundles[i]);
-		}
-	}
-
-	private void addHelper(Bundle bundle) {
-		if (!(bundle instanceof CompositeBase))
-			return;
-		synchronized (helpers) {
-			if (!helpers.contains(bundle))
-				helpers.add(bundle);
-		}
-	}
-
-	private void removeHelper(Bundle bundle) {
-		if (!(bundle instanceof CompositeBase))
-			return;
-		synchronized (helpers) {
-			helpers.remove(bundle);
-		}
-	}
-
-	private void removeAllHelpers() {
-		synchronized (helpers) {
-			helpers.clear();
-		}
-	}
-
-	public void bundleChanged(BundleEvent event) {
-		switch (event.getType()) {
-			case BundleEvent.INSTALLED :
-				addHelper(event.getBundle());
-				break;
-			case BundleEvent.UNINSTALLED :
-				removeHelper(event.getBundle());
-				break;
-			default :
-				break;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeHelper.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeHelper.java
deleted file mode 100644
index d5ad91a..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeHelper.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.composite;
-
-import java.io.*;
-import java.util.*;
-import java.util.Map.Entry;
-import java.util.jar.*;
-import org.eclipse.osgi.internal.baseadaptor.BaseStorageHook;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.*;
-import org.osgi.service.permissionadmin.PermissionAdmin;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public class CompositeHelper {
-	private static final PermissionInfo[] COMPOSITE_PERMISSIONS = new PermissionInfo[] {new PermissionInfo(PackagePermission.class.getName(), "*", PackagePermission.EXPORT), new PermissionInfo(ServicePermission.class.getName(), "*", ServicePermission.REGISTER + ',' + ServicePermission.GET)}; //$NON-NLS-1$ //$NON-NLS-2$
-	private static final String COMPOSITE_POLICY = "org.eclipse.osgi.composite"; //$NON-NLS-1$
-	private static String ELEMENT_SEPARATOR = "; "; //$NON-NLS-1$
-	private static final Object EQUALS_QUOTE = "=\""; //$NON-NLS-1$
-	private static final String[] INVALID_COMPOSITE_HEADERS = new String[] {Constants.DYNAMICIMPORT_PACKAGE, Constants.FRAGMENT_HOST, Constants.REQUIRE_BUNDLE, Constants.BUNDLE_NATIVECODE, Constants.BUNDLE_CLASSPATH, Constants.BUNDLE_ACTIVATOR, Constants.BUNDLE_LOCALIZATION, Constants.BUNDLE_ACTIVATIONPOLICY};
-
-	private static Manifest getCompositeManifest(Map compositeManifest) {
-		Manifest manifest = new Manifest();
-		Attributes attributes = manifest.getMainAttributes();
-		attributes.putValue("Manifest-Version", "1.0"); //$NON-NLS-1$//$NON-NLS-2$
-		// get the common headers Bundle-ManifestVersion, Bundle-SymbolicName and Bundle-Version
-		// get the manifest version from the map
-		String manifestVersion = (String) compositeManifest.remove(Constants.BUNDLE_MANIFESTVERSION);
-		// here we assume the validation got the correct version for us
-		attributes.putValue(Constants.BUNDLE_MANIFESTVERSION, manifestVersion);
-		// Ignore the Equinox composite bundle header
-		compositeManifest.remove(BaseStorageHook.COMPOSITE_HEADER);
-		attributes.putValue(BaseStorageHook.COMPOSITE_HEADER, BaseStorageHook.COMPOSITE_BUNDLE);
-		for (Iterator entries = compositeManifest.entrySet().iterator(); entries.hasNext();) {
-			Map.Entry entry = (Entry) entries.next();
-			if (entry.getKey() instanceof String && entry.getValue() instanceof String)
-				attributes.putValue((String) entry.getKey(), (String) entry.getValue());
-		}
-		return manifest;
-	}
-
-	private static Manifest getSurrogateManifest(Dictionary compositeManifest, BundleDescription compositeDesc, ExportPackageDescription[] matchingExports) {
-		Manifest manifest = new Manifest();
-		Attributes attributes = manifest.getMainAttributes();
-		attributes.putValue("Manifest-Version", "1.0"); //$NON-NLS-1$//$NON-NLS-2$
-		// Ignore the manifest version from the map
-		// always use bundle manifest version 2
-		attributes.putValue(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		// Ignore the Equinox composite bundle header
-		attributes.putValue(BaseStorageHook.COMPOSITE_HEADER, BaseStorageHook.SURROGATE_BUNDLE);
-
-		if (compositeDesc != null && matchingExports != null) {
-			// convert the exports from the composite into imports
-			addImports(attributes, compositeDesc, matchingExports);
-
-			// convert the matchingExports from the composite into exports
-			addExports(attributes, matchingExports);
-		}
-
-		// add the rest
-		for (Enumeration keys = compositeManifest.keys(); keys.hasMoreElements();) {
-			Object header = keys.nextElement();
-			if (Constants.BUNDLE_MANIFESTVERSION.equals(header) || BaseStorageHook.COMPOSITE_HEADER.equals(header) || Constants.IMPORT_PACKAGE.equals(header) || Constants.EXPORT_PACKAGE.equals(header))
-				continue;
-			if (header instanceof String && compositeManifest.get(header) instanceof String)
-				attributes.putValue((String) header, (String) compositeManifest.get(header));
-		}
-		return manifest;
-	}
-
-	static InputStream getCompositeInput(Map frameworkConfig, Map compositeManifest) throws IOException {
-		// use an in memory stream to store the content
-		ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
-		// the composite bundles only consist of a manifest describing the packages they import and export
-		// and a framework config properties file
-		Manifest manifest = CompositeHelper.getCompositeManifest(compositeManifest);
-		JarOutputStream jarOut = new JarOutputStream(bytesOut, manifest);
-		try {
-			// store the framework config
-			Properties fwProps = new Properties();
-			if (frameworkConfig != null)
-				fwProps.putAll(frameworkConfig);
-			JarEntry entry = new JarEntry(CompositeImpl.COMPOSITE_CONFIGURATION);
-			jarOut.putNextEntry(entry);
-			fwProps.store(jarOut, null);
-			jarOut.closeEntry();
-			jarOut.flush();
-		} finally {
-			try {
-				jarOut.close();
-			} catch (IOException e) {
-				// nothing
-			}
-		}
-		return new ByteArrayInputStream(bytesOut.toByteArray());
-	}
-
-	static InputStream getSurrogateInput(Dictionary compositeManifest, BundleDescription compositeDesc, ExportPackageDescription[] matchingExports) throws IOException {
-		// use an in memory stream to store the content
-		ByteArrayOutputStream bytesOut = new ByteArrayOutputStream();
-		Manifest manifest = CompositeHelper.getSurrogateManifest(compositeManifest, compositeDesc, matchingExports);
-		JarOutputStream jarOut = new JarOutputStream(bytesOut, manifest);
-		jarOut.flush();
-		jarOut.close();
-		return new ByteArrayInputStream(bytesOut.toByteArray());
-	}
-
-	private static void addImports(Attributes attrigutes, BundleDescription compositeDesc, ExportPackageDescription[] matchingExports) {
-		ExportPackageDescription[] exports = compositeDesc.getExportPackages();
-		List systemExports = getSystemExports(matchingExports);
-		if (exports.length == 0 && systemExports.size() == 0)
-			return;
-		StringBuffer importStatement = new StringBuffer();
-		Collection importedNames = new ArrayList(exports.length);
-		int i = 0;
-		for (; i < exports.length; i++) {
-			if (i != 0)
-				importStatement.append(',');
-			importedNames.add(exports[i].getName());
-			getImportFrom(exports[i], importStatement);
-		}
-		for (Iterator iSystemExports = systemExports.iterator(); iSystemExports.hasNext();) {
-			ExportPackageDescription systemExport = (ExportPackageDescription) iSystemExports.next();
-			if (!importedNames.contains(systemExport.getName())) {
-				if (i != 0)
-					importStatement.append(',');
-				i++;
-				importStatement.append(systemExport.getName()).append(ELEMENT_SEPARATOR).append(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE).append('=').append(Constants.SYSTEM_BUNDLE_SYMBOLICNAME);
-			}
-		}
-		attrigutes.putValue(Constants.IMPORT_PACKAGE, importStatement.toString());
-	}
-
-	private static List getSystemExports(ExportPackageDescription[] matchingExports) {
-		ArrayList list = null;
-		for (int i = 0; i < matchingExports.length; i++) {
-			if (matchingExports[i].getExporter().getBundleId() != 0)
-				continue;
-			if (list == null)
-				list = new ArrayList();
-			list.add(matchingExports[i]);
-		}
-		return list == null ? Collections.EMPTY_LIST : list;
-	}
-
-	private static void getImportFrom(ExportPackageDescription export, StringBuffer importStatement) {
-		importStatement.append(export.getName()).append(ELEMENT_SEPARATOR);
-		Version version = export.getVersion();
-		importStatement.append(Constants.VERSION_ATTRIBUTE).append(EQUALS_QUOTE).append('[').append(version).append(',').append(new Version(version.getMajor(), version.getMinor(), version.getMicro() + 1)).append(')').append('\"');
-		addMap(importStatement, export.getAttributes(), "="); //$NON-NLS-1$
-	}
-
-	private static void addExports(Attributes attributes, ExportPackageDescription[] matchingExports) {
-		if (matchingExports.length == 0)
-			return;
-		StringBuffer exportStatement = new StringBuffer();
-		for (int i = 0; i < matchingExports.length; i++) {
-			if (i != 0)
-				exportStatement.append(',');
-			getExportFrom(matchingExports[i], exportStatement);
-		}
-		attributes.putValue(Constants.EXPORT_PACKAGE, exportStatement.toString());
-	}
-
-	private static void getExportFrom(ExportPackageDescription export, StringBuffer exportStatement) {
-		exportStatement.append(export.getName()).append(ELEMENT_SEPARATOR);
-		exportStatement.append(Constants.VERSION_ATTRIBUTE).append(EQUALS_QUOTE).append(export.getVersion()).append('\"');
-		addMap(exportStatement, export.getDirectives(), ":="); //$NON-NLS-1$
-		addMap(exportStatement, export.getAttributes(), "="); //$NON-NLS-1$
-	}
-
-	private static void addMap(StringBuffer manifest, Map values, String assignment) {
-		if (values == null)
-			return; // nothing to add
-		for (Iterator iEntries = values.entrySet().iterator(); iEntries.hasNext();) {
-			manifest.append(ELEMENT_SEPARATOR);
-			Map.Entry entry = (Entry) iEntries.next();
-			manifest.append(entry.getKey()).append(assignment).append('\"');
-			Object value = entry.getValue();
-			if (value instanceof String[]) {
-				String[] strings = (String[]) value;
-				for (int i = 0; i < strings.length; i++) {
-					if (i != 0)
-						manifest.append(',');
-					manifest.append(strings[i]);
-				}
-			} else {
-				manifest.append(value);
-			}
-			manifest.append('\"');
-		}
-	}
-
-	static void setCompositePermissions(String bundleLocation, BundleContext systemContext) {
-		ServiceReference ref = systemContext.getServiceReference(PermissionAdmin.class.getName());
-		PermissionAdmin permAdmin = (PermissionAdmin) (ref == null ? null : systemContext.getService(ref));
-		if (permAdmin == null)
-			throw new RuntimeException("No Permission Admin service is available"); //$NON-NLS-1$
-		try {
-			permAdmin.setPermissions(bundleLocation, COMPOSITE_PERMISSIONS);
-		} finally {
-			systemContext.ungetService(ref);
-		}
-	}
-
-	static void setDisabled(boolean disable, Bundle bundle, BundleContext systemContext) {
-		ServiceReference ref = systemContext.getServiceReference(PlatformAdmin.class.getName());
-		PlatformAdmin pa = (PlatformAdmin) (ref == null ? null : systemContext.getService(ref));
-		if (pa == null)
-			throw new RuntimeException("No Platform Admin service is available."); //$NON-NLS-1$
-		try {
-			State state = pa.getState(false);
-			BundleDescription desc = state.getBundle(bundle.getBundleId());
-			setDisabled(disable, desc);
-		} finally {
-			systemContext.ungetService(ref);
-		}
-	}
-
-	static void setDisabled(boolean disable, BundleDescription bundle) {
-		State state = bundle.getContainingState();
-		if (disable) {
-			state.addDisabledInfo(new DisabledInfo(COMPOSITE_POLICY, "Composite companion bundle is not resolved.", bundle)); //$NON-NLS-1$
-		} else {
-			DisabledInfo toRemove = state.getDisabledInfo(bundle, COMPOSITE_POLICY);
-			if (toRemove != null)
-				state.removeDisabledInfo(toRemove);
-		}
-	}
-
-	static void validateCompositeManifest(Map compositeManifest) throws BundleException {
-		if (compositeManifest == null)
-			throw new BundleException("The composite manifest cannot be null.", BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-		// check for symbolic name
-		if (compositeManifest.get(Constants.BUNDLE_SYMBOLICNAME) == null)
-			throw new BundleException("The composite manifest must contain a Bundle-SymbolicName header.", BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-		// check for invalid manifests headers
-		for (int i = 0; i < INVALID_COMPOSITE_HEADERS.length; i++)
-			if (compositeManifest.get(INVALID_COMPOSITE_HEADERS[i]) != null)
-				throw new BundleException("The composite manifest must not contain the header " + INVALID_COMPOSITE_HEADERS[i], BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-		// validate manifest version
-		String manifestVersion = (String) compositeManifest.get(Constants.BUNDLE_MANIFESTVERSION);
-		if (manifestVersion == null) {
-			compositeManifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		} else {
-			try {
-				Integer parsed = Integer.valueOf(manifestVersion);
-				if (parsed.intValue() > 2 || parsed.intValue() < 2)
-					throw new BundleException("Invalid Bundle-ManifestVersion: " + manifestVersion); //$NON-NLS-1$
-			} catch (NumberFormatException e) {
-				throw new BundleException("Invalid Bundle-ManifestVersion: " + manifestVersion); //$NON-NLS-1$
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java
deleted file mode 100644
index f900dc6..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeImpl.java
+++ /dev/null
@@ -1,283 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.composite;
-
-import java.io.*;
-import java.net.URL;
-import java.util.Map;
-import java.util.Properties;
-import org.eclipse.osgi.framework.adaptor.BundleClassLoader;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
-import org.eclipse.osgi.launch.Equinox;
-import org.eclipse.osgi.service.internal.composite.CompositeModule;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.osgi.framework.*;
-import org.osgi.framework.launch.Framework;
-import org.osgi.service.framework.*;
-
-public class CompositeImpl extends CompositeBase implements CompositeBundle {
-	private static String COMPOSITE_STORAGE = "store"; //$NON-NLS-1$
-	public static String COMPOSITE_CONFIGURATION = "compositeConfig.properties"; //$NON-NLS-1$
-
-	private final ServiceTrackerManager trackerManager = new ServiceTrackerManager();
-
-	public CompositeImpl(BundleData bundledata, org.eclipse.osgi.framework.internal.core.Framework framework) throws BundleException {
-		super(bundledata, framework);
-	}
-
-	protected Framework findCompanionFramework(org.eclipse.osgi.framework.internal.core.Framework thisFramework, BundleData thisData) throws BundleException {
-		// allocate storage area for the composite framework
-		File compositeStorage = thisData.getDataFile(COMPOSITE_STORAGE);
-		boolean firstTime = false;
-		if (!compositeStorage.exists())
-			// the child storage area has not been allocated; this is the first time
-			firstTime = true;
-		// find the configuration properties
-		URL childConfig = bundledata.getEntry(COMPOSITE_CONFIGURATION);
-		Properties props = new Properties();
-		try {
-			props.load(childConfig.openStream());
-		} catch (IOException e) {
-			throw new BundleException("Could not load child configuration", e); //$NON-NLS-1$
-		}
-		props.put(Constants.FRAMEWORK_STORAGE, compositeStorage.getAbsolutePath());
-		// save the parent framework so the parent companion bundle can find it
-		props.put(PROP_PARENTFRAMEWORK, thisFramework.getSystemBundleContext().getBundle());
-		// TODO leaks "this" out of the constructor
-		props.put(PROP_COMPOSITE, this);
-		Equinox equinox = new Equinox(props);
-		if (!firstTime)
-			// if not the first time then we are done
-			return equinox;
-		equinox.init();
-		installSurrogate(equinox.getBundleContext(), thisData);
-		return equinox;
-	}
-
-	private void installSurrogate(BundleContext companionContext, BundleData thisData) throws BundleException {
-		Bundle surrogate;
-		try {
-			InputStream surrogateContent = CompositeHelper.getSurrogateInput(thisData.getManifest(), null, null);
-			surrogate = companionContext.installBundle(thisData.getLocation(), surrogateContent);
-		} catch (IOException e) {
-			throw new BundleException("Error installing parent companion composite bundle", e); //$NON-NLS-1$
-		}
-		// disable the surrogate initially since we know we have not resolved the composite yet.
-		CompositeHelper.setDisabled(true, surrogate, companionContext);
-		// set the permissions of the surrogate bundle
-		CompositeHelper.setCompositePermissions(thisData.getLocation(), companionContext);
-	}
-
-	private boolean updateSurrogate(BundleData thisData, BundleDescription child, ExportPackageDescription[] matchingExports) throws BundleException {
-		// update the surrogate content with the matching exports provided by the composite
-		InputStream surrogateContent;
-		try {
-			surrogateContent = CompositeHelper.getSurrogateInput(thisData.getManifest(), child, matchingExports);
-		} catch (IOException e) {
-			throw new BundleException("Error updating surrogate bundle.", e); //$NON-NLS-1$
-		}
-		CompositeModule surrogateComposite = (CompositeModule) getSurrogateBundle();
-		surrogateComposite.updateContent(surrogateContent);
-		// enable/disable the surrogate composite based on if we have exports handed to us
-		boolean disable = matchingExports == null ? true : false;
-		CompositeHelper.setDisabled(disable, getSurrogateBundle(), getCompositeFramework().getBundleContext());
-		// return true if we can resolve the surrogate bundle
-		return disable ? false : surrogateComposite.resolveContent();
-	}
-
-	public Framework getCompositeFramework() {
-		return companionFramework;
-	}
-
-	public SurrogateBundle getSurrogateBundle() {
-		return (SurrogateBundle) getCompanionBundle();
-	}
-
-	protected Bundle getCompanionBundle() {
-		if ((companionFramework.getState() & (Bundle.INSTALLED | Bundle.RESOLVED)) != 0)
-			try {
-				companionFramework.init();
-			} catch (BundleException e) {
-				throw new RuntimeException("Cannot initialize child framework.", e);
-			}
-		return companionFramework.getBundleContext().getBundle(1);
-	}
-
-	public void update(Map compositeManifest) throws BundleException {
-		// validate the composite manifest
-		CompositeHelper.validateCompositeManifest(compositeManifest);
-		if (isResolved()) {
-			// force the class loader creation before updating the surrogate to cache the current state
-			// this is to allow for lazy updates of composite bundles
-			BundleLoader loader = getBundleLoader();
-			if (loader != null)
-				loader.createClassLoader();
-		}
-		try {
-			Map frameworkConfig = getFrameworkConfig();
-			// first update the parent companion and disable it
-			updateSurrogate(getBundleData(), null, null);
-			// update the content with the new manifest
-			updateContent(CompositeHelper.getCompositeInput(frameworkConfig, compositeManifest));
-		} catch (IOException e) {
-			throw new BundleException("Error updating composite.", e); //$NON-NLS-1$
-		}
-	}
-
-	private Map getFrameworkConfig() throws IOException {
-		Properties result = new Properties();
-		URL config = getEntry(COMPOSITE_CONFIGURATION);
-		result.load(config.openStream());
-		return result;
-	}
-
-	public void uninstall() throws BundleException {
-		// ensure class loader is created if needed
-		checkClassLoader();
-		// stop first before stopping the child to let the service listener clean up
-		stop(Bundle.STOP_TRANSIENT);
-		stopChildFramework();
-		super.uninstall();
-	}
-
-	private void checkClassLoader() {
-		BundleLoaderProxy proxy = getLoaderProxy();
-		if (proxy != null && proxy.inUse() && proxy.getBundleLoader() != null) {
-			BundleClassLoader loader = proxy.getBundleLoader().createClassLoader();
-			loader.getResource("dummy"); //$NON-NLS-1$
-		}
-	}
-
-	protected void startHook() throws BundleException {
-		// always start the child framework
-		companionFramework.start();
-		trackerManager.startedComposite();
-	}
-
-	protected void stopHook() throws BundleException {
-		trackerManager.stoppedComposite();
-		// do not stop the framework unless we are persistently stopped 
-		if ((bundledata.getStatus() & Constants.BUNDLE_STARTED) == 0)
-			stopChildFramework();
-	}
-
-	public void started(CompositeModule surrogate) {
-		if (surrogate == getSurrogateBundle())
-			trackerManager.startedSurrogate();
-	}
-
-	public void stopped(CompositeModule surrogate) {
-		if (surrogate == getSurrogateBundle())
-			trackerManager.stoppedSurrogate();
-	}
-
-	private void stopChildFramework() throws BundleException {
-		companionFramework.stop();
-		try {
-			FrameworkEvent stopped = companionFramework.waitForStop(30000);
-			switch (stopped.getType()) {
-				case FrameworkEvent.ERROR :
-					throw new BundleException("Error stopping the child framework.", stopped.getThrowable()); //$NON-NLS-1$
-				case FrameworkEvent.WAIT_TIMEDOUT :
-					throw new BundleException("Timed out waiting for the child framework to stop."); //$NON-NLS-1$
-				case FrameworkEvent.STOPPED :
-					// normal stop, just return
-					return;
-				default :
-					throw new BundleException("Unexpected code returned when stopping the child framework:" + stopped.getType()); //$NON-NLS-1$
-			}
-		} catch (InterruptedException e) {
-			throw new BundleException("Error stopping child framework", e); //$NON-NLS-1$
-		}
-	}
-
-	public boolean giveExports(ExportPackageDescription[] matchingExports) {
-		if (matchingExports == null) {
-			SurrogateBundle surrogate = getSurrogateBundle();
-			// disable the surrogate
-			CompositeHelper.setDisabled(true, getSurrogateBundle(), getCompositeFramework().getBundleContext());
-			// refresh the surrogate synchronously
-			((CompositeModule) surrogate).refreshContent();
-			return true;
-		}
-		try {
-			return updateSurrogate(getBundleData(), getBundleDescription(), matchingExports);
-		} catch (BundleException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-			return false;
-		}
-	}
-
-	/*
-	 * Listens to source and target bundles and source and target framework changes
-	 */
-	class ServiceTrackerManager {
-		static final int COMPOSITE_ACTIVE = 0x01;
-		static final int SURROGATE_ACTIVE = 0x02;
-		// @GuardedBy(this)
-		private int bundlesActive = 0;
-		// @GuardedBy(this)
-		private CompositeServiceTracker shareToChildServices;
-		// @GuardedBy(this)
-		private CompositeServiceTracker shareToParentServices;
-
-		void startedComposite() throws BundleException {
-			open(COMPOSITE_ACTIVE);
-			getSurrogateBundle().start(Bundle.START_TRANSIENT);
-		}
-
-		void startedSurrogate() {
-			open(SURROGATE_ACTIVE);
-		}
-
-		void stoppedComposite() {
-			try {
-				getSurrogateBundle().stop(Bundle.STOP_TRANSIENT);
-			} catch (BundleException e) {
-				// nothing
-			} catch (IllegalStateException e) {
-				// child framework must have been stoped
-			}
-			close(COMPOSITE_ACTIVE);
-		}
-
-		void stoppedSurrogate() {
-			close(SURROGATE_ACTIVE);
-		}
-
-		private synchronized void open(int bundleActive) {
-			bundlesActive |= bundleActive;
-			if ((bundlesActive & (COMPOSITE_ACTIVE | SURROGATE_ACTIVE)) != (COMPOSITE_ACTIVE | SURROGATE_ACTIVE))
-				return;
-			// create a service tracker to track and share services from the parent framework
-			shareToChildServices = new CompositeServiceTracker(getBundleContext(), getSurrogateBundle().getBundleContext(), (String) getBundleContext().getBundle().getHeaders("").get(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_IMPORT)); //$NON-NLS-1$
-			shareToChildServices.open();
-			// create a service tracker to track and share services from the child framework
-			shareToParentServices = new CompositeServiceTracker(getSurrogateBundle().getBundleContext(), getBundleContext(), (String) getBundleContext().getBundle().getHeaders("").get(CompositeBundleFactory.COMPOSITE_SERVICE_FILTER_EXPORT)); //$NON-NLS-1$
-			shareToParentServices.open();
-
-		}
-
-		private synchronized void close(int bundleStopped) {
-			bundlesActive ^= bundleStopped;
-			// close the service tracker to stop tracking and sharing services
-			if (shareToChildServices != null)
-				shareToChildServices.close();
-			if (shareToParentServices != null)
-				shareToParentServices.close();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeServiceTracker.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeServiceTracker.java
deleted file mode 100644
index a9a449b..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/CompositeServiceTracker.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.composite;
-
-import java.util.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-class CompositeServiceTracker implements ServiceTrackerCustomizer {
-	final BundleContext sourceContext;
-	final BundleContext targetContext;
-	final ServiceTracker[] trackers;
-	final String[] filters;
-	/* @GuardedBy("serviceComposites") */
-	final HashMap serviceComposites = new HashMap();
-
-	public CompositeServiceTracker(BundleContext sourceContext, BundleContext targetContext, String serviceFilters) {
-		this.sourceContext = sourceContext;
-		this.targetContext = targetContext;
-		filters = ManifestElement.getArrayFromList(serviceFilters, ","); //$NON-NLS-1$
-		trackers = new ServiceTracker[filters.length];
-	}
-
-	synchronized void open() {
-		for (int i = 0; i < trackers.length; i++) {
-			try {
-				trackers[i] = new ServiceTracker(sourceContext, sourceContext.createFilter(filters[i]), this);
-				trackers[i].open();
-			} catch (InvalidSyntaxException e) {
-				// TODO log
-				// we will skip this filter; note that trackers may have null entries
-			}
-		}
-	}
-
-	synchronized void close() {
-		for (int i = 0; i < trackers.length; i++) {
-			if (trackers[i] != null)
-				trackers[i].close();
-		}
-	}
-
-	public Object addingService(ServiceReference reference) {
-		ServiceLink serviceLink;
-		int useCount;
-		synchronized (serviceComposites) {
-			serviceLink = (ServiceLink) serviceComposites.get(reference);
-			if (serviceLink == null) {
-				serviceLink = new ServiceLink(reference);
-				serviceComposites.put(reference, serviceLink);
-			}
-			useCount = serviceLink.incrementUse();
-		}
-		// register service outside of the sync block
-		if (useCount == 1)
-			serviceLink.register();
-		return serviceLink;
-	}
-
-	public void modifiedService(ServiceReference reference, Object service) {
-		ServiceLink serviceLink = (ServiceLink) service;
-		Dictionary serviceProps = null;
-		synchronized (serviceComposites) {
-			serviceProps = serviceLink.getRefreshProperties();
-		}
-		// set service properties out side the sync block
-		if (serviceProps != null)
-			((ServiceLink) service).setServiceProperties(serviceProps);
-	}
-
-	public void removedService(ServiceReference reference, Object service) {
-		int useCount;
-		synchronized (serviceComposites) {
-			useCount = ((ServiceLink) service).decrementUse();
-			if (useCount == 0)
-				serviceComposites.remove(reference);
-		}
-		// unregister outside the sync block
-		if (useCount == 0)
-			((ServiceLink) service).unregister();
-	}
-
-	class ServiceLink implements ServiceFactory {
-		private final ServiceReference reference;
-		private volatile ServiceRegistration registration;
-		/* @GuardedBy("this") */
-		private Object service;
-		/* @GuardedBy("serviceLinks") */
-		private int useCount;
-
-		ServiceLink(ServiceReference reference) {
-			this.reference = reference;
-		}
-
-		/* @GuardedBy("serviceLinks") */
-		Dictionary getRefreshProperties() {
-			Dictionary result = getServiceProperties();
-			if (useCount <= 1)
-				return result;
-			// need to do an expensive properties check to avoid multiple registration property changes
-			String[] originalKeys = registration.getReference().getPropertyKeys();
-			for (int i = 0; i < originalKeys.length; i++) {
-				if (!Constants.OBJECTCLASS.equals(originalKeys[i]) && !Constants.SERVICE_ID.equals(originalKeys[i]))
-					// identity compare is done on purpose here to catch any kind of change
-					if (registration.getReference().getProperty(originalKeys[i]) != result.get(originalKeys[i]))
-						return result;
-			}
-			for (Enumeration eKeys = result.keys(); eKeys.hasMoreElements();) {
-				String key = (String) eKeys.nextElement();
-				if (!Constants.OBJECTCLASS.equals(key) && !Constants.SERVICE_ID.equals(key))
-					// identity compare is done on purpose here to catch any kind of change
-					if (result.get(key) != registration.getReference().getProperty(key))
-						return result;
-			}
-			return null;
-		}
-
-		/* @GuardedBy("serviceLinks") */
-		int decrementUse() {
-			return --useCount;
-		}
-
-		/* @GuardedBy("serviceLinks") */
-		int incrementUse() {
-			return ++useCount;
-		}
-
-		/* @GuardedBy("serviceLinks") */
-		int getUse() {
-			return useCount;
-		}
-
-		void setServiceProperties(Dictionary props) {
-			ServiceRegistration current = registration;
-			if (current != null)
-				current.setProperties(props);
-		}
-
-		void register() {
-			Dictionary props = getServiceProperties();
-			registration = targetContext.registerService((String[]) props.get(Constants.OBJECTCLASS), this, props);
-		}
-
-		void unregister() {
-			ServiceRegistration current = registration;
-			if (current != null)
-				current.unregister();
-		}
-
-		private Dictionary getServiceProperties() {
-			String[] keys = reference.getPropertyKeys();
-			Hashtable serviceProps = new Hashtable(keys.length);
-			for (int i = 0; i < keys.length; i++)
-				serviceProps.put(keys[i], reference.getProperty(keys[i]));
-			return serviceProps;
-		}
-
-		public synchronized Object getService(Bundle bundle, ServiceRegistration reg) {
-			if (service == null)
-				service = sourceContext.getService(reference);
-			return service;
-		}
-
-		public void ungetService(Bundle bundle, ServiceRegistration reg, Object serv) {
-			// nothing
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/SurrogateImpl.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/SurrogateImpl.java
deleted file mode 100644
index c482105..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/internal/composite/SurrogateImpl.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.composite;
-
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.internal.module.ResolverBundle;
-import org.eclipse.osgi.service.internal.composite.CompositeModule;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.osgi.framework.*;
-import org.osgi.framework.launch.Framework;
-import org.osgi.service.framework.CompositeBundle;
-import org.osgi.service.framework.SurrogateBundle;
-
-public class SurrogateImpl extends CompositeBase implements SurrogateBundle {
-
-	private final CompositeBundle composite;
-
-	public SurrogateImpl(BundleData bundledata, org.eclipse.osgi.framework.internal.core.Framework framework) throws BundleException {
-		super(bundledata, framework);
-		this.composite = (CompositeBundle) FrameworkProperties.getProperties().get(PROP_COMPOSITE);
-	}
-
-	protected Framework findCompanionFramework(org.eclipse.osgi.framework.internal.core.Framework thisFramework, BundleData thisData) {
-		// just get the property which was set when creating the child framework
-		return (Framework) FrameworkProperties.getProperties().get(PROP_PARENTFRAMEWORK);
-	}
-
-	public BundleContext getCompositeBundleContext() {
-		return composite.getBundleContext();
-	}
-
-	protected Bundle getCompanionBundle() {
-		return composite;
-	}
-
-	protected boolean isSurrogate() {
-		return true;
-	}
-
-	public boolean giveExports(ExportPackageDescription[] matchingExports) {
-		// only allow the surrogate resolution to occur if we are in the middle of resolving the composite
-		if (resolving.get() == null)
-			return false;
-		if (matchingExports == null) {
-			// set the surrogate to disabled to prevent resolution this go around
-			CompositeHelper.setDisabled(true, getBundleDescription());
-			return true;
-		}
-		return validExports(matchingExports);
-	}
-
-	private boolean validExports(ExportPackageDescription[] matchingExports) {
-		// make sure each matching exports matches the export signature of the composite
-		CompositeModule composite = (CompositeModule) getCompanionBundle();
-		BundleDescription childDesc = composite.getCompositeDescription();
-		ExportPackageDescription[] childExports = childDesc.getExportPackages();
-		for (int i = 0; i < matchingExports.length; i++) {
-			for (int j = 0; j < childExports.length; j++) {
-				if (matchingExports[i].getName().equals(childExports[j].getName())) {
-					if (!validateExport(matchingExports[i], childExports[j]))
-						return false;
-					continue;
-				}
-			}
-		}
-		return true;
-	}
-
-	private boolean validateExport(ExportPackageDescription matchingExport, ExportPackageDescription childExport) {
-		Version matchingVersion = matchingExport.getVersion();
-		Version childVersion = childExport.getVersion();
-		if (!childVersion.equals(Version.emptyVersion) && !matchingVersion.equals(childVersion))
-			return false;
-		if (!ResolverBundle.equivalentMaps(childExport.getAttributes(), matchingExport.getAttributes(), false))
-			return false;
-		if (!ResolverBundle.equivalentMaps(childExport.getDirectives(), matchingExport.getDirectives(), false))
-			return false;
-		return true;
-	}
-
-	protected void startHook() {
-		((CompositeModule) getCompanionBundle()).started(this);
-	}
-
-	protected void stopHook() {
-		((CompositeModule) getCompanionBundle()).stopped(this);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/service/internal/composite/CompositeModule.java b/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/service/internal/composite/CompositeModule.java
deleted file mode 100644
index 2d97105..0000000
--- a/bundles/org.eclipse.osgi/core/composite/org/eclipse/osgi/service/internal/composite/CompositeModule.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.internal.composite;
-
-import java.io.InputStream;
-import org.eclipse.osgi.framework.adaptor.ClassLoaderDelegate;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.osgi.framework.BundleException;
-
-/**
- * An internal interface only used by the composite implementation
- * 
- * @noextend This interface is not intended to be extended by clients.
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CompositeModule {
-	public void updateContent(InputStream content) throws BundleException;
-
-	public void refreshContent();
-
-	public boolean resolveContent();
-
-	public BundleDescription getCompositeDescription();
-
-	public ClassLoaderDelegate getDelegate();
-
-	public void started(CompositeModule compositeBundle);
-
-	public void stopped(CompositeModule compositeBundle);
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/event/BatchBundleListener.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/event/BatchBundleListener.java
deleted file mode 100644
index a8dd74a..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/event/BatchBundleListener.java
+++ /dev/null
@@ -1,63 +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.osgi.event;
-
-import org.osgi.framework.*;
-
-/**
- * A batch <code>BundleEvent</code> listener.
- * 
- * <p>
- * <code>BatchBundleListener</code> is a listener interface that may be
- * implemented by a bundle developer.
- * <p>
- * A <code>BatchBundleListener</code> object is registered with the
- * Framework using the {@link BundleContext#addBundleListener} method.
- * <code>BatchBundleListener</code> objects are called with a
- * <code>BundleEvent</code> object when a bundle has been installed, resolved,
- * started, stopped, updated, unresolved, or uninstalled.
- * <p>
- * A <code>BatchBundleListener</code> acts like a <code>BundleListener</code> 
- * except the framework will call the {@link #batchBegin()} method at the beginning
- * of a batch process and call the {@link #batchEnd()} at the end of a batch
- * process.  For example, the framework may notify a <code>BatchBundleListener</code>
- * of a batching process during a refresh packages operation or a resolve bundles 
- * operation.
- * <p>
- * During a batching operation the framework will continue to deliver any events using
- * the {@link BundleListener#bundleChanged(BundleEvent)} method to the
- * <code>BatchBundleListener</code>.  It is the responsiblity of the
- * <code>BatchBundleListener</code> to decide how to handle events when a
- * batching operation is in progress.
- * <p>
- * Note that the framework does not guarantee that batching operations will not
- * overlap.  This can result in the method {@link #batchBegin()} being called
- * multiple times before the first {@link #batchEnd()} is called. 
- * 
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- * @see BundleEvent
- * @see BundleListener
- */
-public interface BatchBundleListener extends BundleListener {
-	/**
-	 * Indicates that a batching process has begun.
-	 */
-	public abstract void batchBegin();
-
-	/**
-	 * Indicates that a batching process has ended.
-	 */
-	public abstract void batchEnd();
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java
deleted file mode 100644
index 4289fea..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.console;
-
-import java.util.Dictionary;
-import org.osgi.framework.Bundle;
-
-/**	
- * A command interpreter is a shell that can interpret command
- * lines. This object is passed as parameter when a CommandProvider
- * is invoked.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface CommandInterpreter {
-	/**
-	 * Get the next argument in the input.  If no arguments are left then null is returned.
-	 *
-	 * E.g. if the commandline is hello world, the _hello method
-	 * will get "world" as the first argument.
-	 * @return the next argument or null if no arguments are left.
-	 */
-	public String nextArgument();
-
-	/**
-	 * Execute a command line as if it came from the end user
-	 * and return the result.
-	 * @param cmd The command line to execute.
-	 * @return the result of the command.
-	 */
-	public Object execute(String cmd);
-
-	/**
-	 * Prints an object to the outputstream
-	 *
-	 * @param o	the object to be printed
-	 */
-	public void print(Object o);
-
-	/**
-	 * Prints an empty line to the outputstream
-	 */
-	public void println();
-
-	/**
-	 * Prints an object to the output medium (appended with newline character).
-	 * <p>
-	 * If running on the target environment the user is prompted with '--more'
-	 * if more than the configured number of lines have been printed without user prompt.
-	 * That way the user of the program has control over the scrolling.
-	 * <p>
-	 * For this to work properly you should not embedded "\n" etc. into the string.
-	 *
-	 * @param	o	the object to be printed
-	 */
-	public void println(Object o);
-
-	/**
-	 * Print a stack trace including nested exceptions.
-	 * @param t The offending exception
-	 */
-	public void printStackTrace(Throwable t);
-
-	/**
-	 * Prints the given dictionary sorted by keys.
-	 *
-	 * @param dic	the dictionary to print
-	 * @param title	the header to print above the key/value pairs
-	 */
-	public void printDictionary(Dictionary dic, String title);
-
-	/**
-	 * Prints the given bundle resource if it exists
-	 *
-	 * @param bundle	the bundle containing the resource
-	 * @param resource	the resource to print
-	 */
-	public void printBundleResource(Bundle bundle, String resource);
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandProvider.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandProvider.java
deleted file mode 100644
index a176cb3..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.console;
-
-/**
- When an object wants to provide a number of commands
- to the console, it should register an object with this
- interface. Some console can then pick this up and execute
- command lines.
- The SERVICE_RANKING registration property can be used to influence the
- order that a CommandProvider gets called.  Specify a value less than
- Integer.MAXVALUE, where higher is more significant.  The default value
- if SERVICE_RANKING is not set is 0.
- <p>
- The interface contains only methods for the help.
- The console should use inspection
- to find the commands. All public commands, starting with
- a '_' and taking a CommandInterpreter as parameter
- will be found. E.g.
- <pre>
- public Object _hello( CommandInterpreter intp ) {
- return "hello " + intp.nextArgument();
- }
- </pre>
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface CommandProvider {
-	/**
-	 Answer a string (may be as many lines as you like) with help
-	 texts that explain the command.
-	 */
-	public String getHelp();
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java
deleted file mode 100644
index bb43b14..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/ConsoleSession.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.console;
-
-import java.io.InputStream;
-import java.io.OutputStream;
-import org.osgi.framework.*;
-
-/**
- * A console session service provides the input and output to a single console session.
- * The input will be used by the console to read in console commands.  The output will
- * be used to print the results of console commands. 
- * <p>
- * The console session must be registered as an OSGi service in order to be associated 
- * with a console instance. The console implementation will discover any console session 
- * services and will create a new console instance using the console session for input and 
- * output.  When a session is closed then the console session service will be unregistered 
- * and the console instance will terminate and be disposed of.  The console instance will 
- * also terminate if the console session service is unregistered for any reason.
- * </p>
- * @since 3.6
- */
-public abstract class ConsoleSession implements ServiceFactory {
-	private volatile ServiceRegistration sessionRegistration;
-
-	/**
-	 * Called by the console implementation to free resources associated
-	 * with this console session.  This method will result in the console
-	 * session service being unregistered from the service registry.
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public final void close() {
-		doClose();
-		ServiceRegistration current = sessionRegistration;
-		if (current != null) {
-			sessionRegistration = null;
-			try {
-				current.unregister();
-			} catch (IllegalStateException e) {
-				// This can happen if the service is in the process of being 
-				// unregistered or if another thread unregistered the service.
-				// Ignoring the exception.
-			}
-		}
-	}
-
-	/**
-	 * Called by the {@link #close()} method to free resources associated 
-	 * with this console session.  For example, closing the streams 
-	 * associated with the input and output for this session.
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	protected abstract void doClose();
-
-	/**
-	 * Returns the input for this console session.  This input will be used
-	 * to read console commands from the user of the session.
-	 * @return the input for this console session
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public abstract InputStream getInput();
-
-	/**
-	 * Returns the output for this console session.  This output will be 
-	 * used to write the results of console commands.
-	 * @return the output for this console session.
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public abstract OutputStream getOutput();
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public final Object getService(Bundle bundle, ServiceRegistration registration) {
-		if (sessionRegistration == null)
-			sessionRegistration = registration;
-		return this;
-	}
-
-	/**
-	 * @noreference This method is not intended to be referenced by clients.
-	 */
-	public final void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
-		// do nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/package.html b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/package.html
deleted file mode 100644
index d140bf5..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/package.html
+++ /dev/null
@@ -1,17 +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 services related to the Equinox console.
-<h2>
-Package Specification</h2>
-This package specifies the API for services related to the Equinox console.
-<p>
-Clients which provide commands or provide sessions to the Equinox console 
-will likely be interested in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/CopyOnWriteIdentityMap.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/CopyOnWriteIdentityMap.java
deleted file mode 100644
index 6345a3f..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/CopyOnWriteIdentityMap.java
+++ /dev/null
@@ -1,439 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.eventmgr;
-
-import java.util.*;
-
-/**
- * A copy-on-write identity map. Write operations result in copying the underlying data so that
- * simultaneous read operations are not affected.
- * This allows for safe, unsynchronized traversal.
- * 
- * <p>
- * Note: This class uses identity for key and value comparison, not equals.
- * 
- * @since 3.5
- */
-public class CopyOnWriteIdentityMap implements Map {
-	/**
-	 * The empty array singleton instance.
-	 */
-	private static final Entry[] emptyArray = new Entry[0];
-
-	/**
-	 * The array of entries. This field is volatile so it can be 
-	 * accessed from unsynchronized reader methods.
-	 */
-	private volatile Entry[] entries;
-
-	/**
-	 * Creates an empty map.
-	 *
-	 */
-	public CopyOnWriteIdentityMap() {
-		entries = emptyArray;
-	}
-
-	/**
-	 * Copy constructor.
-	 *
-	 * @param source The CopyOnWriteMap to copy.
-	 */
-	public CopyOnWriteIdentityMap(CopyOnWriteIdentityMap source) {
-		this.entries = source.entries();
-	}
-
-	/* These methods modify the map and are synchronized. */
-
-	/**
-	 * Add a key, value pair to the map.
-	 * If the key object is already in the map, then its value is replaced with the new value.
-	 * Keys are compared using identity.
-	 *
-	 * @param key The key object to be added to the list.
-	 * @param value The value object to be associated with the key.
-	 * This may be null.
-	 * @return <code>null</code> if the specified key was newly added to the map.
-	 * Otherwise the previous value of the key.
-	 * @throws IllegalArgumentException If key is null.
-	 */
-	public synchronized Object put(Object key, Object value) {
-		if (key == null) {
-			throw new IllegalArgumentException();
-		}
-
-		int size = entries.length;
-		for (int i = 0; i < size; i++) {
-			if (entries[i].key == key) {
-				Object v = entries[i].value;
-				if (v == value) {
-					return v;
-				}
-				Entry[] newEntries = new Entry[size];
-				System.arraycopy(entries, 0, newEntries, 0, size);
-				newEntries[i] = new Entry(key, value);
-				entries = newEntries;
-				return v;
-			}
-		}
-
-		Entry[] newEntries = new Entry[size + 1];
-		if (size > 0) {
-			System.arraycopy(entries, 0, newEntries, 0, size);
-		}
-		newEntries[size] = new Entry(key, value);
-		entries = newEntries;
-		return null;
-	}
-
-	/**
-	 * Add all the entries from the specified map to this map.
-	 * 
-	 * @param source The map whose entries are to be added to this map.
-	 */
-	public void putAll(Map source) {
-		int sourceSize = source.size();
-		if (sourceSize == 0) {
-			return;
-		}
-		if (source instanceof CopyOnWriteIdentityMap) {
-			putAll(((CopyOnWriteIdentityMap) source).entries());
-			return;
-		}
-
-		Entry[] toCopy = new Entry[sourceSize];
-		Iterator iter = source.entrySet().iterator();
-		for (int i = 0; i < sourceSize; i++) {
-			Map.Entry mapEntry = (Map.Entry) iter.next();
-			toCopy[i] = new Entry(mapEntry.getKey(), mapEntry.getValue());
-		}
-		putAll(toCopy);
-	}
-
-	/**
-	 * Add all the keys from the specified array to this map with the value
-	 * <code>null</code>.
-	 * 
-	 * @param keys The array of keys to be added to this map.
-	 */
-	public void putAll(Object[] keys) {
-		int sourceSize = keys.length;
-		if (sourceSize == 0) {
-			return;
-		}
-		Entry[] toCopy = new Entry[sourceSize];
-		for (int i = 0; i < sourceSize; i++) {
-			toCopy[i] = new Entry(keys[i], null);
-		}
-		putAll(toCopy);
-	}
-
-	/**
-	 * Add all the entries to this map.
-	 * 
-	 * @param toCopy Array of entries to add to this map.
-	 */
-	private synchronized void putAll(Entry[] toCopy) {
-		int sourceSize = toCopy.length;
-		int size = entries.length;
-		Entry[] newEntries = new Entry[size + sourceSize];
-		System.arraycopy(entries, 0, newEntries, 0, size);
-		copy: for (int n = 0; n < sourceSize; n++) {
-			Entry copy = toCopy[n];
-			for (int i = 0; i < size; i++) {
-				if (newEntries[i].key == copy.key) {
-					newEntries[i] = copy;
-					continue copy;
-				}
-			}
-			newEntries[size] = copy;
-			size++;
-		}
-		if (size == newEntries.length) {
-			entries = newEntries;
-			return;
-		}
-		Entry[] e = new Entry[size];
-		System.arraycopy(newEntries, 0, e, 0, size);
-		entries = e;
-	}
-
-	/**
-	 * Remove a key from the map and returns the value associated with the key.
-	 * Key objects are compared using identity.
-	 *
-	 * @param key The key object to be removed from the map.
-	 * @return <code>null</code> if the key was not in the list. 
-	 * Otherwise, the value associated with the key.
-	 * @throws IllegalArgumentException If key is null.
-	 */
-	public synchronized Object remove(Object key) {
-		if (key == null) {
-			throw new IllegalArgumentException();
-		}
-
-		int size = entries.length;
-		for (int i = 0; i < size; i++) {
-			if (entries[i].key == key) {
-				Object v = entries[i].value;
-				if (size == 1) {
-					entries = emptyArray;
-					return v;
-				}
-				Entry[] newEntries = new Entry[size - 1];
-				if (i > 0) {
-					System.arraycopy(entries, 0, newEntries, 0, i);
-				}
-				int next = size - 1 - i;
-				if (next > 0) {
-					System.arraycopy(entries, i + 1, newEntries, i, next);
-				}
-				entries = newEntries;
-				return v;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Remove all entries from the map.
-	 * 
-	 */
-	public synchronized void clear() {
-		entries = emptyArray;
-	}
-
-	/* These methods only read the map and are not synchronized. */
-
-	/**
-	 * Accessor for methods which only read the entries.
-	 * @return The array of entries. Callers to this method MUST NOT
-	 * modify the returned array.
-	 */
-	private Entry[] entries() {
-		return entries;
-	}
-
-	/**
-	 * Is the map empty?
-	 * 
-	 * @return <code>true</code> if the list is empty.
-	 */
-	public boolean isEmpty() {
-		return size() == 0;
-	}
-
-	/**
-	 * Return the number of entries in the map.
-	 * 
-	 * @return The number of entries in the map.
-	 */
-	public int size() {
-		return entries().length;
-	}
-
-	/**
-	 * Return the value object for the specified key.
-	 * Keys are compared using identity.
-	 * 
-	 * @param key The key object.
-	 * @return The value object for the specified key.
-	 * @throws IllegalArgumentException If key is null.
-	 */
-	public Object get(Object key) {
-		if (key == null) {
-			throw new IllegalArgumentException();
-		}
-
-		Entry[] e = entries();
-		for (int i = 0; i < e.length; i++) {
-			if (e[i].key == key) {
-				return e[i].value;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Check if the map contains the specified key.
-	 * Keys are compared using identity.
-	 * 
-	 * @param key The key object.
-	 * @return <code>true</code> if the specified key is in the map.
-	 * @throws IllegalArgumentException If key is null.
-	 */
-	public boolean containsKey(Object key) {
-		if (key == null) {
-			throw new IllegalArgumentException();
-		}
-
-		Entry[] e = entries();
-		for (int i = 0; i < e.length; i++) {
-			if (e[i].key == key) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Check if the map contains the specified value.
-	 * Values are compared using identity.
-	 * 
-	 * @param value The value object.
-	 * @return <code>true</code> if the specified value is in the map.
-	 */
-	public boolean containsValue(Object value) {
-		Entry[] e = entries();
-		for (int i = 0; i < e.length; i++) {
-			if (e[i].value == value) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns a snapshot of the entries in this map.
-	 * The returned set will NOT be changed by future changes to this map.
-	 * 
-	 * @return A Set of Map.Entry for each entry in this map.
-	 * The set and the entries returned by the set cannot be modified.
-	 */
-	public Set entrySet() {
-		return new EntrySet(entries(), EntrySet.ENTRY);
-	}
-
-	/**
-	 * Returns a snapshot of the keys in this map.
-	 * The returned set will NOT be changed by future changes to this map.
-	 * 
-	 * @return A Set of the key objects in this map
-	 * The set cannot be modified.
-	 */
-	public Set keySet() {
-		return new EntrySet(entries(), EntrySet.KEY);
-	}
-
-	/**
-	 * Returns a snapshot of the values in this map.
-	 * The returned collection will NOT be changed by future changes to this map.
-	 * 
-	 * @return A Collection of the value objects in this map.
-	 * The collection cannot be modified.
-	 */
-	public Collection values() {
-		return new EntrySet(entries(), EntrySet.VALUE);
-	}
-
-	/**
-	 * This class represents the entry in this Map.
-	 * Entry is immutable.
-	 */
-	private static class Entry implements Map.Entry {
-		/**
-		 * Key object.
-		 */
-		final Object key;
-
-		/**
-		 * Value object.
-		 */
-		final Object value;
-
-		/**
-		 * Constructor for map entry.
-		 * @param key Key object in entry. Used for uniqueness.
-		 * @param value Value object stored with key object.
-		 */
-		Entry(final Object key, final Object value) {
-			this.key = key;
-			this.value = value;
-		}
-
-		public Object getKey() {
-			return key;
-		}
-
-		public Object getValue() {
-			return value;
-		}
-
-		public Object setValue(Object value) {
-			throw new UnsupportedOperationException(); // entries cannot be modified.
-		}
-	}
-
-	/**
-	 * Set class used for entry and key sets and values collections.
-	 *
-	 * This class is immutable.
-	 */
-	private static class EntrySet extends AbstractSet {
-		private final Entry[] entries;
-		private final int returnType;
-		final static int ENTRY = 1;
-		final static int KEY = 2;
-		final static int VALUE = 3;
-
-		EntrySet(Entry[] entries, int returnType) {
-			this.entries = entries;
-			this.returnType = returnType;
-		}
-
-		public Iterator iterator() {
-			return new EntryIterator(entries, returnType);
-		}
-
-		public int size() {
-			return entries.length;
-		}
-	}
-
-	/** 
-	 * Iterator class used for entry and key sets and values collections.
-	 *
-	 */
-	private static class EntryIterator implements Iterator {
-		private final Entry[] entries;
-		private final int returnType;
-		private int cursor = 0;
-
-		EntryIterator(Entry[] entries, int returnType) {
-			this.entries = entries;
-			this.returnType = returnType;
-		}
-
-		public boolean hasNext() {
-			return cursor < entries.length;
-		}
-
-		public Object next() {
-			if (cursor == entries.length) {
-				throw new NoSuchElementException();
-			}
-			switch (returnType) {
-				case EntrySet.ENTRY :
-					return entries[cursor++];
-				case EntrySet.KEY :
-					return entries[cursor++].key;
-				case EntrySet.VALUE :
-					return entries[cursor++].value;
-			}
-			throw new InternalError();
-		}
-
-		public void remove() {
-			throw new UnsupportedOperationException(); // the collection cannot be modified.
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventDispatcher.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventDispatcher.java
deleted file mode 100644
index 3e6f3cb..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventDispatcher.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.eventmgr;
-
-/**
- * The EventDispatcher interface contains the method that is called by the
- * Event Manager to complete the event delivery to the event listener.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface EventDispatcher {
-	/**
-	 * This method is called once for each listener.
-	 * This method must cast the event listener object to the appropriate listener
-	 * class for the event type and call the appropriate listener method.
-	 * 
-	 * <p>The method should properly log/handle any exceptions thrown by the called
-	 * listener. The EventManager will ignore any Throwable thrown by this method
-	 * in order to continue delivery of the event to the next listener.
-	 *
-	 * @param eventListener This is the key in the Map.Entry for the listener.
-	 * The implementation of this method must cast it to the appropriate listener
-	 * class for the event to be delivered and the appropriate listener method
-	 * must then be called.
-	 * @param listenerObject This is the value in the Map.Entry for the listener.
-	 * @param eventAction This value was passed to the ListenerQueue object via one of its
-	 * dispatchEvent* method calls. It can provide information (such
-	 * as which listener method to call) so that the EventDispatcher
-	 * can complete the delivery of the event to the listener.
-	 * @param eventObject This object was passed to the ListenerQueue object via one of its
-	 * dispatchEvent* method calls. This object was created by the event source and
-	 * is passed to this method. It should contain all the necessary information (such
-	 * as what event object to pass) so that this method
-	 * can complete the delivery of the event to the listener.
-	 * This is typically the actual event object.
-	 */
-	public void dispatchEvent(Object eventListener, Object listenerObject, int eventAction, Object eventObject);
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventListeners.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventListeners.java
deleted file mode 100644
index fee66ae..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventListeners.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.eventmgr;
-
-import java.util.Set;
-
-/**
- * This class manages a list of listeners. 
- * 
- * Listeners may be added or removed as necessary.
- * 
- * This class uses identity for comparison, not equals.
- * 
- * @since 3.1
- * @deprecated As of 3.5. Replaced by CopyOnWriteIdentityMap.
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class EventListeners {
-	private final CopyOnWriteIdentityMap list = new CopyOnWriteIdentityMap();
-
-	/**
-	 * Creates an empty listener list.
-	 *
-	 */
-	public EventListeners() {
-		super();
-	}
-
-	/**
-	 * Creates an empty listener list.
-	 *
-	 * @param capacity This argument is ignored.
-	 */
-	public EventListeners(int capacity) {
-		this();
-	}
-
-	/**
-	 * Add a listener to the list.
-	 * If a listener object is already in the list, then it is replaced.
-	 * This method calls the put method.
-	 *
-	 * @param listener This is the listener object to be added to the list.
-	 * @param listenerObject This is an optional listener-specific object.
-	 * This object will be passed to the EventDispatcher along with the listener
-	 * when the listener is to be called. This may be null
-	 * @throws IllegalArgumentException If listener is null.
-	 */
-	public void addListener(Object listener, Object listenerObject) {
-		list.put(listener, listenerObject);
-	}
-
-	/**
-	 * Remove a listener from the list.
-	 * This method calls the remove method.
-	 *
-	 * @param listener This is the listener object to be removed from the list.
-	 * @throws IllegalArgumentException If listener is null.
-	 */
-	public void removeListener(Object listener) {
-		list.remove(listener);
-	}
-
-	/**
-	 * Remove all listeners from the list.
-	 * 
-	 * This method calls the clear method.
-	 */
-	public void removeAllListeners() {
-		list.clear();
-	}
-
-	/**
-	 * Get the entry Set from the internal CopyOnWriteIdentityMap.
-	 * @return The entry Set.
-	 */
-	Set entrySet() {
-		return list.entrySet();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventManager.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventManager.java
deleted file mode 100644
index 2dc7188..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventManager.java
+++ /dev/null
@@ -1,416 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.eventmgr;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-
-/**
- * This class is the central class for the Event Manager. Each
- * program that wishes to use the Event Manager should construct
- * an EventManager object and use that object to construct
- * ListenerQueue for dispatching events. CopyOnWriteIdentityMap objects
- * must be used to manage listener lists.
- *
- * <p>This example uses the fictitious SomeEvent class and shows how to use this package 
- * to deliver a SomeEvent to a set of SomeEventListeners.  
- * <pre>
- *
- * 	// Create an EventManager with a name for an asynchronous event dispatch thread
- * 	EventManager eventManager = new EventManager("SomeEvent Async Event Dispatcher Thread");
- * 	// Create a CopyOnWriteIdentityMap to hold the list of SomeEventListeners
- *	Map eventListeners = new CopyOnWriteIdentityMap();
- *
- *	// Add a SomeEventListener to the listener list
- *	eventListeners.put(someEventListener, null);
- *
- *	// Asynchronously deliver a SomeEvent to registered SomeEventListeners
- *	// Create the listener queue for this event delivery
- *	ListenerQueue listenerQueue = new ListenerQueue(eventManager);
- *	// Add the listeners to the queue and associate them with the event dispatcher
- *	listenerQueue.queueListeners(eventListeners.entrySet(), new EventDispatcher() {
- *		public void dispatchEvent(Object eventListener, Object listenerObject, 
- *                                    int eventAction, Object eventObject) {
- * 			try {
- *				(SomeEventListener)eventListener.someEventOccured((SomeEvent)eventObject);
- * 			} catch (Throwable t) {
- * 				// properly log/handle any Throwable thrown by the listener
- * 			}
- *		}
- *	});
- *	// Deliver the event to the listeners. 
- *	listenerQueue.dispatchEventAsynchronous(0, new SomeEvent());
- *		
- *	// Remove the listener from the listener list
- *	eventListeners.remove(someEventListener);
- *
- *	// Close EventManager to clean when done to terminate async event dispatch thread.
- *	// Note that closing the event manager while asynchronously delivering events 
- *	// may cause some events to not be delivered before the async event dispatch 
- *	// thread terminates
- *	eventManager.close();
- * </pre>
- * 
- * <p>At first glance, this package may seem more complicated than necessary
- * but it has support for some important features. The listener list supports
- * companion objects for each listener object. This is used by the OSGi framework
- * to create wrapper objects for a listener which are passed to the event dispatcher.
- * The ListenerQueue class is used to build a snap shot of the listeners prior to beginning
- * event dispatch. 
- * 
- * The OSGi framework uses a 2 level listener list for each listener type (4 types). 
- * Level one is managed per framework instance and contains the list of BundleContexts which have 
- * registered a listener. Level 2 is managed per BundleContext for the listeners in that 
- * context. This allows all the listeners of a bundle to be easily and atomically removed from 
- * the level one list. To use a "flat" list for all bundles would require the list to know which 
- * bundle registered a listener object so that the list could be traversed when stopping a bundle 
- * to remove all the bundle's listeners. 
- * 
- * When an event is fired, a snapshot list (ListenerQueue) must be made of the current listeners before delivery 
- * is attempted. The snapshot list is necessary to allow the listener list to be modified while the 
- * event is being delivered to the snapshot list. The memory cost of the snapshot list is
- * low since the ListenerQueue object uses the copy-on-write semantics 
- * of the CopyOnWriteIdentityMap. This guarantees the snapshot list is never modified once created.
- * 
- * The OSGi framework also uses a 2 level dispatch technique (EventDispatcher).
- * Level one dispatch is used by the framework to add the level 2 listener list of each 
- * BundleContext to the snapshot in preparation for delivery of the event.
- * Level 2 dispatch is used as the final event deliverer and must cast the listener 
- * and event objects to the proper type before calling the listener. Level 2 dispatch
- * will cancel delivery of an event 
- * to a bundle that has stopped between the time the snapshot was created and the
- * attempt was made to deliver the event.
- * 
- * <p> The highly dynamic nature of the OSGi framework had necessitated these features for 
- * proper and efficient event delivery.  
- * @since 3.1
- * @noextend This class is not intended to be subclassed by clients.
- */
-
-public class EventManager {
-	static final boolean DEBUG = false;
-
-	/**
-	 * EventThread for asynchronous dispatch of events.
-	 * Access to this field must be protected by a synchronized region.
-	 */
-	private EventThread thread;
-
-	/** 
-	 * Once closed, an attempt to create a new EventThread will result in an 
-	 * IllegalStateException. 
-	 */
-	private boolean closed;
-
-	/**
-	 * Thread name used for asynchronous event delivery
-	 */
-	protected final String threadName;
-
-	/**
-	 * The thread group used for asynchronous event delivery
-	 */
-	protected final ThreadGroup threadGroup;
-
-	/**
-	 * EventManager constructor. An EventManager object is responsible for
-	 * the delivery of events to listeners via an EventDispatcher.
-	 *
-	 */
-	public EventManager() {
-		this(null, null);
-	}
-
-	/**
-	 * EventManager constructor. An EventManager object is responsible for
-	 * the delivery of events to listeners via an EventDispatcher.
-	 *
-	 * @param threadName The name to give the event thread associated with
-	 * this EventManager.  A <code>null</code> value is allowed.
-	 */
-	public EventManager(String threadName) {
-		this(threadName, null);
-	}
-
-	/**
-	 * EventManager constructor. An EventManager object is responsible for
-	 * the delivery of events to listeners via an EventDispatcher.
-	 *
-	 * @param threadName The name to give the event thread associated with
-	 * this EventManager.  A <code>null</code> value is allowed.
-	 * @param threadGroup The thread group to use for the asynchronous event
-	 * thread associated with this EventManager. A <code>null</code> value is allowed.
-	 * @since 3.4
-	 */
-	public EventManager(String threadName, ThreadGroup threadGroup) {
-		thread = null;
-		closed = false;
-		this.threadName = threadName;
-		this.threadGroup = threadGroup;
-	}
-
-	/**
-	 * This method can be called to release any resources associated with this
-	 * EventManager.
-	 * <p>
-	 * Closing this EventManager while it is asynchronously delivering events 
-	 * may cause some events to not be delivered before the async event dispatch 
-	 * thread terminates.
-	 */
-	public synchronized void close() {
-		if (closed) {
-			return;
-		}
-		if (thread != null) {
-			thread.close();
-			thread = null;
-		}
-		closed = true;
-	}
-
-	/**
-	 * Returns the EventThread to use for dispatching events asynchronously for
-	 * this EventManager.
-	 *
-	 * @return EventThread to use for dispatching events asynchronously for
-	 * this EventManager.
-	 */
-	synchronized EventThread getEventThread() {
-		if (closed) {
-			throw new IllegalStateException();
-		}
-		if (thread == null) {
-			/* if there is no thread, then create a new one */
-			thread = (EventThread) AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					EventThread t = new EventThread(threadGroup, threadName);
-					return t;
-				}
-			});
-			/* start the new thread */
-			thread.start();
-		}
-		return thread;
-	}
-
-	/**
-	 * This method calls the EventDispatcher object to complete the dispatch of
-	 * the event. If there are more elements in the list, call dispatchEvent
-	 * on the next item on the list.
-	 * This method is package private.
-	 *
-	 * @param listeners A Set of entries from a CopyOnWriteIdentityMap map.
-	 * @param dispatcher Call back object which is called to complete the delivery of
-	 * the event.
-	 * @param eventAction This value was passed by the event source and
-	 * is passed to this method. This is passed on to the call back object.
-	 * @param eventObject This object was created by the event source and
-	 * is passed to this method. This is passed on to the call back object.
-	 */
-	static void dispatchEvent(Set/*<Map.Entry<Object,Object>>*/listeners, EventDispatcher dispatcher, int eventAction, Object eventObject) {
-		for (Iterator iter = listeners.iterator(); iter.hasNext();) { /* iterate over the list of listeners */
-			Map.Entry listener = (Map.Entry) iter.next();
-			Object eventListener = listener.getKey();
-			Object listenerObject = listener.getValue();
-			try {
-				/* Call the EventDispatcher to complete the delivery of the event. */
-				dispatcher.dispatchEvent(eventListener, listenerObject, eventAction, eventObject);
-			} catch (Throwable t) {
-				/* Consume and ignore any exceptions thrown by the listener */
-				if (DEBUG) {
-					System.out.println("Exception in " + listener.getKey()); //$NON-NLS-1$
-					t.printStackTrace();
-				}
-			}
-		}
-	}
-
-	/**
-	 * This package private class is used for asynchronously dispatching events.
-	 */
-
-	static class EventThread extends Thread {
-		private static int nextThreadNumber;
-
-		/**
-		 * Queued is a nested top-level (non-member) class. This class
-		 * represents the items which are placed on the asynch dispatch queue.
-		 * This class is private.
-		 */
-		private static class Queued {
-			/** listener list for this event */
-			final Set/*<Map.Entry<Object,Object>>*/listeners;
-			/** dispatcher of this event */
-			final EventDispatcher dispatcher;
-			/** action for this event */
-			final int action;
-			/** object for this event */
-			final Object object;
-			/** next item in event queue */
-			Queued next;
-
-			/**
-			 * Constructor for event queue item
-			 *
-			 * @param l Listener list for this event
-			 * @param d Dispatcher for this event
-			 * @param a Action for this event
-			 * @param o Object for this event
-			 */
-			Queued(Set/*<Map.Entry<Object,Object>>*/l, EventDispatcher d, int a, Object o) {
-				listeners = l;
-				dispatcher = d;
-				action = a;
-				object = o;
-				next = null;
-			}
-		}
-
-		/** item at the head of the event queue */
-		private Queued head;
-		/** item at the tail of the event queue */
-		private Queued tail;
-		/** if false the thread must terminate */
-		private volatile boolean running;
-
-		/**
-		 * Constructor for the event thread. 
-		 * @param threadName Name of the EventThread 
-		 */
-		EventThread(ThreadGroup threadGroup, String threadName) {
-			super(threadGroup, threadName == null ? getNextName() : threadName);
-			running = true;
-			head = null;
-			tail = null;
-
-			setDaemon(true); /* Mark thread as daemon thread */
-		}
-
-		private static synchronized String getNextName() {
-			return "EventManagerThread-" + nextThreadNumber++; //$NON-NLS-1$
-		}
-
-		/**
-		 * Constructor for the event thread. 
-		 * @param threadName Name of the EventThread 
-		 */
-		EventThread(String threadName) {
-			this(null, threadName);
-		}
-
-		/**
-		 * Constructor for the event thread.
-		 */
-		EventThread() {
-			this(null, null);
-		}
-
-		/**
-		 * Stop thread.
-		 */
-		void close() {
-			running = false;
-			interrupt();
-		}
-
-		/**
-		 * This method pulls events from
-		 * the queue and dispatches them.
-		 */
-		public void run() {
-			try {
-				while (true) {
-					Queued item = getNextEvent();
-					if (item == null) {
-						return;
-					}
-					EventManager.dispatchEvent(item.listeners, item.dispatcher, item.action, item.object);
-					// Bug 299589: since the call to getNextEvent() will eventually block for a long time, we need to make sure that the 'item'
-					// variable is cleared of the previous value before the call to getNextEvent(). See VM SPec 2.5.7 for why the compiler 
-					// will not automatically clear this variable for each loop iteration.
-					item = null;
-				}
-			} catch (RuntimeException e) {
-				if (EventManager.DEBUG) {
-					e.printStackTrace();
-				}
-				throw e;
-			} catch (Error e) {
-				if (EventManager.DEBUG) {
-					e.printStackTrace();
-				}
-				throw e;
-			}
-		}
-
-		/**
-		 * This methods takes the input parameters and creates a Queued
-		 * object and queues it.
-		 * The thread is notified.
-		 *
-		 * @param l Listener list for this event
-		 * @param d Dispatcher for this event
-		 * @param a Action for this event
-		 * @param o Object for this event
-		 */
-		synchronized void postEvent(Set/*<Map.Entry<Object,Object>>*/l, EventDispatcher d, int a, Object o) {
-			if (!isAlive()) { /* If the thread is not alive, throw an exception */
-				throw new IllegalStateException();
-			}
-
-			Queued item = new Queued(l, d, a, o);
-
-			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();
-		}
-
-		/**
-		 * This method is called by the thread to remove
-		 * items from the queue so that they can be dispatched to their listeners.
-		 * If the queue is empty, the thread waits.
-		 *
-		 * @return The Queued removed from the top of the queue or null
-		 * if the thread has been requested to stop.
-		 */
-		private synchronized Queued getNextEvent() {
-			while (running && (head == null)) {
-				try {
-					wait();
-				} catch (InterruptedException e) {
-					// If interrupted, we will loop back up and check running
-				}
-			}
-
-			if (!running) { /* if we are stopping */
-				return null;
-			}
-
-			Queued item = head;
-			head = item.next;
-			if (head == null) {
-				tail = null;
-			}
-
-			return item;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/ListenerQueue.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/ListenerQueue.java
deleted file mode 100644
index 0f63ecc..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/ListenerQueue.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.eventmgr;
-
-import java.util.*;
-import org.eclipse.osgi.framework.eventmgr.EventManager.EventThread;
-
-/**
- * The ListenerQueue is used to snapshot the list of listeners at the time the event
- * is fired. The snapshot list is then used to dispatch
- * events to those listeners. A ListenerQueue object is associated with a
- * specific EventManager object. ListenerQueue objects constructed with the same
- * EventManager object will get in-order delivery of events when
- * using asynchronous delivery. No delivery order is guaranteed for synchronous
- * delivery to avoid any potential deadly embraces.
- *
- * <p>ListenerQueue objects are created as necessary to build a list of listeners
- * that should receive a specific event or events. Once the list is created, the event
- * can then be synchronously or asynchronously delivered to the list of
- * listeners. After the event has been dispatched for delivery, the
- * ListenerQueue object should be discarded as it is likely the list of listeners is stale.
- * A new ListenerQueue object should be created when it is time to deliver 
- * another event. The Sets used to build the list of listeners must not change after being 
- * added to the list.
- * @since 3.1
- */
-public class ListenerQueue {
-	/**
-	 * EventManager with which this queue is associated.
-	 */
-	protected final EventManager manager;
-	/**
-	 * A list of listener lists.
-	 */
-	private final Map /*<Set<Map.Entry<Object,Object>>,EventDispatcher>*/queue;
-
-	/**
-	 * Once the listener queue has been used to dispatch an event, 
-	 * you cannot add modify the queue.
-	 * Access to this field must be protected by a synchronized region.
-	 */
-	private boolean readOnly;
-
-	/**
-	 * ListenerQueue constructor. This method creates an empty snapshot list.
-	 *
-	 * @param manager The EventManager this queue is associated with.
-	 * @throws IllegalArgumentException If manager is null.
-	 */
-	public ListenerQueue(EventManager manager) {
-		if (manager == null) {
-			throw new IllegalArgumentException();
-		}
-
-		this.manager = manager;
-		queue = new CopyOnWriteIdentityMap();
-		readOnly = false;
-	}
-
-	/**
-	 * Add a listener list to the snapshot list. This method can be called multiple times, prior to
-	 * calling one of the dispatchEvent methods, to build the set of listeners for the
-	 * delivery of a specific event. The current list of listeners in the specified EventListeners
-	 * object is added to the snapshot list.
-	 *
-	 * @param listeners An EventListeners object to add to the queue. The current listeners
-	 * in the EventListeners object will be called when an event is dispatched.
-	 * @param dispatcher An EventDispatcher object to use when dispatching an event
-	 * to the listeners on the specified EventListeners.
-	 * @throws IllegalStateException If called after one of the dispatch methods has been called.
-	 * @deprecated As of 3.5. Replaced by {@link #queueListeners(Set, EventDispatcher)}.
-	 */
-	public void queueListeners(EventListeners listeners, EventDispatcher dispatcher) {
-		queueListeners(listeners.entrySet(), dispatcher);
-	}
-
-	/**
-	 * Add a set of listeners to the snapshot list. This method can be called multiple times, prior to
-	 * calling one of the dispatchEvent methods, to build the list of listeners for the
-	 * delivery of a specific event. The specified listeners
-	 * are added to the snapshot list.
-	 *
-	 * @param listeners A Set of Map.Entries to add to the queue. This is typically the entrySet
-	 * from a CopyOnWriteIdentityMap object. This set must not change after being added to this
-	 * snapshot list.
-	 * @param dispatcher An EventDispatcher object to use when dispatching an event
-	 * to the specified listeners.
-	 * @throws IllegalStateException If called after one of the dispatch methods has been called.
-	 * @since 3.5
-	 */
-	public synchronized void queueListeners(Set/*<Map.Entry<Object,Object>>*/listeners, EventDispatcher dispatcher) {
-		if (readOnly) {
-			throw new IllegalStateException();
-		}
-
-		if (listeners.size() != 0) {
-			queue.put(listeners, dispatcher); // enqueue the list and its dispatcher
-		}
-	}
-
-	/**
-	 * Asynchronously dispatch an event to the snapshot list. An event dispatch thread
-	 * maintained by the associated EventManager is used to deliver the events.
-	 * This method may return immediately to the caller.
-	 *
-	 * @param eventAction This value is passed to the EventDispatcher.
-	 * @param eventObject This object is passed to the EventDispatcher.
-	 */
-	public void dispatchEventAsynchronous(int eventAction, Object eventObject) {
-		synchronized (this) {
-			readOnly = true;
-		}
-		EventThread eventThread = manager.getEventThread();
-		synchronized (eventThread) { /* synchronize on the EventThread to ensure no interleaving of posting to the event thread */
-			for (Iterator iter = queue.entrySet().iterator(); iter.hasNext();) { /* iterate over the list of listener lists */
-				Map.Entry entry = (Map.Entry) iter.next();
-				eventThread.postEvent((Set) entry.getKey(), (EventDispatcher) entry.getValue(), eventAction, eventObject);
-			}
-		}
-	}
-
-	/**
-	 * Synchronously dispatch an event to the snapshot list. The event may
-	 * be dispatched on the current thread or an event dispatch thread
-	 * maintained by the associated EventManager.
-	 * This method will not return to the caller until the EventDispatcher
-	 * has been called (and has returned) for each listener on the queue.
-	 *
-	 * @param eventAction This value is passed to the EventDispatcher.
-	 * @param eventObject This object is passed to the EventDispatcher.
-	 */
-	public void dispatchEventSynchronous(int eventAction, Object eventObject) {
-		synchronized (this) {
-			readOnly = true;
-		}
-		// We can't guarantee any delivery order for synchronous events.
-		// Attempts to do so result in deadly embraces.
-		for (Iterator iter = queue.entrySet().iterator(); iter.hasNext();) { /* iterate over the list of listener lists */
-			Map.Entry entry = (Map.Entry) iter.next();
-			EventManager.dispatchEvent((Set) entry.getKey(), (EventDispatcher) entry.getValue(), eventAction, eventObject);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/package.html b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/package.html
deleted file mode 100644
index 41e344c..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/package.html
+++ /dev/null
@@ -1,17 +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 the event manager API.
-<h2>
-Package Specification</h2>
-This package specifies the API for the event manager.
-<p>
-Clients which implement an event bus to deliver synchronous and/or asynchronous
-events to listeners will likely be interested in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java
deleted file mode 100644
index 1e10d79..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java
+++ /dev/null
@@ -1,1540 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.*;
-import java.security.cert.Certificate;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.eclipse.osgi.internal.composite.CompositeImpl;
-import org.eclipse.osgi.internal.composite.SurrogateImpl;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.permadmin.EquinoxSecurityManager;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ResolverError;
-import org.eclipse.osgi.signedcontent.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * This object is given out to bundles and wraps the internal Bundle object. It
- * is destroyed when a bundle is uninstalled and reused if a bundle is updated.
- * This class is abstract and is extended by BundleHost and BundleFragment.
- */
-public abstract class AbstractBundle implements Bundle, Comparable, KeyedElement {
-	/** The Framework this bundle is part of */
-	protected Framework framework;
-	/** The state of the bundle. */
-	protected volatile int state;
-	/** A flag to denote whether a bundle state change is in progress */
-	protected volatile Thread stateChanging;
-	/** Bundle's BundleData object */
-	protected BundleData bundledata;
-	/** Internal object used for state change synchronization */
-	protected Object statechangeLock = new Object();
-	/** ProtectionDomain for the bundle */
-	protected BundleProtectionDomain domain;
-
-	volatile protected ManifestLocalization manifestLocalization = null;
-
-	/**
-	 * Bundle object constructor. This constructor should not perform any real
-	 * work.
-	 * 
-	 * @param bundledata
-	 *            BundleData for this bundle
-	 * @param framework
-	 *            Framework this bundle is running in
-	 */
-	protected static AbstractBundle createBundle(BundleData bundledata, Framework framework, boolean setBundle) throws BundleException {
-		AbstractBundle result;
-		if ((bundledata.getType() & BundleData.TYPE_FRAGMENT) > 0)
-			result = new BundleFragment(bundledata, framework);
-		else if ((bundledata.getType() & BundleData.TYPE_COMPOSITEBUNDLE) > 0)
-			result = new CompositeImpl(bundledata, framework);
-		else if ((bundledata.getType() & BundleData.TYPE_SURROGATEBUNDLE) > 0)
-			result = new SurrogateImpl(bundledata, framework);
-		else
-			result = new BundleHost(bundledata, framework);
-		if (setBundle)
-			bundledata.setBundle(result);
-		return result;
-	}
-
-	/**
-	 * Bundle object constructor. This constructor should not perform any real
-	 * work.
-	 * 
-	 * @param bundledata
-	 *            BundleData for this bundle
-	 * @param framework
-	 *            Framework this bundle is running in
-	 */
-	protected AbstractBundle(BundleData bundledata, Framework framework) {
-		state = INSTALLED;
-		stateChanging = null;
-		this.bundledata = bundledata;
-		this.framework = framework;
-	}
-
-	/**
-	 * Load the bundle.
-	 */
-	protected abstract void load();
-
-	/**
-	 * Reload from a new bundle. This method must be called while holding the
-	 * bundles lock.
-	 * 
-	 * @param newBundle
-	 *            Dummy Bundle which contains new data.
-	 * @return true if an exported package is "in use". i.e. it has been
-	 *         imported by a bundle
-	 */
-	protected abstract boolean reload(AbstractBundle newBundle);
-
-	/**
-	 * Refresh the bundle. This is called by Framework.refreshPackages. This
-	 * method must be called while holding the bundles lock.
-	 * this.loader.unimportPackages must have already been called before
-	 * calling this method!
-	 */
-	protected abstract void refresh();
-
-	/**
-	 * Unload the bundle. This method must be called while holding the bundles
-	 * lock.
-	 * 
-	 * @return true if an exported package is "in use". i.e. it has been
-	 *         imported by a bundle
-	 */
-	protected abstract boolean unload();
-
-	/**
-	 * Close the the Bundle's file.
-	 *  
-	 */
-	protected void close() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (INSTALLED)) == 0) {
-				Debug.println("Bundle.close called when state != INSTALLED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-		state = UNINSTALLED;
-	}
-
-	/** 
-	 * Load and instantiate bundle's BundleActivator class
-	 */
-	protected BundleActivator loadBundleActivator() throws BundleException {
-		/* load Bundle's BundleActivator if it has one */
-		String activatorClassName = bundledata.getActivator();
-		if (activatorClassName != null) {
-			try {
-				Class activatorClass = loadClass(activatorClassName, false);
-				/* Create the activator for the bundle */
-				return (BundleActivator) (activatorClass.newInstance());
-			} catch (Throwable t) {
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.printStackTrace(t);
-				}
-				throw new BundleException(NLS.bind(Msg.BUNDLE_INVALID_ACTIVATOR_EXCEPTION, activatorClassName, bundledata.getSymbolicName()), BundleException.ACTIVATOR_ERROR, t);
-			}
-		}
-		return (null);
-	}
-
-	/**
-	 * This method loads a class from the bundle.
-	 * 
-	 * @param name
-	 *            the name of the desired Class.
-	 * @param checkPermission
-	 *            indicates whether a permission check should be done.
-	 * @return the resulting Class
-	 * @exception java.lang.ClassNotFoundException
-	 *                if the class definition was not found.
-	 */
-	protected abstract Class loadClass(String name, boolean checkPermission) throws ClassNotFoundException;
-
-	/**
-	 * Returns the current state of the bundle.
-	 * 
-	 * A bundle can only be in one state at any time.
-	 * 
-	 * @return bundle's state.
-	 */
-	public int getState() {
-		return (state);
-	}
-
-	public Framework getFramework() {
-		return framework;
-	}
-
-	/**
-	 * Return true if the bundle is starting or active.
-	 *  
-	 */
-	protected boolean isActive() {
-		return ((state & (ACTIVE | STARTING)) != 0);
-	}
-
-	boolean isLazyStart() {
-		int status = bundledata.getStatus();
-		return (status & Constants.BUNDLE_ACTIVATION_POLICY) != 0 && (status & Constants.BUNDLE_LAZY_START) != 0;
-	}
-
-	/**
-	 * Return true if the bundle is resolved.
-	 *  
-	 */
-	public boolean isResolved() {
-		return (state & (INSTALLED | UNINSTALLED)) == 0;
-	}
-
-	/**
-	 * Start this bundle.
-	 * 
-	 * If the current start level is less than this bundle's start level, then
-	 * the Framework must persistently mark this bundle as started and delay
-	 * the starting of this bundle until the Framework's current start level
-	 * becomes equal or more than the bundle's start level.
-	 * <p>
-	 * Otherwise, the following steps are required to start a bundle:
-	 * <ol>
-	 * <li>If the bundle is {@link #UNINSTALLED}then an <code>IllegalStateException</code>
-	 * is thrown.
-	 * <li>If the bundle is {@link #ACTIVE}or {@link #STARTING}then this
-	 * method returns immediately.
-	 * <li>If the bundle is {@link #STOPPING}then this method may wait for
-	 * the bundle to return to the {@link #RESOLVED}state before continuing.
-	 * If this does not occur in a reasonable time, a {@link BundleException}
-	 * is thrown to indicate the bundle was unable to be started.
-	 * <li>If the bundle is not {@link #RESOLVED}, an attempt is made to
-	 * resolve the bundle. If the bundle cannot be resolved, a
-	 * {@link BundleException}is thrown.
-	 * <li>The state of the bundle is set to {@link #STARTING}.
-	 * <li>The {@link BundleActivator#start(BundleContext) start}method of the bundle's
-	 * {@link BundleActivator}, if one is specified, is called. If the
-	 * {@link BundleActivator}is invalid or throws an exception, the state of
-	 * the bundle is set back to {@link #RESOLVED}, the bundle's listeners, if
-	 * any, are removed, service's registered by the bundle, if any, are
-	 * unregistered, and service's used by the bundle, if any, are released. A
-	 * {@link BundleException}is then thrown.
-	 * <li>It is recorded that this bundle has been started, so that when the
-	 * framework is restarted, this bundle will be automatically started.
-	 * <li>The state of the bundle is set to {@link #ACTIVE}.
-	 * <li>A {@link BundleEvent}of type {@link BundleEvent#STARTED}is
-	 * broadcast.
-	 * </ol>
-	 * 
-	 * <h5>Preconditons</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #INSTALLED},{@link #RESOLVED}}.
-	 * </ul>
-	 * <h5>Postconditons, no exceptions thrown</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #ACTIVE}}.
-	 * <li>{@link BundleActivator#start(BundleContext) BundleActivator.start}has been called
-	 * and did not throw an exception.
-	 * </ul>
-	 * <h5>Postconditions, when an exception is thrown</h5>
-	 * <ul>
-	 * <li>getState() not in {{@link #STARTING},{@link #ACTIVE}}.
-	 * </ul>
-	 * 
-	 * @exception BundleException
-	 *                If the bundle couldn't be started. This could be because
-	 *                a code dependency could not be resolved or the specified
-	 *                BundleActivator could not be loaded or threw an
-	 *                exception.
-	 * @exception java.lang.IllegalStateException
-	 *                If the bundle has been uninstalled or the bundle tries to
-	 *                change its own state.
-	 * @exception java.lang.SecurityException
-	 *                If the caller does not have {@link AdminPermission}
-	 *                permission and the Java runtime environment supports
-	 *                permissions.
-	 */
-	public void start() throws BundleException {
-		start(0);
-	}
-
-	public void start(int options) throws BundleException {
-		framework.checkAdminPermission(this, AdminPermission.EXECUTE);
-		checkValid();
-		beginStateChange();
-		try {
-			startWorker(options);
-		} finally {
-			completeStateChange();
-		}
-	}
-
-	/**
-	 * Internal worker to start a bundle.
-	 * 
-	 * @param options
-	 */
-	protected abstract void startWorker(int options) throws BundleException;
-
-	/**
-	 * This method does the following
-	 * <ol>
-	 * <li> Return false if the bundle is a fragment
-	 * <li> Return false if the bundle is not at the correct start-level
-	 * <li> Return false if the bundle is not persistently marked for start
-	 * <li> Return true if the bundle's activation policy is persistently ignored
-	 * <li> Return true if the bundle does not define an activation policy
-	 * <li> Transition to STARTING state and Fire LAZY_ACTIVATION event
-	 * <li> Return false
-	 * </ol>
-	 * @return true if the bundle should be resumed
-	 */
-	protected boolean readyToResume() {
-		return false;
-	}
-
-	/**
-	 * Start this bundle w/o marking is persistently started.
-	 * 
-	 * <p>
-	 * The following steps are followed to start a bundle:
-	 * <ol>
-	 * <li>If the bundle is {@link #UNINSTALLED}then an <code>IllegalStateException</code>
-	 * is thrown.
-	 * <li>If the bundle is {@link #ACTIVE}or {@link #STARTING}then this
-	 * method returns immediately.
-	 * <li>If the bundle is {@link #STOPPING}then this method may wait for
-	 * the bundle to return to the {@link #RESOLVED}state before continuing.
-	 * If this does not occur in a reasonable time, a {@link BundleException}
-	 * is thrown to indicate the bundle was unable to be started.
-	 * <li>If the bundle is not {@link #RESOLVED}, an attempt is made to
-	 * resolve the bundle. If the bundle cannot be resolved, a
-	 * {@link BundleException}is thrown.
-	 * <li>The state of the bundle is set to {@link #STARTING}.
-	 * <li>The {@link BundleActivator#start(BundleContext) start}method of the bundle's
-	 * {@link BundleActivator}, if one is specified, is called. If the
-	 * {@link BundleActivator}is invalid or throws an exception, the state of
-	 * the bundle is set back to {@link #RESOLVED}, the bundle's listeners, if
-	 * any, are removed, service's registered by the bundle, if any, are
-	 * unregistered, and service's used by the bundle, if any, are released. A
-	 * {@link BundleException}is then thrown.
-	 * <li>The state of the bundle is set to {@link #ACTIVE}.
-	 * <li>A {@link BundleEvent}of type {@link BundleEvent#STARTED}is
-	 * broadcast.
-	 * </ol>
-	 * 
-	 * <h5>Preconditons</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #INSTALLED},{@link #RESOLVED}}.
-	 * </ul>
-	 * <h5>Postconditons, no exceptions thrown</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #ACTIVE}}.
-	 * <li>{@link BundleActivator#start(BundleContext) BundleActivator.start}has been called
-	 * and did not throw an exception.
-	 * </ul>
-	 * <h5>Postconditions, when an exception is thrown</h5>
-	 * <ul>
-	 * <li>getState() not in {{@link #STARTING},{@link #ACTIVE}}.
-	 * </ul>
-	 * 
-	 * @exception BundleException
-	 *                If the bundle couldn't be started. This could be because
-	 *                a code dependency could not be resolved or the specified
-	 *                BundleActivator could not be loaded or threw an
-	 *                exception.
-	 * @exception java.lang.IllegalStateException
-	 *                If the bundle tries to change its own state.
-	 */
-	protected void resume() throws BundleException {
-		if (state == UNINSTALLED) {
-			return;
-		}
-		beginStateChange();
-		try {
-			if (readyToResume())
-				startWorker(START_TRANSIENT);
-		} finally {
-			completeStateChange();
-		}
-	}
-
-	/**
-	 * Stop this bundle.
-	 * 
-	 * Any services registered by this bundle will be unregistered. Any
-	 * services used by this bundle will be released. Any listeners registered
-	 * by this bundle will be removed.
-	 * 
-	 * <p>
-	 * The following steps are followed to stop a bundle:
-	 * <ol>
-	 * <li>If the bundle is {@link #UNINSTALLED}then an <code>IllegalStateException</code>
-	 * is thrown.
-	 * <li>If the bundle is {@link #STOPPING},{@link #RESOLVED}, or
-	 * {@link #INSTALLED}then this method returns immediately.
-	 * <li>If the bundle is {@link #STARTING}then this method may wait for
-	 * the bundle to reach the {@link #ACTIVE}state before continuing. If this
-	 * does not occur in a reasonable time, a {@link BundleException}is thrown
-	 * to indicate the bundle was unable to be stopped.
-	 * <li>The state of the bundle is set to {@link #STOPPING}.
-	 * <li>It is recorded that this bundle has been stopped, so that when the
-	 * framework is restarted, this bundle will not be automatically started.
-	 * <li>The {@link BundleActivator#stop(BundleContext) stop}method of the bundle's
-	 * {@link BundleActivator}, if one is specified, is called. If the
-	 * {@link BundleActivator}throws an exception, this method will continue
-	 * to stop the bundle. A {@link BundleException}will be thrown after
-	 * completion of the remaining steps.
-	 * <li>The bundle's listeners, if any, are removed, service's registered
-	 * by the bundle, if any, are unregistered, and service's used by the
-	 * bundle, if any, are released.
-	 * <li>The state of the bundle is set to {@link #RESOLVED}.
-	 * <li>A {@link BundleEvent}of type {@link BundleEvent#STOPPED}is
-	 * broadcast.
-	 * </ol>
-	 * 
-	 * <h5>Preconditons</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #ACTIVE}}.
-	 * </ul>
-	 * <h5>Postconditons, no exceptions thrown</h5>
-	 * <ul>
-	 * <li>getState() not in {{@link #ACTIVE},{@link #STOPPING}}.
-	 * <li>{@link BundleActivator#stop(BundleContext) BundleActivator.stop}has been called
-	 * and did not throw an exception.
-	 * </ul>
-	 * <h5>Postconditions, when an exception is thrown</h5>
-	 * <ul>
-	 * <li>None.
-	 * </ul>
-	 * 
-	 * @exception BundleException
-	 *                If the bundle's BundleActivator could not be loaded or
-	 *                threw an exception.
-	 * @exception java.lang.IllegalStateException
-	 *                If the bundle has been uninstalled or the bundle tries to
-	 *                change its own state.
-	 * @exception java.lang.SecurityException
-	 *                If the caller does not have {@link AdminPermission}
-	 *                permission and the Java runtime environment supports
-	 *                permissions.
-	 */
-	public void stop() throws BundleException {
-		stop(0);
-	}
-
-	public void stop(int options) throws BundleException {
-		framework.checkAdminPermission(this, AdminPermission.EXECUTE);
-		checkValid();
-		beginStateChange();
-		try {
-			stopWorker(options);
-		} finally {
-			completeStateChange();
-		}
-	}
-
-	/**
-	 * Internal worker to stop a bundle.
-	 * 
-	 * @param options
-	 */
-	protected abstract void stopWorker(int options) throws BundleException;
-
-	/**
-	 * Set the persistent status bit for the bundle.
-	 * 
-	 * @param mask
-	 *            Mask for bit to set/clear
-	 * @param state
-	 *            true to set bit, false to clear bit
-	 */
-	protected void setStatus(final int mask, final boolean state) {
-		try {
-			AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws BundleException, IOException {
-					int status = bundledata.getStatus();
-					boolean test = ((status & mask) != 0);
-					if (test != state) {
-						bundledata.setStatus(state ? (status | mask) : (status & ~mask));
-						bundledata.save();
-					}
-					return null;
-				}
-			});
-		} catch (PrivilegedActionException pae) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, pae.getException());
-		}
-	}
-
-	/**
-	 * Stop this bundle w/o marking is persistently stopped.
-	 * 
-	 * Any services registered by this bundle will be unregistered. Any
-	 * services used by this bundle will be released. Any listeners registered
-	 * by this bundle will be removed.
-	 * 
-	 * <p>
-	 * The following steps are followed to stop a bundle:
-	 * <ol>
-	 * <li>If the bundle is {@link #UNINSTALLED}then an <code>IllegalStateException</code>
-	 * is thrown.
-	 * <li>If the bundle is {@link #STOPPING},{@link #RESOLVED}, or
-	 * {@link #INSTALLED}then this method returns immediately.
-	 * <li>If the bundle is {@link #STARTING}then this method may wait for
-	 * the bundle to reach the {@link #ACTIVE}state before continuing. If this
-	 * does not occur in a reasonable time, a {@link BundleException}is thrown
-	 * to indicate the bundle was unable to be stopped.
-	 * <li>The state of the bundle is set to {@link #STOPPING}.
-	 * <li>The {@link BundleActivator#stop(BundleContext) stop}method of the bundle's
-	 * {@link BundleActivator}, if one is specified, is called. If the
-	 * {@link BundleActivator}throws an exception, this method will continue
-	 * to stop the bundle. A {@link BundleException}will be thrown after
-	 * completion of the remaining steps.
-	 * <li>The bundle's listeners, if any, are removed, service's registered
-	 * by the bundle, if any, are unregistered, and service's used by the
-	 * bundle, if any, are released.
-	 * <li>The state of the bundle is set to {@link #RESOLVED}.
-	 * <li>A {@link BundleEvent}of type {@link BundleEvent#STOPPED}is
-	 * broadcast.
-	 * </ol>
-	 * 
-	 * <h5>Preconditons</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #ACTIVE}}.
-	 * </ul>
-	 * <h5>Postconditons, no exceptions thrown</h5>
-	 * <ul>
-	 * <li>getState() not in {{@link #ACTIVE},{@link #STOPPING}}.
-	 * <li>{@link BundleActivator#stop(BundleContext) BundleActivator.stop}has been called
-	 * and did not throw an exception.
-	 * </ul>
-	 * <h5>Postconditions, when an exception is thrown</h5>
-	 * <ul>
-	 * <li>None.
-	 * </ul>
-	 * 
-	 * @param lock
-	 *            true if state change lock should be held when returning from
-	 *            this method.
-	 * @exception BundleException
-	 *                If the bundle's BundleActivator could not be loaded or
-	 *                threw an exception.
-	 * @exception java.lang.IllegalStateException
-	 *                If the bundle tries to change its own state.
-	 */
-	protected void suspend(boolean lock) throws BundleException {
-		if (state == UNINSTALLED) {
-			return;
-		}
-		beginStateChange();
-		try {
-			stopWorker(STOP_TRANSIENT);
-		} finally {
-			if (!lock) {
-				completeStateChange();
-			}
-		}
-	}
-
-	public void update() throws BundleException {
-		update(null);
-	}
-
-	public void update(final InputStream in) throws BundleException {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("update location " + bundledata.getLocation()); //$NON-NLS-1$
-			Debug.println("   from: " + in); //$NON-NLS-1$
-		}
-		framework.checkAdminPermission(this, AdminPermission.LIFECYCLE);
-		if ((bundledata.getType() & (BundleData.TYPE_BOOTCLASSPATH_EXTENSION | BundleData.TYPE_FRAMEWORK_EXTENSION | BundleData.TYPE_EXTCLASSPATH_EXTENSION)) != 0)
-			// need special permission to update extensions
-			framework.checkAdminPermission(this, AdminPermission.EXTENSIONLIFECYCLE);
-		checkValid();
-		beginStateChange();
-		try {
-			final AccessControlContext callerContext = AccessController.getContext();
-			//note AdminPermission is checked again after updated bundle is loaded
-			updateWorker(new PrivilegedExceptionAction() {
-				public Object run() throws BundleException {
-					/* compute the update location */
-					URLConnection source = null;
-					if (in == null) {
-						String updateLocation = (String) bundledata.getManifest().get(Constants.BUNDLE_UPDATELOCATION);
-						if (updateLocation == null)
-							updateLocation = bundledata.getLocation();
-						if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-							Debug.println("   from location: " + updateLocation); //$NON-NLS-1$
-						/* Map the update location to a URLConnection */
-						source = framework.adaptor.mapLocationToURLConnection(updateLocation);
-					} else {
-						/* Map the InputStream to a URLConnection */
-						source = new BundleSource(in);
-					}
-					/* call the worker */
-					updateWorkerPrivileged(source, callerContext);
-					return null;
-				}
-			});
-		} finally {
-			completeStateChange();
-		}
-	}
-
-	/**
-	 * Update worker. Assumes the caller has the state change lock.
-	 */
-	protected void updateWorker(PrivilegedExceptionAction action) throws BundleException {
-		int previousState = 0;
-		if (!isFragment())
-			previousState = state;
-		if ((previousState & (ACTIVE | STARTING)) != 0) {
-			try {
-				stopWorker(STOP_TRANSIENT);
-			} catch (BundleException e) {
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, e);
-				if ((state & (ACTIVE | STARTING)) != 0) /* if the bundle is still active */{
-					throw e;
-				}
-			}
-		}
-		try {
-			AccessController.doPrivileged(action);
-			framework.publishBundleEvent(BundleEvent.UPDATED, this);
-		} catch (PrivilegedActionException pae) {
-			if (pae.getException() instanceof RuntimeException)
-				throw (RuntimeException) pae.getException();
-			throw (BundleException) pae.getException();
-		} finally {
-			if ((previousState & (ACTIVE | STARTING)) != 0) {
-				try {
-					startWorker(START_TRANSIENT | ((previousState & STARTING) != 0 ? START_ACTIVATION_POLICY : 0));
-				} catch (BundleException e) {
-					framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, e);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Update worker. Assumes the caller has the state change lock.
-	 */
-	protected void updateWorkerPrivileged(URLConnection source, AccessControlContext callerContext) throws BundleException {
-		AbstractBundle oldBundle = AbstractBundle.createBundle(bundledata, framework, false);
-		boolean reloaded = false;
-		BundleOperation storage = framework.adaptor.updateBundle(this.bundledata, source);
-		BundleRepository bundles = framework.getBundles();
-		try {
-			BundleData newBundleData = storage.begin();
-			// Must call framework createBundle to check execution environment.
-			final AbstractBundle newBundle = framework.createAndVerifyBundle(newBundleData, false);
-			boolean exporting;
-			int st = getState();
-			synchronized (bundles) {
-				String oldBSN = this.getSymbolicName();
-				exporting = reload(newBundle);
-				// update this to flush the old BSN/version etc.
-				bundles.update(oldBSN, this);
-				manifestLocalization = null;
-			}
-			// indicate we have loaded from the new version of the bundle
-			reloaded = true;
-			if (System.getSecurityManager() != null) {
-				final boolean extension = (bundledata.getType() & (BundleData.TYPE_BOOTCLASSPATH_EXTENSION | BundleData.TYPE_FRAMEWORK_EXTENSION | BundleData.TYPE_EXTCLASSPATH_EXTENSION)) != 0;
-				// must check for AllPermission before allow a bundle extension to be updated
-				if (extension && !hasPermission(new AllPermission()))
-					throw new BundleException(Msg.BUNDLE_EXTENSION_PERMISSION, BundleException.SECURITY_ERROR, new SecurityException(Msg.BUNDLE_EXTENSION_PERMISSION));
-				try {
-					AccessController.doPrivileged(new PrivilegedExceptionAction() {
-						public Object run() throws Exception {
-							framework.checkAdminPermission(newBundle, AdminPermission.LIFECYCLE);
-							if (extension) // need special permission to update extension bundles
-								framework.checkAdminPermission(newBundle, AdminPermission.EXTENSIONLIFECYCLE);
-							return null;
-						}
-					}, callerContext);
-				} catch (PrivilegedActionException e) {
-					throw e.getException();
-				}
-			}
-			// send out unresolved events outside synch block (defect #80610)
-			if (st == RESOLVED)
-				framework.publishBundleEvent(BundleEvent.UNRESOLVED, this);
-			storage.commit(exporting);
-		} catch (Throwable t) {
-			try {
-				storage.undo();
-				if (reloaded)
-				/*
-				 * if we loaded from the new version of the
-				 * bundle
-				 */{
-					synchronized (bundles) {
-						String oldBSN = this.getSymbolicName();
-						reload(oldBundle);
-						// update this to flush the new BSN/version back to the old one etc.
-						bundles.update(oldBSN, this);
-					}
-				}
-			} catch (BundleException ee) {
-				/* if we fail to revert then we are in big trouble */
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, ee);
-			}
-			if (t instanceof SecurityException)
-				throw (SecurityException) t;
-			if (t instanceof BundleException)
-				throw (BundleException) t;
-			throw new BundleException(t.getMessage(), t);
-		}
-	}
-
-	/**
-	 * Uninstall this bundle.
-	 * <p>
-	 * This method removes all traces of the bundle, including any data in the
-	 * persistent storage area provided for the bundle by the framework.
-	 * 
-	 * <p>
-	 * The following steps are followed to uninstall a bundle:
-	 * <ol>
-	 * <li>If the bundle is {@link #UNINSTALLED}then an <code>IllegalStateException</code>
-	 * is thrown.
-	 * <li>If the bundle is {@link #ACTIVE}or {@link #STARTING}, the bundle
-	 * is stopped as described in the {@link #stop()}method. If {@link #stop()}
-	 * throws an exception, a {@link FrameworkEvent}of type
-	 * {@link FrameworkEvent#ERROR}is broadcast containing the exception.
-	 * <li>A {@link BundleEvent}of type {@link BundleEvent#UNINSTALLED}is
-	 * broadcast.
-	 * <li>The state of the bundle is set to {@link #UNINSTALLED}.
-	 * <li>The bundle and the persistent storage area provided for the bundle
-	 * by the framework, if any, is removed.
-	 * </ol>
-	 * 
-	 * <h5>Preconditions</h5>
-	 * <ul>
-	 * <li>getState() not in {{@link #UNINSTALLED}}.
-	 * </ul>
-	 * <h5>Postconditons, no exceptions thrown</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #UNINSTALLED}}.
-	 * <li>The bundle has been uninstalled.
-	 * </ul>
-	 * <h5>Postconditions, when an exception is thrown</h5>
-	 * <ul>
-	 * <li>getState() not in {{@link #UNINSTALLED}}.
-	 * <li>The Bundle has not been uninstalled.
-	 * </ul>
-	 * 
-	 * @exception BundleException
-	 *                If the uninstall failed.
-	 * @exception java.lang.IllegalStateException
-	 *                If the bundle has been uninstalled or the bundle tries to
-	 *                change its own state.
-	 * @exception java.lang.SecurityException
-	 *                If the caller does not have {@link AdminPermission}
-	 *                permission and the Java runtime environment supports
-	 *                permissions.
-	 * @see #stop()
-	 */
-	public void uninstall() throws BundleException {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("uninstall location: " + bundledata.getLocation()); //$NON-NLS-1$
-		}
-		framework.checkAdminPermission(this, AdminPermission.LIFECYCLE);
-		if ((bundledata.getType() & (BundleData.TYPE_BOOTCLASSPATH_EXTENSION | BundleData.TYPE_FRAMEWORK_EXTENSION | BundleData.TYPE_EXTCLASSPATH_EXTENSION)) != 0)
-			// need special permission to uninstall extensions
-			framework.checkAdminPermission(this, AdminPermission.EXTENSIONLIFECYCLE);
-		checkValid();
-		beginStateChange();
-		try {
-			uninstallWorker(new PrivilegedExceptionAction() {
-				public Object run() throws BundleException {
-					uninstallWorkerPrivileged();
-					return null;
-				}
-			});
-		} finally {
-			completeStateChange();
-		}
-	}
-
-	/**
-	 * Uninstall worker. Assumes the caller has the state change lock.
-	 */
-	protected void uninstallWorker(PrivilegedExceptionAction action) throws BundleException {
-		boolean bundleActive = false;
-		if (!isFragment())
-			bundleActive = (state & (ACTIVE | STARTING)) != 0;
-		if (bundleActive) {
-			try {
-				stopWorker(STOP_TRANSIENT);
-			} catch (BundleException e) {
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, e);
-			}
-		}
-		try {
-			AccessController.doPrivileged(action);
-		} catch (PrivilegedActionException pae) {
-			if (bundleActive) /* if we stopped the bundle */{
-				try {
-					startWorker(START_TRANSIENT);
-				} catch (BundleException e) {
-					/*
-					 * if we fail to start the original bundle then we are in
-					 * big trouble
-					 */
-					framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, e);
-				}
-			}
-			throw (BundleException) pae.getException();
-		}
-		framework.publishBundleEvent(BundleEvent.UNINSTALLED, this);
-	}
-
-	/**
-	 * Uninstall worker. Assumes the caller has the state change lock.
-	 */
-	protected void uninstallWorkerPrivileged() throws BundleException {
-		if (Debug.DEBUG) {
-			BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();
-			if (bundleStats != null)
-				bundleStats.watchBundle(this, BundleWatcher.START_UNINSTALLING);
-		}
-		boolean unloaded = false;
-		//cache the bundle's headers
-		getHeaders();
-		BundleOperation storage = framework.adaptor.uninstallBundle(this.bundledata);
-		BundleRepository bundles = framework.getBundles();
-		try {
-			storage.begin();
-			boolean exporting;
-			int st = getState();
-			synchronized (bundles) {
-				bundles.remove(this); /* remove before calling unload */
-				exporting = unload();
-			}
-			// send out unresolved events outside synch block (defect #80610)
-			if (st == RESOLVED)
-				framework.publishBundleEvent(BundleEvent.UNRESOLVED, this);
-			unloaded = true;
-			storage.commit(exporting);
-			close();
-		} catch (BundleException e) {
-			try {
-				storage.undo();
-				if (unloaded) /* if we unloaded the bundle */{
-					synchronized (bundles) {
-						load(); /* reload the bundle */
-						bundles.add(this);
-					}
-				}
-			} catch (BundleException ee) {
-				/*
-				 * if we fail to load the original bundle then we are in big
-				 * trouble
-				 */
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, ee);
-			}
-			throw e;
-		} finally {
-			if (Debug.DEBUG) {
-				BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();
-				if (bundleStats != null)
-					bundleStats.watchBundle(this, BundleWatcher.END_UNINSTALLING);
-			}
-		}
-	}
-
-	/**
-	 * Return the bundle's manifest headers and values from the manifest's
-	 * preliminary section. That is all the manifest's headers and values prior
-	 * to the first blank line.
-	 * 
-	 * <p>
-	 * Manifest header names are case-insensitive. The methods of the returned
-	 * <code>Dictionary</code> object will operate on header names in a
-	 * case-insensitive manner.
-	 * 
-	 * <p>
-	 * For example, the following manifest headers and values are included if
-	 * they are present in the manifest:
-	 * 
-	 * <pre>
-	 *  Bundle-Name
-	 *  Bundle-Vendor
-	 *  Bundle-Version
-	 *  Bundle-Description
-	 *  Bundle-DocURL
-	 *  Bundle-ContactAddress
-	 * </pre>
-	 * 
-	 * <p>
-	 * This method will continue to return this information when the bundle is
-	 * in the {@link #UNINSTALLED}state.
-	 * 
-	 * @return A <code>Dictionary</code> object containing the bundle's
-	 *         manifest headers and values.
-	 * @exception java.lang.SecurityException
-	 *                If the caller does not have {@link AdminPermission}
-	 *                permission and the Java runtime environment supports
-	 *                permissions.
-	 */
-	public Dictionary getHeaders() {
-		return getHeaders(null);
-	}
-
-	/**
-	 * Returns this bundle's Manifest headers and values. This method returns
-	 * all the Manifest headers and values from the main section of the
-	 * bundle's Manifest file; that is, all lines prior to the first blank
-	 * line.
-	 * 
-	 * <p>
-	 * Manifest header names are case-insensitive. The methods of the returned
-	 * <tt>Dictionary</tt> object will operate on header names in a
-	 * case-insensitive manner.
-	 * 
-	 * If a Manifest header begins with a '%', it will be evaluated with the
-	 * specified properties file for the specied Locale.
-	 * 
-	 * <p>
-	 * For example, the following Manifest headers and values are included if
-	 * they are present in the Manifest file:
-	 * 
-	 * <pre>
-	 *  Bundle-Name
-	 *  Bundle-Vendor
-	 *  Bundle-Version
-	 *  Bundle-Description
-	 *  Bundle-DocURL
-	 *  Bundle-ContactAddress
-	 * </pre>
-	 * 
-	 * <p>
-	 * This method will continue to return Manifest header information while
-	 * this bundle is in the <tt>UNINSTALLED</tt> state.
-	 * 
-	 * @return A <tt>Dictionary</tt> object containing this bundle's Manifest
-	 *         headers and values.
-	 * 
-	 * @exception java.lang.SecurityException
-	 *                If the caller does not have the <tt>AdminPermission</tt>,
-	 *                and the Java Runtime Environment supports permissions.
-	 */
-	public Dictionary getHeaders(String localeString) {
-		framework.checkAdminPermission(this, AdminPermission.METADATA);
-		ManifestLocalization localization;
-		try {
-			localization = getManifestLocalization();
-		} catch (BundleException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, e);
-			// return an empty dictinary.
-			return new Hashtable();
-		}
-		if (localeString == null)
-			localeString = Locale.getDefault().toString();
-		return localization.getHeaders(localeString);
-	}
-
-	/**
-	 * Retrieve the bundle's unique identifier, which the framework assigned to
-	 * this bundle when it was installed.
-	 * 
-	 * <p>
-	 * The unique identifier has the following attributes:
-	 * <ul>
-	 * <li>It is unique and persistent.
-	 * <li>The identifier is a long.
-	 * <li>Once its value is assigned to a bundle, that value is not reused
-	 * for another bundle, even after the bundle is uninstalled.
-	 * <li>Its value does not change as long as the bundle remains installed.
-	 * <li>Its value does not change when the bundle is updated
-	 * </ul>
-	 * 
-	 * <p>
-	 * This method will continue to return the bundle's unique identifier when
-	 * the bundle is in the {@link #UNINSTALLED}state.
-	 * 
-	 * @return This bundle's unique identifier.
-	 */
-	public long getBundleId() {
-		return (bundledata.getBundleID());
-	}
-
-	/**
-	 * Retrieve the location identifier of the bundle. This is typically the
-	 * location passed to
-	 * {@link BundleContextImpl#installBundle(String) BundleContext.installBundle}when the
-	 * bundle was installed. The location identifier of the bundle may change
-	 * during bundle update. Calling this method while framework is updating
-	 * the bundle results in undefined behavior.
-	 * 
-	 * <p>
-	 * This method will continue to return the bundle's location identifier
-	 * when the bundle is in the {@link #UNINSTALLED}state.
-	 * 
-	 * @return A string that is the location identifier of the bundle.
-	 * @exception java.lang.SecurityException
-	 *                If the caller does not have {@link AdminPermission}
-	 *                permission and the Java runtime environment supports
-	 *                permissions.
-	 */
-	public String getLocation() {
-		framework.checkAdminPermission(this, AdminPermission.METADATA);
-		return (bundledata.getLocation());
-	}
-
-	/**
-	 * Determine whether the bundle has the requested permission.
-	 * 
-	 * <p>
-	 * If the Java runtime environment does not supports permissions this
-	 * method always returns <code>true</code>. The permission parameter is
-	 * of type <code>Object</code> to avoid referencing the <code>java.security.Permission</code>
-	 * class directly. This is to allow the framework to be implemented in Java
-	 * environments which do not support permissions.
-	 * 
-	 * @param permission
-	 *            The requested permission.
-	 * @return <code>true</code> if the bundle has the requested permission
-	 *         or <code>false</code> if the bundle does not have the
-	 *         permission or the permission parameter is not an <code>instanceof java.security.Permission</code>.
-	 * @exception java.lang.IllegalStateException
-	 *                If the bundle has been uninstalled.
-	 */
-	public boolean hasPermission(Object permission) {
-		checkValid();
-		if (domain != null) {
-			if (permission instanceof Permission) {
-				SecurityManager sm = System.getSecurityManager();
-				if (sm instanceof EquinoxSecurityManager) {
-					/*
-					 * If the FrameworkSecurityManager is active, we need to do checks the "right" way.
-					 * We can exploit our knowledge that the security context of FrameworkSecurityManager
-					 * is an AccessControlContext to invoke it properly with the ProtectionDomain.
-					 */
-					AccessControlContext acc = new AccessControlContext(new ProtectionDomain[] {domain});
-					try {
-						sm.checkPermission((Permission) permission, acc);
-						return true;
-					} catch (Exception e) {
-						return false;
-					}
-				}
-				return domain.implies((Permission) permission);
-			}
-			return false;
-		}
-		return true;
-	}
-
-	/**
-	 * This method marks the bundle's state as changing so that other calls to
-	 * start/stop/suspend/update/uninstall can wait until the state change is
-	 * complete. If stateChanging is non-null when this method is called, we
-	 * will wait for the state change to complete. If the timeout expires
-	 * without changing state (this may happen if the state change is back up
-	 * our call stack), a BundleException is thrown so that we don't wait
-	 * forever.
-	 * 
-	 * A call to this method should be immediately followed by a try block
-	 * whose finally block calls completeStateChange().
-	 * 
-	 * beginStateChange(); try { // change the bundle's state here... } finally {
-	 * completeStateChange(); }
-	 * 
-	 * @exception org.osgi.framework.BundleException
-	 *                if the bundles state is still changing after waiting for
-	 *                the timeout.
-	 */
-	protected void beginStateChange() throws BundleException {
-		synchronized (statechangeLock) {
-			boolean doubleFault = false;
-			while (true) {
-				if (stateChanging == null) {
-					stateChanging = Thread.currentThread();
-					return;
-				}
-				if (doubleFault || (stateChanging == Thread.currentThread())) {
-					throw new BundleException(NLS.bind(Msg.BUNDLE_STATE_CHANGE_EXCEPTION, getBundleData().getLocation(), stateChanging.getName()), BundleException.STATECHANGE_ERROR, new BundleStatusException(null, StatusException.CODE_WARNING, stateChanging));
-				}
-				try {
-					long start = 0;
-					if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-						Debug.println(" Waiting for state to change in bundle " + this); //$NON-NLS-1$
-						start = System.currentTimeMillis();
-					}
-					statechangeLock.wait(5000);
-					/*
-					 * wait for other thread to
-					 * finish changing state
-					 */
-					if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-						long end = System.currentTimeMillis();
-						if (end - start > 0)
-							System.out.println("Waiting... : " + getSymbolicName() + ' ' + (end - start)); //$NON-NLS-1$
-					}
-				} catch (InterruptedException e) {
-					//Nothing to do
-				}
-				doubleFault = true;
-			}
-		}
-	}
-
-	/**
-	 * This method completes the bundle state change by setting stateChanging
-	 * to null and notifying one waiter that the state change has completed.
-	 */
-	protected void completeStateChange() {
-		synchronized (statechangeLock) {
-			if (stateChanging == Thread.currentThread()) {
-				stateChanging = null;
-				statechangeLock.notify();
-				/*
-				 * notify one waiting thread that the
-				 * state change is complete
-				 */
-			}
-		}
-	}
-
-	/**
-	 * Return a string representation of this bundle.
-	 * 
-	 * @return String
-	 */
-	public String toString() {
-		String name = bundledata.getSymbolicName();
-		if (name == null)
-			name = "unknown"; //$NON-NLS-1$
-		return (name + '_' + bundledata.getVersion() + " [" + getBundleId() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Answers an integer indicating the relative positions of the receiver and
-	 * the argument in the natural order of elements of the receiver's class.
-	 * 
-	 * @return int which should be <0 if the receiver should sort before the
-	 *         argument, 0 if the receiver should sort in the same position as
-	 *         the argument, and >0 if the receiver should sort after the
-	 *         argument.
-	 * @param obj
-	 *            another Bundle an object to compare the receiver to
-	 * @exception ClassCastException
-	 *                if the argument can not be converted into something
-	 *                comparable with the receiver.
-	 */
-	public int compareTo(Object obj) {
-		int slcomp = getStartLevel() - ((AbstractBundle) obj).getStartLevel();
-		if (slcomp != 0) {
-			return slcomp;
-		}
-		long idcomp = getBundleId() - ((AbstractBundle) obj).getBundleId();
-		return (idcomp < 0L) ? -1 : ((idcomp > 0L) ? 1 : 0);
-	}
-
-	/**
-	 * This method checks that the bundle is not uninstalled. If the bundle is
-	 * uninstalled, an IllegalStateException is thrown.
-	 * 
-	 * @exception java.lang.IllegalStateException
-	 *                If the bundle is uninstalled.
-	 */
-	protected void checkValid() {
-		if (state == UNINSTALLED) {
-			throw new IllegalStateException(NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, getBundleData().getLocation()));
-		}
-	}
-
-	/**
-	 * Get the bundle's ProtectionDomain.
-	 * 
-	 * @return bundle's ProtectionDomain.
-	 */
-	public BundleProtectionDomain getProtectionDomain() {
-		return domain;
-	}
-
-	protected BundleFragment[] getFragments() {
-		checkValid();
-		return null;
-	}
-
-	protected boolean isFragment() {
-		return false;
-	}
-
-	BundleHost[] getHosts() {
-		checkValid();
-		return null;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.osgi.framework.Bundle#findClass(java.lang.String)
-	 */
-	public Class loadClass(String classname) throws ClassNotFoundException {
-		return loadClass(classname, true);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.osgi.framework.Bundle#getResourcePaths(java.lang.String)
-	 */
-	public Enumeration getEntryPaths(final String path) {
-		try {
-			framework.checkAdminPermission(this, AdminPermission.RESOURCE);
-		} catch (SecurityException e) {
-			return null;
-		}
-		checkValid();
-		// TODO this doPrivileged is probably not needed.  The adaptor isolates callers from disk access
-		return (Enumeration) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return bundledata.getEntryPaths(path);
-			}
-		});
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see org.osgi.framework.Bundle#getFile(java.lang.String)
-	 */
-	public URL getEntry(String fileName) {
-		try {
-			framework.checkAdminPermission(this, AdminPermission.RESOURCE);
-		} catch (SecurityException e) {
-			return null;
-		}
-		return getEntry0(fileName);
-	}
-
-	URL getEntry0(String fileName) {
-		checkValid();
-		return bundledata.getEntry(fileName);
-	}
-
-	public String getSymbolicName() {
-		return bundledata.getSymbolicName();
-	}
-
-	public long getLastModified() {
-		return bundledata.getLastModified();
-	}
-
-	public BundleData getBundleData() {
-		return bundledata;
-	}
-
-	public Version getVersion() {
-		return bundledata.getVersion();
-	}
-
-	public BundleDescription getBundleDescription() {
-		return framework.adaptor.getState().getBundle(getBundleId());
-	}
-
-	protected int getStartLevel() {
-		return bundledata.getStartLevel();
-	}
-
-	protected abstract BundleLoader getBundleLoader();
-
-	/**
-	 * Mark this bundle as resolved.
-	 */
-	protected void resolve() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (INSTALLED)) == 0) {
-				Debug.println("Bundle.resolve called when state != INSTALLED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-		if (state == INSTALLED) {
-			state = RESOLVED;
-			// Do not publish RESOLVED event here.  This is done by caller 
-			// to resolve if appropriate.
-		}
-	}
-
-	public BundleContext getBundleContext() {
-		framework.checkAdminPermission(this, AdminPermission.CONTEXT);
-		return getContext();
-	}
-
-	/**
-	 * Return the current context for this bundle.
-	 * 
-	 * @return BundleContext for this bundle.
-	 */
-	abstract protected BundleContextImpl getContext();
-
-	public BundleException getResolutionFailureException() {
-		BundleDescription bundleDescription = getBundleDescription();
-		if (bundleDescription == null)
-			return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_EXCEPTION, this.toString()), BundleException.RESOLVE_ERROR);
-		// just a sanity check - this would be an inconsistency between the framework and the state
-		if (bundleDescription.isResolved())
-			return new BundleException(Msg.BUNDLE_UNRESOLVED_STATE_CONFLICT, BundleException.RESOLVE_ERROR);
-		return getResolverError(bundleDescription);
-	}
-
-	private BundleException getResolverError(BundleDescription bundleDesc) {
-		ResolverError[] errors = framework.adaptor.getState().getResolverErrors(bundleDesc);
-		if (errors == null || errors.length == 0)
-			return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_EXCEPTION, this.toString()), BundleException.RESOLVE_ERROR);
-		StringBuffer message = new StringBuffer();
-		int errorType = BundleException.RESOLVE_ERROR;
-		for (int i = 0; i < errors.length; i++) {
-			if ((errors[i].getType() & ResolverError.INVALID_NATIVECODE_PATHS) != 0)
-				errorType = BundleException.NATIVECODE_ERROR;
-			message.append(errors[i].toString());
-			if (i < errors.length - 1)
-				message.append(", "); //$NON-NLS-1$
-		}
-		return new BundleException(NLS.bind(Msg.BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION, this.toString(), message.toString()), errorType);
-	}
-
-	public int getKeyHashCode() {
-		long id = getBundleId();
-		return (int) (id ^ (id >>> 32));
-	}
-
-	public boolean compare(KeyedElement other) {
-		return getBundleId() == ((AbstractBundle) other).getBundleId();
-	}
-
-	public Object getKey() {
-		return new Long(getBundleId());
-	}
-
-	/* This method is used by the Bundle Localization Service to obtain
-	 * a ResourceBundle that resides in a bundle.  This is not an OSGi
-	 * defined method for org.osgi.framework.Bundle
-	 * 
-	 */
-	public ResourceBundle getResourceBundle(String localeString) {
-		ManifestLocalization localization;
-		try {
-			localization = getManifestLocalization();
-		} catch (BundleException ex) {
-			return (null);
-		}
-		if (localeString == null) {
-			localeString = Locale.getDefault().toString();
-		}
-		return localization.getResourceBundle(localeString);
-	}
-
-	private synchronized ManifestLocalization getManifestLocalization() throws BundleException {
-		ManifestLocalization currentLocalization = manifestLocalization;
-		if (currentLocalization == null) {
-			Dictionary rawHeaders = bundledata.getManifest();
-			manifestLocalization = currentLocalization = new ManifestLocalization(this, rawHeaders);
-		}
-		return currentLocalization;
-	}
-
-	public boolean testStateChanging(Object thread) {
-		return stateChanging == thread;
-	}
-
-	public Thread getStateChanging() {
-		return stateChanging;
-	}
-
-	public Enumeration findEntries(String path, String filePattern, boolean recurse) {
-		try {
-			framework.checkAdminPermission(this, AdminPermission.RESOURCE);
-		} catch (SecurityException e) {
-			return null;
-		}
-		checkValid();
-		// check to see if the bundle is resolved
-		if (!isResolved())
-			framework.packageAdmin.resolveBundles(new Bundle[] {this});
-
-		// a list used to store the results of the search
-		List pathList = new ArrayList();
-		Filter patternFilter = null;
-		Hashtable patternProps = null;
-		if (filePattern != null)
-			try {
-				// create a file pattern filter with 'filename' as the key
-				patternFilter = FilterImpl.newInstance("(filename=" + filePattern + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				// create a single hashtable to be shared during the recursive search
-				patternProps = new Hashtable(2);
-			} catch (InvalidSyntaxException e) {
-				// cannot happen
-			}
-		// find the local entries of this bundle
-		findLocalEntryPaths(path, patternFilter, patternProps, recurse, pathList);
-		// if this bundle is a host to fragments then search the fragments
-		final BundleFragment[] fragments = getFragments();
-		final int numFragments = fragments == null ? -1 : fragments.length;
-		for (int i = 0; i < numFragments; i++)
-			((AbstractBundle) fragments[i]).findLocalEntryPaths(path, patternFilter, patternProps, recurse, pathList);
-		// return null if no entries found
-		if (pathList.size() == 0)
-			return null;
-		// create an enumeration to enumerate the pathList
-		final String[] pathArray = (String[]) pathList.toArray(new String[pathList.size()]);
-		return new Enumeration() {
-			int curIndex = 0;
-			int curFragment = -1;
-			URL nextElement = null;
-
-			public boolean hasMoreElements() {
-				if (nextElement != null)
-					return true;
-				getNextElement();
-				return nextElement != null;
-			}
-
-			public Object nextElement() {
-				if (!hasMoreElements())
-					throw new NoSuchElementException();
-				URL result;
-				result = nextElement;
-				// force the next element search
-				getNextElement();
-				return result;
-			}
-
-			private void getNextElement() {
-				nextElement = null;
-				if (curIndex >= pathArray.length)
-					// reached the end of the pathArray; no more elements
-					return;
-				String curPath = pathArray[curIndex];
-				if (curFragment == -1) {
-					// need to search ourselves first
-					nextElement = getEntry0(curPath);
-					curFragment++;
-				}
-				// if the element is not in the host look in the fragments until we have searched them all
-				while (nextElement == null && curFragment < numFragments)
-					nextElement = fragments[curFragment++].getEntry0(curPath);
-				// if we have no fragments or we have searched all fragments then advance to the next path 
-				if (numFragments == -1 || curFragment >= numFragments) {
-					curIndex++;
-					curFragment = -1;
-				}
-				// searched all fragments for the current path, move to the next one
-				if (nextElement == null)
-					getNextElement();
-			}
-
-		};
-	}
-
-	protected void findLocalEntryPaths(String path, Filter patternFilter, Hashtable patternProps, boolean recurse, List pathList) {
-		Enumeration entryPaths = bundledata.getEntryPaths(path);
-		if (entryPaths == null)
-			return;
-		while (entryPaths.hasMoreElements()) {
-			String entry = (String) entryPaths.nextElement();
-			int lastSlash = entry.lastIndexOf('/');
-			if (patternProps != null) {
-				int secondToLastSlash = entry.lastIndexOf('/', lastSlash - 1);
-				int fileStart;
-				int fileEnd = entry.length();
-				if (lastSlash < 0)
-					fileStart = 0;
-				else if (lastSlash != entry.length() - 1)
-					fileStart = lastSlash + 1;
-				else {
-					fileEnd = lastSlash; // leave the lastSlash out
-					if (secondToLastSlash < 0)
-						fileStart = 0;
-					else
-						fileStart = secondToLastSlash + 1;
-				}
-				String fileName = entry.substring(fileStart, fileEnd);
-				// set the filename to the current entry
-				patternProps.put("filename", fileName); //$NON-NLS-1$
-			}
-			// prevent duplicates and match on the patterFilter
-			if (!pathList.contains(entry) && (patternFilter == null || patternFilter.matchCase(patternProps)))
-				pathList.add(entry);
-			// rescurse only into entries that are directories
-			if (recurse && !entry.equals(path) && entry.length() > 0 && lastSlash == (entry.length() - 1))
-				findLocalEntryPaths(entry, patternFilter, patternProps, recurse, pathList);
-		}
-		return;
-	}
-
-	class BundleStatusException extends Throwable implements StatusException {
-		private static final long serialVersionUID = 7201911791818929100L;
-		private int code;
-		private Object status;
-
-		BundleStatusException(String message, int code, Object status) {
-			super(message);
-			this.code = code;
-			this.status = status;
-		}
-
-		public Object getStatus() {
-			return status;
-		}
-
-		public int getStatusCode() {
-			return code;
-		}
-
-	}
-
-	public Map/* <X509Certificate, List<X509Certificate>> */getSignerCertificates(int signersType) {
-		if (signersType != SIGNERS_ALL && signersType != SIGNERS_TRUSTED)
-			throw new IllegalArgumentException("Invalid signers type: " + signersType); //$NON-NLS-1$
-		if (framework == null)
-			return Collections.EMPTY_MAP;
-		SignedContentFactory factory = framework.getSignedContentFactory();
-		if (factory == null)
-			return Collections.EMPTY_MAP;
-		try {
-			SignedContent signedContent = factory.getSignedContent(this);
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			if (infos.length == 0)
-				return Collections.EMPTY_MAP;
-			Map/* <X509Certificate, List<X509Certificate>> */results = new HashMap(infos.length);
-			for (int i = 0; i < infos.length; i++) {
-				if (signersType == SIGNERS_TRUSTED && !infos[i].isTrusted())
-					continue;
-				Certificate[] certs = infos[i].getCertificateChain();
-				if (certs == null || certs.length == 0)
-					continue;
-				List/* <X509Certificate> */certChain = new ArrayList();
-				for (int j = 0; j < certs.length; j++)
-					certChain.add(certs[j]);
-				results.put(certs[0], certChain);
-			}
-			return results;
-		} catch (Exception e) {
-			return Collections.EMPTY_MAP;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AliasMapper.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AliasMapper.java
deleted file mode 100644
index 3aef47a..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AliasMapper.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.*;
-import java.util.Hashtable;
-import java.util.Vector;
-import org.eclipse.osgi.framework.debug.Debug;
-
-/**
- * This class maps aliases.
- */
-public class AliasMapper {
-	private static Hashtable processorAliasTable;
-	private static Hashtable osnameAliasTable;
-
-	/**
-	 * Constructor.
-	 *
-	 */
-	public AliasMapper() {
-	}
-
-	/**
-	 * Return the master alias for the processor.
-	 *
-	 * @param processor Input name
-	 * @return aliased name (if any)
-	 */
-	public String aliasProcessor(String processor) {
-		processor = processor.toLowerCase();
-		if (processorAliasTable == null) {
-			InputStream in = getClass().getResourceAsStream(Constants.OSGI_PROCESSOR_ALIASES);
-			if (in != null) {
-				try {
-					processorAliasTable = initAliases(in);
-				} finally {
-					try {
-						in.close();
-					} catch (IOException ee) {
-					}
-				}
-			}
-		}
-		if (processorAliasTable != null) {
-			String alias = (String) processorAliasTable.get(processor);
-			if (alias != null) {
-				processor = alias;
-			}
-		}
-		return (processor);
-	}
-
-	/**
-	 * Return the master alias for the osname.
-	 *
-	 * @param osname Input name
-	 * @return aliased name (if any)
-	 */
-	public Object aliasOSName(String osname) {
-		osname = osname.toLowerCase();
-		if (osnameAliasTable == null) {
-			InputStream in = getClass().getResourceAsStream(Constants.OSGI_OSNAME_ALIASES);
-			if (in != null) {
-				try {
-					osnameAliasTable = initAliases(in);
-				} finally {
-					try {
-						in.close();
-					} catch (IOException ee) {
-					}
-				}
-			}
-		}
-		if (osnameAliasTable != null) {
-			Object aliasObject = osnameAliasTable.get(osname);
-			//String alias = (String) osnameAliasTable.get(osname);
-			if (aliasObject != null)
-				if (aliasObject instanceof String) {
-					osname = (String) aliasObject;
-				} else {
-					return (Vector) aliasObject;
-				}
-		}
-		return (osname);
-	}
-
-	/**
-	 * Read alias data and populate a Hashtable.
-	 *
-	 * @param in InputStream from which to read alias data.
-	 * @return Hashtable of aliases.
-	 */
-	protected static Hashtable initAliases(InputStream in) {
-		Hashtable aliases = new Hashtable(37);
-		try {
-			BufferedReader br;
-			try {
-				br = new BufferedReader(new InputStreamReader(in, "UTF8")); //$NON-NLS-1$
-			} catch (UnsupportedEncodingException e) {
-				br = new BufferedReader(new InputStreamReader(in));
-			}
-			while (true) {
-				String line = br.readLine();
-				if (line == null) /* EOF */{
-					break; /* done */
-				}
-				Tokenizer tokenizer = new Tokenizer(line);
-				String master = tokenizer.getString("# \t"); //$NON-NLS-1$
-				if (master != null) {
-					aliases.put(master.toLowerCase(), master);
-					parseloop: while (true) {
-						String alias = tokenizer.getString("# \t"); //$NON-NLS-1$
-						if (alias == null) {
-							break parseloop;
-						}
-						String lowerCaseAlias = alias.toLowerCase();
-						Object storedMaster = aliases.get(lowerCaseAlias);
-						if (storedMaster == null) {
-							aliases.put(lowerCaseAlias, master);
-						} else if (storedMaster instanceof String) {
-							Vector newMaster = new Vector();
-							newMaster.add(storedMaster);
-							newMaster.add(master);
-							aliases.put(lowerCaseAlias, newMaster);
-						} else {
-							((Vector) storedMaster).add(master);
-							aliases.put(lowerCaseAlias, storedMaster);
-						}
-					}
-				}
-			}
-		} catch (IOException e) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.printStackTrace(e);
-			}
-		}
-		return (aliases);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java
deleted file mode 100644
index b405a3d..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java
+++ /dev/null
@@ -1,1019 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.File;
-import java.io.InputStream;
-import java.security.*;
-import java.util.*;
-import org.eclipse.osgi.event.BatchBundleListener;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.eventmgr.CopyOnWriteIdentityMap;
-import org.eclipse.osgi.framework.eventmgr.EventDispatcher;
-import org.eclipse.osgi.internal.profile.Profile;
-import org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl;
-import org.eclipse.osgi.internal.serviceregistry.ServiceRegistry;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * Bundle's execution context.
- *
- * This object is given out to bundles and wraps the internal
- * BundleContext object. It is destroyed when a bundle is stopped.
- */
-
-public class BundleContextImpl implements BundleContext, EventDispatcher {
-	private static boolean SET_TCCL = "true".equals(FrameworkProperties.getProperty("eclipse.bundle.setTCCL", "true")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	/** true if the bundle context is still valid */
-	private volatile boolean valid;
-
-	/** Bundle object this context is associated with. */
-	// This slot is accessed directly by the Framework instead of using
-	// the getBundle() method because the Framework needs access to the bundle
-	// even when the context is invalid while the close method is being called.
-	final BundleHost bundle;
-
-	/** Internal framework object. */
-	final Framework framework;
-
-	/** Services that bundle is using. Key is ServiceRegistrationImpl,
-	 Value is ServiceUse */
-	/* @GuardedBy("contextLock") */
-	private HashMap/*<ServiceRegistrationImpl, ServiceUse>*/servicesInUse;
-
-	/** Listener list for bundle's BundleListeners */
-	protected Map bundleEvent;
-
-	/** Listener list for bundle's SynchronousBundleListeners */
-	protected Map bundleEventSync;
-
-	/** Listener list for bundle's FrameworkListeners */
-	protected Map frameworkEvent;
-
-	/** The current instantiation of the activator. */
-	protected BundleActivator activator;
-
-	/** private object for locking */
-	private final Object contextLock = new Object();
-
-	/**
-	 * Construct a BundleContext which wrappers the framework for a
-	 * bundle
-	 *
-	 * @param bundle The bundle we are wrapping.
-	 */
-	protected BundleContextImpl(BundleHost bundle) {
-		this.bundle = bundle;
-		valid = true;
-		framework = bundle.framework;
-		bundleEvent = null;
-		bundleEventSync = null;
-		frameworkEvent = null;
-		synchronized (contextLock) {
-			servicesInUse = null;
-		}
-		activator = null;
-	}
-
-	/**
-	 * Destroy the wrapper. This is called when the bundle is stopped.
-	 *
-	 */
-	protected void close() {
-		valid = false; /* invalidate context */
-
-		final ServiceRegistry registry = framework.getServiceRegistry();
-
-		registry.removeAllServiceListeners(this);
-		synchronized (framework.frameworkEvent) {
-			if (frameworkEvent != null) {
-				framework.frameworkEvent.remove(this);
-				frameworkEvent = null;
-			}
-		}
-		synchronized (framework.bundleEvent) {
-			if (bundleEvent != null) {
-				framework.bundleEvent.remove(this);
-				bundleEvent = null;
-			}
-		}
-		synchronized (framework.bundleEventSync) {
-			if (bundleEventSync != null) {
-				framework.bundleEventSync.remove(this);
-				bundleEventSync = null;
-			}
-		}
-
-		/* service's registered by the bundle, if any, are unregistered. */
-		registry.unregisterServices(this);
-
-		/* service's used by the bundle, if any, are released. */
-		registry.releaseServicesInUse(this);
-
-		synchronized (contextLock) {
-			servicesInUse = null;
-		}
-	}
-
-	/**
-	 * Retrieve the value of the named environment property.
-	 *
-	 * @param key The name of the requested property.
-	 * @return The value of the requested property, or <code>null</code> if
-	 * the property is undefined.
-	 */
-	public String getProperty(String key) {
-		SecurityManager sm = System.getSecurityManager();
-
-		if (sm != null) {
-			sm.checkPropertyAccess(key);
-		}
-
-		return (framework.getProperty(key));
-	}
-
-	/**
-	 * Retrieve the Bundle object for the context bundle.
-	 *
-	 * @return The context bundle's Bundle object.
-	 */
-	public Bundle getBundle() {
-		checkValid();
-
-		return getBundleImpl();
-	}
-
-	public AbstractBundle getBundleImpl() {
-		return bundle;
-	}
-
-	public Bundle installBundle(String location) throws BundleException {
-		return installBundle(location, null);
-	}
-
-	public Bundle installBundle(String location, InputStream in) throws BundleException {
-		checkValid();
-		//note AdminPermission is checked after bundle is loaded
-		return framework.installBundle(location, in);
-	}
-
-	/**
-	 * Retrieve the bundle that has the given unique identifier.
-	 *
-	 * @param id The identifier of the bundle to retrieve.
-	 * @return A Bundle object, or <code>null</code>
-	 * if the identifier doesn't match any installed bundle.
-	 */
-	public Bundle getBundle(long id) {
-		return (framework.getBundle(id));
-	}
-
-	/**
-	 * Retrieve the bundle that has the given location.
-	 *
-	 * @param location The location string of the bundle to retrieve.
-	 * @return A Bundle object, or <code>null</code>
-	 * if the location doesn't match any installed bundle.
-	 */
-	public AbstractBundle getBundleByLocation(String location) {
-		return (framework.getBundleByLocation(location));
-	}
-
-	/**
-	 * Retrieve a list of all installed bundles.
-	 * The list is valid at the time
-	 * of the call to getBundles, but the framework is a very dynamic
-	 * environment and bundles can be installed or uninstalled at anytime.
-	 *
-	 * @return An array of {@link AbstractBundle} objects, one
-	 * object per installed bundle.
-	 */
-	public Bundle[] getBundles() {
-		return framework.getAllBundles();
-	}
-
-	/**
-	 * Add a service listener with a filter.
-	 * {@link ServiceListener}s are notified when a service has a lifecycle
-	 * state change.
-	 * See {@link #getServiceReferences(String, String) getServiceReferences}
-	 * for a description of the filter syntax.
-	 * The listener is added to the context bundle's list of listeners.
-	 * See {@link #getBundle() getBundle()}
-	 * for a definition of context bundle.
-	 *
-	 * <p>The listener is called if the filter criteria is met.
-	 * To filter based upon the class of the service, the filter
-	 * should reference the "objectClass" property.
-	 * If the filter paramater is <code>null</code>, all services
-	 * are considered to match the filter.
-	 * <p>If the Java runtime environment supports permissions, then additional
-	 * filtering is done.
-	 * {@link AbstractBundle#hasPermission(Object) Bundle.hasPermission} is called for the
-	 * bundle which defines the listener to validate that the listener has the
-	 * {@link ServicePermission} permission to <code>"get"</code> the service
-	 * using at least one of the named classes the service was registered under.
-	 *
-	 * @param listener The service listener to add.
-	 * @param filter The filter criteria.
-	 * @exception InvalidSyntaxException If the filter parameter contains
-	 * an invalid filter string which cannot be parsed.
-	 * @see ServiceEvent
-	 * @see ServiceListener
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 */
-	public void addServiceListener(ServiceListener listener, String filter) throws InvalidSyntaxException {
-		checkValid();
-
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-		framework.getServiceRegistry().addServiceListener(this, listener, filter);
-	}
-
-	/**
-	 * Add a service listener.
-	 *
-	 * <p>This method is the same as calling
-	 * {@link #addServiceListener(ServiceListener, String)}
-	 * with filter set to <code>null</code>.
-	 *
-	 * @see #addServiceListener(ServiceListener, String)
-	 */
-	public void addServiceListener(ServiceListener listener) {
-		try {
-			addServiceListener(listener, null);
-		} catch (InvalidSyntaxException e) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("InvalidSyntaxException w/ null filter" + e.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(e);
-			}
-		}
-	}
-
-	/**
-	 * Remove a service listener.
-	 * The listener is removed from the context bundle's list of listeners.
-	 * See {@link #getBundle() getBundle()}
-	 * for a definition of context bundle.
-	 *
-	 * <p>If this method is called with a listener which is not registered,
-	 * then this method does nothing.
-	 *
-	 * @param listener The service listener to remove.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 */
-	public void removeServiceListener(ServiceListener listener) {
-		checkValid();
-
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-		framework.getServiceRegistry().removeServiceListener(this, listener);
-	}
-
-	/**
-	 * Add a bundle listener.
-	 * {@link BundleListener}s are notified when a bundle has a lifecycle
-	 * state change.
-	 * The listener is added to the context bundle's list of listeners.
-	 * See {@link #getBundle() getBundle()}
-	 * for a definition of context bundle.
-	 *
-	 * @param listener The bundle listener to add.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 * @see BundleEvent
-	 * @see BundleListener
-	 */
-	public void addBundleListener(BundleListener listener) {
-		checkValid();
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("addBundleListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		if (listener instanceof SynchronousBundleListener) {
-			framework.checkAdminPermission(getBundle(), AdminPermission.LISTENER);
-			synchronized (framework.bundleEventSync) {
-				checkValid();
-				if (bundleEventSync == null) {
-					bundleEventSync = new CopyOnWriteIdentityMap();
-					framework.bundleEventSync.put(this, this);
-				}
-
-				bundleEventSync.put(listener, listener);
-			}
-		} else {
-			synchronized (framework.bundleEvent) {
-				checkValid();
-				if (bundleEvent == null) {
-					bundleEvent = new CopyOnWriteIdentityMap();
-					framework.bundleEvent.put(this, this);
-				}
-
-				bundleEvent.put(listener, listener);
-			}
-		}
-	}
-
-	/**
-	 * Remove a bundle listener.
-	 * The listener is removed from the context bundle's list of listeners.
-	 * See {@link #getBundle() getBundle()}
-	 * for a definition of context bundle.
-	 *
-	 * <p>If this method is called with a listener which is not registered,
-	 * then this method does nothing.
-	 *
-	 * @param listener The bundle listener to remove.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 */
-	public void removeBundleListener(BundleListener listener) {
-		checkValid();
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("removeBundleListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		if (listener instanceof SynchronousBundleListener) {
-			framework.checkAdminPermission(getBundle(), AdminPermission.LISTENER);
-
-			synchronized (framework.bundleEventSync) {
-				if (bundleEventSync != null) {
-					bundleEventSync.remove(listener);
-				}
-			}
-		} else {
-			synchronized (framework.bundleEvent) {
-				if (bundleEvent != null) {
-					bundleEvent.remove(listener);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Add a general framework listener.
-	 * {@link FrameworkListener}s are notified of general framework events.
-	 * The listener is added to the context bundle's list of listeners.
-	 * See {@link #getBundle() getBundle()}
-	 * for a definition of context bundle.
-	 *
-	 * @param listener The framework listener to add.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 * @see FrameworkEvent
-	 * @see FrameworkListener
-	 */
-	public void addFrameworkListener(FrameworkListener listener) {
-		checkValid();
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("addFrameworkListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		synchronized (framework.frameworkEvent) {
-			checkValid();
-			if (frameworkEvent == null) {
-				frameworkEvent = new CopyOnWriteIdentityMap();
-				framework.frameworkEvent.put(this, this);
-			}
-
-			frameworkEvent.put(listener, listener);
-		}
-	}
-
-	/**
-	 * Remove a framework listener.
-	 * The listener is removed from the context bundle's list of listeners.
-	 * See {@link #getBundle() getBundle()}
-	 * for a definition of context bundle.
-	 *
-	 * <p>If this method is called with a listener which is not registered,
-	 * then this method does nothing.
-	 *
-	 * @param listener The framework listener to remove.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 */
-	public void removeFrameworkListener(FrameworkListener listener) {
-		checkValid();
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("removeFrameworkListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		synchronized (framework.frameworkEvent) {
-			if (frameworkEvent != null) {
-				frameworkEvent.remove(listener);
-			}
-		}
-	}
-
-	/**
-	 * Register a service with multiple names.
-	 * This method registers the given service object with the given properties
-	 * under the given class names.
-	 * A {@link ServiceRegistration} object is returned.
-	 * The {@link ServiceRegistration} object is for the private use of the bundle
-	 * registering the service and should not be shared with other bundles.
-	 * The registering bundle is defined to be the context bundle.
-	 * See {@link #getBundle()} for a definition of context bundle.
-	 * Other bundles can locate the service by using either the
-	 * {@link #getServiceReferences getServiceReferences} or
-	 * {@link #getServiceReference getServiceReference} method.
-	 *
-	 * <p>A bundle can register a service object that implements the
-	 * {@link ServiceFactory} interface to
-	 * have more flexiblity in providing service objects to different
-	 * bundles.
-	 *
-	 * <p>The following steps are followed to register a service:
-	 * <ol>
-	 * <li>If the service parameter is not a {@link ServiceFactory},
-	 * an <code>IllegalArgumentException</code> is thrown if the
-	 * service parameter is not an <code>instanceof</code>
-	 * all the classes named.
-	 * <li>The service is added to the framework's service registry
-	 * and may now be used by other bundles.
-	 * <li>A {@link ServiceEvent} of type {@link ServiceEvent#REGISTERED}
-	 * is synchronously sent.
-	 * <li>A {@link ServiceRegistration} object for this registration
-	 * is returned.
-	 * </ol>
-	 *
-	 * @param clazzes The class names under which the service can be located.
-	 *                The class names in this array will be stored in the service's
-	 *                properties under the key "objectClass".
-	 * @param service The service object or a {@link ServiceFactory} object.
-	 * @param properties The properties for this service.
-	 *        The keys in the properties object must all be Strings.
-	 *        Changes should not be made to this object after calling this method.
-	 *        To update the service's properties call the
-	 *        {@link ServiceRegistration#setProperties ServiceRegistration.setProperties}
-	 *        method.
-	 *        This parameter may be <code>null</code> if the service has no properties.
-	 * @return A {@link ServiceRegistration} object for use by the bundle
-	 *        registering the service to update the
-	 *        service's properties or to unregister the service.
-	 * @exception java.lang.IllegalArgumentException If one of the following is true:
-	 * <ul>
-	 * <li>The service parameter is null.
-	 * <li>The service parameter is not a {@link ServiceFactory} and is not an
-	 * <code>instanceof</code> all the named classes in the clazzes parameter.
-	 * </ul>
-	 * @exception java.lang.SecurityException If the caller does not have
-	 * {@link ServicePermission} permission to "register" the service for
-	 * all the named classes
-	 * and the Java runtime environment supports permissions.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 * @see ServiceRegistration
-	 * @see ServiceFactory
-	 */
-	public ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties) {
-		checkValid();
-
-		return framework.getServiceRegistry().registerService(this, clazzes, service, properties);
-	}
-
-	/**
-	 * Register a service with a single name.
-	 * This method registers the given service object with the given properties
-	 * under the given class name.
-	 *
-	 * <p>This method is otherwise identical to
-	 * {@link #registerService(java.lang.String[], java.lang.Object, java.util.Dictionary)}
-	 * and is provided as a convenience when the service parameter will only be registered
-	 * under a single class name.
-	 *
-	 * @see #registerService(java.lang.String[], java.lang.Object, java.util.Dictionary)
-	 */
-	public ServiceRegistration registerService(String clazz, Object service, Dictionary properties) {
-		String[] clazzes = new String[] {clazz};
-
-		return registerService(clazzes, service, properties);
-	}
-
-	/**
-	 * Returns a list of <tt>ServiceReference</tt> objects. This method returns a list of
-	 * <tt>ServiceReference</tt> objects for services which implement and were registered under
-	 * the specified class and match the specified filter criteria.
-	 *
-	 * <p>The list is valid at the time of the call to this method, however as the Framework is
-	 * a very dynamic environment, services can be modified or unregistered at anytime.
-	 *
-	 * <p><tt>filter</tt> is used to select the registered service whose
-	 * properties objects contain keys and values which satisfy the filter.
-	 * See {@link Filter}for a description of the filter string syntax.
-	 *
-	 * <p>If <tt>filter</tt> is <tt>null</tt>, all registered services
-	 * are considered to match the filter.
-	 * <p>If <tt>filter</tt> cannot be parsed, an {@link InvalidSyntaxException} will
-	 * be thrown with a human readable message where the filter became unparsable.
-	 *
-	 * <p>The following steps are required to select a service:
-	 * <ol>
-	 * <li>If the Java Runtime Environment supports permissions, the caller is checked for the
-	 * <tt>ServicePermission</tt> to get the service with the specified class.
-	 * If the caller does not have the correct permission, <tt>null</tt> is returned.
-	 * <li>If the filter string is not <tt>null</tt>, the filter string is
-	 * parsed and the set of registered services which satisfy the filter is
-	 * produced.
-	 * If the filter string is <tt>null</tt>, then all registered services
-	 * are considered to satisfy the filter.
-	 * <li>If <code>clazz</code> is not <tt>null</tt>, the set is further reduced to
-	 * those services which are an <tt>instanceof</tt> and were registered under the specified class.
-	 * The complete list of classes of which a service is an instance and which
-	 * were specified when the service was registered is available from the
-	 * service's {@link Constants#OBJECTCLASS}property.
-	 * <li>An array of <tt>ServiceReference</tt> to the selected services is returned.
-	 * </ol>
-	 *
-	 * @param clazz The class name with which the service was registered, or
-	 * <tt>null</tt> for all services.
-	 * @param filter The filter criteria.
-	 * @return An array of <tt>ServiceReference</tt> objects, or
-	 * <tt>null</tt> if no services are registered which satisfy the search.
-	 * @exception InvalidSyntaxException If <tt>filter</tt> contains
-	 * an invalid filter string which cannot be parsed.
-	 */
-	public ServiceReference[] getServiceReferences(String clazz, String filter) throws InvalidSyntaxException {
-		checkValid();
-		return framework.getServiceRegistry().getServiceReferences(this, clazz, filter, false);
-	}
-
-	public ServiceReference[] getAllServiceReferences(String clazz, String filter) throws InvalidSyntaxException {
-		checkValid();
-		return framework.getServiceRegistry().getServiceReferences(this, clazz, filter, true);
-	}
-
-	/**
-	 * Get a service reference.
-	 * Retrieves a {@link ServiceReference} for a service
-	 * which implements the named class.
-	 *
-	 * <p>This reference is valid at the time
-	 * of the call to this method, but since the framework is a very dynamic
-	 * environment, services can be modified or unregistered at anytime.
-	 *
-	 * <p>This method is provided as a convenience for when the caller is
-	 * interested in any service which implements a named class. This method is
-	 * the same as calling {@link #getServiceReferences getServiceReferences}
-	 * with a <code>null</code> filter string but only a single {@link ServiceReference}
-	 * is returned.
-	 *
-	 * @param clazz The class name which the service must implement.
-	 * @return A {@link ServiceReference} object, or <code>null</code>
-	 * if no services are registered which implement the named class.
-	 * @see #getServiceReferences
-	 */
-	public ServiceReference getServiceReference(String clazz) {
-		checkValid();
-
-		return framework.getServiceRegistry().getServiceReference(this, clazz);
-	}
-
-	/**
-	 * Get a service's service object.
-	 * Retrieves the service object for a service.
-	 * A bundle's use of a service is tracked by a
-	 * use count. Each time a service's service object is returned by
-	 * {@link #getService}, the context bundle's use count for the service
-	 * is incremented by one. Each time the service is release by
-	 * {@link #ungetService}, the context bundle's use count
-	 * for the service is decremented by one.
-	 * When a bundle's use count for a service
-	 * drops to zero, the bundle should no longer use the service.
-	 * See {@link #getBundle()} for a definition of context bundle.
-	 *
-	 * <p>This method will always return <code>null</code> when the
-	 * service associated with this reference has been unregistered.
-	 *
-	 * <p>The following steps are followed to get the service object:
-	 * <ol>
-	 * <li>If the service has been unregistered,
-	 * <code>null</code> is returned.
-	 * <li>The context bundle's use count for this service is incremented by one.
-	 * <li>If the context bundle's use count for the service is now one and
-	 * the service was registered with a {@link ServiceFactory},
-	 * the {@link ServiceFactory#getService ServiceFactory.getService} method
-	 * is called to create a service object for the context bundle.
-	 * This service object is cached by the framework.
-	 * While the context bundle's use count for the service is greater than zero,
-	 * subsequent calls to get the services's service object for the context bundle
-	 * will return the cached service object.
-	 * <br>If the service object returned by the {@link ServiceFactory}
-	 * is not an <code>instanceof</code>
-	 * all the classes named when the service was registered or
-	 * the {@link ServiceFactory} throws an exception,
-	 * <code>null</code> is returned and a
-	 * {@link FrameworkEvent} of type {@link FrameworkEvent#ERROR} is broadcast.
-	 * <li>The service object for the service is returned.
-	 * </ol>
-	 *
-	 * @param reference A reference to the service whose service object is desired.
-	 * @return A service object for the service associated with this
-	 * reference, or <code>null</code> if the service is not registered.
-	 * @exception java.lang.SecurityException If the caller does not have
-	 * {@link ServicePermission} permission to "get" the service
-	 * using at least one of the named classes the service was registered under
-	 * and the Java runtime environment supports permissions.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 * @see #ungetService
-	 * @see ServiceFactory
-	 */
-	public Object getService(ServiceReference reference) {
-		checkValid();
-		if (reference == null)
-			throw new NullPointerException("A null service reference is not allowed."); //$NON-NLS-1$
-		synchronized (contextLock) {
-			if (servicesInUse == null)
-				// Cannot predict how many services a bundle will use, start with a small table.
-				servicesInUse = new HashMap(10);
-		}
-
-		return framework.getServiceRegistry().getService(this, (ServiceReferenceImpl) reference);
-	}
-
-	/**
-	 * Unget a service's service object.
-	 * Releases the service object for a service.
-	 * If the context bundle's use count for the service is zero, this method
-	 * returns <code>false</code>. Otherwise, the context bundle's use count for the
-	 * service is decremented by one.
-	 * See {@link #getBundle()} for a definition of context bundle.
-	 *
-	 * <p>The service's service object
-	 * should no longer be used and all references to it should be destroyed
-	 * when a bundle's use count for the service
-	 * drops to zero.
-	 *
-	 * <p>The following steps are followed to unget the service object:
-	 * <ol>
-	 * <li>If the context bundle's use count for the service is zero or
-	 * the service has been unregistered,
-	 * <code>false</code> is returned.
-	 * <li>The context bundle's use count for this service is decremented by one.
-	 * <li>If the context bundle's use count for the service is now zero and
-	 * the service was registered with a {@link ServiceFactory},
-	 * the {@link ServiceFactory#ungetService ServiceFactory.ungetService} method
-	 * is called to release the service object for the context bundle.
-	 * <li><code>true</code> is returned.
-	 * </ol>
-	 *
-	 * @param reference A reference to the service to be released.
-	 * @return <code>false</code> if the context bundle's use count for the service
-	 *         is zero or if the service has been unregistered,
-	 *         otherwise <code>true</code>.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 * @see #getService
-	 * @see ServiceFactory
-	 */
-	public boolean ungetService(ServiceReference reference) {
-		checkValid();
-
-		return framework.getServiceRegistry().ungetService(this, (ServiceReferenceImpl) reference);
-	}
-
-	/**
-	 * Creates a <code>File</code> object for a file in the
-	 * persistent storage area provided for the bundle by the framework.
-	 * If the adaptor does not have file system support, this method will
-	 * return <code>null</code>.
-	 *
-	 * <p>A <code>File</code> object for the base directory of the
-	 * persistent storage area provided for the context bundle by the framework
-	 * can be obtained by calling this method with the empty string ("")
-	 * as the parameter.
-	 * See {@link #getBundle()} for a definition of context bundle.
-	 *
-	 * <p>If the Java runtime environment supports permissions,
-	 * the framework the will ensure that the bundle has
-	 * <code>java.io.FilePermission</code> with actions
-	 * "read","write","execute","delete" for all files (recursively) in the
-	 * persistent storage area provided for the context bundle by the framework.
-	 *
-	 * @param filename A relative name to the file to be accessed.
-	 * @return A <code>File</code> object that represents the requested file or
-	 * <code>null</code> if the adaptor does not have file system support.
-	 * @exception java.lang.IllegalStateException
-	 * If the bundle context has stopped.
-	 */
-	public File getDataFile(String filename) {
-		checkValid();
-
-		return (framework.getDataFile(bundle, filename));
-	}
-
-	/**
-	 * Call bundle's BundleActivator.start()
-	 * This method is called by Bundle.startWorker to start the bundle.
-	 *
-	 * @exception BundleException if
-	 *            the bundle has a class that implements the BundleActivator interface,
-	 *            but Framework couldn't instantiate it, or the BundleActivator.start()
-	 *            method failed
-	 */
-	protected void start() throws BundleException {
-		activator = bundle.loadBundleActivator();
-
-		if (activator != null) {
-			try {
-				startActivator(activator);
-			} catch (BundleException be) {
-				activator = null;
-				throw be;
-			}
-		}
-
-		/* activator completed successfully. We must use this
-		 same activator object when we stop this bundle. */
-	}
-
-	/**
-	 * Calls the start method of a BundleActivator.
-	 * @param bundleActivator that activator to start
-	 */
-	protected void startActivator(final BundleActivator bundleActivator) throws BundleException {
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logEnter("BundleContextImpl.startActivator()", null); //$NON-NLS-1$
-		try {
-			AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws Exception {
-					if (bundleActivator != null) {
-						if (Profile.PROFILE && Profile.STARTUP)
-							Profile.logTime("BundleContextImpl.startActivator()", "calling " + bundle.getLocation() + " bundle activator"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-						// make sure the context class loader is set correctly
-						Object previousTCCL = setContextFinder();
-						/* Start the bundle synchronously */
-						try {
-							bundleActivator.start(BundleContextImpl.this);
-						} finally {
-							if (previousTCCL != Boolean.FALSE)
-								Thread.currentThread().setContextClassLoader((ClassLoader) previousTCCL);
-						}
-						if (Profile.PROFILE && Profile.STARTUP)
-							Profile.logTime("BundleContextImpl.startActivator()", "returned from " + bundle.getLocation() + " bundle activator"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-					}
-					return null;
-				}
-			});
-		} catch (Throwable t) {
-			if (t instanceof PrivilegedActionException) {
-				t = ((PrivilegedActionException) t).getException();
-			}
-
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.printStackTrace(t);
-			}
-
-			String clazz = null;
-			clazz = bundleActivator.getClass().getName();
-
-			throw new BundleException(NLS.bind(Msg.BUNDLE_ACTIVATOR_EXCEPTION, new Object[] {clazz, "start", bundle.getSymbolicName() == null ? "" + bundle.getBundleId() : bundle.getSymbolicName()}), BundleException.ACTIVATOR_ERROR, t); //$NON-NLS-1$ //$NON-NLS-2$ 
-		} finally {
-			if (Profile.PROFILE && Profile.STARTUP)
-				Profile.logExit("BundleContextImpl.startActivator()"); //$NON-NLS-1$
-		}
-	}
-
-	Object setContextFinder() {
-		if (!SET_TCCL)
-			return Boolean.FALSE;
-		Thread currentThread = Thread.currentThread();
-		ClassLoader previousTCCL = currentThread.getContextClassLoader();
-		ClassLoader contextFinder = framework.getContextFinder();
-		if (previousTCCL != contextFinder) {
-			currentThread.setContextClassLoader(framework.getContextFinder());
-			return previousTCCL;
-		}
-		return Boolean.FALSE;
-	}
-
-	/**
-	 * Call bundle's BundleActivator.stop()
-	 * This method is called by Bundle.stopWorker to stop the bundle.
-	 *
-	 * @exception BundleException if
-	 *            the bundle has a class that implements the BundleActivator interface,
-	 *            and the BundleActivator.stop() method failed
-	 */
-	protected void stop() throws BundleException {
-		try {
-			AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws Exception {
-					if (activator != null) {
-						// make sure the context class loader is set correctly
-						Object previousTCCL = setContextFinder();
-						try {
-							/* Stop the bundle synchronously */
-							activator.stop(BundleContextImpl.this);
-						} finally {
-							if (previousTCCL != Boolean.FALSE)
-								Thread.currentThread().setContextClassLoader((ClassLoader) previousTCCL);
-						}
-					}
-					return null;
-				}
-			});
-		} catch (Throwable t) {
-			if (t instanceof PrivilegedActionException) {
-				t = ((PrivilegedActionException) t).getException();
-			}
-
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.printStackTrace(t);
-			}
-
-			String clazz = (activator == null) ? "" : activator.getClass().getName(); //$NON-NLS-1$
-
-			throw new BundleException(NLS.bind(Msg.BUNDLE_ACTIVATOR_EXCEPTION, new Object[] {clazz, "stop", bundle.getSymbolicName() == null ? "" + bundle.getBundleId() : bundle.getSymbolicName()}), BundleException.ACTIVATOR_ERROR, t); //$NON-NLS-1$ //$NON-NLS-2$ 
-		} finally {
-			activator = null;
-		}
-	}
-
-	/** 
-	 * Return the map of ServiceRegistrationImpl to ServiceUse for services being
-	 * used by this context.
-	 * @return A map of ServiceRegistrationImpl to ServiceUse for services in use by 
-	 * this context.
-	 */
-	public Map getServicesInUseMap() {
-		synchronized (contextLock) {
-			return servicesInUse;
-		}
-	}
-
-	/**
-	 * Bottom level event dispatcher for the BundleContext.
-	 *
-	 * @param originalListener listener object registered under.
-	 * @param l listener to call (may be filtered).
-	 * @param action Event class type
-	 * @param object Event object
-	 */
-	public void dispatchEvent(Object originalListener, Object l, int action, Object object) {
-		// save the bundle ref to a local variable 
-		// to avoid interference from another thread closing this context
-		AbstractBundle tmpBundle = bundle;
-		Object previousTCCL = setContextFinder();
-		try {
-			if (isValid()) /* if context still valid */{
-				switch (action) {
-					case Framework.BUNDLEEVENT :
-					case Framework.BUNDLEEVENTSYNC : {
-						BundleListener listener = (BundleListener) l;
-
-						if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-							String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-							Debug.println("dispatchBundleEvent[" + tmpBundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						}
-
-						BundleEvent event = (BundleEvent) object;
-						switch (event.getType()) {
-							case Framework.BATCHEVENT_BEGIN : {
-								if (listener instanceof BatchBundleListener)
-									((BatchBundleListener) listener).batchBegin();
-								break;
-							}
-							case Framework.BATCHEVENT_END : {
-								if (listener instanceof BatchBundleListener)
-									((BatchBundleListener) listener).batchEnd();
-								break;
-							}
-							default : {
-								listener.bundleChanged((BundleEvent) object);
-							}
-						}
-						break;
-					}
-
-					case ServiceRegistry.SERVICEEVENT : {
-						ServiceEvent event = (ServiceEvent) object;
-
-						ServiceListener listener = (ServiceListener) l;
-						if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-							String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-							Debug.println("dispatchServiceEvent[" + tmpBundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						}
-						listener.serviceChanged(event);
-
-						break;
-					}
-
-					case Framework.FRAMEWORKEVENT : {
-						FrameworkListener listener = (FrameworkListener) l;
-
-						if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-							String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-							Debug.println("dispatchFrameworkEvent[" + tmpBundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						}
-
-						listener.frameworkEvent((FrameworkEvent) object);
-						break;
-					}
-					default : {
-						throw new InternalError();
-					}
-				}
-			}
-		} catch (Throwable t) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Exception in bottom level event dispatcher: " + t.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(t);
-			}
-			// allow the adaptor to handle this unexpected error
-			framework.adaptor.handleRuntimeError(t);
-			publisherror: {
-				if (action == Framework.FRAMEWORKEVENT) {
-					FrameworkEvent event = (FrameworkEvent) object;
-					if (event.getType() == FrameworkEvent.ERROR) {
-						break publisherror; // avoid infinite loop
-					}
-				}
-
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, tmpBundle, t);
-			}
-		} finally {
-			if (previousTCCL != Boolean.FALSE)
-				Thread.currentThread().setContextClassLoader((ClassLoader) previousTCCL);
-		}
-	}
-
-	/**
-	 * Construct a Filter object. This filter object may be used
-	 * to match a ServiceReference or a Dictionary.
-	 * See Filter
-	 * for a description of the filter string syntax.
-	 *
-	 * @param filter The filter string.
-	 * @return A Filter object encapsulating the filter string.
-	 * @exception InvalidSyntaxException If the filter parameter contains
-	 * an invalid filter string which cannot be parsed.
-	 */
-	public Filter createFilter(String filter) throws InvalidSyntaxException {
-		checkValid();
-
-		return FilterImpl.newInstance(filter);
-	}
-
-	/**
-	 * This method checks that the context is still valid. If the context is
-	 * no longer valid, an IllegalStateException is thrown.
-	 *
-	 * @exception java.lang.IllegalStateException
-	 * If the context bundle has stopped.
-	 */
-	public void checkValid() {
-		if (!isValid()) {
-			throw new IllegalStateException(Msg.BUNDLE_CONTEXT_INVALID_EXCEPTION);
-		}
-	}
-
-	/**
-	 * This method checks that the context is still valid. 
-	 *
-	 * @return true if the context is still valid; false otherwise
-	 */
-	protected boolean isValid() {
-		return valid;
-	}
-
-	public Framework getFramework() {
-		return framework;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleFragment.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleFragment.java
deleted file mode 100644
index 453360a..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleFragment.java
+++ /dev/null
@@ -1,338 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class BundleFragment extends AbstractBundle {
-
-	/** The resolved host that this fragment is attached to */
-	protected BundleHost[] hosts;
-
-	/**
-	 * @param bundledata
-	 * @param framework
-	 * @throws BundleException
-	 */
-	public BundleFragment(BundleData bundledata, Framework framework) throws BundleException {
-		super(bundledata, framework);
-		hosts = null;
-	}
-
-	/**
-	 * Load the bundle.
-	 */
-	protected void load() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (INSTALLED)) == 0) {
-				Debug.println("Bundle.load called when state != INSTALLED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		if (framework.isActive()) {
-			SecurityManager sm = System.getSecurityManager();
-			if (sm != null && framework.securityAdmin != null) {
-				domain = framework.securityAdmin.createProtectionDomain(this);
-			}
-		}
-	}
-
-	/**
-	 * Reload from a new bundle.
-	 * This method must be called while holding the bundles lock.
-	 *
-	 * @param newBundle Dummy Bundle which contains new data.
-	 * @return  true if an exported package is "in use". i.e. it has been imported by a bundle
-	 */
-	protected boolean reload(AbstractBundle newBundle) {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (INSTALLED | RESOLVED)) == 0) {
-				Debug.println("Bundle.reload called when state != INSTALLED | RESOLVED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		boolean exporting = false;
-		if (framework.isActive()) {
-			if (hosts != null) {
-				if (state == RESOLVED) {
-					// add the bundle data to the list of removals
-					framework.packageAdmin.addRemovalPending(bundledata);
-					exporting = true; // if we have a host we cannot be removed until the host is refreshed
-					hosts = null;
-					state = INSTALLED;
-				}
-			}
-		} else {
-			/* close the outgoing jarfile */
-			try {
-				this.bundledata.close();
-			} catch (IOException e) {
-				// Do Nothing
-			}
-		}
-		if (!exporting) {
-			/* close the outgoing jarfile */
-			try {
-				this.bundledata.close();
-			} catch (IOException e) {
-				// Do Nothing
-			}
-		}
-
-		this.bundledata = newBundle.bundledata;
-		this.bundledata.setBundle(this);
-		// create a new domain for the bundle because its signers/symbolic-name may have changed
-		if (framework.isActive() && System.getSecurityManager() != null && framework.securityAdmin != null)
-			domain = framework.securityAdmin.createProtectionDomain(this);
-		return (exporting);
-	}
-
-	/**
-	 * Refresh the bundle. This is called by Framework.refreshPackages.
-	 * This method must be called while holding the bundles lock.
-	 * this.loader.unimportPackages must have already been called before calling
-	 * this method!
-	 */
-	protected void refresh() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (UNINSTALLED | INSTALLED | RESOLVED)) == 0) {
-				Debug.println("Bundle.refresh called when state != UNINSTALLED | INSTALLED | RESOLVED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		if (state == RESOLVED) {
-			hosts = null;
-			state = INSTALLED;
-			// Do not publish UNRESOLVED event here.  This is done by caller 
-			// to resolve if appropriate.
-		}
-		manifestLocalization = null;
-	}
-
-	/**
-	 * Unload the bundle.
-	 * This method must be called while holding the bundles lock.
-	 *
-	 * @return  true if an exported package is "in use". i.e. it has been imported by a bundle
-	 */
-	protected boolean unload() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (UNINSTALLED | INSTALLED | RESOLVED)) == 0) {
-				Debug.println("Bundle.unload called when state != UNINSTALLED | INSTALLED | RESOLVED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		boolean exporting = false;
-		if (framework.isActive()) {
-			if (hosts != null) {
-				if (state == RESOLVED) {
-					// add the bundle data to the list of removals
-					framework.packageAdmin.addRemovalPending(bundledata);
-					exporting = true; // if we have a host we cannot be removed until the host is refreshed
-					hosts = null;
-					state = INSTALLED;
-				}
-				domain = null;
-			}
-		}
-		if (!exporting) {
-			try {
-				this.bundledata.close();
-			} catch (IOException e) { // Do Nothing.
-			}
-		}
-
-		return (exporting);
-	}
-
-	/**
-	 * This method loads a class from the bundle.
-	 *
-	 * @param      name     the name of the desired Class.
-	 * @param      checkPermission indicates whether a permission check should be done.
-	 * @return     the resulting Class
-	 * @exception  java.lang.ClassNotFoundException  if the class definition was not found.
-	 */
-	protected Class loadClass(String name, boolean checkPermission) throws ClassNotFoundException {
-		if (checkPermission) {
-			try {
-				framework.checkAdminPermission(this, AdminPermission.CLASS);
-			} catch (SecurityException e) {
-				throw new ClassNotFoundException(name, e);
-			}
-			checkValid();
-		}
-		// cannot load a class from a fragment because there is no classloader
-		// associated with fragments.
-		throw new ClassNotFoundException(NLS.bind(Msg.BUNDLE_FRAGMENT_CNFE, name));
-	}
-
-	/**
-	 * Find the specified resource in this bundle.
-	 *
-	 * This bundle's class loader is called to search for the named resource.
-	 * If this bundle's state is <tt>INSTALLED</tt>, then only this bundle will
-	 * be searched for the specified resource. Imported packages cannot be searched
-	 * when a bundle has not been resolved.
-	 *
-	 * @param name The name of the resource.
-	 * See <tt>java.lang.ClassLoader.getResource</tt> for a description of
-	 * the format of a resource name.
-	 * @return a URL to the named resource, or <tt>null</tt> if the resource could
-	 * not be found or if the caller does not have
-	 * the <tt>AdminPermission</tt>, and the Java Runtime Environment supports permissions.
-	 * 
-	 * @exception java.lang.IllegalStateException If this bundle has been uninstalled.
-	 */
-	public URL getResource(String name) {
-		checkValid();
-		// cannot get a resource for a fragment because there is no classloader
-		// associated with fragments.
-		return (null);
-
-	}
-
-	public Enumeration getResources(String name) {
-		checkValid();
-		// cannot get a resource for a fragment because there is no classloader
-		// associated with fragments.
-		return null;
-	}
-
-	/**
-	 * Internal worker to start a bundle.
-	 *
-	 * @param options
-	 */
-	protected void startWorker(int options) throws BundleException {
-		throw new BundleException(NLS.bind(Msg.BUNDLE_FRAGMENT_START, this), BundleException.INVALID_OPERATION);
-	}
-
-	/**
-	 * Internal worker to stop a bundle.
-	 *
-	 * @param options
-	 */
-	protected void stopWorker(int options) throws BundleException {
-		throw new BundleException(NLS.bind(Msg.BUNDLE_FRAGMENT_STOP, this), BundleException.INVALID_OPERATION);
-	}
-
-	/**
-	 * Provides a list of {@link ServiceReference}s for the services
-	 * registered by this bundle
-	 * or <code>null</code> if the bundle has no registered
-	 * services.
-	 *
-	 * <p>The list is valid at the time
-	 * of the call to this method, but the framework is a very dynamic
-	 * environment and services can be modified or unregistered at anytime.
-	 *
-	 * @return An array of {@link ServiceReference} or <code>null</code>.
-	 * @exception java.lang.IllegalStateException If the
-	 * bundle has been uninstalled.
-	 * @see ServiceRegistration
-	 * @see ServiceReference
-	 */
-	public ServiceReference[] getRegisteredServices() {
-		checkValid();
-		// Fragments cannot have a BundleContext and therefore
-		// cannot have any services registered.
-		return null;
-	}
-
-	/**
-	 * Provides a list of {@link ServiceReference}s for the
-	 * services this bundle is using,
-	 * or <code>null</code> if the bundle is not using any services.
-	 * A bundle is considered to be using a service if the bundle's
-	 * use count for the service is greater than zero.
-	 *
-	 * <p>The list is valid at the time
-	 * of the call to this method, but the framework is a very dynamic
-	 * environment and services can be modified or unregistered at anytime.
-	 *
-	 * @return An array of {@link ServiceReference} or <code>null</code>.
-	 * @exception java.lang.IllegalStateException If the
-	 * bundle has been uninstalled.
-	 * @see ServiceReference
-	 */
-	public ServiceReference[] getServicesInUse() {
-		checkValid();
-		// Fragments cannot have a BundleContext and therefore
-		// cannot have any services in use.
-		return null;
-	}
-
-	synchronized BundleHost[] getHosts() {
-		return hosts;
-	}
-
-	protected boolean isFragment() {
-		return true;
-	}
-
-	/**
-	 * Adds a host bundle for this fragment.
-	 * @param host the BundleHost to add to the set of host bundles
-	 */
-	boolean addHost(BundleHost host) {
-		if (host == null)
-			return false;
-		try {
-			host.attachFragment(this);
-		} catch (BundleException be) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, host, be);
-			return false;
-		}
-		synchronized (this) {
-			if (hosts == null) {
-				hosts = new BundleHost[] {host};
-				return true;
-			}
-			for (int i = 0; i < hosts.length; i++) {
-				if (host == hosts[i])
-					return true; // already a host
-			}
-			BundleHost[] newHosts = new BundleHost[hosts.length + 1];
-			System.arraycopy(hosts, 0, newHosts, 0, hosts.length);
-			newHosts[newHosts.length - 1] = host;
-			hosts = newHosts;
-		}
-		return true;
-	}
-
-	protected BundleLoader getBundleLoader() {
-		// Fragments cannot have a BundleLoader.
-		return null;
-	}
-
-	/**
-	 * Return the current context for this bundle.
-	 *
-	 * @return BundleContext for this bundle.
-	 */
-	protected BundleContextImpl getContext() {
-		// Fragments cannot have a BundleContext.
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleHost.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleHost.java
deleted file mode 100644
index 4e40f9b..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleHost.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class BundleHost extends AbstractBundle {
-	public static final int LAZY_TRIGGER = 0x40000000;
-	/** 
-	 * The BundleLoader proxy; a lightweight object that acts as a proxy
-	 * to the BundleLoader and allows lazy creation of the BundleLoader object
-	 */
-	private BundleLoaderProxy proxy;
-
-	/** The BundleContext that represents this Bundle and all of its fragments */
-	protected BundleContextImpl context;
-
-	/** The List of BundleFragments */
-	protected BundleFragment[] fragments;
-
-	public BundleHost(BundleData bundledata, Framework framework) throws BundleException {
-		super(bundledata, framework);
-		context = null;
-		fragments = null;
-	}
-
-	/**
-	 * Load the bundle.
-	 */
-	protected void load() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (INSTALLED)) == 0) {
-				Debug.println("Bundle.load called when state != INSTALLED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-			if (proxy != null) {
-				Debug.println("Bundle.load called when proxy != null: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		if (framework.isActive()) {
-			SecurityManager sm = System.getSecurityManager();
-			if (sm != null && framework.securityAdmin != null) {
-				domain = framework.securityAdmin.createProtectionDomain(this);
-			}
-		}
-		proxy = null;
-	}
-
-	/**
-	 * Reload from a new bundle.
-	 * This method must be called while holding the bundles lock.
-	 *
-	 * @param newBundle Dummy Bundle which contains new data.
-	 * @return  true if an exported package is "in use". i.e. it has been imported by a bundle
-	 */
-	protected boolean reload(AbstractBundle newBundle) {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (INSTALLED | RESOLVED)) == 0) {
-				Debug.println("Bundle.reload called when state != INSTALLED | RESOLVED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		boolean exporting = false;
-
-		if (framework.isActive()) {
-			if (state == RESOLVED) {
-				BundleLoaderProxy curProxy = getLoaderProxy();
-				exporting = curProxy.inUse();
-				if (exporting) {
-					// add the bundle data to the list of removals
-					framework.packageAdmin.addRemovalPending(bundledata);
-					// make sure the BundleLoader is created.
-					curProxy.getBundleLoader().createClassLoader();
-				} else
-					BundleLoader.closeBundleLoader(proxy);
-				state = INSTALLED;
-				proxy = null;
-				fragments = null;
-			}
-
-		} else {
-			/* close the outgoing jarfile */
-			try {
-				this.bundledata.close();
-			} catch (IOException e) {
-				// Do Nothing
-			}
-		}
-		this.bundledata = newBundle.bundledata;
-		this.bundledata.setBundle(this);
-		// create a new domain for the bundle because its signers/symbolic-name may have changed
-		if (framework.isActive() && System.getSecurityManager() != null && framework.securityAdmin != null)
-			domain = framework.securityAdmin.createProtectionDomain(this);
-		return (exporting);
-	}
-
-	/**
-	 * Refresh the bundle. This is called by Framework.refreshPackages.
-	 * This method must be called while holding the bundles lock.
-	 */
-	protected void refresh() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (UNINSTALLED | INSTALLED | RESOLVED)) == 0) {
-				Debug.println("Bundle.reload called when state != UNINSTALLED | INSTALLED | RESOLVED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-		if (state == RESOLVED) {
-			BundleLoader.closeBundleLoader(proxy);
-			proxy = null;
-			fragments = null;
-			state = INSTALLED;
-			// Do not publish UNRESOLVED event here.  This is done by caller 
-			// to resolve if appropriate.
-		}
-		manifestLocalization = null;
-	}
-
-	/**
-	 * Unload the bundle.
-	 * This method must be called while holding the bundles lock.
-	 *
-	 * @return  true if an exported package is "in use". i.e. it has been imported by a bundle
-	 */
-	protected boolean unload() {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (UNINSTALLED | INSTALLED | RESOLVED)) == 0) {
-				Debug.println("Bundle.unload called when state != UNINSTALLED | INSTALLED | RESOLVED: " + this); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		boolean exporting = false;
-
-		if (framework.isActive()) {
-			if (state == RESOLVED) {
-				BundleLoaderProxy curProxy = getLoaderProxy();
-				exporting = curProxy.inUse();
-				if (exporting) {
-					// add the bundle data to the list of removals
-					framework.packageAdmin.addRemovalPending(bundledata);
-					// make sure the BundleLoader is created.
-					curProxy.getBundleLoader().createClassLoader();
-				} else
-					BundleLoader.closeBundleLoader(proxy);
-
-				state = INSTALLED;
-				proxy = null;
-				fragments = null;
-				domain = null;
-			}
-		}
-		if (!exporting) {
-			try {
-				this.bundledata.close();
-			} catch (IOException e) { // Do Nothing.
-			}
-		}
-
-		return (exporting);
-	}
-
-	private BundleLoader checkLoader() {
-		checkValid();
-
-		// check to see if the bundle is resolved
-		if (!isResolved()) {
-			if (!framework.packageAdmin.resolveBundles(new Bundle[] {this})) {
-				return null;
-			}
-		}
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			if ((state & (STARTING | ACTIVE | STOPPING | RESOLVED)) == 0) {
-				Debug.println("Bundle.checkLoader() called when state != STARTING | ACTIVE | STOPPING | RESOLVED: " + this); //$NON-NLS-1$ 
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-
-		BundleLoader loader = getBundleLoader();
-		if (loader == null) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Bundle.checkLoader() called when loader == null: " + this); //$NON-NLS-1$ 
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-			return null;
-		}
-		return loader;
-	}
-
-	/**
-	 * This method loads a class from the bundle.
-	 *
-	 * @param      name     the name of the desired Class.
-	 * @param      checkPermission indicates whether a permission check should be done.
-	 * @return     the resulting Class
-	 * @exception  java.lang.ClassNotFoundException  if the class definition was not found.
-	 */
-	protected Class loadClass(String name, boolean checkPermission) throws ClassNotFoundException {
-		if (checkPermission) {
-			try {
-				framework.checkAdminPermission(this, AdminPermission.CLASS);
-			} catch (SecurityException e) {
-				throw new ClassNotFoundException(name, e);
-			}
-		}
-		BundleLoader loader = checkLoader();
-		if (loader == null)
-			throw new ClassNotFoundException(NLS.bind(Msg.BUNDLE_CNFE_NOT_RESOLVED, name, getBundleData().getLocation()));
-		try {
-			return (loader.loadClass(name));
-		} catch (ClassNotFoundException e) {
-			// this is to support backward compatibility in eclipse
-			// we always attempted to start a bundle even if the class was not found
-			if (!(e instanceof StatusException) && (bundledata.getStatus() & Constants.BUNDLE_LAZY_START) != 0 && !testStateChanging(Thread.currentThread()))
-				try {
-					// only start the bundle if this is a simple CNFE
-					loader.setLazyTrigger();
-				} catch (BundleException be) {
-					framework.adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, be.getMessage(), 0, be, null));
-				}
-			throw e;
-		}
-	}
-
-	/**
-	 * Find the specified resource in this bundle.
-	 *
-	 * This bundle's class loader is called to search for the named resource.
-	 * If this bundle's state is <tt>INSTALLED</tt>, then only this bundle will
-	 * be searched for the specified resource. Imported packages cannot be searched
-	 * when a bundle has not been resolved.
-	 *
-	 * @param name The name of the resource.
-	 * See <tt>java.lang.ClassLoader.getResource</tt> for a description of
-	 * the format of a resource name.
-	 * @return a URL to the named resource, or <tt>null</tt> if the resource could
-	 * not be found or if the caller does not have
-	 * the <tt>AdminPermission</tt>, and the Java Runtime Environment supports permissions.
-	 * 
-	 * @exception java.lang.IllegalStateException If this bundle has been uninstalled.
-	 */
-	public URL getResource(String name) {
-		BundleLoader loader = null;
-		try {
-			framework.checkAdminPermission(this, AdminPermission.RESOURCE);
-		} catch (SecurityException ee) {
-			return null;
-		}
-		loader = checkLoader();
-		if (loader == null)
-			return null;
-		return (loader.findResource(name));
-	}
-
-	public Enumeration getResources(String name) throws IOException {
-		BundleLoader loader = null;
-		try {
-			framework.checkAdminPermission(this, AdminPermission.RESOURCE);
-		} catch (SecurityException ee) {
-			return null;
-		}
-		loader = checkLoader();
-		if (loader == null)
-			return null;
-		Enumeration result = loader.getResources(name);
-		if (result != null && result.hasMoreElements())
-			return result;
-		return null;
-	}
-
-	/**
-	 * Internal worker to start a bundle.
-	 *
-	 * @param options the start options
-	 */
-	protected void startWorker(int options) throws BundleException {
-		if ((options & START_TRANSIENT) == 0) {
-			setStatus(Constants.BUNDLE_STARTED, true);
-			setStatus(Constants.BUNDLE_ACTIVATION_POLICY, (options & START_ACTIVATION_POLICY) != 0);
-			if (Debug.DEBUG && Debug.MONITOR_ACTIVATION)
-				new Exception("A persistent start has been called on bundle: " + getBundleData()).printStackTrace(); //$NON-NLS-1$
-		}
-		if (!framework.active || (state & ACTIVE) != 0)
-			return;
-		if (getStartLevel() > framework.startLevelManager.getStartLevel()) {
-			if ((options & LAZY_TRIGGER) == 0 && (options & START_TRANSIENT) != 0) {
-				// throw exception if this is a transient start
-				String msg = NLS.bind(Msg.BUNDLE_TRANSIENT_START_ERROR, this);
-				// Use a StatusException to indicate to the lazy starter that this should result in a warning
-				throw new BundleException(msg, BundleException.INVALID_OPERATION, new BundleStatusException(msg, StatusException.CODE_WARNING, this));
-			}
-			return;
-		}
-
-		if (state == INSTALLED) {
-			if (!framework.packageAdmin.resolveBundles(new Bundle[] {this}))
-				throw getResolutionFailureException();
-		}
-
-		if ((options & START_ACTIVATION_POLICY) != 0 && (bundledata.getStatus() & Constants.BUNDLE_LAZY_START) != 0) {
-			// the bundle must use the activation policy here.
-			if ((state & RESOLVED) != 0) {
-				// now we must publish the LAZY_ACTIVATION event and return
-				state = STARTING;
-				// release the state change lock before sending lazy activation event (bug 258659)
-				completeStateChange();
-				framework.publishBundleEvent(BundleEvent.LAZY_ACTIVATION, this);
-			}
-			return;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("Bundle: Active sl = " + framework.startLevelManager.getStartLevel() + "; Bundle " + getBundleId() + " sl = " + getStartLevel()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		if ((options & LAZY_TRIGGER) != 0) {
-			if ((state & RESOLVED) != 0) {
-				// Should publish the lazy activation event here before the starting event
-				// This can happen if another bundle in the same start-level causes a class load from the lazy start bundle.
-				state = STARTING;
-				// release the state change lock before sending lazy activation event (bug 258659)
-				completeStateChange();
-				framework.publishBundleEvent(BundleEvent.LAZY_ACTIVATION, this);
-				beginStateChange();
-				if (state != STARTING) {
-					// while firing the LAZY_ACTIVATION event some one else caused the bundle to transition
-					// out of STARTING.  This could have happened because some listener called start on the bundle
-					// or another class load could have caused the start trigger to get fired again.
-					return;
-				}
-			}
-		}
-		state = STARTING;
-		framework.publishBundleEvent(BundleEvent.STARTING, this);
-		context = getContext();
-		//STARTUP TIMING Start here		
-		long start = 0;
-		if (Debug.DEBUG) {
-			BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();
-			if (bundleStats != null)
-				bundleStats.watchBundle(this, BundleWatcher.START_ACTIVATION);
-			if (Debug.DEBUG_BUNDLE_TIME) {
-				start = System.currentTimeMillis();
-				System.out.println("Starting " + getSymbolicName()); //$NON-NLS-1$
-			}
-		}
-		try {
-			context.start();
-			startHook();
-			if (framework.active) {
-				state = ACTIVE;
-
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.println("->started " + this); //$NON-NLS-1$
-				}
-				// release the state change lock before sending lazy activation event (bug 258659)
-				completeStateChange();
-				framework.publishBundleEvent(BundleEvent.STARTED, this);
-			}
-
-		} catch (BundleException e) {
-			// we must fire the stopping event
-			state = STOPPING;
-			framework.publishBundleEvent(BundleEvent.STOPPING, this);
-
-			stopHook();
-			context.close();
-			context = null;
-
-			state = RESOLVED;
-			// if this is a lazy start bundle that fails to start then
-			// we must fire the stopped event
-			framework.publishBundleEvent(BundleEvent.STOPPED, this);
-			throw e;
-		} finally {
-			if (Debug.DEBUG) {
-				BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();
-				if (bundleStats != null)
-					bundleStats.watchBundle(this, BundleWatcher.END_ACTIVATION);
-				if (Debug.DEBUG_BUNDLE_TIME)
-					System.out.println("End starting " + getSymbolicName() + " " + (System.currentTimeMillis() - start)); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		if (state == UNINSTALLED) {
-			context.close();
-			context = null;
-			throw new BundleException(NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, getBundleData().getLocation()), BundleException.STATECHANGE_ERROR);
-		}
-	}
-
-	/**
-	 * @throws BundleException  
-	 */
-	protected void startHook() throws BundleException {
-		// do nothing by default
-	}
-
-	protected boolean readyToResume() {
-		// Return false if the bundle is not at the correct start-level
-		if (getStartLevel() > framework.startLevelManager.getStartLevel())
-			return false;
-		int status = bundledata.getStatus();
-		// Return false if the bundle is not persistently marked for start
-		if ((status & Constants.BUNDLE_STARTED) == 0)
-			return false;
-		if ((status & Constants.BUNDLE_ACTIVATION_POLICY) == 0 || (status & Constants.BUNDLE_LAZY_START) == 0 || isLazyTriggerSet())
-			return true;
-		if (!isResolved()) {
-			if (framework.getAdaptor().getState().isResolved() || !framework.packageAdmin.resolveBundles(new Bundle[] {this}))
-				// should never transition from UNRESOLVED -> STARTING
-				return false;
-		}
-		// now we can publish the LAZY_ACTIVATION event
-		state = STARTING;
-		// release the state change lock before sending lazy activation event (bug 258659)
-		completeStateChange();
-		framework.publishBundleEvent(BundleEvent.LAZY_ACTIVATION, this);
-		return false;
-	}
-
-	private synchronized boolean isLazyTriggerSet() {
-		if (proxy == null)
-			return false;
-		BundleLoader loader = proxy.getBasicBundleLoader();
-		return loader != null ? loader.isLazyTriggerSet() : false;
-	}
-
-	/**
-	 * Create a BundleContext for this bundle.
-	 *
-	 * @return BundleContext for this bundle.
-	 */
-	protected BundleContextImpl createContext() {
-		return (new BundleContextImpl(this));
-	}
-
-	/**
-	 * Return the current context for this bundle.
-	 *
-	 * @return BundleContext for this bundle.
-	 */
-	protected synchronized BundleContextImpl getContext() {
-		if (context == null) {
-			// only create the context if we are starting, active or stopping
-			// this is so that SCR can get the context for lazy-start bundles
-			if ((state & (STARTING | ACTIVE | STOPPING)) != 0)
-				context = createContext();
-		}
-		return (context);
-	}
-
-	/**
-	 * Internal worker to stop a bundle.
-	 *
-	 * @param options the stop options
-	 */
-	protected void stopWorker(int options) throws BundleException {
-		if ((options & STOP_TRANSIENT) == 0) {
-			setStatus(Constants.BUNDLE_STARTED, false);
-			setStatus(Constants.BUNDLE_ACTIVATION_POLICY, false);
-			if (Debug.DEBUG && Debug.MONITOR_ACTIVATION)
-				new Exception("A persistent start has been called on bundle: " + getBundleData()).printStackTrace(); //$NON-NLS-1$
-		}
-		if (framework.active) {
-			if ((state & (STOPPING | RESOLVED | INSTALLED)) != 0) {
-				return;
-			}
-			if (Debug.DEBUG) {
-				BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();
-				if (bundleStats != null)
-					bundleStats.watchBundle(this, BundleWatcher.START_DEACTIVATION);
-			}
-			state = STOPPING;
-			framework.publishBundleEvent(BundleEvent.STOPPING, this);
-			try {
-				// context may be null if a lazy-start bundle is STARTING
-				if (context != null)
-					context.stop();
-			} finally {
-				stopHook();
-				if (context != null) {
-					context.close();
-					context = null;
-				}
-
-				checkValid();
-
-				state = RESOLVED;
-
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.println("->stopped " + this); //$NON-NLS-1$
-				}
-
-				framework.publishBundleEvent(BundleEvent.STOPPED, this);
-				if (Debug.DEBUG) {
-					BundleWatcher bundleStats = framework.adaptor.getBundleWatcher();
-					if (bundleStats != null)
-						bundleStats.watchBundle(this, BundleWatcher.END_DEACTIVATION);
-				}
-			}
-		}
-	}
-
-	/**
-	 * @throws BundleException  
-	 */
-	protected void stopHook() throws BundleException {
-		// do nothing
-	}
-
-	/**
-	 * Provides a list of {@link ServiceReference}s for the services
-	 * registered by this bundle
-	 * or <code>null</code> if the bundle has no registered
-	 * services.
-	 *
-	 * <p>The list is valid at the time
-	 * of the call to this method, but the framework is a very dynamic
-	 * environment and services can be modified or unregistered at anytime.
-	 *
-	 * @return An array of {@link ServiceReference} or <code>null</code>.
-	 * @exception java.lang.IllegalStateException If the
-	 * bundle has been uninstalled.
-	 * @see ServiceRegistration
-	 * @see ServiceReference
-	 */
-	public ServiceReference[] getRegisteredServices() {
-		checkValid();
-
-		if (context == null) {
-			return null;
-		}
-
-		return context.getFramework().getServiceRegistry().getRegisteredServices(context);
-	}
-
-	/**
-	 * Provides a list of {@link ServiceReference}s for the
-	 * services this bundle is using,
-	 * or <code>null</code> if the bundle is not using any services.
-	 * A bundle is considered to be using a service if the bundle's
-	 * use count for the service is greater than zero.
-	 *
-	 * <p>The list is valid at the time
-	 * of the call to this method, but the framework is a very dynamic
-	 * environment and services can be modified or unregistered at anytime.
-	 *
-	 * @return An array of {@link ServiceReference} or <code>null</code>.
-	 * @exception java.lang.IllegalStateException If the
-	 * bundle has been uninstalled.
-	 * @see ServiceReference
-	 */
-	public ServiceReference[] getServicesInUse() {
-		checkValid();
-
-		if (context == null) {
-			return null;
-		}
-
-		return context.getFramework().getServiceRegistry().getServicesInUse(context);
-	}
-
-	public BundleFragment[] getFragments() {
-		synchronized (framework.bundles) {
-			if (fragments == null)
-				return null;
-			BundleFragment[] result = new BundleFragment[fragments.length];
-			System.arraycopy(fragments, 0, result, 0, result.length);
-			return result;
-		}
-	}
-
-	/**
-	 * Attaches a fragment to this BundleHost.  Fragments must be attached to
-	 * the host by ID order.  If the ClassLoader of the host is already created
-	 * then the fragment must be attached to the host ClassLoader
-	 * @param fragment The fragment bundle to attach
-	 * return true if the fragment successfully attached; false if the fragment
-	 * could not be logically inserted at the end of the fragment chain.
-	 */
-	protected void attachFragment(BundleFragment fragment) throws BundleException {
-		// do not force the creation of the bundle loader here
-		BundleLoader loader = getLoaderProxy().getBasicBundleLoader();
-		// If the Host ClassLoader exists then we must attach
-		// the fragment to the ClassLoader.
-		if (loader != null)
-			loader.attachFragment(fragment);
-
-		if (fragments == null) {
-			fragments = new BundleFragment[] {fragment};
-		} else {
-			boolean inserted = false;
-			// We must keep our fragments ordered by bundle ID; or 
-			// install order.
-			BundleFragment[] newFragments = new BundleFragment[fragments.length + 1];
-			for (int i = 0; i < fragments.length; i++) {
-				if (fragment == fragments[i])
-					return; // this fragment is already attached
-				if (!inserted && fragment.getBundleId() < fragments[i].getBundleId()) {
-					// if the loader has already been created
-					// then we cannot attach a fragment into the middle
-					// of the fragment chain.
-					if (loader != null) {
-						throw new BundleException(NLS.bind(Msg.BUNDLE_LOADER_ATTACHMENT_ERROR, fragments[i].getSymbolicName(), getSymbolicName()), BundleException.INVALID_OPERATION);
-					}
-					newFragments[i] = fragment;
-					inserted = true;
-				}
-				newFragments[inserted ? i + 1 : i] = fragments[i];
-			}
-			if (!inserted)
-				newFragments[newFragments.length - 1] = fragment;
-			fragments = newFragments;
-		}
-		manifestLocalization = null;
-	}
-
-	protected BundleLoader getBundleLoader() {
-		BundleLoaderProxy curProxy = getLoaderProxy();
-		return curProxy == null ? null : curProxy.getBundleLoader();
-	}
-
-	public synchronized BundleLoaderProxy getLoaderProxy() {
-		if (proxy != null)
-			return proxy;
-		BundleDescription bundleDescription = getBundleDescription();
-		if (bundleDescription == null)
-			return null;
-		proxy = new BundleLoaderProxy(this, bundleDescription);
-		bundleDescription.setUserObject(proxy);
-		return proxy;
-	}
-
-	/**
-	 * Gets the class loader for the host bundle.  This may end up 
-	 * creating the bundle class loader if it was not already created.
-	 * A null value may be returned if the bundle is not resolved.
-	 * @return the bundle class loader or null if the bundle is not resolved.
-	 */
-	public ClassLoader getClassLoader() {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new RuntimePermission("getClassLoader")); //$NON-NLS-1$
-		BundleLoaderProxy curProxy = getLoaderProxy();
-		BundleLoader loader = curProxy == null ? null : curProxy.getBundleLoader();
-		BundleClassLoader bcl = loader == null ? null : loader.createClassLoader();
-		return (bcl instanceof ClassLoader) ? (ClassLoader) bcl : null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleRepository.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleRepository.java
deleted file mode 100644
index 22819de..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleRepository.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247521) 
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.util.*;
-import org.eclipse.osgi.framework.util.KeyedHashSet;
-import org.osgi.framework.Version;
-
-/**
- * The BundleRepository holds all installed Bundle object for the
- * Framework.  The BundleRepository is also used to mark and unmark
- * bundle dependancies.
- *
- * <p> 
- * This class is internally synchronized and supports client locking. Clients
- * wishing to perform threadsafe composite operations on instances of this
- * class can synchronize on the instance itself when doing these operations.
- */
-public final class BundleRepository {
-	/** bundles by install order */
-	private ArrayList bundlesByInstallOrder;
-
-	/** bundles keyed by bundle Id */
-	private KeyedHashSet bundlesById;
-
-	/** bundles keyed by SymbolicName */
-	private HashMap bundlesBySymbolicName;
-
-	public BundleRepository(int initialCapacity) {
-		synchronized (this) {
-			bundlesByInstallOrder = new ArrayList(initialCapacity);
-			bundlesById = new KeyedHashSet(initialCapacity, true);
-			bundlesBySymbolicName = new HashMap(initialCapacity);
-		}
-	}
-
-	/**
-	 * Gets a list of bundles ordered by install order.
-	 * @return List of bundles by install order.
-	 */
-	public synchronized List getBundles() {
-		return bundlesByInstallOrder;
-	}
-
-	/**
-	 * Gets a bundle by its bundle Id.
-	 * @param bundleId
-	 * @return a bundle with the specified id or null if one does not exist
-	 */
-	public synchronized AbstractBundle getBundle(long bundleId) {
-		Long key = new Long(bundleId);
-		return (AbstractBundle) bundlesById.getByKey(key);
-	}
-
-	public synchronized AbstractBundle[] getBundles(String symbolicName) {
-		if (Constants.SYSTEM_BUNDLE_SYMBOLICNAME.equals(symbolicName))
-			symbolicName = Constants.getInternalSymbolicName();
-		return (AbstractBundle[]) bundlesBySymbolicName.get(symbolicName);
-	}
-
-	public synchronized AbstractBundle getBundle(String symbolicName, Version version) {
-		AbstractBundle[] bundles = getBundles(symbolicName);
-		if (bundles != null) {
-			if (bundles.length > 0) {
-				for (int i = 0; i < bundles.length; i++) {
-					if (bundles[i].getVersion().equals(version)) {
-						return bundles[i];
-					}
-				}
-			}
-		}
-		return null;
-	}
-
-	public synchronized void add(AbstractBundle bundle) {
-		bundlesByInstallOrder.add(bundle);
-		bundlesById.add(bundle);
-		addSymbolicName(bundle);
-	}
-
-	private void addSymbolicName(AbstractBundle bundle) {
-		String symbolicName = bundle.getSymbolicName();
-		if (symbolicName == null)
-			return;
-		AbstractBundle[] bundles = (AbstractBundle[]) bundlesBySymbolicName.get(symbolicName);
-		if (bundles == null) {
-			// making the initial capacity on this 1 since it
-			// should be rare that multiple version exist
-			bundles = new AbstractBundle[1];
-			bundles[0] = bundle;
-			bundlesBySymbolicName.put(symbolicName, bundles);
-			return;
-		}
-
-		ArrayList list = new ArrayList(bundles.length + 1);
-		// find place to insert the bundle
-		Version newVersion = bundle.getVersion();
-		boolean added = false;
-		for (int i = 0; i < bundles.length; i++) {
-			AbstractBundle oldBundle = bundles[i];
-			Version oldVersion = oldBundle.getVersion();
-			if (!added && newVersion.compareTo(oldVersion) >= 0) {
-				added = true;
-				list.add(bundle);
-			}
-			list.add(oldBundle);
-		}
-		if (!added) {
-			list.add(bundle);
-		}
-
-		bundles = new AbstractBundle[list.size()];
-		list.toArray(bundles);
-		bundlesBySymbolicName.put(symbolicName, bundles);
-	}
-
-	public synchronized boolean remove(AbstractBundle bundle) {
-		// remove by bundle ID
-		boolean found = bundlesById.remove(bundle);
-		if (!found)
-			return false;
-
-		// remove by install order
-		bundlesByInstallOrder.remove(bundle);
-		// remove by symbolic name
-		String symbolicName = bundle.getSymbolicName();
-		if (symbolicName == null)
-			return true;
-		removeSymbolicName(symbolicName, bundle);
-		return true;
-	}
-
-	private void removeSymbolicName(String symbolicName, AbstractBundle bundle) {
-		AbstractBundle[] bundles = (AbstractBundle[]) bundlesBySymbolicName.get(symbolicName);
-		if (bundles == null)
-			return;
-
-		// found some bundles with the global name.
-		// remove all references to the specified bundle.
-		int numRemoved = 0;
-		for (int i = 0; i < bundles.length; i++) {
-			if (bundle == bundles[i]) {
-				numRemoved++;
-				bundles[i] = null;
-			}
-		}
-		if (numRemoved > 0) {
-			if (bundles.length - numRemoved <= 0) {
-				// no bundles left in the array remove the array from the hash
-				bundlesBySymbolicName.remove(symbolicName);
-			} else {
-				// create a new array with the null entries removed.
-				AbstractBundle[] newBundles = new AbstractBundle[bundles.length - numRemoved];
-				int indexCnt = 0;
-				for (int i = 0; i < bundles.length; i++) {
-					if (bundles[i] != null) {
-						newBundles[indexCnt] = bundles[i];
-						indexCnt++;
-					}
-				}
-				bundlesBySymbolicName.put(symbolicName, newBundles);
-			}
-		}
-	}
-
-	public synchronized void update(String oldSymbolicName, AbstractBundle bundle) {
-		if (oldSymbolicName != null) {
-			if (!oldSymbolicName.equals(bundle.getSymbolicName())) {
-				removeSymbolicName(oldSymbolicName, bundle);
-				addSymbolicName(bundle);
-			}
-		} else {
-			addSymbolicName(bundle);
-		}
-	}
-
-	public synchronized void removeAllBundles() {
-		bundlesByInstallOrder.clear();
-		bundlesById = new KeyedHashSet();
-		bundlesBySymbolicName.clear();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleSource.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleSource.java
deleted file mode 100644
index 79a3bbe..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleSource.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URLConnection;
-
-/**
- * BundleSource class to wrap in InputStream.
- *
- * <p>This class implements a URLConnection which
- * wraps an InputStream.
- */
-public class BundleSource extends URLConnection {
-	private InputStream in;
-
-	protected BundleSource(InputStream in) {
-		super(null);
-		this.in = in;
-	}
-
-	public void connect() throws IOException {
-		connected = true;
-	}
-
-	public InputStream getInputStream() throws IOException {
-		return (in);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Constants.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Constants.java
deleted file mode 100644
index d5bee83..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Constants.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-/**
- * This interface contains the constants used by the eclipse
- * OSGi implementation.
- */
-
-public class Constants implements org.osgi.framework.Constants {
-	/** Default framework version */
-	public static final String OSGI_FRAMEWORK_VERSION = "1.3"; //$NON-NLS-1$
-
-	/** Framework vendor */
-	public static final String OSGI_FRAMEWORK_VENDOR = "Eclipse"; //$NON-NLS-1$
-
-	/** Bundle manifest name */
-	public static final String OSGI_BUNDLE_MANIFEST = "META-INF/MANIFEST.MF"; //$NON-NLS-1$
-
-	/** OSGi framework package name. */
-	public static final String OSGI_FRAMEWORK_PACKAGE = "org.osgi.framework"; //$NON-NLS-1$
-
-	/** Bundle resource URL protocol */
-	public static final String OSGI_RESOURCE_URL_PROTOCOL = "bundleresource"; //$NON-NLS-1$
-
-	/** Bundle entry URL protocol */
-	public static final String OSGI_ENTRY_URL_PROTOCOL = "bundleentry"; //$NON-NLS-1$
-
-	/** Processor aliases resource */
-	public static final String OSGI_PROCESSOR_ALIASES = "processor.aliases"; //$NON-NLS-1$
-
-	/** OS name aliases resource */
-	public static final String OSGI_OSNAME_ALIASES = "osname.aliases"; //$NON-NLS-1$
-
-	/** Default permissions for bundles with no permission set
-	 * and there are no default permissions set.
-	 */
-	public static final String OSGI_DEFAULT_DEFAULT_PERMISSIONS = "default.permissions"; //$NON-NLS-1$
-
-	/** Base implied permissions for all bundles */
-	public static final String OSGI_BASE_IMPLIED_PERMISSIONS = "implied.permissions"; //$NON-NLS-1$
-
-	/** Name of OSGi LogService */
-	public static final String OSGI_LOGSERVICE_NAME = "org.osgi.service.log.LogService"; //$NON-NLS-1$
-
-	/** Name of OSGi PackageAdmin */
-	public static final String OSGI_PACKAGEADMIN_NAME = "org.osgi.service.packageadmin.PackageAdmin"; //$NON-NLS-1$
-
-	/** Name of OSGi PermissionAdmin */
-	public static final String OSGI_PERMISSIONADMIN_NAME = "org.osgi.service.permissionadmin.PermissionAdmin"; //$NON-NLS-1$
-
-	/** Name of OSGi StartLevel */
-	public static final String OSGI_STARTLEVEL_NAME = "org.osgi.service.startlevel.StartLevel"; //$NON-NLS-1$
-
-	/** JVM java.vm.name property name */
-	public static final String JVM_VM_NAME = "java.vm.name"; //$NON-NLS-1$
-
-	/** JVM os.arch property name */
-	public static final String JVM_OS_ARCH = "os.arch"; //$NON-NLS-1$
-
-	/** JVM os.name property name */
-	public static final String JVM_OS_NAME = "os.name"; //$NON-NLS-1$
-
-	/** JVM os.version property name */
-	public static final String JVM_OS_VERSION = "os.version"; //$NON-NLS-1$
-
-	/** JVM user.language property name */
-	public static final String JVM_USER_LANGUAGE = "user.language"; //$NON-NLS-1$
-
-	/** JVM user.region property name */
-	public static final String JVM_USER_REGION = "user.region"; //$NON-NLS-1$
-
-	/** J2ME configuration property name */
-	public static final String J2ME_MICROEDITION_CONFIGURATION = "microedition.configuration"; //$NON-NLS-1$
-
-	/** J2ME profile property name */
-	public static final String J2ME_MICROEDITION_PROFILES = "microedition.profiles"; //$NON-NLS-1$
-
-	/** Persistent start bundle status */
-	public static final int BUNDLE_STARTED = 0x00000001;
-	/** Lazy start flag bundle status */
-	public static final int BUNDLE_LAZY_START = 0x00000002;
-	public static final int BUNDLE_ACTIVATION_POLICY = 0x00000004;
-
-	/** Property file locations and default names. */
-	public static final String OSGI_PROPERTIES = "osgi.framework.properties"; //$NON-NLS-1$
-	public static final String DEFAULT_OSGI_PROPERTIES = "osgi.properties"; //$NON-NLS-1$
-
-	private static String INTERNAL_SYSTEM_BUNDLE = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	public static String getInternalSymbolicName() {
-		return INTERNAL_SYSTEM_BUNDLE;
-	}
-
-	static void setInternalSymbolicName(String name) {
-		INTERNAL_SYSTEM_BUNDLE = name;
-	}
-
-	/** OSGI implementation version properties key */
-	public static final String OSGI_IMPL_VERSION_KEY = "osgi.framework.version"; //$NON-NLS-1$
-	/** OSGi java profile; used to give a URL to a java profile */
-	public static final String OSGI_JAVA_PROFILE = "osgi.java.profile"; //$NON-NLS-1$
-	public static final String OSGI_JAVA_PROFILE_NAME = "osgi.java.profile.name"; //$NON-NLS-1$
-	/** 
-	 * OSGi java profile bootdelegation; used to indicate how the org.osgi.framework.bootdelegation
-	 * property defined in the java profile should be processed, (ingnore, override, none). default is ignore
-	 */
-	public static final String OSGI_JAVA_PROFILE_BOOTDELEGATION = "osgi.java.profile.bootdelegation"; //$NON-NLS-1$
-	/** indicates that the org.osgi.framework.bootdelegation in the java profile should be ingored */
-	public static final String OSGI_BOOTDELEGATION_IGNORE = "ignore"; //$NON-NLS-1$
-	/** indicates that the org.osgi.framework.bootdelegation in the java profile should override the system property */
-	public static final String OSGI_BOOTDELEGATION_OVERRIDE = "override"; //$NON-NLS-1$
-	/** indicates that the org.osgi.framework.bootdelegation in the java profile AND the system properties should be ignored */
-	public static final String OSGI_BOOTDELEGATION_NONE = "none"; //$NON-NLS-1$
-	/** OSGi strict delegation **/
-	public static final String OSGI_RESOLVER_MODE = "osgi.resolverMode"; //$NON-NLS-1$
-	public static final String STRICT_MODE = "strict"; //$NON-NLS-1$
-	public static final String DEVELOPMENT_MODE = "development"; //$NON-NLS-1$
-
-	public static final String STATE_SYSTEM_BUNDLE = "osgi.system.bundle"; //$NON-NLS-1$
-
-	public static final String PROP_OSGI_RELAUNCH = "osgi.framework.relaunch"; //$NON-NLS-1$
-
-	public static String OSGI_COMPATIBILITY_BOOTDELEGATION = "osgi.compatibility.bootdelegation"; //$NON-NLS-1$
-
-	/** Eclipse-SystemBundle header */
-	public static final String ECLIPSE_SYSTEMBUNDLE = "Eclipse-SystemBundle"; //$NON-NLS-1$
-	public static final String ECLIPSE_PLATFORMFILTER = "Eclipse-PlatformFilter"; //$NON-NLS-1$
-	public static final String Eclipse_JREBUNDLE = "Eclipse-JREBundle"; //$NON-NLS-1$
-	/**
-	 * Manifest Export-Package directive indicating that the exported package should only 
-	 * be made available when the resolver is not in strict mode.
-	 */
-	public static final String INTERNAL_DIRECTIVE = "x-internal"; //$NON-NLS-1$
-
-	/**
-	 * Manifest Export-Package directive indicating that the exported package should only 
-	 * be made available to friends of the exporting bundle.
-	 */
-	public static final String FRIENDS_DIRECTIVE = "x-friends"; //$NON-NLS-1$
-
-	/**
-	 * Manifest header (named &quot;Provide-Package&quot;)
-	 * identifying the packages name
-	 * provided to other bundles which require the bundle.
-	 *
-	 * <p>
-	 * NOTE: this is only used for backwards compatibility, bundles manifest using
-	 * syntax version 2 will not recognize this header.
-	 *
-	 * <p>The attribute value may be retrieved from the
-	 * <tt>Dictionary</tt> object returned by the <tt>Bundle.getHeaders</tt> method.
-	 * @deprecated
-	 */
-	public final static String PROVIDE_PACKAGE = "Provide-Package"; //$NON-NLS-1$
-
-	/**
-	 * Manifest header attribute (named &quot;reprovide&quot;)
-	 * for Require-Bundle
-	 * identifying that any packages that are provided
-	 * by the required bundle must be reprovided by the requiring bundle.
-	 * The default value is <tt>false</tt>.
-	 * <p>
-	 * The attribute value is encoded in the Require-Bundle manifest 
-	 * header like:
-	 * <pre>
-	 * Require-Bundle: com.acme.module.test; reprovide="true"
-	 * </pre>
-	 * <p>
-	 * NOTE: this is only used for backwards compatibility, bundles manifest using
-	 * syntax version 2 will not recognize this attribute.
-	 * @deprecated
-	 */
-	public final static String REPROVIDE_ATTRIBUTE = "reprovide"; //$NON-NLS-1$
-
-	/**
-	 * Manifest header attribute (named &quot;optional&quot;)
-	 * for Require-Bundle
-	 * identifying that a required bundle is optional and that
-	 * the requiring bundle can be resolved if there is no 
-	 * suitable required bundle.
-	 * The default value is <tt>false</tt>.
-	 *
-	 * <p>The attribute value is encoded in the Require-Bundle manifest 
-	 * header like:
-	 * <pre>
-	 * Require-Bundle: com.acme.module.test; optional="true"
-	 * </pre>
-	 * <p>
-	 * NOTE: this is only used for backwards compatibility, bundles manifest using
-	 * syntax version 2 will not recognize this attribute.
-	 * @since 1.3 <b>EXPERIMENTAL</b>
-	 * @deprecated
-	 */
-	public final static String OPTIONAL_ATTRIBUTE = "optional"; //$NON-NLS-1$
-
-	/**
-	 * Manifest header attribute (named &quot;require-packages&quot;)
-	 * for Require-Bundle
-	 * specifying the subset of packages that are accessible from
-	 * the required bundle.  If the require-packages parameter
-	 * is not specified then all packages provided by the required bundle
-	 * are accessible.  The value of this parameter must be a quoted
-	 * string.  The syntax of the quoted string value is the same as
-	 * that of the Provide-Package manifest header value.
-	 *
-	 * <p> The attribute value is encoded in the Require-Bundle
-	 * manifest header like:
-	 * <pre>
-	 * Require-Bundle: org.osgi.test;
-	 *  require-packages="org.osgi.test.pkg1,org.osgi.test.pkg2"
-	 * </pre>
-	 * <p>
-	 * NOTE: this is only used for backwards compatibility, bundles manifest using
-	 * syntax version 2 will not recognize this attribute.
-	 * @deprecated
-	 */
-	public final static String REQUIRE_PACKAGES_ATTRIBUTE = "require-packages"; //$NON-NLS-1$
-
-	/**
-	* The key used to designate the buddy loader associated with a given bundle.
-	*/
-	public final static String BUDDY_LOADER = "Eclipse-BuddyPolicy"; //$NON-NLS-1$
-
-	public final static String REGISTERED_POLICY = "Eclipse-RegisterBuddy"; //$NON-NLS-1$
-
-	static public final String INTERNAL_HANDLER_PKGS = "equinox.interal.handler.pkgs"; //$NON-NLS-1$
-
-	// TODO rename it to Eclipse-PluginClass
-	public static final String PLUGIN_CLASS = "Plugin-Class"; //$NON-NLS-1$
-
-	/** Manifest header used to specify the lazy start properties of a bundle */
-	public static final String ECLIPSE_LAZYSTART = "Eclipse-LazyStart"; //$NON-NLS-1$
-
-	/** An Eclipse-LazyStart attribute used to specify exception classes for auto start */
-	public static final String ECLIPSE_LAZYSTART_EXCEPTIONS = "exceptions"; //$NON-NLS-1$
-
-	/** 
-	 * Manifest header used to specify the auto start properties of a bundle 
-	 * @deprecated use {@link #ECLIPSE_LAZYSTART}
-	 */
-	public static final String ECLIPSE_AUTOSTART = "Eclipse-AutoStart"; //$NON-NLS-1$
-
-	/**
-	 * @deprecated use {@link #ECLIPSE_LAZYSTART_EXCEPTIONS}
-	 */
-	public static final String ECLIPSE_AUTOSTART_EXCEPTIONS = ECLIPSE_LAZYSTART_EXCEPTIONS;
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/EquinoxLauncher.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/EquinoxLauncher.java
deleted file mode 100644
index 895e045..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/EquinoxLauncher.java
+++ /dev/null
@@ -1,333 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.*;
-import java.util.*;
-import org.eclipse.core.runtime.adaptor.EclipseStarter;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.osgi.framework.*;
-
-public class EquinoxLauncher implements org.osgi.framework.launch.Framework {
-
-	private volatile Framework framework;
-	private volatile Bundle systemBundle;
-	private final Map configuration;
-	private volatile ConsoleManager consoleMgr = null;
-
-	public EquinoxLauncher(Map configuration) {
-		this.configuration = configuration;
-	}
-
-	public void init() {
-		checkAdminPermission(AdminPermission.EXECUTE);
-		if (System.getSecurityManager() == null)
-			internalInit();
-		else {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					internalInit();
-					return null;
-				}
-			});
-		}
-	}
-
-	synchronized Framework internalInit() {
-		if ((getState() & (Bundle.ACTIVE | Bundle.STARTING | Bundle.STOPPING)) != 0)
-			return framework; // no op
-
-		if (System.getSecurityManager() != null && configuration.get(Constants.FRAMEWORK_SECURITY) != null)
-			throw new SecurityException("Cannot specify the \"" + Constants.FRAMEWORK_SECURITY + "\" configuration property when a security manager is already installed."); //$NON-NLS-1$ //$NON-NLS-2$
-
-		Framework current = framework;
-		if (current != null) {
-			current.close();
-			framework = null;
-			systemBundle = null;
-		}
-		ClassLoader tccl = Thread.currentThread().getContextClassLoader();
-		try {
-			FrameworkProperties.setProperties(configuration);
-			FrameworkProperties.initializeProperties();
-			// make sure the active framework thread is used
-			setEquinoxProperties(configuration);
-			current = new Framework(new BaseAdaptor(new String[0]));
-			consoleMgr = ConsoleManager.startConsole(current);
-			current.launch();
-			framework = current;
-			systemBundle = current.systemBundle;
-		} finally {
-			ClassLoader currentCCL = Thread.currentThread().getContextClassLoader();
-			if (currentCCL != tccl)
-				Thread.currentThread().setContextClassLoader(tccl);
-		}
-		return current;
-	}
-
-	private void setEquinoxProperties(Map configuration) {
-		Object threadBehavior = configuration == null ? null : configuration.get(Framework.PROP_FRAMEWORK_THREAD);
-		if (threadBehavior == null) {
-			if (FrameworkProperties.getProperty(Framework.PROP_FRAMEWORK_THREAD) == null)
-				FrameworkProperties.setProperty(Framework.PROP_FRAMEWORK_THREAD, Framework.THREAD_NORMAL);
-		} else {
-			FrameworkProperties.setProperty(Framework.PROP_FRAMEWORK_THREAD, (String) threadBehavior);
-		}
-
-		// first check props we are required to provide reasonable defaults for
-		Object windowSystem = configuration == null ? null : configuration.get(Constants.FRAMEWORK_WINDOWSYSTEM);
-		if (windowSystem == null) {
-			windowSystem = FrameworkProperties.getProperty(EclipseStarter.PROP_WS);
-			if (windowSystem != null)
-				FrameworkProperties.setProperty(Constants.FRAMEWORK_WINDOWSYSTEM, (String) windowSystem);
-		}
-		// rest of props can be ignored if the configuration is null
-		if (configuration == null)
-			return;
-		// check each osgi defined property and set the appropriate equinox one
-		Object security = configuration.get(Constants.FRAMEWORK_SECURITY);
-		if (security != null) {
-			if (Framework.SECURITY_OSGI.equals(security))
-				FrameworkProperties.setProperty(Framework.PROP_EQUINOX_SECURITY, Framework.SECURITY_OSGI);
-			else if (security instanceof String)
-				FrameworkProperties.setProperty(Framework.PROP_EQUINOX_SECURITY, (String) security);
-		}
-		Object storage = configuration.get(Constants.FRAMEWORK_STORAGE);
-		if (storage != null && storage instanceof String)
-			FrameworkProperties.setProperty(LocationManager.PROP_CONFIG_AREA, (String) storage);
-		Object clean = configuration.get(Constants.FRAMEWORK_STORAGE_CLEAN);
-		if (Constants.FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT.equals(clean)) {
-			// remove this so we only clean on first init
-			configuration.remove(Constants.FRAMEWORK_STORAGE_CLEAN);
-			FrameworkProperties.setProperty(EclipseStarter.PROP_CLEAN, Boolean.TRUE.toString());
-		}
-		Object parentCL = configuration.get(Constants.FRAMEWORK_BUNDLE_PARENT);
-		if (Constants.FRAMEWORK_BUNDLE_PARENT_FRAMEWORK.equals(parentCL))
-			parentCL = "fwk"; //$NON-NLS-1$
-		if (parentCL instanceof String)
-			FrameworkProperties.setProperty("osgi.parentClassloader", (String) parentCL); //$NON-NLS-1$
-	}
-
-	public FrameworkEvent waitForStop(long timeout) throws InterruptedException {
-		Framework current = framework;
-		if (current == null)
-			return new FrameworkEvent(FrameworkEvent.STOPPED, this, null);
-		return current.waitForStop(timeout);
-	}
-
-	public Enumeration findEntries(String path, String filePattern, boolean recurse) {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.findEntries(path, filePattern, recurse);
-	}
-
-	public BundleContext getBundleContext() {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getBundleContext();
-	}
-
-	public long getBundleId() {
-		return 0;
-	}
-
-	public URL getEntry(String path) {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getEntry(path);
-	}
-
-	public Enumeration getEntryPaths(String path) {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getEntryPaths(path);
-	}
-
-	public Dictionary getHeaders() {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getHeaders();
-	}
-
-	public Dictionary getHeaders(String locale) {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getHeaders(locale);
-	}
-
-	public long getLastModified() {
-		Bundle current = systemBundle;
-		if (current == null)
-			return System.currentTimeMillis();
-		return current.getLastModified();
-	}
-
-	public String getLocation() {
-		return Constants.SYSTEM_BUNDLE_LOCATION;
-	}
-
-	public ServiceReference[] getRegisteredServices() {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getRegisteredServices();
-	}
-
-	public URL getResource(String name) {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getResource(name);
-	}
-
-	public Enumeration getResources(String name) throws IOException {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getResources(name);
-	}
-
-	public ServiceReference[] getServicesInUse() {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.getServicesInUse();
-	}
-
-	public int getState() {
-		Bundle current = systemBundle;
-		if (current == null)
-			return Bundle.INSTALLED;
-		return current.getState();
-	}
-
-	public String getSymbolicName() {
-		return FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME;
-	}
-
-	public boolean hasPermission(Object permission) {
-		Bundle current = systemBundle;
-		if (current == null)
-			return false;
-		return current.hasPermission(permission);
-	}
-
-	public Class loadClass(String name) throws ClassNotFoundException {
-		Bundle current = systemBundle;
-		if (current == null)
-			return null;
-		return current.loadClass(name);
-	}
-
-	public void start(int options) throws BundleException {
-		start();
-	}
-
-	/**
-	 * @throws BundleException  
-	 */
-	public void start() throws BundleException {
-		checkAdminPermission(AdminPermission.EXECUTE);
-		if (System.getSecurityManager() == null)
-			internalStart();
-		else
-			try {
-				AccessController.doPrivileged(new PrivilegedExceptionAction() {
-					public Object run() throws BundleException {
-						internalStart();
-						return null;
-					}
-				});
-			} catch (PrivilegedActionException e) {
-				throw (BundleException) e.getException();
-			}
-	}
-
-	private void checkAdminPermission(String actions) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new AdminPermission(this, actions));
-	}
-
-	void internalStart() throws BundleException {
-		if (getState() == Bundle.ACTIVE)
-			return;
-		Framework current = internalInit();
-		int level = 1;
-		try {
-			level = Integer.parseInt((String) configuration.get(Constants.FRAMEWORK_BEGINNING_STARTLEVEL));
-		} catch (Throwable t) {
-			// do nothing
-		}
-		current.startLevelManager.doSetStartLevel(level);
-	}
-
-	public void stop(int options) throws BundleException {
-		stop();
-	}
-
-	public void stop() throws BundleException {
-		Bundle current = systemBundle;
-		if (current == null)
-			return;
-		ConsoleManager currentConsole = consoleMgr;
-		if (currentConsole != null) {
-			currentConsole.stopConsole();
-			consoleMgr = null;
-		}
-		current.stop();
-	}
-
-	public void uninstall() throws BundleException {
-		throw new BundleException(Msg.BUNDLE_SYSTEMBUNDLE_UNINSTALL_EXCEPTION, BundleException.INVALID_OPERATION);
-	}
-
-	public void update() throws BundleException {
-		Bundle current = systemBundle;
-		if (current == null)
-			return;
-		current.update();
-	}
-
-	public void update(InputStream in) throws BundleException {
-		try {
-			in.close();
-		} catch (IOException e) {
-			// nothing; just being nice
-		}
-		update();
-	}
-
-	public Map getSignerCertificates(int signersType) {
-		Bundle current = systemBundle;
-		if (current != null)
-			return current.getSignerCertificates(signersType);
-		return Collections.EMPTY_MAP;
-	}
-
-	public Version getVersion() {
-		Bundle current = systemBundle;
-		if (current != null)
-			current.getVersion();
-		return Version.emptyVersion;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ExportedPackageImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ExportedPackageImpl.java
deleted file mode 100644
index 310ebf0..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ExportedPackageImpl.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import org.eclipse.osgi.internal.loader.*;
-
-import java.util.ArrayList;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.osgi.framework.*;
-import org.osgi.framework.Constants;
-import org.osgi.service.packageadmin.ExportedPackage;
-
-public class ExportedPackageImpl implements ExportedPackage {
-
-	private final String specVersion;
-	private final ExportPackageDescription exportedPackage;
-	private final BundleLoaderProxy supplier;
-
-	public ExportedPackageImpl(ExportPackageDescription exportedPackage, BundleLoaderProxy supplier) {
-		this.exportedPackage = exportedPackage;
-		this.supplier = supplier;
-		Version version = exportedPackage.getVersion();
-		if (version != null)
-			this.specVersion = version.toString();
-		else
-			this.specVersion = null;
-	}
-
-	public String getName() {
-		return exportedPackage.getName();
-	}
-
-	public org.osgi.framework.Bundle getExportingBundle() {
-		if (supplier.isStale())
-			return null;
-		return supplier.getBundleHost();
-	}
-
-	/*
-	 * get the bundle without checking if it is stale
-	 */
-	AbstractBundle getBundle() {
-		return supplier.getBundleHost();
-	}
-
-	public Bundle[] getImportingBundles() {
-		if (supplier.isStale())
-			return null;
-		AbstractBundle bundle = (AbstractBundle) getExportingBundle();
-		if (bundle == null)
-			return null;
-		AbstractBundle[] bundles = bundle.framework.getAllBundles();
-		ArrayList importers = new ArrayList(10);
-		PackageSource supplierSource = supplier.createPackageSource(exportedPackage, false);
-		for (int i = 0; i < bundles.length; i++) {
-			if (!(bundles[i] instanceof BundleHost))
-				continue;
-			BundleLoader loader = ((BundleHost) bundles[i]).getBundleLoader();
-			if (loader == null || loader.getBundle() == supplier.getBundle())
-				continue; // do not include include the exporter of the package
-			PackageSource importerSource = loader.getPackageSource(getName());
-			if (supplierSource != null && supplierSource.hasCommonSource(importerSource))
-				importers.add(bundles[i]);
-		}
-		return (Bundle[]) importers.toArray(new Bundle[importers.size()]);
-	}
-
-	public String getSpecificationVersion() {
-		return specVersion;
-	}
-
-	public Version getVersion() {
-		return exportedPackage.getVersion();
-	}
-
-	public boolean isRemovalPending() {
-		BundleDescription exporter = exportedPackage.getExporter();
-		if (exporter != null)
-			return exporter.isRemovalPending();
-		return true;
-	}
-
-	public String toString() {
-		StringBuffer result = new StringBuffer(getName());
-		if (specVersion != null) {
-			result.append("; ").append(Constants.VERSION_ATTRIBUTE); //$NON-NLS-1$
-			result.append("=\"").append(specVersion).append("\""); //$NON-NLS-1$//$NON-NLS-2$
-		}
-		return result.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilterImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilterImpl.java
deleted file mode 100644
index 19180a2..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilterImpl.java
+++ /dev/null
@@ -1,1672 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.lang.reflect.*;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.util.Headers;
-import org.eclipse.osgi.internal.serviceregistry.ServiceReferenceImpl;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * RFC 1960-based Filter. Filter objects can be created by calling
- * the constructor with the desired filter string.
- * A Filter object can be called numerous times to determine if the
- * match argument matches the filter string that was used to create the Filter
- * object.
- *
- * <p>The syntax of a filter string is the string representation
- * of LDAP search filters as defined in RFC 1960:
- * <i>A String Representation of LDAP Search Filters</i> (available at
- * http://www.ietf.org/rfc/rfc1960.txt).
- * It should be noted that RFC 2254:
- * <i>A String Representation of LDAP Search Filters</i>
- * (available at http://www.ietf.org/rfc/rfc2254.txt) supersedes
- * RFC 1960 but only adds extensible matching and is not applicable for this
- * API.
- *
- * <p>The string representation of an LDAP search filter is defined by the
- * following grammar. It uses a prefix format.
- * <pre>
- *   &lt;filter&gt; ::= '(' &lt;filtercomp&gt; ')'
- *   &lt;filtercomp&gt; ::= &lt;and&gt; | &lt;or&gt; | &lt;not&gt; | &lt;item&gt;
- *   &lt;and&gt; ::= '&' &lt;filterlist&gt;
- *   &lt;or&gt; ::= '|' &lt;filterlist&gt;
- *   &lt;not&gt; ::= '!' &lt;filter&gt;
- *   &lt;filterlist&gt; ::= &lt;filter&gt; | &lt;filter&gt; &lt;filterlist&gt;
- *   &lt;item&gt; ::= &lt;simple&gt; | &lt;present&gt; | &lt;substring&gt;
- *   &lt;simple&gt; ::= &lt;attr&gt; &lt;filtertype&gt; &lt;value&gt;
- *   &lt;filtertype&gt; ::= &lt;equal&gt; | &lt;approx&gt; | &lt;greater&gt; | &lt;less&gt;
- *   &lt;equal&gt; ::= '='
- *   &lt;approx&gt; ::= '~='
- *   &lt;greater&gt; ::= '&gt;='
- *   &lt;less&gt; ::= '&lt;='
- *   &lt;present&gt; ::= &lt;attr&gt; '=*'
- *   &lt;substring&gt; ::= &lt;attr&gt; '=' &lt;initial&gt; &lt;any&gt; &lt;final&gt;
- *   &lt;initial&gt; ::= NULL | &lt;value&gt;
- *   &lt;any&gt; ::= '*' &lt;starval&gt;
- *   &lt;starval&gt; ::= NULL | &lt;value&gt; '*' &lt;starval&gt;
- *   &lt;final&gt; ::= NULL | &lt;value&gt;
- * </pre>
- *
- * <code>&lt;attr&gt;</code> is a string representing an attribute, or
- * key, in the properties objects of the registered services.
- * Attribute names are not case sensitive;
- * that is cn and CN both refer to the same attribute.
- * <code>&lt;value&gt;</code> is a string representing the value, or part of
- * one, of a key in the properties objects of the registered services.
- * If a <code>&lt;value&gt;</code> must
- * contain one of the characters '<code>*</code>' or '<code>(</code>'
- * or '<code>)</code>', these characters
- * should be escaped by preceding them with the backslash '<code>\</code>'
- * character.
- * Note that although both the <code>&lt;substring&gt;</code> and
- * <code>&lt;present&gt;</code> productions can
- * produce the <code>'attr=*'</code> construct, this construct is used only to
- * denote a presence filter.
- *
- * <p>Examples of LDAP filters are:
- *
- * <pre>
- *   &quot;(cn=Babs Jensen)&quot;
- *   &quot;(!(cn=Tim Howes))&quot;
- *   &quot;(&(&quot; + Constants.OBJECTCLASS + &quot;=Person)(|(sn=Jensen)(cn=Babs J*)))&quot;
- *   &quot;(o=univ*of*mich*)&quot;
- * </pre>
- *
- * <p>The approximate match (<code>~=</code>) is implementation specific but
- * should at least ignore case and white space differences. Optional are
- * codes like soundex or other smart "closeness" comparisons.
- *
- * <p>Comparison of values is not straightforward. Strings
- * are compared differently than numbers and it is
- * possible for a key to have multiple values. Note that
- * that keys in the match argument must always be strings.
- * The comparison is defined by the object type of the key's
- * value. The following rules apply for comparison:
- *
- * <blockquote>
- * <TABLE BORDER=0>
- * <TR><TD><b>Property Value Type </b></TD><TD><b>Comparison Type</b></TD></TR>
- * <TR><TD>String </TD><TD>String comparison</TD></TR>
- * <TR valign=top><TD>Integer, Long, Float, Double, Byte, Short, BigInteger, BigDecimal </TD><TD>numerical comparison</TD></TR>
- * <TR><TD>Character </TD><TD>character comparison</TD></TR>
- * <TR><TD>Boolean </TD><TD>equality comparisons only</TD></TR>
- * <TR><TD>[] (array)</TD><TD>recursively applied to values </TD></TR>
- * <TR><TD>Vector</TD><TD>recursively applied to elements </TD></TR>
- * </TABLE>
- * Note: arrays of primitives are also supported.
- * </blockquote>
- *
- * A filter matches a key that has multiple values if it
- * matches at least one of those values. For example,
- * <pre>
- *   Dictionary d = new Hashtable();
- *   d.put( "cn", new String[] { "a", "b", "c" } );
- * </pre>
- *   d will match <code>(cn=a)</code> and also <code>(cn=b)</code>
- *
- * <p>A filter component that references a key having an unrecognizable
- * data type will evaluate to <code>false</code> .
- */
-
-public class FilterImpl implements Filter /* since Framework 1.1 */{
-	/* public methods in org.osgi.framework.Filter */
-
-	/**
-	 * Constructs a {@link FilterImpl} object. This filter object may be used
-	 * to match a {@link ServiceReferenceImpl} or a Dictionary.
-	 *
-	 * <p> If the filter cannot be parsed, an {@link InvalidSyntaxException}
-	 * will be thrown with a human readable message where the
-	 * filter became unparsable.
-	 *
-	 * @param filterString the filter string.
-	 * @exception InvalidSyntaxException If the filter parameter contains
-	 * an invalid filter string that cannot be parsed.
-	 */
-	public static FilterImpl newInstance(String filterString) throws InvalidSyntaxException {
-		return new Parser(filterString).parse();
-	}
-
-	/**
-	 * Filter using a service's properties.
-	 * <p>
-	 * The filter is executed using the keys and values of the referenced
-	 * service's properties. The keys are case insensitively matched with
-	 * the filter.
-	 *
-	 * @param reference The reference to the service whose properties are
-	 *        used in the match.
-	 * @return <code>true</code> if the service's properties match this
-	 *         filter; <code>false</code> otherwise.
-	 */
-	public boolean match(ServiceReference reference) {
-		if (reference instanceof ServiceReferenceImpl) {
-			return match0(((ServiceReferenceImpl) reference).getRegistration().getProperties());
-		}
-		return match0(new ServiceReferenceDictionary(reference));
-	}
-
-	/**
-	 * Filter using a <code>Dictionary</code> object. The Filter is executed
-	 * using the <code>Dictionary</code> object's keys and values. The keys
-	 * are case insensitively matched with the filter.
-	 *
-	 * @param dictionary The <code>Dictionary</code> object whose keys are
-	 *        used in the match.
-	 * @return <code>true</code> if the <code>Dictionary</code> object's
-	 *         keys and values match this filter; <code>false</code>
-	 *         otherwise.
-	 * @throws IllegalArgumentException If <code>dictionary</code> contains
-	 *         case variants of the same key name.
-	 */
-	public boolean match(Dictionary dictionary) {
-		if (dictionary != null) {
-			dictionary = new Headers(dictionary);
-		}
-
-		return match0(dictionary);
-	}
-
-	/**
-	 * Filter with case sensitivity using a <code>Dictionary</code> object.
-	 * The Filter is executed using the <code>Dictionary</code> object's
-	 * keys and values. The keys are case sensitively matched with the
-	 * filter.
-	 * 
-	 * @param dictionary The <code>Dictionary</code> object whose keys are
-	 *        used in the match.
-	 * @return <code>true</code> if the <code>Dictionary</code> object's
-	 *         keys and values match this filter; <code>false</code>
-	 *         otherwise.
-	 * @since 1.3
-	 */
-	public boolean matchCase(Dictionary dictionary) {
-		return match0(dictionary);
-	}
-
-	/**
-	 * Returns this <code>Filter</code> object's filter string.
-	 * <p>
-	 * The filter string is normalized by removing whitespace which does not
-	 * affect the meaning of the filter.
-	 *
-	 * @return Filter string.
-	 */
-
-	public String toString() {
-		String result = filterString;
-		if (result == null) {
-			filterString = result = normalize();
-		}
-		return result;
-	}
-
-	/**
-	 * Returns this <code>Filter</code>'s normalized filter string.
-	 * <p>
-	 * The filter string is normalized by removing whitespace which does not
-	 * affect the meaning of the filter.
-	 * 
-	 * @return This <code>Filter</code>'s filter string.
-	 */
-	private String normalize() {
-		StringBuffer sb = new StringBuffer();
-		sb.append('(');
-
-		switch (op) {
-			case AND : {
-				sb.append('&');
-
-				FilterImpl[] filters = (FilterImpl[]) value;
-				for (int i = 0, size = filters.length; i < size; i++) {
-					sb.append(filters[i].normalize());
-				}
-
-				break;
-			}
-
-			case OR : {
-				sb.append('|');
-
-				FilterImpl[] filters = (FilterImpl[]) value;
-				for (int i = 0, size = filters.length; i < size; i++) {
-					sb.append(filters[i].normalize());
-				}
-
-				break;
-			}
-
-			case NOT : {
-				sb.append('!');
-				FilterImpl filter = (FilterImpl) value;
-				sb.append(filter.normalize());
-
-				break;
-			}
-
-			case SUBSTRING : {
-				sb.append(attr);
-				sb.append('=');
-
-				String[] substrings = (String[]) value;
-
-				for (int i = 0, size = substrings.length; i < size; i++) {
-					String substr = substrings[i];
-
-					if (substr == null) /* * */{
-						sb.append('*');
-					} else /* xxx */{
-						sb.append(encodeValue(substr));
-					}
-				}
-
-				break;
-			}
-			case EQUAL : {
-				sb.append(attr);
-				sb.append('=');
-				sb.append(encodeValue((String) value));
-
-				break;
-			}
-			case GREATER : {
-				sb.append(attr);
-				sb.append(">="); //$NON-NLS-1$
-				sb.append(encodeValue((String) value));
-
-				break;
-			}
-			case LESS : {
-				sb.append(attr);
-				sb.append("<="); //$NON-NLS-1$
-				sb.append(encodeValue((String) value));
-
-				break;
-			}
-			case APPROX : {
-				sb.append(attr);
-				sb.append("~="); //$NON-NLS-1$
-				sb.append(encodeValue(approxString((String) value)));
-
-				break;
-			}
-
-			case PRESENT : {
-				sb.append(attr);
-				sb.append("=*"); //$NON-NLS-1$
-
-				break;
-			}
-		}
-
-		sb.append(')');
-
-		return sb.toString();
-	}
-
-	/**
-	 * Compares this <code>Filter</code> object to another object.
-	 *
-	 * @param obj The object to compare against this <code>Filter</code>
-	 *        object.
-	 * @return If the other object is a <code>Filter</code> object, then
-	 *         returns <code>this.toString().equals(obj.toString()</code>;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof Filter)) {
-			return false;
-		}
-
-		return this.toString().equals(obj.toString());
-	}
-
-	/**
-		 * Returns the hashCode for this <code>Filter</code> object.
-	 *
-		 * @return The hashCode of the filter string; that is,
-	 * <code>this.toString().hashCode()</code>.
-	 */
-	public int hashCode() {
-		return this.toString().hashCode();
-	}
-
-	/* non public fields and methods for the Filter implementation */
-
-	/** filter operation */
-	private final int op;
-	private static final int EQUAL = 1;
-	private static final int APPROX = 2;
-	private static final int GREATER = 3;
-	private static final int LESS = 4;
-	private static final int PRESENT = 5;
-	private static final int SUBSTRING = 6;
-	private static final int AND = 7;
-	private static final int OR = 8;
-	private static final int NOT = 9;
-
-	/** filter attribute or null if operation AND, OR or NOT */
-	private final String attr;
-	/** filter operands */
-	private final Object value;
-
-	/* normalized filter string for topLevel Filter object */
-	private transient volatile String filterString;
-
-	FilterImpl(int operation, String attr, Object value) {
-		this.op = operation;
-		this.attr = attr;
-		this.value = value;
-	}
-
-	/**
-	 * Internal match routine.
-	 * Dictionary parameter must support case-insensitive get.
-	 *
-	 * @param properties A dictionary whose
-	 * keys are used in the match.
-	 * @return If the Dictionary's keys match the filter,
-	 * return <code>true</code>. Otherwise, return <code>false</code>.
-	 */
-	private boolean match0(Dictionary properties) {
-		switch (op) {
-			case AND : {
-				FilterImpl[] filters = (FilterImpl[]) value;
-				for (int i = 0, size = filters.length; i < size; i++) {
-					if (!filters[i].match0(properties)) {
-						return false;
-					}
-				}
-
-				return true;
-			}
-
-			case OR : {
-				FilterImpl[] filters = (FilterImpl[]) value;
-				for (int i = 0, size = filters.length; i < size; i++) {
-					if (filters[i].match0(properties)) {
-						return true;
-					}
-				}
-
-				return false;
-			}
-
-			case NOT : {
-				FilterImpl filter = (FilterImpl) value;
-
-				return !filter.match0(properties);
-			}
-
-			case SUBSTRING :
-			case EQUAL :
-			case GREATER :
-			case LESS :
-			case APPROX : {
-				Object prop = (properties == null) ? null : properties.get(attr);
-
-				return compare(op, prop, value);
-			}
-
-			case PRESENT : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("PRESENT(" + attr + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-
-				Object prop = (properties == null) ? null : properties.get(attr);
-
-				return prop != null;
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Encode the value string such that '(', '*', ')'
-	 * and '\' are escaped.
-	 *
-	 * @param value unencoded value string.
-	 * @return encoded value string.
-	 */
-	private static String encodeValue(String value) {
-		boolean encoded = false;
-		int inlen = value.length();
-		int outlen = inlen << 1; /* inlen * 2 */
-
-		char[] output = new char[outlen];
-		value.getChars(0, inlen, output, inlen);
-
-		int cursor = 0;
-		for (int i = inlen; i < outlen; i++) {
-			char c = output[i];
-
-			switch (c) {
-				case '(' :
-				case '*' :
-				case ')' :
-				case '\\' : {
-					output[cursor] = '\\';
-					cursor++;
-					encoded = true;
-
-					break;
-				}
-			}
-
-			output[cursor] = c;
-			cursor++;
-		}
-
-		return encoded ? new String(output, 0, cursor) : value;
-	}
-
-	private boolean compare(int operation, Object value1, Object value2) {
-		if (value1 == null) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("compare(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-
-			return false;
-		}
-
-		if (value1 instanceof String) {
-			return compare_String(operation, (String) value1, value2);
-		}
-
-		Class clazz = value1.getClass();
-
-		if (clazz.isArray()) {
-			Class type = clazz.getComponentType();
-
-			if (type.isPrimitive()) {
-				return compare_PrimitiveArray(operation, type, value1, value2);
-			}
-			return compare_ObjectArray(operation, (Object[]) value1, value2);
-		}
-
-		if (value1 instanceof Collection) {
-			return compare_Collection(operation, (Collection) value1, value2);
-		}
-
-		if (value1 instanceof Integer) {
-			return compare_Integer(operation, ((Integer) value1).intValue(), value2);
-		}
-
-		if (value1 instanceof Long) {
-			return compare_Long(operation, ((Long) value1).longValue(), value2);
-		}
-
-		if (value1 instanceof Byte) {
-			return compare_Byte(operation, ((Byte) value1).byteValue(), value2);
-		}
-
-		if (value1 instanceof Short) {
-			return compare_Short(operation, ((Short) value1).shortValue(), value2);
-		}
-
-		if (value1 instanceof Character) {
-			return compare_Character(operation, ((Character) value1).charValue(), value2);
-		}
-
-		if (value1 instanceof Float) {
-			return compare_Float(operation, ((Float) value1).floatValue(), value2);
-		}
-
-		if (value1 instanceof Double) {
-			return compare_Double(operation, ((Double) value1).doubleValue(), value2);
-		}
-
-		if (value1 instanceof Boolean) {
-			return compare_Boolean(operation, ((Boolean) value1).booleanValue(), value2);
-		}
-
-		if (value1 instanceof Comparable) {
-			return compare_Comparable(operation, (Comparable) value1, value2);
-		}
-
-		return compare_Unknown(operation, value1, value2); // RFC 59
-	}
-
-	private boolean compare_Collection(int operation, Collection collection, Object value2) {
-		for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
-			if (compare(operation, iterator.next(), value2)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_ObjectArray(int operation, Object[] array, Object value2) {
-		for (int i = 0, size = array.length; i < size; i++) {
-			if (compare(operation, array[i], value2)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_PrimitiveArray(int operation, Class type, Object primarray, Object value2) {
-		if (Integer.TYPE.isAssignableFrom(type)) {
-			int[] array = (int[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Integer(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Long.TYPE.isAssignableFrom(type)) {
-			long[] array = (long[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Long(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Byte.TYPE.isAssignableFrom(type)) {
-			byte[] array = (byte[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Byte(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Short.TYPE.isAssignableFrom(type)) {
-			short[] array = (short[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Short(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Character.TYPE.isAssignableFrom(type)) {
-			char[] array = (char[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Character(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Float.TYPE.isAssignableFrom(type)) {
-			float[] array = (float[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Float(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Double.TYPE.isAssignableFrom(type)) {
-			double[] array = (double[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Double(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Boolean.TYPE.isAssignableFrom(type)) {
-			boolean[] array = (boolean[]) primarray;
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare_Boolean(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		return false;
-	}
-
-	private boolean compare_String(int operation, String string, Object value2) {
-		switch (operation) {
-			case SUBSTRING : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("SUBSTRING(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-
-				String[] substrings = (String[]) value2;
-				int pos = 0;
-				for (int i = 0, size = substrings.length; i < size; i++) {
-					String substr = substrings[i];
-
-					if (i + 1 < size) /* if this is not that last substr */{
-						if (substr == null) /* * */{
-							String substr2 = substrings[i + 1];
-
-							if (substr2 == null) /* ** */
-								continue; /* ignore first star */
-							/* *xxx */
-							if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-								Debug.println("indexOf(\"" + substr2 + "\"," + pos + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-							}
-							int index = string.indexOf(substr2, pos);
-							if (index == -1) {
-								return false;
-							}
-
-							pos = index + substr2.length();
-							if (i + 2 < size) // if there are more substrings, increment over the string we just matched; otherwise need to do the last substr check
-								i++;
-						} else /* xxx */{
-							int len = substr.length();
-
-							if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-								Debug.println("regionMatches(" + pos + ",\"" + substr + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-							}
-							if (string.regionMatches(pos, substr, 0, len)) {
-								pos += len;
-							} else {
-								return false;
-							}
-						}
-					} else /* last substr */{
-						if (substr == null) /* * */{
-							return true;
-						}
-						/* xxx */
-						if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-							Debug.println("regionMatches(" + pos + "," + substr + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						}
-						return string.endsWith(substr);
-					}
-				}
-
-				return true;
-			}
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return string.equals(value2);
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-
-				string = approxString(string);
-				String string2 = approxString((String) value2);
-
-				return string.equalsIgnoreCase(string2);
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return string.compareTo((String) value2) >= 0;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + string + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return string.compareTo((String) value2) <= 0;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Integer(int operation, int intval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + intval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		int intval2;
-		try {
-			intval2 = Integer.parseInt(((String) value2).trim());
-		} catch (IllegalArgumentException e) {
-			return false;
-		}
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + intval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return intval == intval2;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + intval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return intval == intval2;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + intval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return intval >= intval2;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + intval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return intval <= intval2;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Long(int operation, long longval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + longval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		long longval2;
-		try {
-			longval2 = Long.parseLong(((String) value2).trim());
-		} catch (IllegalArgumentException e) {
-			return false;
-		}
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + longval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return longval == longval2;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + longval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return longval == longval2;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + longval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return longval >= longval2;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + longval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return longval <= longval2;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Byte(int operation, byte byteval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + byteval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		byte byteval2;
-		try {
-			byteval2 = Byte.parseByte(((String) value2).trim());
-		} catch (IllegalArgumentException e) {
-			return false;
-		}
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + byteval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return byteval == byteval2;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + byteval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return byteval == byteval2;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + byteval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return byteval >= byteval2;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + byteval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return byteval <= byteval2;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Short(int operation, short shortval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + shortval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		short shortval2;
-		try {
-			shortval2 = Short.parseShort(((String) value2).trim());
-		} catch (IllegalArgumentException e) {
-			return false;
-		}
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + shortval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return shortval == shortval2;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + shortval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return shortval == shortval2;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + shortval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return shortval >= shortval2;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + shortval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return shortval <= shortval2;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Character(int operation, char charval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + charval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		char charval2;
-		try {
-			charval2 = ((String) value2).charAt(0);
-		} catch (IndexOutOfBoundsException e) {
-			return false;
-		}
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + charval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return charval == charval2;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + charval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return (charval == charval2) || (Character.toUpperCase(charval) == Character.toUpperCase(charval2)) || (Character.toLowerCase(charval) == Character.toLowerCase(charval2));
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + charval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return charval >= charval2;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + charval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return charval <= charval2;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Boolean(int operation, boolean boolval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + boolval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		boolean boolval2 = Boolean.valueOf(((String) value2).trim()).booleanValue();
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + boolval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return boolval == boolval2;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + boolval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return boolval == boolval2;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + boolval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return boolval == boolval2;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + boolval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return boolval == boolval2;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Float(int operation, float floatval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		float floatval2;
-		try {
-			floatval2 = Float.parseFloat(((String) value2).trim());
-		} catch (IllegalArgumentException e) {
-			return false;
-		}
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Float.compare(floatval, floatval2) == 0;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Float.compare(floatval, floatval2) == 0;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Float.compare(floatval, floatval2) >= 0;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Float.compare(floatval, floatval2) <= 0;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Double(int operation, double doubleval, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		double doubleval2;
-		try {
-			doubleval2 = Double.parseDouble(((String) value2).trim());
-		} catch (IllegalArgumentException e) {
-			return false;
-		}
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Double.compare(doubleval, doubleval2) == 0;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Double.compare(doubleval, doubleval2) == 0;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Double.compare(doubleval, doubleval2) >= 0;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return Double.compare(doubleval, doubleval2) <= 0;
-			}
-		}
-
-		return false;
-	}
-
-	private static final Class[] constructorType = new Class[] {String.class};
-
-	private boolean compare_Comparable(int operation, Comparable value1, Object value2) {
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		Constructor constructor;
-		try {
-			constructor = value1.getClass().getConstructor(constructorType);
-		} catch (NoSuchMethodException e) {
-			return false;
-		}
-		try {
-			if (!constructor.isAccessible())
-				AccessController.doPrivileged(new SetAccessibleAction(constructor));
-			value2 = constructor.newInstance(new Object[] {((String) value2).trim()});
-		} catch (IllegalAccessException e) {
-			return false;
-		} catch (InvocationTargetException e) {
-			return false;
-		} catch (InstantiationException e) {
-			return false;
-		}
-
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.compareTo(value2) == 0;
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.compareTo(value2) == 0;
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.compareTo(value2) >= 0;
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.compareTo(value2) <= 0;
-			}
-		}
-
-		return false;
-	}
-
-	private boolean compare_Unknown(int operation, Object value1, Object value2) { //RFC 59
-		if (operation == SUBSTRING) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("SUBSTRING(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			return false;
-		}
-
-		Constructor constructor;
-		try {
-			constructor = value1.getClass().getConstructor(constructorType);
-		} catch (NoSuchMethodException e) {
-			if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-				Debug.println("Type not supported"); //$NON-NLS-1$
-			}
-			return false;
-		}
-		try {
-			if (!constructor.isAccessible())
-				AccessController.doPrivileged(new SetAccessibleAction(constructor));
-			value2 = constructor.newInstance(new Object[] {((String) value2).trim()});
-		} catch (IllegalAccessException e) {
-			return false;
-		} catch (InvocationTargetException e) {
-			return false;
-		} catch (InstantiationException e) {
-			return false;
-		}
-
-		switch (operation) {
-			case EQUAL : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("EQUAL(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.equals(value2);
-			}
-			case APPROX : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("APPROX(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.equals(value2);
-			}
-			case GREATER : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("GREATER(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.equals(value2);
-			}
-			case LESS : {
-				if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-					Debug.println("LESS(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				return value1.equals(value2);
-			}
-		}
-
-		return false;
-	}
-
-	/**
-	 * Map a string for an APPROX (~=) comparison.
-	 *
-	 * This implementation removes white spaces.
-	 * This is the minimum implementation allowed by
-	 * the OSGi spec.
-	 *
-	 * @param input Input string.
-	 * @return String ready for APPROX comparison.
-	 */
-	private static String approxString(String input) {
-		boolean changed = false;
-		char[] output = input.toCharArray();
-		int cursor = 0;
-		for (int i = 0, length = output.length; i < length; i++) {
-			char c = output[i];
-
-			if (Character.isWhitespace(c)) {
-				changed = true;
-				continue;
-			}
-
-			output[cursor] = c;
-			cursor++;
-		}
-
-		return changed ? new String(output, 0, cursor) : input;
-	}
-
-	/**
-	 * Returns the leftmost required objectClass value for the filter to evaluate to true.
-	 * 
-	 * @return The leftmost required objectClass value or null if none could be determined.
-	 */
-	public String getRequiredObjectClass() {
-		// just checking for simple filters here where objectClass is the only attr or it is one attr of a base '&' clause
-		// (objectClass=org.acme.BrickService) OK
-		// (&(objectClass=org.acme.BrickService)(|(vendor=IBM)(vendor=SUN))) OK
-		// (objectClass=org.acme.*) NOT OK
-		// (|(objectClass=org.acme.BrickService)(objectClass=org.acme.CementService)) NOT OK
-		// (&(objectClass=org.acme.BrickService)(objectClass=org.acme.CementService)) OK but only the first objectClass is returned
-		switch (op) {
-			case EQUAL :
-				if (attr.equalsIgnoreCase(org.osgi.framework.Constants.OBJECTCLASS) && (value instanceof String))
-					return (String) value;
-				break;
-			case AND :
-				FilterImpl[] clauses = (FilterImpl[]) value;
-				for (int i = 0; i < clauses.length; i++)
-					if (clauses[i].op == EQUAL) {
-						String result = clauses[i].getRequiredObjectClass();
-						if (result != null)
-							return result;
-					}
-				break;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns all the attributes contained within this filter
-	 * @return all the attributes contained within this filter
-	 */
-	public String[] getAttributes() {
-		ArrayList results = new ArrayList();
-		getAttributesInternal(results);
-		return (String[]) results.toArray(new String[results.size()]);
-	}
-
-	private void getAttributesInternal(ArrayList results) {
-		if (value instanceof FilterImpl[]) {
-			FilterImpl[] children = (FilterImpl[]) value;
-			for (int i = 0; i < children.length; i++)
-				children[i].getAttributesInternal(results);
-			return;
-		} else if (value instanceof FilterImpl) {
-			// The NOT operation only has one child filter (bug 188075)
-			((FilterImpl) value).getAttributesInternal(results);
-			return;
-		}
-		if (attr != null)
-			results.add(attr);
-	}
-
-	/**
-	 * Parser class for OSGi filter strings. This class parses
-	 * the complete filter string and builds a tree of Filter
-	 * objects rooted at the parent.
-	 */
-	private static class Parser {
-		private final String filterstring;
-		private final char[] filterChars;
-		private int pos;
-
-		Parser(String filterstring) {
-			this.filterstring = filterstring;
-			filterChars = filterstring.toCharArray();
-			pos = 0;
-		}
-
-		FilterImpl parse() throws InvalidSyntaxException {
-			FilterImpl filter;
-			try {
-				filter = parse_filter();
-			} catch (ArrayIndexOutOfBoundsException e) {
-				throw new InvalidSyntaxException(Msg.FILTER_TERMINATED_ABRUBTLY, filterstring);
-			}
-
-			if (pos != filterChars.length) {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_TRAILING_CHARACTERS, filterstring.substring(pos)), filterstring);
-			}
-			return filter;
-		}
-
-		private FilterImpl parse_filter() throws InvalidSyntaxException {
-			FilterImpl filter;
-			skipWhiteSpace();
-
-			if (filterChars[pos] != '(') {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_LEFTPAREN, filterstring.substring(pos)), filterstring);
-			}
-
-			pos++;
-
-			filter = parse_filtercomp();
-
-			skipWhiteSpace();
-
-			if (filterChars[pos] != ')') {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_RIGHTPAREN, filterstring.substring(pos)), filterstring);
-			}
-
-			pos++;
-
-			skipWhiteSpace();
-
-			return filter;
-		}
-
-		private FilterImpl parse_filtercomp() throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			char c = filterChars[pos];
-
-			switch (c) {
-				case '&' : {
-					pos++;
-					return parse_and();
-				}
-				case '|' : {
-					pos++;
-					return parse_or();
-				}
-				case '!' : {
-					pos++;
-					return parse_not();
-				}
-			}
-			return parse_item();
-		}
-
-		private FilterImpl parse_and() throws InvalidSyntaxException {
-			int lookahead = pos;
-			skipWhiteSpace();
-
-			if (filterChars[pos] != '(') {
-				pos = lookahead - 1;
-				return parse_item();
-			}
-
-			List operands = new ArrayList(10);
-
-			while (filterChars[pos] == '(') {
-				FilterImpl child = parse_filter();
-				operands.add(child);
-			}
-
-			return new FilterImpl(FilterImpl.AND, null, operands.toArray(new FilterImpl[operands.size()]));
-		}
-
-		private FilterImpl parse_or() throws InvalidSyntaxException {
-			int lookahead = pos;
-			skipWhiteSpace();
-
-			if (filterChars[pos] != '(') {
-				pos = lookahead - 1;
-				return parse_item();
-			}
-
-			List operands = new ArrayList(10);
-
-			while (filterChars[pos] == '(') {
-				FilterImpl child = parse_filter();
-				operands.add(child);
-			}
-
-			return new FilterImpl(FilterImpl.OR, null, operands.toArray(new FilterImpl[operands.size()]));
-		}
-
-		private FilterImpl parse_not() throws InvalidSyntaxException {
-			int lookahead = pos;
-			skipWhiteSpace();
-
-			if (filterChars[pos] != '(') {
-				pos = lookahead - 1;
-				return parse_item();
-			}
-
-			FilterImpl child = parse_filter();
-
-			return new FilterImpl(FilterImpl.NOT, null, child);
-		}
-
-		private FilterImpl parse_item() throws InvalidSyntaxException {
-			String attr = parse_attr();
-
-			skipWhiteSpace();
-
-			switch (filterChars[pos]) {
-				case '~' : {
-					if (filterChars[pos + 1] == '=') {
-						pos += 2;
-						return new FilterImpl(FilterImpl.APPROX, attr, parse_value());
-					}
-					break;
-				}
-				case '>' : {
-					if (filterChars[pos + 1] == '=') {
-						pos += 2;
-						return new FilterImpl(FilterImpl.GREATER, attr, parse_value());
-					}
-					break;
-				}
-				case '<' : {
-					if (filterChars[pos + 1] == '=') {
-						pos += 2;
-						return new FilterImpl(FilterImpl.LESS, attr, parse_value());
-					}
-					break;
-				}
-				case '=' : {
-					if (filterChars[pos + 1] == '*') {
-						int oldpos = pos;
-						pos += 2;
-						skipWhiteSpace();
-						if (filterChars[pos] == ')') {
-							return new FilterImpl(FilterImpl.PRESENT, attr, null);
-						}
-						pos = oldpos;
-					}
-
-					pos++;
-					Object string = parse_substring();
-
-					if (string instanceof String) {
-						return new FilterImpl(FilterImpl.EQUAL, attr, string);
-					}
-					return new FilterImpl(FilterImpl.SUBSTRING, attr, string);
-				}
-			}
-
-			throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_INVALID_OPERATOR, filterstring.substring(pos)), filterstring);
-		}
-
-		private String parse_attr() throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			int begin = pos;
-			int end = pos;
-
-			char c = filterChars[pos];
-
-			while (c != '~' && c != '<' && c != '>' && c != '=' && c != '(' && c != ')') {
-				pos++;
-
-				if (!Character.isWhitespace(c)) {
-					end = pos;
-				}
-
-				c = filterChars[pos];
-			}
-
-			int length = end - begin;
-
-			if (length == 0) {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_ATTR, filterstring.substring(pos)), filterstring);
-			}
-
-			return new String(filterChars, begin, length);
-		}
-
-		private String parse_value() throws InvalidSyntaxException {
-			StringBuffer sb = new StringBuffer(filterChars.length - pos);
-
-			parseloop: while (true) {
-				char c = filterChars[pos];
-
-				switch (c) {
-					case ')' : {
-						break parseloop;
-					}
-
-					case '(' : {
-						throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_INVALID_VALUE, filterstring.substring(pos)), filterstring);
-					}
-
-					case '\\' : {
-						pos++;
-						c = filterChars[pos];
-						/* fall through into default */
-					}
-
-					default : {
-						sb.append(c);
-						pos++;
-						break;
-					}
-				}
-			}
-
-			if (sb.length() == 0) {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_VALUE, filterstring.substring(pos)), filterstring);
-			}
-
-			return sb.toString();
-		}
-
-		private Object parse_substring() throws InvalidSyntaxException {
-			StringBuffer sb = new StringBuffer(filterChars.length - pos);
-
-			List operands = new ArrayList(10);
-
-			parseloop: while (true) {
-				char c = filterChars[pos];
-
-				switch (c) {
-					case ')' : {
-						if (sb.length() > 0) {
-							operands.add(sb.toString());
-						}
-
-						break parseloop;
-					}
-
-					case '(' : {
-						throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_INVALID_VALUE, filterstring.substring(pos)), filterstring);
-					}
-
-					case '*' : {
-						if (sb.length() > 0) {
-							operands.add(sb.toString());
-						}
-
-						sb.setLength(0);
-
-						operands.add(null);
-						pos++;
-
-						break;
-					}
-
-					case '\\' : {
-						pos++;
-						c = filterChars[pos];
-						/* fall through into default */
-					}
-
-					default : {
-						sb.append(c);
-						pos++;
-						break;
-					}
-				}
-			}
-
-			int size = operands.size();
-
-			if (size == 0) {
-				return "";
-			}
-
-			if (size == 1) {
-				Object single = operands.get(0);
-
-				if (single != null) {
-					return single;
-				}
-			}
-
-			return operands.toArray(new String[size]);
-		}
-
-		private void skipWhiteSpace() {
-			for (int length = filterChars.length; (pos < length) && Character.isWhitespace(filterChars[pos]);) {
-				pos++;
-			}
-		}
-	}
-
-	/**
-	 * This Dictionary is used for key lookup from a ServiceReference during
-	 * filter evaluation. This Dictionary implementation only supports the get
-	 * operation using a String key as no other operations are used by the
-	 * Filter implementation.
-	 * 
-	 */
-	private static class ServiceReferenceDictionary extends Dictionary {
-		private final ServiceReference reference;
-
-		ServiceReferenceDictionary(ServiceReference reference) {
-			this.reference = reference;
-		}
-
-		public Object get(Object key) {
-			if (reference == null) {
-				return null;
-			}
-			return reference.getProperty((String) key);
-		}
-
-		public boolean isEmpty() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Enumeration keys() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Enumeration elements() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Object put(Object key, Object value) {
-			throw new UnsupportedOperationException();
-		}
-
-		public Object remove(Object key) {
-			throw new UnsupportedOperationException();
-		}
-
-		public int size() {
-			throw new UnsupportedOperationException();
-		}
-	}
-
-	private static class SetAccessibleAction implements PrivilegedAction {
-		private final AccessibleObject accessible;
-
-		SetAccessibleAction(AccessibleObject accessible) {
-			this.accessible = accessible;
-		}
-
-		public Object run() {
-			accessible.setAccessible(true);
-			return null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java
deleted file mode 100644
index 01aaee3..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java
+++ /dev/null
@@ -1,1784 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.*;
-import java.lang.reflect.*;
-import java.net.*;
-import java.security.*;
-import java.util.*;
-import org.eclipse.core.runtime.internal.adaptor.ContextFinder;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.eventmgr.*;
-import org.eclipse.osgi.framework.internal.protocol.ContentHandlerFactory;
-import org.eclipse.osgi.framework.internal.protocol.StreamHandlerFactory;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.internal.loader.*;
-import org.eclipse.osgi.internal.permadmin.EquinoxSecurityManager;
-import org.eclipse.osgi.internal.permadmin.SecurityAdmin;
-import org.eclipse.osgi.internal.profile.Profile;
-import org.eclipse.osgi.internal.serviceregistry.ServiceRegistry;
-import org.eclipse.osgi.signedcontent.SignedContentFactory;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Core OSGi Framework class.
- */
-public class Framework implements EventDispatcher, EventPublisher, Runnable {
-	// System property used to set the context classloader parent classloader type (ccl is the default)
-	private static final String PROP_CONTEXTCLASSLOADER_PARENT = "osgi.contextClassLoaderParent"; //$NON-NLS-1$
-	private static final String CONTEXTCLASSLOADER_PARENT_APP = "app"; //$NON-NLS-1$
-	private static final String CONTEXTCLASSLOADER_PARENT_EXT = "ext"; //$NON-NLS-1$
-	private static final String CONTEXTCLASSLOADER_PARENT_BOOT = "boot"; //$NON-NLS-1$
-	private static final String CONTEXTCLASSLOADER_PARENT_FWK = "fwk"; //$NON-NLS-1$
-
-	public static final String PROP_FRAMEWORK_THREAD = "osgi.framework.activeThreadType"; //$NON-NLS-1$
-	public static final String THREAD_NORMAL = "normal"; //$NON-NLS-1$
-	public static final String PROP_EQUINOX_SECURITY = "eclipse.security"; //$NON-NLS-1$
-	public static final String SECURITY_OSGI = "osgi"; //$NON-NLS-1$
-
-	private static String J2SE = "J2SE-"; //$NON-NLS-1$
-	private static String JAVASE = "JavaSE-"; //$NON-NLS-1$
-	private static String PROFILE_EXT = ".profile"; //$NON-NLS-1$
-	/** FrameworkAdaptor specific functions. */
-	protected FrameworkAdaptor adaptor;
-	/** Framework properties object.  A reference to the 
-	 * System.getProperies() object.  The properties from
-	 * the adaptor will be merged into these properties.
-	 */
-	protected Properties properties;
-	/** Has the framework been started */
-	protected boolean active;
-	/** Event indicating the reason for shutdown*/
-	private FrameworkEvent[] shutdownEvent;
-	/** The bundles installed in the framework */
-	protected BundleRepository bundles;
-	/** Package Admin object. This object manages the exported packages. */
-	protected PackageAdminImpl packageAdmin;
-	/** PermissionAdmin and ConditionalPermissionAdmin impl. This object manages the bundle permissions. */
-	protected SecurityAdmin securityAdmin;
-	/** Startlevel object. This object manages the framework and bundle startlevels */
-	protected StartLevelManager startLevelManager;
-	/** The ServiceRegistry */
-	private ServiceRegistry serviceRegistry;
-
-	/*
-	 * The following EventListeners objects keep track of event listeners
-	 * by BundleContext.  Each element is a EventListeners that is the list
-	 * of event listeners for a particular BundleContext.  The max number of
-	 * elements each of the following lists will have is the number of bundles
-	 * installed in the Framework.
-	 */
-	/** List of BundleContexts for bundle's BundleListeners. */
-	protected Map bundleEvent;
-	protected static final int BUNDLEEVENT = 1;
-	/** List of BundleContexts for bundle's SynchronousBundleListeners. */
-	protected Map bundleEventSync;
-	protected static final int BUNDLEEVENTSYNC = 2;
-	/* SERVICEEVENT(3) is now handled by ServiceRegistry */
-	/** List of BundleContexts for bundle's FrameworkListeners. */
-	protected Map frameworkEvent;
-	protected static final int FRAMEWORKEVENT = 4;
-	protected static final int BATCHEVENT_BEGIN = Integer.MIN_VALUE + 1;
-	protected static final int BATCHEVENT_END = Integer.MIN_VALUE;
-	/** EventManager for event delivery. */
-	protected EventManager eventManager;
-	/* Reservation object for install synchronization */
-	protected Hashtable installLock;
-	/** System Bundle object */
-	protected InternalSystemBundle systemBundle;
-	private String[] bootDelegation;
-	private String[] bootDelegationStems;
-	private boolean bootDelegateAll = false;
-	public final boolean contextBootDelegation = "true".equals(FrameworkProperties.getProperty("osgi.context.bootdelegation", "true")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	public final boolean compatibiltyBootDelegation = "true".equals(FrameworkProperties.getProperty(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION, "true")); //$NON-NLS-1$ //$NON-NLS-2$
-	ClassLoaderDelegateHook[] delegateHooks;
-	private volatile boolean forcedRestart = false;
-	/**
-	 * The AliasMapper used to alias OS Names.
-	 */
-	protected static AliasMapper aliasMapper = new AliasMapper();
-	SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-	// cache of AdminPermissions keyed by Bundle ID
-	private HashMap adminPermissions = new HashMap();
-
-	// we need to hold these so that we can unregister them at shutdown
-	private StreamHandlerFactory streamHandlerFactory;
-	private ContentHandlerFactory contentHandlerFactory;
-
-	private volatile ServiceTracker signedContentFactory;
-	private volatile ContextFinder contextFinder;
-
-	/* 
-	 * We need to make sure that the GetDataFileAction class loads early to prevent a ClassCircularityError when checking permissions.
-	 * see bug 161561
-	 */
-	static {
-		Class c;
-		c = GetDataFileAction.class;
-		c.getName(); // to prevent compiler warnings
-	}
-
-	static class GetDataFileAction implements PrivilegedAction {
-		private AbstractBundle bundle;
-		private String filename;
-
-		public GetDataFileAction(AbstractBundle bundle, String filename) {
-			this.bundle = bundle;
-			this.filename = filename;
-		}
-
-		public Object run() {
-			return bundle.getBundleData().getDataFile(filename);
-		}
-	}
-
-	/**
-	 * Constructor for the Framework instance. This method initializes the
-	 * framework to an unlaunched state.
-	 *  
-	 */
-	public Framework(FrameworkAdaptor adaptor) {
-		initialize(adaptor);
-	}
-
-	/**
-	 * Initialize the framework to an unlaunched state. This method is called
-	 * by the Framework constructor.
-	 *  
-	 */
-	protected void initialize(FrameworkAdaptor adaptor) {
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logEnter("Framework.initialze()", null); //$NON-NLS-1$
-		long start = System.currentTimeMillis();
-		this.adaptor = adaptor;
-		delegateHooks = adaptor instanceof BaseAdaptor ? ((BaseAdaptor) adaptor).getHookRegistry().getClassLoaderDelegateHooks() : null;
-		active = false;
-		installSecurityManager();
-		if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-			Debug.println("SecurityManager: " + System.getSecurityManager()); //$NON-NLS-1$
-			Debug.println("ProtectionDomain of Framework.class: \n" + this.getClass().getProtectionDomain()); //$NON-NLS-1$
-		}
-		setNLSFrameworkLog();
-		// initialize ContextFinder
-		initializeContextFinder();
-		/* initialize the adaptor */
-		adaptor.initialize(this);
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("Framework.initialze()", "adapter initialized"); //$NON-NLS-1$//$NON-NLS-2$
-		try {
-			adaptor.initializeStorage();
-		} catch (IOException e) /* fatal error */{
-			throw new RuntimeException(e.getMessage(), e);
-		}
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("Framework.initialze()", "adapter storage initialized"); //$NON-NLS-1$//$NON-NLS-2$
-		/*
-		 * This must be done before calling any of the framework getProperty
-		 * methods.
-		 */
-		initializeProperties(adaptor.getProperties());
-		/* initialize admin objects */
-		packageAdmin = new PackageAdminImpl(this);
-		try {
-			// always create security admin even with security off
-			securityAdmin = new SecurityAdmin(null, this, adaptor.getPermissionStorage());
-		} catch (IOException e) /* fatal error */{
-			e.printStackTrace();
-			throw new RuntimeException(e.getMessage(), e);
-		}
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("Framework.initialze()", "done init props & new PermissionAdminImpl"); //$NON-NLS-1$//$NON-NLS-2$
-		startLevelManager = new StartLevelManager(this);
-		/* create the event manager and top level event dispatchers */
-		eventManager = new EventManager("Framework Event Dispatcher"); //$NON-NLS-1$
-		bundleEvent = new CopyOnWriteIdentityMap();
-		bundleEventSync = new CopyOnWriteIdentityMap();
-		frameworkEvent = new CopyOnWriteIdentityMap();
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("Framework.initialze()", "done new EventManager"); //$NON-NLS-1$ //$NON-NLS-2$
-		/* create the service registry */
-		serviceRegistry = new ServiceRegistry(this);
-		// Initialize the installLock; there is no way of knowing 
-		// what the initial size should be, at most it will be the number
-		// of threads trying to install a bundle (probably a very low number).
-		installLock = new Hashtable(10);
-		/* create the system bundle */
-		createSystemBundle();
-		loadVMProfile(); // load VM profile after the system bundle has been created
-		setBootDelegation(); //set boot delegation property after system exports have been set
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("Framework.initialze()", "done createSystemBundle"); //$NON-NLS-1$ //$NON-NLS-2$
-		/* install URLStreamHandlerFactory */
-		installURLStreamHandlerFactory(systemBundle.context, adaptor);
-		/* install ContentHandlerFactory for OSGi URLStreamHandler support */
-		installContentHandlerFactory(systemBundle.context, adaptor);
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("Framework.initialze()", "done new URLStream/Content HandlerFactory"); //$NON-NLS-1$//$NON-NLS-2$
-		/* create bundle objects for all installed bundles. */
-		BundleData[] bundleDatas = adaptor.getInstalledBundles();
-		bundles = new BundleRepository(bundleDatas == null ? 10 : bundleDatas.length + 1);
-		/* add the system bundle to the Bundle Repository */
-		bundles.add(systemBundle);
-		if (bundleDatas != null) {
-			for (int i = 0; i < bundleDatas.length; i++) {
-				try {
-					AbstractBundle bundle = AbstractBundle.createBundle(bundleDatas[i], this, true);
-					bundles.add(bundle);
-				} catch (BundleException be) {
-					// This is not a fatal error. Publish the framework event.
-					publishFrameworkEvent(FrameworkEvent.ERROR, systemBundle, be);
-				}
-			}
-		}
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-			System.out.println("Initialize the framework: " + (System.currentTimeMillis() - start)); //$NON-NLS-1$
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logExit("Framework.initialize()"); //$NON-NLS-1$
-	}
-
-	public FrameworkAdaptor getAdaptor() {
-		return adaptor;
-	}
-
-	public ClassLoaderDelegateHook[] getDelegateHooks() {
-		return delegateHooks;
-	}
-
-	public ServiceRegistry getServiceRegistry() {
-		return serviceRegistry;
-	}
-
-	private void setNLSFrameworkLog() {
-		try {
-			Field frameworkLogField = NLS.class.getDeclaredField("frameworkLog"); //$NON-NLS-1$
-			frameworkLogField.setAccessible(true);
-			frameworkLogField.set(null, adaptor.getFrameworkLog());
-		} catch (Exception e) {
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, e.getMessage(), 0, e, null));
-		}
-	}
-
-	private void createSystemBundle() {
-		try {
-			systemBundle = new InternalSystemBundle(this);
-			systemBundle.getBundleData().setBundle(systemBundle);
-		} catch (BundleException e) { // fatal error
-			e.printStackTrace();
-			throw new RuntimeException(NLS.bind(Msg.OSGI_SYSTEMBUNDLE_CREATE_EXCEPTION, e.getMessage()), e);
-		}
-	}
-
-	/**
-	 * Initialize the System properties by copying properties from the adaptor
-	 * properties object. This method is called by the initialize method.
-	 *  
-	 */
-	protected void initializeProperties(Properties adaptorProperties) {
-		properties = FrameworkProperties.getProperties();
-		Enumeration enumKeys = adaptorProperties.propertyNames();
-		while (enumKeys.hasMoreElements()) {
-			String key = (String) enumKeys.nextElement();
-			if (properties.getProperty(key) == null) {
-				properties.put(key, adaptorProperties.getProperty(key));
-			}
-		}
-		properties.put(Constants.FRAMEWORK_VENDOR, Constants.OSGI_FRAMEWORK_VENDOR);
-		properties.put(Constants.FRAMEWORK_VERSION, Constants.OSGI_FRAMEWORK_VERSION);
-		String value = properties.getProperty(Constants.FRAMEWORK_PROCESSOR);
-		if (value == null) {
-			value = properties.getProperty(Constants.JVM_OS_ARCH);
-			if (value != null) {
-				properties.put(Constants.FRAMEWORK_PROCESSOR, aliasMapper.aliasProcessor(value));
-			}
-		}
-		value = properties.getProperty(Constants.FRAMEWORK_OS_NAME);
-		if (value == null) {
-			value = properties.getProperty(Constants.JVM_OS_NAME);
-			try {
-				String canonicalValue = (String) aliasMapper.aliasOSName(value);
-				if (canonicalValue != null) {
-					value = canonicalValue;
-				}
-			} catch (ClassCastException ex) {
-				//A vector was returned from the alias mapper.
-				//The alias mapped to more than one canonical value
-				//such as "win32" for example
-			}
-			if (value != null) {
-				properties.put(Constants.FRAMEWORK_OS_NAME, value);
-			}
-		}
-		value = properties.getProperty(Constants.FRAMEWORK_OS_VERSION);
-		if (value == null) {
-			value = properties.getProperty(Constants.JVM_OS_VERSION);
-			if (value != null) {
-				// only use the value upto the first space
-				int space = value.indexOf(' ');
-				if (space > 0) {
-					value = value.substring(0, space);
-				}
-				// fix up cases where the os version does not make a valid Version string.
-				int major = 0, minor = 0, micro = 0;
-				String qualifier = ""; //$NON-NLS-1$
-				try {
-					StringTokenizer st = new StringTokenizer(value, ".", true); //$NON-NLS-1$
-					major = parseVersionInt(st.nextToken());
-
-					if (st.hasMoreTokens()) {
-						st.nextToken(); // consume delimiter
-						minor = parseVersionInt(st.nextToken());
-
-						if (st.hasMoreTokens()) {
-							st.nextToken(); // consume delimiter
-							micro = parseVersionInt(st.nextToken());
-
-							if (st.hasMoreTokens()) {
-								st.nextToken(); // consume delimiter
-								qualifier = st.nextToken();
-							}
-						}
-					}
-				} catch (NoSuchElementException e) {
-					// ignore, use the values parsed so far
-				}
-				try {
-					value = new Version(major, minor, micro, qualifier).toString();
-				} catch (IllegalArgumentException e) {
-					// must be an invalid qualifier; just ignore it
-					value = new Version(major, minor, micro).toString();
-				}
-				properties.put(Constants.FRAMEWORK_OS_VERSION, value);
-			}
-		}
-		value = properties.getProperty(Constants.FRAMEWORK_LANGUAGE);
-		if (value == null)
-			// set the value of the framework language property
-			properties.put(Constants.FRAMEWORK_LANGUAGE, Locale.getDefault().getLanguage());
-		// set the support properties for fragments and require-bundle (bug 173090)
-		properties.put(Constants.SUPPORTS_FRAMEWORK_FRAGMENT, "true"); //$NON-NLS-1$
-		properties.put(Constants.SUPPORTS_FRAMEWORK_REQUIREBUNDLE, "true"); //$NON-NLS-1$
-	}
-
-	private int parseVersionInt(String value) {
-		try {
-			return Integer.parseInt(value);
-		} catch (NumberFormatException e) {
-			// try up to the first non-number char
-			StringBuffer sb = new StringBuffer(value.length());
-			char[] chars = value.toCharArray();
-			for (int i = 0; i < chars.length; i++) {
-				if (!Character.isDigit(chars[i]))
-					break;
-				sb.append(chars[i]);
-			}
-			if (sb.length() > 0)
-				return Integer.parseInt(sb.toString());
-			return 0;
-		}
-	}
-
-	private void setBootDelegation() {
-		// set the boot delegation according to the osgi boot delegation property
-		String bootDelegationProp = properties.getProperty(Constants.FRAMEWORK_BOOTDELEGATION);
-		if (bootDelegationProp == null)
-			return;
-		if (bootDelegationProp.trim().length() == 0)
-			return;
-		String[] bootPackages = ManifestElement.getArrayFromList(bootDelegationProp);
-		ArrayList exactMatch = new ArrayList(bootPackages.length);
-		ArrayList stemMatch = new ArrayList(bootPackages.length);
-		for (int i = 0; i < bootPackages.length; i++) {
-			if (bootPackages[i].equals("*")) { //$NON-NLS-1$
-				bootDelegateAll = true;
-				return;
-			} else if (bootPackages[i].endsWith("*")) { //$NON-NLS-1$
-				if (bootPackages[i].length() > 2 && bootPackages[i].endsWith(".*")) //$NON-NLS-1$
-					stemMatch.add(bootPackages[i].substring(0, bootPackages[i].length() - 1));
-			} else {
-				exactMatch.add(bootPackages[i]);
-			}
-		}
-		if (exactMatch.size() > 0)
-			bootDelegation = (String[]) exactMatch.toArray(new String[exactMatch.size()]);
-		if (stemMatch.size() > 0)
-			bootDelegationStems = (String[]) stemMatch.toArray(new String[stemMatch.size()]);
-	}
-
-	private void loadVMProfile() {
-		Properties profileProps = findVMProfile();
-		String systemExports = properties.getProperty(Constants.FRAMEWORK_SYSTEMPACKAGES);
-		// set the system exports property using the vm profile; only if the property is not already set
-		if (systemExports == null) {
-			systemExports = profileProps.getProperty(Constants.FRAMEWORK_SYSTEMPACKAGES);
-			if (systemExports != null)
-				properties.put(Constants.FRAMEWORK_SYSTEMPACKAGES, systemExports);
-		}
-		// set the org.osgi.framework.bootdelegation property according to the java profile
-		String type = properties.getProperty(Constants.OSGI_JAVA_PROFILE_BOOTDELEGATION); // a null value means ignore
-		String profileBootDelegation = profileProps.getProperty(Constants.FRAMEWORK_BOOTDELEGATION);
-		if (Constants.OSGI_BOOTDELEGATION_OVERRIDE.equals(type)) {
-			if (profileBootDelegation == null)
-				properties.remove(Constants.FRAMEWORK_BOOTDELEGATION); // override with a null value
-			else
-				properties.put(Constants.FRAMEWORK_BOOTDELEGATION, profileBootDelegation); // override with the profile value
-		} else if (Constants.OSGI_BOOTDELEGATION_NONE.equals(type))
-			properties.remove(Constants.FRAMEWORK_BOOTDELEGATION); // remove the bootdelegation property in case it was set
-		// set the org.osgi.framework.executionenvironment property according to the java profile
-		if (properties.getProperty(Constants.FRAMEWORK_EXECUTIONENVIRONMENT) == null) {
-			// get the ee from the java profile; if no ee is defined then try the java profile name
-			String ee = profileProps.getProperty(Constants.FRAMEWORK_EXECUTIONENVIRONMENT, profileProps.getProperty(Constants.OSGI_JAVA_PROFILE_NAME));
-			if (ee != null)
-				properties.put(Constants.FRAMEWORK_EXECUTIONENVIRONMENT, ee);
-		}
-	}
-
-	private Properties findVMProfile() {
-		Properties result = new Properties();
-		// Find the VM profile name using J2ME properties
-		String j2meConfig = properties.getProperty(Constants.J2ME_MICROEDITION_CONFIGURATION);
-		String j2meProfiles = properties.getProperty(Constants.J2ME_MICROEDITION_PROFILES);
-		String vmProfile = null;
-		String javaEdition = null;
-		Version javaVersion = null;
-		if (j2meConfig != null && j2meConfig.length() > 0 && j2meProfiles != null && j2meProfiles.length() > 0) {
-			// save the vmProfile based off of the config and profile
-			// use the last profile; assuming that is the highest one
-			String[] j2meProfileList = ManifestElement.getArrayFromList(j2meProfiles, " "); //$NON-NLS-1$
-			if (j2meProfileList != null && j2meProfileList.length > 0)
-				vmProfile = j2meConfig + '_' + j2meProfileList[j2meProfileList.length - 1];
-		} else {
-			// No J2ME properties; use J2SE properties
-			// Note that the CDC spec appears not to require VM implementations to set the
-			// javax.microedition properties!!  So we will try to fall back to the 
-			// java.specification.name property, but this is pretty ridiculous!!
-			String javaSpecVersion = properties.getProperty("java.specification.version"); //$NON-NLS-1$
-			// set the profile and EE based off of the java.specification.version
-			// TODO We assume J2ME Foundation and J2SE here.  need to support other profiles J2EE ...
-			if (javaSpecVersion != null) {
-				StringTokenizer st = new StringTokenizer(javaSpecVersion, " _-"); //$NON-NLS-1$
-				javaSpecVersion = st.nextToken();
-				String javaSpecName = properties.getProperty("java.specification.name"); //$NON-NLS-1$
-				// See bug 291269 we check for Foundation Specification and Foundation Profile Specification
-				if (javaSpecName != null && (javaSpecName.indexOf("Foundation Specification") >= 0 || javaSpecName.indexOf("Foundation Profile Specification") >= 0)) //$NON-NLS-1$ //$NON-NLS-2$
-					vmProfile = "CDC-" + javaSpecVersion + "_Foundation-" + javaSpecVersion; //$NON-NLS-1$ //$NON-NLS-2$
-				else {
-					// look for JavaSE if 1.6 or greater; otherwise look for J2SE
-					Version v16 = new Version("1.6"); //$NON-NLS-1$
-					javaEdition = J2SE;
-					try {
-						javaVersion = new Version(javaSpecVersion);
-						if (v16.compareTo(javaVersion) <= 0)
-							javaEdition = JAVASE;
-					} catch (IllegalArgumentException e) {
-						// do nothing
-					}
-					vmProfile = javaEdition + javaSpecVersion;
-				}
-			}
-		}
-		URL url = null;
-		// check for the java profile property for a url
-		String propJavaProfile = FrameworkProperties.getProperty(Constants.OSGI_JAVA_PROFILE);
-		if (propJavaProfile != null)
-			try {
-				// we assume a URL
-				url = new URL(propJavaProfile);
-			} catch (MalformedURLException e1) {
-				// try using a relative path in the system bundle
-				url = findInSystemBundle(propJavaProfile);
-			}
-		if (url == null && vmProfile != null) {
-			// look for a profile in the system bundle based on the vm profile
-			String javaProfile = vmProfile + PROFILE_EXT;
-			url = findInSystemBundle(javaProfile);
-			if (url == null)
-				url = getNextBestProfile(javaEdition, javaVersion);
-		}
-		if (url == null)
-			// the profile url is still null then use the osgi min profile in OSGi by default
-			url = findInSystemBundle("OSGi_Minimum-1.2.profile"); //$NON-NLS-1$
-		if (url != null) {
-			InputStream in = null;
-			try {
-				in = url.openStream();
-				result.load(new BufferedInputStream(in));
-			} catch (IOException e) {
-				// TODO consider logging ...
-			} finally {
-				if (in != null)
-					try {
-						in.close();
-					} catch (IOException ee) {
-						// do nothing
-					}
-			}
-		}
-		// set the profile name if it does not provide one
-		if (result.getProperty(Constants.OSGI_JAVA_PROFILE_NAME) == null)
-			if (vmProfile != null)
-				result.put(Constants.OSGI_JAVA_PROFILE_NAME, vmProfile.replace('_', '/'));
-			else
-				// last resort; default to the absolute minimum profile name for the framework
-				result.put(Constants.OSGI_JAVA_PROFILE_NAME, "OSGi/Minimum-1.2"); //$NON-NLS-1$
-		return result;
-	}
-
-	private URL getNextBestProfile(String javaEdition, Version javaVersion) {
-		if (javaVersion == null || (javaEdition != J2SE && javaEdition != JAVASE))
-			return null; // we cannot automatically choose the next best profile unless this is a J2SE or JavaSE vm
-		URL bestProfile = findNextBestProfile(javaEdition, javaVersion);
-		if (bestProfile == null && javaEdition == JAVASE)
-			// if this is a JavaSE VM then search for a lower J2SE profile
-			bestProfile = findNextBestProfile(J2SE, javaVersion);
-		return bestProfile;
-	}
-
-	private URL findNextBestProfile(String javaEdition, Version javaVersion) {
-		URL result = null;
-		int minor = javaVersion.getMinor();
-		do {
-			result = findInSystemBundle(javaEdition + javaVersion.getMajor() + "." + minor + PROFILE_EXT); //$NON-NLS-1$
-			minor = minor - 1;
-		} while (result == null && minor > 0);
-		return result;
-	}
-
-	private URL findInSystemBundle(String entry) {
-		URL result = systemBundle.getEntry0(entry);
-		if (result == null) {
-			// Check the ClassLoader in case we're launched off the Java boot classpath
-			ClassLoader loader = getClass().getClassLoader();
-			result = loader == null ? ClassLoader.getSystemResource(entry) : loader.getResource(entry);
-		}
-		return result;
-	}
-
-	/**
-	 * This method return the state of the framework.
-	 *  
-	 */
-	protected boolean isActive() {
-		return (active);
-	}
-
-	/**
-	 * This method is called to destory the framework instance.
-	 *  
-	 */
-	public synchronized void close() {
-		if (adaptor == null)
-			return;
-		if (active)
-			shutdown(FrameworkEvent.STOPPED);
-
-		synchronized (bundles) {
-			List allBundles = bundles.getBundles();
-			int size = allBundles.size();
-			for (int i = 0; i < size; i++) {
-				AbstractBundle bundle = (AbstractBundle) allBundles.get(i);
-				bundle.close();
-			}
-			bundles.removeAllBundles();
-		}
-		serviceRegistry = null;
-		if (bundleEvent != null) {
-			bundleEvent.clear();
-			bundleEvent = null;
-		}
-		if (bundleEventSync != null) {
-			bundleEventSync.clear();
-			bundleEventSync = null;
-		}
-		if (frameworkEvent != null) {
-			frameworkEvent.clear();
-			frameworkEvent = null;
-		}
-		if (eventManager != null) {
-			eventManager.close();
-			eventManager = null;
-		}
-		secureAction = null;
-		packageAdmin = null;
-		adaptor = null;
-		uninstallURLStreamHandlerFactory();
-		uninstallContentHandlerFactory();
-		if (System.getSecurityManager() instanceof EquinoxSecurityManager)
-			System.setSecurityManager(null);
-	}
-
-	/**
-	 * Start the framework.
-	 * 
-	 * When the framework is started. The following actions occur: 1. Event
-	 * handling is enabled. Events can now be delivered to listeners. 2. All
-	 * bundles which are recorded as started are started as described in the
-	 * Bundle.start() method. These bundles are the bundles that were started
-	 * when the framework was last stopped. Reports any exceptions that occur
-	 * during startup using FrameworkEvents. 3. A FrameworkEvent of type
-	 * FrameworkEvent.STARTED is broadcast.
-	 *  
-	 */
-	public synchronized void launch() {
-		/* Return if framework already started */
-		if (active) {
-			return;
-		}
-		/* mark framework as started */
-		active = true;
-		shutdownEvent = new FrameworkEvent[1];
-		if (THREAD_NORMAL.equals(FrameworkProperties.getProperty(PROP_FRAMEWORK_THREAD))) {
-			Thread fwkThread = new Thread(this, "Framework Active Thread"); //$NON-NLS-1$
-			fwkThread.setDaemon(false);
-			fwkThread.start();
-		}
-		/* Resume systembundle */
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("Trying to launch framework"); //$NON-NLS-1$
-		}
-		systemBundle.resume();
-		signedContentFactory = new ServiceTracker(systemBundle.getBundleContext(), SignedContentFactory.class.getName(), null);
-		signedContentFactory.open();
-	}
-
-	/**
-	 * Stop the framework.
-	 * 
-	 * When the framework is stopped. The following actions occur: 1. Suspend
-	 * all started bundles as described in the Bundle.stop method except that
-	 * the bundle is recorded as started. These bundles will be restarted when
-	 * the framework is next started. Reports any exceptions that occur during
-	 * stopping using FrameworkEvents. 2. Event handling is disabled.
-	 *  
-	 */
-	public synchronized void shutdown(int eventType) {
-		/* Return if framework already stopped */
-		if (!active)
-			return;
-		this.shutdownEvent[0] = new FrameworkEvent(eventType, systemBundle, null);
-		/*
-		 * set the state of the System Bundle to STOPPING.
-		 * this must be done first according to section 4.19.2 from the OSGi R3 spec.  
-		 */
-		systemBundle.state = AbstractBundle.STOPPING;
-		publishBundleEvent(BundleEvent.STOPPING, systemBundle); // need to send system bundle stopping event 
-		/* call the FrameworkAdaptor.frameworkStopping method first */
-		try {
-			adaptor.frameworkStopping(systemBundle.getContext());
-		} catch (Throwable t) {
-			publishFrameworkEvent(FrameworkEvent.ERROR, systemBundle, t);
-		}
-		/* Suspend systembundle */
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("Trying to shutdown Framework"); //$NON-NLS-1$
-		}
-		systemBundle.suspend();
-		try {
-			adaptor.compactStorage();
-		} catch (IOException e) {
-			publishFrameworkEvent(FrameworkEvent.ERROR, systemBundle, e);
-		}
-		if (signedContentFactory != null)
-			signedContentFactory.close();
-		/* mark framework as stopped */
-		active = false;
-		notifyAll();
-	}
-
-	/**
-	 * Create a new Bundle object.
-	 * 
-	 * @param bundledata the BundleData of the Bundle to create
-	 */
-	AbstractBundle createAndVerifyBundle(BundleData bundledata, boolean setBundle) throws BundleException {
-		// Check for a bundle already installed with the same symbolic name and version.
-		if (bundledata.getSymbolicName() != null) {
-			AbstractBundle installedBundle = getBundleBySymbolicName(bundledata.getSymbolicName(), bundledata.getVersion());
-			if (installedBundle != null && installedBundle.getBundleId() != bundledata.getBundleID()) {
-				String msg = NLS.bind(Msg.BUNDLE_INSTALL_SAME_UNIQUEID, new Object[] {installedBundle.getSymbolicName(), installedBundle.getVersion().toString(), installedBundle.getLocation()});
-				throw new DuplicateBundleException(msg, installedBundle);
-			}
-		}
-		return AbstractBundle.createBundle(bundledata, this, setBundle);
-	}
-
-	private class DuplicateBundleException extends BundleException implements StatusException {
-		private static final long serialVersionUID = 135669822846323624L;
-		private final Bundle duplicate;
-
-		public DuplicateBundleException(String msg, Bundle duplicate) {
-			super(msg, BundleException.DUPLICATE_BUNDLE_ERROR);
-			this.duplicate = duplicate;
-		}
-
-		public Object getStatus() {
-			return duplicate;
-		}
-
-		public int getStatusCode() {
-			return StatusException.CODE_OK;
-		}
-
-	}
-
-	/**
-	 * Retrieve the value of the named environment property. Values are
-	 * provided for the following properties:
-	 * <dl>
-	 * <dt><code>org.osgi.framework.version</code>
-	 * <dd>The version of the framework.
-	 * <dt><code>org.osgi.framework.vendor</code>
-	 * <dd>The vendor of this framework implementation.
-	 * <dt><code>org.osgi.framework.language</code>
-	 * <dd>The language being used. See ISO 639 for possible values.
-	 * <dt><code>org.osgi.framework.os.name</code>
-	 * <dd>The name of the operating system of the hosting computer.
-	 * <dt><code>org.osgi.framework.os.version</code>
-	 * <dd>The version number of the operating system of the hosting computer.
-	 * <dt><code>org.osgi.framework.processor</code>
-	 * <dd>The name of the processor of the hosting computer.
-	 * </dl>
-	 * 
-	 * <p>
-	 * Note: These last four properties are used by the <code>Bundle-NativeCode</code>
-	 * manifest header's matching algorithm for selecting native code.
-	 * 
-	 * @param key
-	 *            The name of the requested property.
-	 * @return The value of the requested property, or <code>null</code> if
-	 *         the property is undefined.
-	 */
-	public String getProperty(String key) {
-		return properties.getProperty(key);
-	}
-
-	/**
-	 * Retrieve the value of the named environment property. Values are
-	 * provided for the following properties:
-	 * <dl>
-	 * <dt><code>org.osgi.framework.version</code>
-	 * <dd>The version of the framework.
-	 * <dt><code>org.osgi.framework.vendor</code>
-	 * <dd>The vendor of this framework implementation.
-	 * <dt><code>org.osgi.framework.language</code>
-	 * <dd>The language being used. See ISO 639 for possible values.
-	 * <dt><code>org.osgi.framework.os.name</code>
-	 * <dd>The name of the operating system of the hosting computer.
-	 * <dt><code>org.osgi.framework.os.version</code>
-	 * <dd>The version number of the operating system of the hosting computer.
-	 * <dt><code>org.osgi.framework.processor</code>
-	 * <dd>The name of the processor of the hosting computer.
-	 * </dl>
-	 * 
-	 * <p>
-	 * Note: These last four properties are used by the <code>Bundle-NativeCode</code>
-	 * manifest header's matching algorithm for selecting native code.
-	 * 
-	 * @param key
-	 *            The name of the requested property.
-	 * @param def
-	 *            A default value is the requested property is not present.
-	 * @return The value of the requested property, or the default value if the
-	 *         property is undefined.
-	 */
-	protected String getProperty(String key, String def) {
-		return properties.getProperty(key, def);
-	}
-
-	/**
-	 * Set a system property.
-	 * 
-	 * @param key
-	 *            The name of the property to set.
-	 * @param value
-	 *            The value to set.
-	 * @return The previous value of the property or null if the property was
-	 *         not previously set.
-	 */
-	protected Object setProperty(String key, String value) {
-		return properties.put(key, value);
-	}
-
-	/**
-	 * Install a bundle from an InputStream.
-	 * 
-	 * @param location
-	 *            The location identifier of the bundle to install.
-	 * @param in
-	 *            The InputStream from which the bundle will be read.  If null
-	 *            then the location is used to get the bundle content.
-	 * @return The Bundle of the installed bundle.
-	 */
-	protected AbstractBundle installBundle(final String location, final InputStream in) throws BundleException {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("install from inputstream: " + location + ", " + in); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		final AccessControlContext callerContext = AccessController.getContext();
-		return installWorker(location, new PrivilegedExceptionAction() {
-			public Object run() throws BundleException {
-				/* Map the InputStream or location to a URLConnection */
-				URLConnection source = in != null ? new BundleSource(in) : adaptor.mapLocationToURLConnection(location);
-				/* call the worker to install the bundle */
-				return installWorkerPrivileged(location, source, callerContext);
-			}
-		});
-	}
-
-	/**
-	 * Worker method to install a bundle. It obtains the reservation for the
-	 * location and calls the specified action.
-	 * 
-	 * @param location
-	 *            The location identifier of the bundle to install.
-	 * @param action
-	 *            A PrivilegedExceptionAction which calls the real worker.
-	 * @return The {@link AbstractBundle}of the installed bundle.
-	 * @exception BundleException
-	 *                If the action throws an error.
-	 */
-	protected AbstractBundle installWorker(String location, PrivilegedExceptionAction action) throws BundleException {
-		synchronized (installLock) {
-			while (true) {
-				/* Check that the bundle is not already installed. */
-				AbstractBundle bundle = getBundleByLocation(location);
-				/* If already installed, return bundle object */
-				if (bundle != null) {
-					return bundle;
-				}
-				Thread current = Thread.currentThread();
-				/* Check for and make reservation */
-				Thread reservation = (Thread) installLock.put(location, current);
-				/* if the location is not already reserved */
-				if (reservation == null) {
-					/* we have made the reservation and can continue */
-					break;
-				}
-				/* the location was already reserved */
-				/*
-				 * If the reservation is held by the current thread, we have
-				 * recursed to install the same bundle!
-				 */
-				if (current.equals(reservation)) {
-					throw new BundleException(Msg.BUNDLE_INSTALL_RECURSION_EXCEPTION, BundleException.STATECHANGE_ERROR);
-				}
-				try {
-					/* wait for the reservation to be released */
-					installLock.wait();
-				} catch (InterruptedException e) {
-				}
-			}
-		}
-		/* Don't call adaptor while holding the install lock */
-		try {
-			AbstractBundle bundle = (AbstractBundle) AccessController.doPrivileged(action);
-			publishBundleEvent(BundleEvent.INSTALLED, bundle);
-			return bundle;
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof RuntimeException)
-				throw (RuntimeException) e.getException();
-			throw (BundleException) e.getException();
-		} finally {
-			synchronized (installLock) {
-				/* release reservation */
-				installLock.remove(location);
-				/* wake up all waiters */
-				installLock.notifyAll();
-			}
-		}
-	}
-
-	/**
-	 * Worker method to install a bundle. It calls the FrameworkAdaptor object
-	 * to install the bundle in persistent storage.
-	 * 
-	 * @param location
-	 *            The location identifier of the bundle to install.
-	 * @param source
-	 *            The URLConnection from which the bundle will be read.
-	 * @return The {@link AbstractBundle}of the installed bundle.
-	 * @exception BundleException
-	 *                If the provided stream cannot be read.
-	 */
-	protected AbstractBundle installWorkerPrivileged(String location, URLConnection source, AccessControlContext callerContext) throws BundleException {
-		BundleOperation storage = adaptor.installBundle(location, source);
-		final AbstractBundle bundle;
-		try {
-			BundleData bundledata = storage.begin();
-			bundle = createAndVerifyBundle(bundledata, true);
-			if (Debug.DEBUG) {
-				BundleWatcher bundleStats = adaptor.getBundleWatcher();
-				if (bundleStats != null)
-					bundleStats.watchBundle(bundle, BundleWatcher.START_INSTALLING);
-			}
-			try {
-				bundle.load();
-				if (System.getSecurityManager() != null) {
-					final boolean extension = (bundledata.getType() & (BundleData.TYPE_BOOTCLASSPATH_EXTENSION | BundleData.TYPE_FRAMEWORK_EXTENSION | BundleData.TYPE_EXTCLASSPATH_EXTENSION)) != 0;
-					// must check for AllPermission before allow a bundle extension to be installed
-					if (extension && !bundle.hasPermission(new AllPermission()))
-						throw new BundleException(Msg.BUNDLE_EXTENSION_PERMISSION, BundleException.SECURITY_ERROR, new SecurityException(Msg.BUNDLE_EXTENSION_PERMISSION));
-					try {
-						AccessController.doPrivileged(new PrivilegedExceptionAction() {
-							public Object run() throws Exception {
-								checkAdminPermission(bundle, AdminPermission.LIFECYCLE);
-								if (extension) // need special permission to install extension bundles
-									checkAdminPermission(bundle, AdminPermission.EXTENSIONLIFECYCLE);
-								return null;
-							}
-						}, callerContext);
-					} catch (PrivilegedActionException e) {
-						throw e.getException();
-					}
-				}
-				storage.commit(false);
-			} catch (Throwable error) {
-				synchronized (bundles) {
-					bundle.unload();
-				}
-				bundle.close();
-				throw error;
-			} finally {
-				if (Debug.DEBUG) {
-					BundleWatcher bundleStats = adaptor.getBundleWatcher();
-					if (bundleStats != null)
-						bundleStats.watchBundle(bundle, BundleWatcher.END_INSTALLING);
-				}
-			}
-			/* bundle has been successfully installed */
-			bundles.add(bundle);
-		} catch (Throwable t) {
-			try {
-				storage.undo();
-			} catch (BundleException ee) {
-				publishFrameworkEvent(FrameworkEvent.ERROR, systemBundle, ee);
-			}
-			if (t instanceof SecurityException)
-				throw (SecurityException) t;
-			if (t instanceof BundleException)
-				throw (BundleException) t;
-			throw new BundleException(t.getMessage(), t);
-		}
-		return bundle;
-	}
-
-	/**
-	 * Retrieve the bundle that has the given unique identifier.
-	 * 
-	 * @param id
-	 *            The identifier of the bundle to retrieve.
-	 * @return A {@link AbstractBundle}object, or <code>null</code> if the
-	 *         identifier doesn't match any installed bundle.
-	 */
-	// changed visibility to gain access through the adaptor
-	public AbstractBundle getBundle(long id) {
-		synchronized (bundles) {
-			return bundles.getBundle(id);
-		}
-	}
-
-	public BundleContextImpl getSystemBundleContext() {
-		if (systemBundle == null)
-			return null;
-		return systemBundle.context;
-	}
-
-	public PackageAdminImpl getPackageAdmin() {
-		return packageAdmin;
-	}
-
-	/**
-	 * Retrieve the bundle that has the given symbolic name and version.
-	 * 
-	 * @param symbolicName
-	 *            The symbolic name of the bundle to retrieve
-	 * @param version The version of the bundle to retrieve
-	 * @return A {@link AbstractBundle}object, or <code>null</code> if the
-	 *         identifier doesn't match any installed bundle.
-	 */
-	public AbstractBundle getBundleBySymbolicName(String symbolicName, Version version) {
-		synchronized (bundles) {
-			return bundles.getBundle(symbolicName, version);
-		}
-	}
-
-	/**
-	 * Retrieve the BundleRepository of all installed bundles. The list is
-	 * valid at the time of the call to getBundles, but the framework is a very
-	 * dynamic environment and bundles can be installed or uninstalled at
-	 * anytime.
-	 * 
-	 * @return The BundleRepository.
-	 */
-	protected BundleRepository getBundles() {
-		return (bundles);
-	}
-
-	/**
-	 * Retrieve a list of all installed bundles. The list is valid at the time
-	 * of the call to getBundleAlls, but the framework is a very dynamic
-	 * environment and bundles can be installed or uninstalled at anytime.
-	 * 
-	 * @return An Array of {@link AbstractBundle}objects, one object per installed
-	 *         bundle.
-	 */
-	protected AbstractBundle[] getAllBundles() {
-		synchronized (bundles) {
-			List allBundles = bundles.getBundles();
-			int size = allBundles.size();
-			if (size == 0) {
-				return (null);
-			}
-			AbstractBundle[] bundlelist = new AbstractBundle[size];
-			allBundles.toArray(bundlelist);
-			return (bundlelist);
-		}
-	}
-
-	/**
-	 * Resume a bundle.
-	 * 
-	 * @param bundle
-	 *            Bundle to resume.
-	 */
-	protected void resumeBundle(AbstractBundle bundle) {
-		if (bundle.isActive()) {
-			// if bundle is active.
-			return;
-		}
-		try {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Trying to resume bundle " + bundle); //$NON-NLS-1$
-			}
-			bundle.resume();
-		} catch (BundleException be) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Bundle resume exception: " + be.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(be.getNestedException() == null ? be : be.getNestedException());
-			}
-			publishFrameworkEvent(FrameworkEvent.ERROR, bundle, be);
-		}
-	}
-
-	/**
-	 * Suspend a bundle.
-	 * 
-	 * @param bundle
-	 *            Bundle to suspend.
-	 * @param lock
-	 *            true if state change lock should be held when returning from
-	 *            this method.
-	 * @return true if bundle was active and is now suspended.
-	 */
-	protected boolean suspendBundle(AbstractBundle bundle, boolean lock) {
-		boolean changed = false;
-		if (!bundle.isActive() || bundle.isFragment()) {
-			// if bundle is not active or is a fragment then do nothing.
-			return changed;
-		}
-		try {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Trying to suspend bundle " + bundle); //$NON-NLS-1$
-			}
-			bundle.suspend(lock);
-		} catch (BundleException be) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Bundle suspend exception: " + be.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(be.getNestedException() == null ? be : be.getNestedException());
-			}
-			publishFrameworkEvent(FrameworkEvent.ERROR, bundle, be);
-		}
-		if (!bundle.isActive()) {
-			changed = true;
-		}
-		return (changed);
-	}
-
-	/**
-	 * Locate an installed bundle with a given identity.
-	 * 
-	 * @param location
-	 *            string for the bundle
-	 * @return Bundle object for bundle with the specified location or null if
-	 *         no bundle is installed with the specified location.
-	 */
-	protected AbstractBundle getBundleByLocation(String location) {
-		synchronized (bundles) {
-			// this is not optimized; do not think it will get called
-			// that much.
-			final String finalLocation = location;
-
-			//Bundle.getLocation requires AdminPermission (metadata)
-			return (AbstractBundle) AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					List allBundles = bundles.getBundles();
-					int size = allBundles.size();
-					for (int i = 0; i < size; i++) {
-						AbstractBundle bundle = (AbstractBundle) allBundles.get(i);
-						if (finalLocation.equals(bundle.getLocation())) {
-							return (bundle);
-						}
-					}
-					return (null);
-				}
-			});
-		}
-	}
-
-	/**
-	 * Locate an installed bundle with a given symbolic name
-	 * 
-	 * @param symbolicName
-	 *            The symbolic name for the bundle
-	 * @return Bundle object for bundle with the specified Unique or null if no
-	 *         bundle is installed with the specified location.
-	 */
-	protected AbstractBundle[] getBundleBySymbolicName(String symbolicName) {
-		synchronized (bundles) {
-			return bundles.getBundles(symbolicName);
-		}
-	}
-
-	/**
-	 * Creates a <code>File</code> object for a file in the persistent
-	 * storage area provided for the bundle by the framework. If the adaptor
-	 * does not have file system support, this method will return <code>null</code>.
-	 * 
-	 * <p>
-	 * A <code>File</code> object for the base directory of the persistent
-	 * storage area provided for the context bundle by the framework can be
-	 * obtained by calling this method with the empty string ("") as the
-	 * parameter.
-	 */
-	protected File getDataFile(final AbstractBundle bundle, final String filename) {
-		return (File) AccessController.doPrivileged(new GetDataFileAction(bundle, filename));
-	}
-
-	/**
-	 * Check for specific AdminPermission (RFC 73)
-	 */
-	protected void checkAdminPermission(Bundle bundle, String action) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(getAdminPermission(bundle, action));
-	}
-
-	// gets AdminPermission objects from a cache to reduce the number of AdminPermission
-	// objects that are created.
-	private AdminPermission getAdminPermission(Bundle bundle, String action) {
-		synchronized (adminPermissions) {
-			Long ID = new Long(bundle.getBundleId());
-			HashMap bundlePermissions = (HashMap) adminPermissions.get(ID);
-			if (bundlePermissions == null) {
-				bundlePermissions = new HashMap();
-				adminPermissions.put(ID, bundlePermissions);
-			}
-			AdminPermission result = (AdminPermission) bundlePermissions.get(action);
-			if (result == null) {
-				result = new AdminPermission(bundle, action);
-				bundlePermissions.put(action, result);
-			}
-			return result;
-		}
-	}
-
-	/**
-	 * This is necessary for running from a JXE, otherwise the SecurityManager
-	 * is set much later than we would like!
-	 */
-	protected void installSecurityManager() {
-		String securityManager = FrameworkProperties.getProperty(PROP_EQUINOX_SECURITY, FrameworkProperties.getProperty("java.security.manager")); //$NON-NLS-1$
-		if (securityManager != null) {
-			SecurityManager sm = System.getSecurityManager();
-			if (sm == null) {
-				if (securityManager.length() == 0)
-					sm = new SecurityManager(); // use the default one from java
-				else if (securityManager.equals(SECURITY_OSGI))
-					sm = new EquinoxSecurityManager(); // use an OSGi enabled manager that understands postponed conditions
-				else {
-					// try to use a specific classloader by classname
-					try {
-						Class clazz = Class.forName(securityManager);
-						sm = (SecurityManager) clazz.newInstance();
-					} catch (ClassNotFoundException e) {
-						// do nothing
-					} catch (ClassCastException e) {
-						// do nothing
-					} catch (InstantiationException e) {
-						// do nothing
-					} catch (IllegalAccessException e) {
-						// do nothing
-					}
-				}
-				if (sm == null)
-					throw new NoClassDefFoundError(securityManager);
-				if (Debug.DEBUG && Debug.DEBUG_SECURITY)
-					Debug.println("Setting SecurityManager to: " + sm); //$NON-NLS-1$
-				System.setSecurityManager(sm);
-				return;
-			}
-		}
-	}
-
-	/**
-	 * Deliver a FrameworkEvent.
-	 * 
-	 * @param type
-	 *            FrameworkEvent type.
-	 * @param bundle
-	 *            Affected bundle or null for system bundle.
-	 * @param throwable
-	 *            Related exception or null.
-	 */
-	public void publishFrameworkEvent(int type, org.osgi.framework.Bundle bundle, Throwable throwable) {
-		if (frameworkEvent != null) {
-			if (bundle == null)
-				bundle = systemBundle;
-			final FrameworkEvent event = new FrameworkEvent(type, bundle, throwable);
-			if (System.getSecurityManager() == null) {
-				publishFrameworkEventPrivileged(event);
-			} else {
-				AccessController.doPrivileged(new PrivilegedAction() {
-					public Object run() {
-						publishFrameworkEventPrivileged(event);
-						return null;
-					}
-				});
-			}
-		}
-	}
-
-	public void publishFrameworkEventPrivileged(FrameworkEvent event) {
-		/* if the event is an error then it should be logged */
-		if (event.getType() == FrameworkEvent.ERROR) {
-			FrameworkLog frameworkLog = adaptor.getFrameworkLog();
-			if (frameworkLog != null)
-				frameworkLog.log(event);
-		}
-		/* queue to hold set of listeners */
-		ListenerQueue listeners = new ListenerQueue(eventManager);
-		/* queue to hold set of BundleContexts w/ listeners */
-		ListenerQueue contexts = new ListenerQueue(eventManager);
-		/* synchronize while building the listener list */
-		synchronized (frameworkEvent) {
-			/* add set of BundleContexts w/ listeners to queue */
-			contexts.queueListeners(frameworkEvent.entrySet(), this);
-			/* synchronously dispatch to populate listeners queue */
-			contexts.dispatchEventSynchronous(FRAMEWORKEVENT, listeners);
-		}
-		/* dispatch event to set of listeners */
-		listeners.dispatchEventAsynchronous(FRAMEWORKEVENT, event);
-	}
-
-	/**
-	 * Deliver a BundleEvent to SynchronousBundleListeners (synchronous). and
-	 * BundleListeners (asynchronous).
-	 * 
-	 * @param type
-	 *            BundleEvent type.
-	 * @param bundle
-	 *            Affected bundle or null.
-	 */
-	public void publishBundleEvent(int type, org.osgi.framework.Bundle bundle) {
-		if ((bundleEventSync != null) || (bundleEvent != null)) {
-			final BundleEvent event = new BundleEvent(type, bundle);
-			if (System.getSecurityManager() == null) {
-				publishBundleEventPrivileged(event);
-			} else {
-				AccessController.doPrivileged(new PrivilegedAction() {
-					public Object run() {
-						publishBundleEventPrivileged(event);
-						return null;
-					}
-				});
-			}
-		}
-	}
-
-	public void publishBundleEventPrivileged(BundleEvent event) {
-		/*
-		 * We must collect the snapshots of the sync and async listeners
-		 * BEFORE we dispatch the event.
-		 */
-		/* Collect snapshot of SynchronousBundleListeners */
-		ListenerQueue listenersSync = null;
-		if (bundleEventSync != null) {
-			/* queue to hold set of listeners */
-			listenersSync = new ListenerQueue(eventManager);
-			/* queue to hold set of BundleContexts w/ listeners */
-			ListenerQueue contexts = new ListenerQueue(eventManager);
-			/* synchronize while building the listener list */
-			synchronized (bundleEventSync) {
-				/* add set of BundleContexts w/ listeners to queue */
-				contexts.queueListeners(bundleEventSync.entrySet(), this);
-				/* synchronously dispatch to populate listeners queue */
-				contexts.dispatchEventSynchronous(BUNDLEEVENTSYNC, listenersSync);
-			}
-		}
-		/* Collect snapshot of BundleListeners; only if the event is NOT STARTING or STOPPING or LAZY_ACTIVATION */
-		ListenerQueue listenersAsync = null;
-		if (bundleEvent != null && (event.getType() & (BundleEvent.STARTING | BundleEvent.STOPPING | BundleEvent.LAZY_ACTIVATION)) == 0) {
-			/* queue to hold set of listeners */
-			listenersAsync = new ListenerQueue(eventManager);
-			/* queue to hold set of BundleContexts w/ listeners */
-			ListenerQueue contexts = new ListenerQueue(eventManager);
-			/* synchronize while building the listener list */
-			synchronized (bundleEvent) {
-				/* add set of BundleContexts w/ listeners to queue */
-				contexts.queueListeners(bundleEvent.entrySet(), this);
-				/* synchronously dispatch to populate listeners queue */
-				contexts.dispatchEventSynchronous(BUNDLEEVENT, listenersAsync);
-			}
-		}
-		/* Dispatch BundleEvent to SynchronousBundleListeners */
-		if (listenersSync != null) {
-			listenersSync.dispatchEventSynchronous(BUNDLEEVENTSYNC, event);
-		}
-		/* Dispatch BundleEvent to BundleListeners */
-		if (listenersAsync != null) {
-			listenersAsync.dispatchEventAsynchronous(BUNDLEEVENT, event);
-		}
-	}
-
-	public ListenerQueue newListenerQueue() {
-		return new ListenerQueue(eventManager);
-	}
-
-	/**
-	 * Top level event dispatcher for the framework.
-	 * 
-	 * @param l
-	 *            BundleContext for receiving bundle
-	 * @param lo
-	 *            BundleContext for receiving bundle
-	 * @param action
-	 *            Event class type
-	 * @param object
-	 *            ListenerQueue to populate
-	 */
-	public void dispatchEvent(Object l, Object lo, int action, Object object) {
-		try {
-			BundleContextImpl context = (BundleContextImpl) l;
-			if (context.isValid()) /* if context still valid */{
-				ListenerQueue queue = (ListenerQueue) object;
-				switch (action) {
-					case BUNDLEEVENT : {
-						queue.queueListeners(context.bundleEvent.entrySet(), context);
-						break;
-					}
-					case BUNDLEEVENTSYNC : {
-						queue.queueListeners(context.bundleEventSync.entrySet(), context);
-						break;
-					}
-					case FRAMEWORKEVENT : {
-						queue.queueListeners(context.frameworkEvent.entrySet(), context);
-						break;
-					}
-					default : {
-						throw new InternalError();
-					}
-				}
-			}
-		} catch (Throwable t) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Exception in Top level event dispatcher: " + t.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(t);
-			}
-			// allow the adaptor to handle this unexpected error
-			adaptor.handleRuntimeError(t);
-			publisherror: {
-				if (action == FRAMEWORKEVENT) {
-					FrameworkEvent event = (FrameworkEvent) object;
-					if (event.getType() == FrameworkEvent.ERROR) {
-						break publisherror; /* avoid infinite loop */
-					}
-				}
-				BundleContextImpl context = (BundleContextImpl) l;
-				publishFrameworkEvent(FrameworkEvent.ERROR, context.bundle, t);
-			}
-		}
-	}
-
-	private void initializeContextFinder() {
-		Thread current = Thread.currentThread();
-		try {
-			ClassLoader parent = null;
-			// check property for specified parent
-			String type = FrameworkProperties.getProperty(PROP_CONTEXTCLASSLOADER_PARENT);
-			if (CONTEXTCLASSLOADER_PARENT_APP.equals(type))
-				parent = ClassLoader.getSystemClassLoader();
-			else if (CONTEXTCLASSLOADER_PARENT_BOOT.equals(type))
-				parent = null;
-			else if (CONTEXTCLASSLOADER_PARENT_FWK.equals(type))
-				parent = Framework.class.getClassLoader();
-			else if (CONTEXTCLASSLOADER_PARENT_EXT.equals(type)) {
-				ClassLoader appCL = ClassLoader.getSystemClassLoader();
-				if (appCL != null)
-					parent = appCL.getParent();
-			} else { // default is ccl (null or any other value will use ccl)
-				parent = current.getContextClassLoader();
-			}
-			contextFinder = new ContextFinder(parent);
-			current.setContextClassLoader(contextFinder);
-			return;
-		} catch (Exception e) {
-			FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.INFO, 0, NLS.bind(Msg.CANNOT_SET_CONTEXTFINDER, null), 0, e, null);
-			adaptor.getFrameworkLog().log(entry);
-		}
-
-	}
-
-	public static Field getField(Class clazz, Class type, boolean instance) {
-		Field[] fields = clazz.getDeclaredFields();
-		for (int i = 0; i < fields.length; i++) {
-			boolean isStatic = Modifier.isStatic(fields[i].getModifiers());
-			if (instance != isStatic && fields[i].getType().equals(type)) {
-				fields[i].setAccessible(true);
-				return fields[i];
-			}
-		}
-		return null;
-	}
-
-	private void installContentHandlerFactory(BundleContext context, FrameworkAdaptor frameworkAdaptor) {
-		ContentHandlerFactory chf = new ContentHandlerFactory(context, frameworkAdaptor);
-		try {
-			// first try the standard way
-			URLConnection.setContentHandlerFactory(chf);
-		} catch (Error err) {
-			// ok we failed now use more drastic means to set the factory
-			try {
-				forceContentHandlerFactory(chf);
-			} catch (Exception ex) {
-				// this is unexpected, log the exception and throw the original error
-				adaptor.getFrameworkLog().log(new FrameworkEvent(FrameworkEvent.ERROR, context.getBundle(), ex));
-				throw err;
-			}
-		}
-		contentHandlerFactory = chf;
-	}
-
-	private static void forceContentHandlerFactory(ContentHandlerFactory chf) throws Exception {
-		Field factoryField = getField(URLConnection.class, java.net.ContentHandlerFactory.class, false);
-		if (factoryField == null)
-			throw new Exception("Could not find ContentHandlerFactory field"); //$NON-NLS-1$
-		synchronized (URLConnection.class) {
-			java.net.ContentHandlerFactory factory = (java.net.ContentHandlerFactory) factoryField.get(null);
-			// doing a null check here just in case, but it would be really strange if it was null, 
-			// because we failed to set the factory normally!!
-
-			if (factory != null) {
-				try {
-					factory.getClass().getMethod("isMultiplexing", null); //$NON-NLS-1$
-					Method register = factory.getClass().getMethod("register", new Class[] {Object.class}); //$NON-NLS-1$
-					register.invoke(factory, new Object[] {chf});
-				} catch (NoSuchMethodException e) {
-					// current factory does not support multiplexing, ok we'll wrap it
-					chf.setParentFactory(factory);
-					factory = chf;
-				}
-			}
-			// null out the field so that we can successfully call setContentHandlerFactory			
-			factoryField.set(null, null);
-			// always attempt to clear the handlers cache
-			// This allows an optomization for the single framework use-case
-			resetContentHandlers();
-			URLConnection.setContentHandlerFactory(factory);
-		}
-	}
-
-	private void uninstallContentHandlerFactory() {
-		try {
-			Field factoryField = getField(URLConnection.class, java.net.ContentHandlerFactory.class, false);
-			if (factoryField == null)
-				return; // oh well, we tried.
-			synchronized (URLConnection.class) {
-				java.net.ContentHandlerFactory factory = (java.net.ContentHandlerFactory) factoryField.get(null);
-
-				if (factory == contentHandlerFactory) {
-					factory = (java.net.ContentHandlerFactory) contentHandlerFactory.designateSuccessor();
-				} else {
-					Method unregister = factory.getClass().getMethod("unregister", new Class[] {Object.class}); //$NON-NLS-1$
-					unregister.invoke(factory, new Object[] {contentHandlerFactory});
-				}
-				// null out the field so that we can successfully call setContentHandlerFactory									
-				factoryField.set(null, null);
-				// always attempt to clear the handlers cache
-				// This allows an optomization for the single framework use-case
-				// Note that the call to setContentHandlerFactory below may clear this cache
-				// but we want to be sure to clear it here just incase the parent is null.
-				// In this case the call below would not occur.
-				// Also it appears most java libraries actually do not clear the cache
-				// when setContentHandlerFactory is called, go figure!!
-				resetContentHandlers();
-				if (factory != null)
-					URLConnection.setContentHandlerFactory(factory);
-			}
-		} catch (Exception e) {
-			// ignore and continue closing the framework
-		}
-	}
-
-	private static void resetContentHandlers() throws IllegalAccessException {
-		Field handlersField = getField(URLConnection.class, Hashtable.class, false);
-		if (handlersField != null) {
-			Hashtable handlers = (Hashtable) handlersField.get(null);
-			if (handlers != null)
-				handlers.clear();
-		}
-	}
-
-	private void installURLStreamHandlerFactory(BundleContext context, FrameworkAdaptor frameworkAdaptor) {
-		StreamHandlerFactory shf = new StreamHandlerFactory(context, frameworkAdaptor);
-		try {
-			// first try the standard way
-			URL.setURLStreamHandlerFactory(shf);
-		} catch (Error err) {
-			try {
-				// ok we failed now use more drastic means to set the factory
-				forceURLStreamHandlerFactory(shf);
-			} catch (Exception ex) {
-				adaptor.getFrameworkLog().log(new FrameworkEvent(FrameworkEvent.ERROR, context.getBundle(), ex));
-				throw err;
-			}
-		}
-		streamHandlerFactory = shf;
-	}
-
-	private static void forceURLStreamHandlerFactory(StreamHandlerFactory shf) throws Exception {
-		Field factoryField = getField(URL.class, URLStreamHandlerFactory.class, false);
-		if (factoryField == null)
-			throw new Exception("Could not find URLStreamHandlerFactory field"); //$NON-NLS-1$
-		// look for a lock to synchronize on
-		Object lock = getURLStreamHandlerFactoryLock();
-		synchronized (lock) {
-			URLStreamHandlerFactory factory = (URLStreamHandlerFactory) factoryField.get(null);
-			// doing a null check here just in case, but it would be really strange if it was null, 
-			// because we failed to set the factory normally!!
-			if (factory != null) {
-				try {
-					factory.getClass().getMethod("isMultiplexing", null); //$NON-NLS-1$
-					Method register = factory.getClass().getMethod("register", new Class[] {Object.class}); //$NON-NLS-1$
-					register.invoke(factory, new Object[] {shf});
-				} catch (NoSuchMethodException e) {
-					// current factory does not support multiplexing, ok we'll wrap it
-					shf.setParentFactory(factory);
-					factory = shf;
-				}
-			}
-			factoryField.set(null, null);
-			// always attempt to clear the handlers cache
-			// This allows an optomization for the single framework use-case
-			resetURLStreamHandlers();
-			URL.setURLStreamHandlerFactory(factory);
-		}
-	}
-
-	private void uninstallURLStreamHandlerFactory() {
-		try {
-			Field factoryField = getField(URL.class, URLStreamHandlerFactory.class, false);
-			if (factoryField == null)
-				return; // oh well, we tried
-			Object lock = getURLStreamHandlerFactoryLock();
-			synchronized (lock) {
-				URLStreamHandlerFactory factory = (URLStreamHandlerFactory) factoryField.get(null);
-				if (factory == streamHandlerFactory) {
-					factory = (URLStreamHandlerFactory) streamHandlerFactory.designateSuccessor();
-				} else {
-					Method unregister = factory.getClass().getMethod("unregister", new Class[] {Object.class}); //$NON-NLS-1$
-					unregister.invoke(factory, new Object[] {streamHandlerFactory});
-				}
-				factoryField.set(null, null);
-				// always attempt to clear the handlers cache
-				// This allows an optomization for the single framework use-case
-				// Note that the call to setURLStreamHandlerFactory below may clear this cache
-				// but we want to be sure to clear it here just in case the parent is null.
-				// In this case the call below would not occur.
-				resetURLStreamHandlers();
-				if (factory != null)
-					URL.setURLStreamHandlerFactory(factory);
-			}
-		} catch (Exception e) {
-			// ignore and continue closing the framework
-		}
-	}
-
-	private static Object getURLStreamHandlerFactoryLock() throws IllegalAccessException {
-		Object lock;
-		try {
-			Field streamHandlerLockField = URL.class.getDeclaredField("streamHandlerLock"); //$NON-NLS-1$
-			streamHandlerLockField.setAccessible(true);
-			lock = streamHandlerLockField.get(null);
-		} catch (NoSuchFieldException noField) {
-			// could not find the lock, lets sync on the class object
-			lock = URL.class;
-		}
-		return lock;
-	}
-
-	private static void resetURLStreamHandlers() throws IllegalAccessException {
-		Field handlersField = getField(URL.class, Hashtable.class, false);
-		if (handlersField != null) {
-			Hashtable handlers = (Hashtable) handlersField.get(null);
-			if (handlers != null)
-				handlers.clear();
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see java.lang.Runnable#run()
-	 * This thread monitors the framework active status and terminates when the framework is
-	 * shutdown.  This is needed to ensure the VM does not exist because of the lack of a
-	 * non-daemon thread (bug 215730)
-	 */
-	public void run() {
-		synchronized (this) {
-			while (active)
-				try {
-					this.wait(1000);
-				} catch (InterruptedException e) {
-					// do nothing
-				}
-		}
-	}
-
-	void setForcedRestart(boolean forcedRestart) {
-		this.forcedRestart = forcedRestart;
-	}
-
-	boolean isForcedRestart() {
-		return forcedRestart;
-	}
-
-	public FrameworkEvent waitForStop(long timeout) throws InterruptedException {
-		boolean waitForEver = timeout == 0;
-		long start = System.currentTimeMillis();
-		long timeLeft = timeout;
-		synchronized (this) {
-			FrameworkEvent[] event = shutdownEvent;
-			while (event != null && event[0] == null) {
-				this.wait(timeLeft);
-				if (!waitForEver) {
-					timeLeft = start + timeout - System.currentTimeMillis();
-					// break if we are passed the timeout
-					if (timeLeft <= 0)
-						break;
-				}
-			}
-			if (event == null || event[0] == null)
-				return new FrameworkEvent(FrameworkEvent.WAIT_TIMEDOUT, systemBundle, null);
-			return event[0];
-		}
-	}
-
-	/**
-	 * Used by ServiceReferenceImpl for isAssignableTo
-	 * @param registrant Bundle registering service
-	 * @param client Bundle desiring to use service
-	 * @param className class name to use
-	 * @param serviceClass class of original service object
-	 * @return true if assignable given package wiring
-	 */
-	public boolean isServiceAssignableTo(Bundle registrant, Bundle client, String className, Class serviceClass) {
-		// always return false for fragments
-		AbstractBundle consumer = (AbstractBundle) client;
-		if (consumer.isFragment())
-			return false;
-		// 1) if the registrant == consumer always return true
-		AbstractBundle producer = (AbstractBundle) registrant;
-		if (consumer == producer)
-			return true;
-		// 2) get the package name from the specified className
-		String pkgName = BundleLoader.getPackageName(className);
-		if (pkgName.startsWith("java.")) //$NON-NLS-1$
-			return true;
-		BundleLoader producerBL = producer.getBundleLoader();
-		if (producerBL == null)
-			return false;
-		BundleLoader consumerBL = consumer.getBundleLoader();
-		if (consumerBL == null)
-			return false;
-		// 3) for the specified bundle, find the wiring for the package.  If no wiring is found return true
-		PackageSource consumerSource = consumerBL.getPackageSource(pkgName);
-		if (consumerSource == null)
-			return true;
-		// work around the issue when the package is in the EE and we delegate to boot for that package
-		if (isBootDelegationPackage(pkgName)) {
-			SystemBundleLoader systemLoader = (SystemBundleLoader) systemBundle.getBundleLoader();
-			if (systemLoader.isEEPackage(pkgName))
-				return true; // in this case we have a common source from the EE
-		}
-		// 4) For the registrant bundle, find the wiring for the package.
-		PackageSource producerSource = producerBL.getPackageSource(pkgName);
-		if (producerSource == null) {
-			// 5) If no wiring is found for the registrant bundle then find the wiring for the classloader of the service object.  If no wiring is found return false.
-			producerSource = getPackageSource(serviceClass, pkgName);
-			if (producerSource == null)
-				return false;
-		}
-		// 6) If the two wirings found are equal then return true; otherwise return false.
-		return producerSource.hasCommonSource(consumerSource);
-	}
-
-	private PackageSource getPackageSource(Class serviceClass, String pkgName) {
-		if (serviceClass == null)
-			return null;
-		AbstractBundle serviceBundle = (AbstractBundle) packageAdmin.getBundle(serviceClass);
-		if (serviceBundle == null)
-			return null;
-		BundleLoader producerBL = serviceBundle.getBundleLoader();
-		if (producerBL == null)
-			return null;
-		PackageSource producerSource = producerBL.getPackageSource(pkgName);
-		if (producerSource != null)
-			return producerSource;
-		// try the interfaces
-		Class[] interfaces = serviceClass.getInterfaces();
-		// note that getInterfaces never returns null
-		for (int i = 0; i < interfaces.length; i++) {
-			producerSource = getPackageSource(interfaces[i], pkgName);
-			if (producerSource != null)
-				return producerSource;
-		}
-		// try super class
-		return getPackageSource(serviceClass.getSuperclass(), pkgName);
-	}
-
-	public boolean isBootDelegationPackage(String name) {
-		if (bootDelegateAll)
-			return true;
-		if (bootDelegation != null)
-			for (int i = 0; i < bootDelegation.length; i++)
-				if (name.equals(bootDelegation[i]))
-					return true;
-		if (bootDelegationStems != null)
-			for (int i = 0; i < bootDelegationStems.length; i++)
-				if (name.startsWith(bootDelegationStems[i]))
-					return true;
-		return false;
-	}
-
-	SignedContentFactory getSignedContentFactory() {
-		ServiceTracker currentTracker = signedContentFactory;
-		return (SignedContentFactory) (currentTracker == null ? null : currentTracker.getService());
-	}
-
-	ContextFinder getContextFinder() {
-		return contextFinder;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/InternalSystemBundle.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/InternalSystemBundle.java
deleted file mode 100644
index 1890cc5..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/InternalSystemBundle.java
+++ /dev/null
@@ -1,383 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.Permission;
-import java.security.ProtectionDomain;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.osgi.framework.*;
-
-/**
- * This class subclasses Bundle to provide a system Bundle
- * so that the framework can be represented as a bundle and
- * can access the services provided by other bundles.
- */
-
-public class InternalSystemBundle extends BundleHost implements org.osgi.framework.launch.Framework {
-	class SystemBundleHeaders extends Dictionary {
-		private final Dictionary headers;
-
-		public SystemBundleHeaders(Dictionary headers) {
-			this.headers = headers;
-		}
-
-		public Enumeration elements() {
-			return headers.elements();
-		}
-
-		public Object get(Object key) {
-			if (!org.osgi.framework.Constants.EXPORT_PACKAGE.equals(key))
-				return headers.get(key);
-			String systemPackages = FrameworkProperties.getProperty(org.osgi.framework.Constants.FRAMEWORK_SYSTEMPACKAGES);
-			String results = (String) headers.get(org.osgi.framework.Constants.EXPORT_PACKAGE);
-			if (systemPackages != null) {
-				if (results != null)
-					results += ", " + systemPackages; //$NON-NLS-1$
-				else
-					results = systemPackages;
-			}
-			return results;
-		}
-
-		public boolean isEmpty() {
-			return headers.isEmpty();
-		}
-
-		public Enumeration keys() {
-			return headers.keys();
-		}
-
-		public Object put(Object key, Object value) {
-			return headers.put(key, value);
-		}
-
-		public Object remove(Object key) {
-			return headers.remove(key);
-		}
-
-		public int size() {
-			return headers.size();
-		}
-
-	}
-
-	ProtectionDomain systemDomain;
-
-	/**
-	 * Private SystemBundle object constructor.
-	 * This method creates the SystemBundle and its BundleContext.
-	 * The SystemBundle's state is set to STARTING.
-	 * This method is called when the framework is constructed.
-	 *
-	 * @param framework Framework this bundle is running in
-	 */
-	protected InternalSystemBundle(Framework framework) throws BundleException {
-		super(framework.adaptor.createSystemBundleData(), framework); // startlevel=0 means framework stopped
-		Constants.setInternalSymbolicName(bundledata.getSymbolicName());
-		state = Bundle.RESOLVED;
-		context = createContext();
-	}
-
-	/**
-	 * Load the bundle.
-	 * This methods overrides the Bundle method and does nothing.
-	 *
-	 */
-	protected void load() {
-		SecurityManager sm = System.getSecurityManager();
-
-		if (sm != null) {
-			systemDomain = getClass().getProtectionDomain();
-		}
-	}
-
-	/**
-	 * Reload from a new bundle.
-	 * This methods overrides the Bundle method and does nothing.
-	 *
-	 * @param newBundle
-	 * @return false
-	 */
-	protected boolean reload(AbstractBundle newBundle) {
-		return (false);
-	}
-
-	/**
-	 * Refresh the bundle.
-	 * This methods overrides the Bundle method and does nothing.
-	 *
-	 */
-	protected void refresh() {
-		// do nothing
-	}
-
-	/**
-	 * Unload the bundle.
-	 * This methods overrides the Bundle method and does nothing.
-	 *
-	 * @return false
-	 */
-	protected boolean unload() {
-		return (false);
-	}
-
-	/**
-	 * Close the the Bundle's file.
-	 * This method closes the BundleContext for the SystemBundle.
-	 *
-	 */
-	protected void close() {
-		context.close();
-		context = null;
-	}
-
-	/**
-	 * This method loads a class from the bundle.
-	 *
-	 * @param      name     the name of the desired Class.
-	 * @param      checkPermission indicates whether a permission check should be done.
-	 * @return     the resulting Class
-	 * @exception  java.lang.ClassNotFoundException  if the class definition was not found.
-	 */
-	protected Class loadClass(String name, boolean checkPermission) throws ClassNotFoundException {
-		if (checkPermission) {
-			framework.checkAdminPermission(this, AdminPermission.CLASS);
-			checkValid();
-		}
-		return (Class.forName(name));
-	}
-
-	/**
-	 * Find the specified resource in this bundle.
-	 * This methods returns null for the system bundle.
-	 */
-	public URL getResource(String name) {
-		return (null);
-	}
-
-	/**
-	 * Indicate SystemBundle is resolved.
-	 *
-	 */
-	protected boolean isUnresolved() {
-		return (false);
-	}
-
-	/**
-	 * Start this bundle.
-	 * This methods overrides the Bundle method and does nothing.
-	 *
-	 */
-	public void start() {
-		framework.checkAdminPermission(this, AdminPermission.EXECUTE);
-	}
-
-	public void start(int options) {
-		framework.checkAdminPermission(this, AdminPermission.EXECUTE);
-	}
-
-	/**
-	 * Start the SystemBundle.
-	 * This method launches the framework.
-	 *
-	 */
-	protected void resume() {
-		/* initialize the startlevel service */
-		framework.startLevelManager.initialize();
-
-		/* Load all installed bundles */
-		loadInstalledBundles(framework.startLevelManager.getInstalledBundles(framework.bundles, false));
-		/* Start the system bundle */
-		try {
-			framework.systemBundle.state = Bundle.STARTING;
-			framework.systemBundle.context.start();
-			framework.publishBundleEvent(BundleEvent.STARTING, framework.systemBundle);
-		} catch (BundleException be) {
-			if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-				Debug.println("SLL: Bundle resume exception: " + be.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(be.getNestedException() == null ? be : be.getNestedException());
-			}
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, be);
-			throw new RuntimeException(be.getMessage(), be);
-		}
-
-	}
-
-	private void loadInstalledBundles(AbstractBundle[] installedBundles) {
-
-		for (int i = 0; i < installedBundles.length; i++) {
-			AbstractBundle bundle = installedBundles[i];
-			if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-				Debug.println("SLL: Trying to load bundle " + bundle); //$NON-NLS-1$
-			}
-			bundle.load();
-		}
-	}
-
-	/**
-	 * Stop the framework.
-	 * This method spawns a thread which will call framework.shutdown.
-	 *
-	 */
-	public void stop() {
-		framework.checkAdminPermission(this, AdminPermission.EXECUTE);
-
-		if ((state & (ACTIVE | STARTING)) != 0) {
-			Thread shutdown = framework.secureAction.createThread(new Runnable() {
-				public void run() {
-					try {
-						framework.close();
-					} catch (Throwable t) {
-						// allow the adaptor to handle this unexpected error
-						framework.adaptor.handleRuntimeError(t);
-					}
-				}
-			}, "System Bundle Shutdown", framework.getContextFinder()); //$NON-NLS-1$
-
-			shutdown.start();
-		}
-	}
-
-	public void stop(int options) {
-		stop();
-	}
-
-	/**
-	 * Stop the SystemBundle.
-	 * This method shuts down the framework.
-	 *
-	 */
-	protected void suspend() {
-
-		framework.startLevelManager.shutdown();
-		framework.startLevelManager.cleanup();
-
-		/* clean up the exporting loaders */
-		framework.packageAdmin.cleanup();
-
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("->Framework shutdown"); //$NON-NLS-1$
-		}
-		// fire the STOPPED event here.
-		// All bundles have been unloaded, but there may be a boot strap listener that is interested (bug 182742)
-		framework.publishBundleEvent(BundleEvent.STOPPED, this);
-	}
-
-	protected void suspend(boolean lock) {
-		// do nothing
-	}
-
-	/**
-	 * Update this bundle.
-	 * This method spawns a thread which will call framework.shutdown
-	 * followed by framework.launch.
-	 *
-	 */
-	public void update() {
-		framework.checkAdminPermission(this, AdminPermission.LIFECYCLE);
-
-		if ((state & (ACTIVE | STARTING)) != 0) {
-			Thread restart = framework.secureAction.createThread(new Runnable() {
-				public void run() {
-					int sl = framework.startLevelManager.getStartLevel();
-					FrameworkProperties.setProperty(Constants.PROP_OSGI_RELAUNCH, ""); //$NON-NLS-1$
-					framework.shutdown(FrameworkEvent.STOPPED_UPDATE);
-					framework.launch();
-					if (sl > 0)
-						framework.startLevelManager.doSetStartLevel(sl);
-					FrameworkProperties.clearProperty(Constants.PROP_OSGI_RELAUNCH);
-				}
-			}, "System Bundle Update", framework.getContextFinder()); //$NON-NLS-1$
-
-			restart.start();
-		}
-	}
-
-	/**
-	 * Update this bundle from an InputStream.
-	 * This methods overrides the Bundle method and does nothing.
-	 *
-	 * @param in The InputStream from which to read the new bundle.
-	 */
-	public void update(InputStream in) {
-		update();
-
-		try {
-			in.close();
-		} catch (IOException e) {
-			// do nothing
-		}
-	}
-
-	/**
-	 * Uninstall this bundle.
-	 * This methods overrides the Bundle method and throws an exception.
-	 *
-	 */
-	public void uninstall() throws BundleException {
-		framework.checkAdminPermission(this, AdminPermission.LIFECYCLE);
-
-		throw new BundleException(Msg.BUNDLE_SYSTEMBUNDLE_UNINSTALL_EXCEPTION, BundleException.INVALID_OPERATION);
-	}
-
-	/**
-	 * Determine whether the bundle has the requested
-	 * permission.
-	 * This methods overrides the Bundle method and returns <code>true</code>.
-	 *
-	 * @param permission The requested permission.
-	 * @return <code>true</code>
-	 */
-	public boolean hasPermission(Object permission) {
-		if (systemDomain != null) {
-			if (permission instanceof Permission) {
-				return systemDomain.implies((Permission) permission);
-			}
-
-			return false;
-		}
-
-		return true;
-	}
-
-	/**
-	 * No work to do for the SystemBundle.
-	 *
-	 * @param refreshedBundles
-	 *            A list of bundles which have been refreshed as a result
-	 *            of a packageRefresh
-	 */
-	protected void unresolvePermissions(AbstractBundle[] refreshedBundles) {
-		// Do nothing
-	}
-
-	public Dictionary getHeaders(String localeString) {
-		return new SystemBundleHeaders(super.getHeaders(localeString));
-	}
-
-	public void init() {
-		// no op for internal representation
-	}
-
-	public FrameworkEvent waitForStop(long timeout) throws InterruptedException {
-		return framework.waitForStop(timeout);
-	}
-
-	public ClassLoader getClassLoader() {
-		return getClass().getClassLoader();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ManifestLocalization.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ManifestLocalization.java
deleted file mode 100644
index d0067fd..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ManifestLocalization.java
+++ /dev/null
@@ -1,210 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.framework.util.Headers;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Constants;
-
-/**
- * This class is used by the Bundle Class to localize manifest headers.
- */
-public class ManifestLocalization {
-	private AbstractBundle bundle = null;
-	private Dictionary rawHeaders = null;
-	private Dictionary defaultLocaleHeaders = null;
-	private Hashtable cache = new Hashtable(5);
-
-	public ManifestLocalization(AbstractBundle bundle, Dictionary rawHeaders) {
-		this.bundle = bundle;
-		this.rawHeaders = rawHeaders;
-	}
-
-	protected Dictionary getHeaders(String localeString) {
-		if (localeString.length() == 0)
-			return (rawHeaders);
-		boolean isDefaultLocale = false;
-		String defaultLocale = Locale.getDefault().toString();
-		if (localeString.equals(defaultLocale)) {
-			if (defaultLocaleHeaders != null)
-				return (defaultLocaleHeaders);
-			isDefaultLocale = true;
-		}
-		try {
-			bundle.checkValid();
-		} catch (IllegalStateException ex) {
-			// defaultLocaleHeaders should have been initialized on uninstall
-			if (defaultLocaleHeaders != null)
-				return defaultLocaleHeaders;
-			return (rawHeaders);
-		}
-		ResourceBundle localeProperties = getResourceBundle(localeString);
-		if (localeProperties == null && !isDefaultLocale)
-			// could not find the requested locale use the default locale
-			localeProperties = getResourceBundle(defaultLocale);
-		Enumeration e = this.rawHeaders.keys();
-		Headers localeHeaders = new Headers(this.rawHeaders.size());
-		while (e.hasMoreElements()) {
-			String key = (String) e.nextElement();
-			String value = (String) this.rawHeaders.get(key);
-			if (value.startsWith("%") && (value.length() > 1)) { //$NON-NLS-1$
-				String propertiesKey = value.substring(1);
-				try {
-					value = localeProperties == null ? propertiesKey : (String) localeProperties.getObject(propertiesKey);
-				} catch (MissingResourceException ex) {
-					value = propertiesKey;
-				}
-			}
-			localeHeaders.set(key, value);
-		}
-		localeHeaders.setReadOnly();
-		if (isDefaultLocale) {
-			defaultLocaleHeaders = localeHeaders;
-		}
-		return (localeHeaders);
-	}
-
-	private String[] buildNLVariants(String nl) {
-		ArrayList result = new ArrayList();
-		while (nl.length() > 0) {
-			result.add(nl);
-			int i = nl.lastIndexOf('_');
-			nl = (i < 0) ? "" : nl.substring(0, i); //$NON-NLS-1$
-		}
-		result.add(""); //$NON-NLS-1$
-		return (String[]) result.toArray(new String[result.size()]);
-	}
-
-	/*
-	 * This method find the appropiate Manifest Localization file inside the
-	 * bundle. If not found, return null.
-	 */
-	protected ResourceBundle getResourceBundle(String localeString) {
-		String propertiesLocation = (String) rawHeaders.get(Constants.BUNDLE_LOCALIZATION);
-		if (propertiesLocation == null) {
-			propertiesLocation = Constants.BUNDLE_LOCALIZATION_DEFAULT_BASENAME;
-		}
-
-		BundleResourceBundle result = (BundleResourceBundle) cache.get(localeString);
-		if (result != null)
-			return (ResourceBundle) (result.isEmpty() ? null : result);
-		String[] nlVarients = buildNLVariants(localeString);
-		BundleResourceBundle parent = null;
-		for (int i = nlVarients.length - 1; i >= 0; i--) {
-			BundleResourceBundle varientBundle = null;
-			URL varientURL = findResource(propertiesLocation + (nlVarients[i].equals("") ? nlVarients[i] : '_' + nlVarients[i]) + ".properties"); //$NON-NLS-1$ //$NON-NLS-2$
-			if (varientURL == null) {
-				varientBundle = (BundleResourceBundle) cache.get(nlVarients[i]);
-			} else {
-				InputStream resourceStream = null;
-				try {
-					resourceStream = varientURL.openStream();
-					varientBundle = new LocalizationResourceBundle(resourceStream);
-				} catch (IOException e) {
-					// ignore and continue
-				} finally {
-					if (resourceStream != null) {
-						try {
-							resourceStream.close();
-						} catch (IOException e3) {
-							//Ignore exception
-						}
-					}
-				}
-			}
-
-			if (varientBundle == null) {
-				varientBundle = new EmptyResouceBundle();
-			}
-			if (parent != null)
-				varientBundle.setParent((ResourceBundle) parent);
-			cache.put(nlVarients[i], varientBundle);
-			parent = varientBundle;
-		}
-		result = (BundleResourceBundle) cache.get(localeString);
-		return (ResourceBundle) (result.isEmpty() ? null : result);
-	}
-
-	private URL findResource(String resource) {
-		AbstractBundle searchBundle = bundle;
-		if (bundle.isResolved()) {
-			if (bundle.isFragment() && bundle.getHosts() != null) {
-				//if the bundle is a fragment, look in the host first
-				searchBundle = bundle.getHosts()[0];
-				if (searchBundle.getState() == Bundle.UNINSTALLED)
-					searchBundle = bundle;
-			}
-			return findInResolved(resource, searchBundle);
-		}
-		return searchBundle.getEntry0(resource);
-	}
-
-	private URL findInResolved(String filePath, AbstractBundle bundleHost) {
-		URL result = bundleHost.getEntry0(filePath);
-		if (result != null)
-			return result;
-		return findInFragments(filePath, bundleHost);
-	}
-
-	private URL findInFragments(String filePath, AbstractBundle searchBundle) {
-		BundleFragment[] fragments = searchBundle.getFragments();
-		URL fileURL = null;
-		for (int i = 0; fragments != null && i < fragments.length && fileURL == null; i++) {
-			if (fragments[i].getState() != Bundle.UNINSTALLED)
-				fileURL = fragments[i].getEntry0(filePath);
-		}
-		return fileURL;
-	}
-
-	private abstract interface BundleResourceBundle {
-		void setParent(ResourceBundle parent);
-
-		boolean isEmpty();
-	}
-
-	private class LocalizationResourceBundle extends PropertyResourceBundle implements BundleResourceBundle {
-		public LocalizationResourceBundle(InputStream in) throws IOException {
-			super(in);
-		}
-
-		public void setParent(ResourceBundle parent) {
-			super.setParent(parent);
-		}
-
-		public boolean isEmpty() {
-			return false;
-		}
-	}
-
-	private class EmptyResouceBundle extends ResourceBundle implements BundleResourceBundle {
-		public Enumeration getKeys() {
-			return null;
-		}
-
-		protected Object handleGetObject(String arg0) throws MissingResourceException {
-			return null;
-		}
-
-		public void setParent(ResourceBundle parent) {
-			super.setParent(parent);
-		}
-
-		public boolean isEmpty() {
-			if (parent == null)
-				return true;
-			return ((BundleResourceBundle) parent).isEmpty();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java
deleted file mode 100644
index a286644..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java
+++ /dev/null
@@ -1,728 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
-import org.eclipse.osgi.internal.profile.Profile;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.*;
-
-/**
- * PackageAdmin service for the OSGi specification.
- *
- * Framework service which allows bundle programmers to inspect the packages
- * exported in the framework and eagerly update or uninstall bundles.
- *
- * If present, there will only be a single instance of this service
- * registered in the framework.
- *
- * <p> The term <i>exported package</i> (and the corresponding interface
- * {@link ExportedPackage}) refers to a package that has actually been
- * exported (as opposed to one that is available for export).
- *
- * <p> Note that the information about exported packages returned by this
- * service is valid only until the next time {@link #refreshPackages(org.osgi.framework.Bundle[])} is
- * called.
- * If an ExportedPackage becomes stale, (that is, the package it references
- * has been updated or removed as a result of calling
- * PackageAdmin.refreshPackages()),
- * its getName() and getSpecificationVersion() continue to return their
- * old values, isRemovalPending() returns true, and getExportingBundle()
- * and getImportingBundles() return null.
- */
-public class PackageAdminImpl implements PackageAdmin {
-	/** framework object */
-	protected Framework framework;
-	private Map removalPendings = new HashMap();
-
-	/* 
-	 * We need to make sure that the GetBundleAction class loads early to prevent a ClassCircularityError when checking permissions.
-	 * See bug 161561
-	 */
-	static {
-		Class c;
-		c = GetBundleAction.class;
-		c.getName(); // to prevent compiler warnings
-	}
-
-	static class GetBundleAction implements PrivilegedAction {
-		private Class clazz;
-		private PackageAdminImpl impl;
-
-		public GetBundleAction(PackageAdminImpl impl, Class clazz) {
-			this.impl = impl;
-			this.clazz = clazz;
-		}
-
-		public Object run() {
-			return impl.getBundlePriv(clazz);
-		}
-	}
-
-	/**
-	 * Constructor.
-	 *
-	 * @param framework Framework object.
-	 */
-	protected PackageAdminImpl(Framework framework) {
-		this.framework = framework;
-	}
-
-	public ExportedPackage[] getExportedPackages(Bundle bundle) {
-		ArrayList allExports = new ArrayList();
-		FrameworkAdaptor adaptor = framework.adaptor;
-		if (adaptor == null)
-			return null;
-		ExportPackageDescription[] allDescriptions = adaptor.getState().getExportedPackages();
-		for (int i = 0; i < allDescriptions.length; i++) {
-			ExportedPackageImpl exportedPackage = createExportedPackage(allDescriptions[i]);
-			if (exportedPackage == null)
-				continue;
-			if (bundle == null || exportedPackage.getBundle() == bundle)
-				allExports.add(exportedPackage);
-		}
-		return (ExportedPackage[]) (allExports.size() == 0 ? null : allExports.toArray(new ExportedPackage[allExports.size()]));
-	}
-
-	private ExportedPackageImpl createExportedPackage(ExportPackageDescription description) {
-		BundleDescription exporter = description.getExporter();
-		if (exporter == null || exporter.getHost() != null)
-			return null;
-		BundleLoaderProxy proxy = (BundleLoaderProxy) exporter.getUserObject();
-		if (proxy == null) {
-			BundleHost bundle = (BundleHost) framework.getBundle(exporter.getBundleId());
-			if (bundle == null)
-				return null;
-			proxy = bundle.getLoaderProxy();
-		}
-		return new ExportedPackageImpl(description, proxy);
-	}
-
-	public ExportedPackage getExportedPackage(String name) {
-		ExportedPackage[] allExports = getExportedPackages((Bundle) null);
-		if (allExports == null)
-			return null;
-		ExportedPackage result = null;
-		for (int i = 0; i < allExports.length; i++) {
-			if (name.equals(allExports[i].getName())) {
-				if (result == null) {
-					result = allExports[i];
-				} else {
-					// TODO not efficient but this is not called very often
-					Version curVersion = Version.parseVersion(result.getSpecificationVersion());
-					Version newVersion = Version.parseVersion(allExports[i].getSpecificationVersion());
-					if (newVersion.compareTo(curVersion) >= 0)
-						result = allExports[i];
-				}
-			}
-		}
-		return result;
-	}
-
-	public ExportedPackage[] getExportedPackages(String name) {
-		ExportedPackage[] allExports = getExportedPackages((Bundle) null);
-		if (allExports == null)
-			return null;
-		ArrayList result = new ArrayList(1); // rare to have more than one
-		for (int i = 0; i < allExports.length; i++)
-			if (name.equals(allExports[i].getName()))
-				result.add(allExports[i]);
-		return (ExportedPackage[]) (result.size() == 0 ? null : result.toArray(new ExportedPackage[result.size()]));
-	}
-
-	public void refreshPackages(Bundle[] input) {
-		refreshPackages(input, false);
-	}
-
-	public void refreshPackages(Bundle[] input, boolean synchronously) {
-		framework.checkAdminPermission(framework.systemBundle, AdminPermission.RESOLVE);
-
-		final AbstractBundle[] copy;
-		if (input != null) {
-			synchronized (input) {
-				copy = new AbstractBundle[input.length];
-				System.arraycopy(input, 0, copy, 0, input.length);
-			}
-		} else
-			copy = null;
-
-		if (synchronously) {
-			doResolveBundles(copy, true);
-			if (framework.isForcedRestart())
-				framework.systemBundle.stop();
-		} else {
-			Thread refresh = framework.secureAction.createThread(new Runnable() {
-				public void run() {
-					doResolveBundles(copy, true);
-					if (framework.isForcedRestart())
-						framework.shutdown(FrameworkEvent.STOPPED_BOOTCLASSPATH_MODIFIED);
-				}
-			}, "Refresh Packages", framework.getContextFinder()); //$NON-NLS-1$	
-			refresh.start();
-		}
-	}
-
-	public boolean resolveBundles(Bundle[] bundles) {
-		framework.checkAdminPermission(framework.systemBundle, AdminPermission.RESOLVE);
-		doResolveBundles(null, false);
-		if (bundles == null)
-			bundles = framework.getAllBundles();
-		for (int i = 0; i < bundles.length; i++)
-			if (!((AbstractBundle) bundles[i]).isResolved())
-				return false;
-
-		return true;
-	}
-
-	// This method is protected to enable a work around to bug 245251
-	synchronized protected void doResolveBundles(AbstractBundle[] bundles, boolean refreshPackages) {
-		try {
-			if (Profile.PROFILE && Profile.STARTUP)
-				Profile.logEnter("resolve bundles"); //$NON-NLS-1$
-			framework.publishBundleEvent(Framework.BATCHEVENT_BEGIN, framework.systemBundle);
-			State systemState = framework.adaptor.getState();
-			BundleDescription[] descriptions = null;
-			int numBundles = bundles == null ? 0 : bundles.length;
-			if (!refreshPackages)
-				// in this case we must make descriptions non-null so we do
-				// not force the removal pendings to be processed when resolving
-				// the state.
-				descriptions = new BundleDescription[0];
-			else if (numBundles > 0) {
-				// populate the resolved hosts package sources first (do this outside sync block: bug 280929)
-				populateLoaders(framework.getAllBundles());
-				synchronized (framework.bundles) {
-					// now collect the descriptions to refresh
-					ArrayList results = new ArrayList(numBundles);
-					BundleDelta[] addDeltas = null;
-					for (int i = 0; i < numBundles; i++) {
-						BundleDescription description = bundles[i].getBundleDescription();
-						if (description != null && description.getBundleId() != 0 && !results.contains(description))
-							results.add(description);
-						// add in any bundles that have the same symbolic name see bug (169593)
-						AbstractBundle[] sameNames = framework.bundles.getBundles(bundles[i].getSymbolicName());
-						if (sameNames != null && sameNames.length > 1) {
-							if (addDeltas == null)
-								addDeltas = systemState.getChanges().getChanges(BundleDelta.ADDED, false);
-							for (int j = 0; j < sameNames.length; j++)
-								if (sameNames[j] != bundles[i]) {
-									BundleDescription sameName = sameNames[j].getBundleDescription();
-									if (sameName != null && sameName.getBundleId() != 0 && !results.contains(sameName)) {
-										if (checkExtensionBundle(sameName, addDeltas))
-											results.add(sameName);
-									}
-								}
-						}
-					}
-					descriptions = (BundleDescription[]) (results.size() == 0 ? null : results.toArray(new BundleDescription[results.size()]));
-				}
-			}
-			BundleDelta[] delta = systemState.resolve(descriptions).getChanges();
-			processDelta(delta, refreshPackages, systemState);
-		} catch (Throwable t) {
-			if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-				Debug.println("PackageAdminImpl.doResolveBundles: Error occured :"); //$NON-NLS-1$
-				Debug.printStackTrace(t);
-			}
-			if (t instanceof RuntimeException)
-				throw (RuntimeException) t;
-			if (t instanceof Error)
-				throw (Error) t;
-		} finally {
-			if (Profile.PROFILE && Profile.STARTUP)
-				Profile.logExit("resolve bundles"); //$NON-NLS-1$
-			if (framework.isActive()) {
-				framework.publishBundleEvent(Framework.BATCHEVENT_END, framework.systemBundle);
-				if (refreshPackages)
-					framework.publishFrameworkEvent(FrameworkEvent.PACKAGES_REFRESHED, framework.systemBundle, null);
-			}
-		}
-	}
-
-	private void populateLoaders(AbstractBundle[] bundles) {
-		// populate all the loaders with their package source information
-		// this is needed to fix bug 259903.
-		for (int i = 0; i < bundles.length; i++) {
-			// only need to do this for host bundles which are resolved
-			if (bundles[i] instanceof BundleHost && bundles[i].isResolved()) {
-				// getting the BundleLoader object populates the require-bundle sources
-				BundleLoader loader = ((BundleHost) bundles[i]).getBundleLoader();
-				if (loader != null)
-					// need to explicitly get the import package sources
-					loader.getImportedSources(null);
-			}
-		}
-	}
-
-	private boolean checkExtensionBundle(BundleDescription sameName, BundleDelta[] addDeltas) {
-		if (sameName.getHost() == null || !sameName.isResolved())
-			return true; // only do this extra check for resolved fragment bundles
-		// only add fragments of the system bundle when newly added bundles exist.
-		if (((BundleDescription) sameName.getHost().getSupplier()).getBundleId() != 0 || addDeltas.length > 0)
-			return true;
-		return false;
-	}
-
-	private void resumeBundles(AbstractBundle[] bundles, boolean refreshPackages, int[] previousStates) {
-		if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-			Debug.println("PackageAdminImpl: restart the bundles"); //$NON-NLS-1$
-		}
-		if (bundles == null)
-			return;
-		for (int i = 0; i < bundles.length; i++) {
-			if (!bundles[i].isResolved() || (!refreshPackages && ((bundles[i].getBundleData().getStatus() & Constants.BUNDLE_LAZY_START) == 0 || bundles[i].testStateChanging(Thread.currentThread()))))
-				// skip bundles that are not resolved or
-				// if we are doing resolveBundles then skip non-lazy start bundles and bundles currently changing state by this thread
-				continue;
-			if (previousStates[i] == Bundle.ACTIVE)
-				try {
-					bundles[i].start(Bundle.START_TRANSIENT);
-				} catch (BundleException e) {
-					framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundles[i], e);
-				}
-			else
-				framework.resumeBundle(bundles[i]);
-		}
-	}
-
-	private void suspendBundle(AbstractBundle bundle) {
-		// attempt to suspend the bundle or obtain the state change lock
-		// Note that this may fail but we cannot quit the
-		// refreshPackages operation because of it. (bug 84169)
-		if (bundle.isActive() && !bundle.isFragment()) {
-			framework.suspendBundle(bundle, true);
-		} else {
-			if (bundle.getStateChanging() != Thread.currentThread())
-				try {
-					bundle.beginStateChange();
-				} catch (BundleException e) {
-					framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-				}
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-			if (bundle.stateChanging == null) {
-				Debug.println("Bundle state change lock is clear! " + bundle); //$NON-NLS-1$
-				Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-			}
-		}
-	}
-
-	private void applyRemovalPending(BundleDelta bundleDelta) throws BundleException {
-		if ((bundleDelta.getType() & BundleDelta.REMOVAL_COMPLETE) != 0) {
-			BundleDescription bundle = bundleDelta.getBundle();
-			if (bundle.getDependents() != null && bundle.getDependents().length > 0) {
-				/* Reaching here is an internal error */
-				if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-					Debug.println("Bundles still depend on removed bundle! " + bundle); //$NON-NLS-1$
-					Debug.printStackTrace(new Exception("Stack trace")); //$NON-NLS-1$
-				}
-				throw new BundleException(Msg.OSGI_INTERNAL_ERROR);
-			}
-			synchronized (removalPendings) {
-				// ensure that the bundle datas are closed, (fix for bug 259399)
-				List removals = (List) removalPendings.remove(new Long(bundle.getBundleId()));
-				if (removals != null)
-					for (Iterator iRemovals = removals.iterator(); iRemovals.hasNext();)
-						try {
-							((BundleData) iRemovals.next()).close();
-						} catch (IOException e) {
-							// ignore
-						}
-			}
-			BundleLoaderProxy proxy = (BundleLoaderProxy) bundle.getUserObject();
-			if (proxy != null) {
-				BundleLoader.closeBundleLoader(proxy);
-				try {
-					proxy.getBundleHost().getBundleData().close();
-				} catch (IOException e) {
-					// ignore
-				}
-			}
-		}
-	}
-
-	private AbstractBundle setResolved(BundleDescription bundleDescription) {
-		if (!bundleDescription.isResolved())
-			return null;
-		AbstractBundle bundle = framework.getBundle(bundleDescription.getBundleId());
-		if (bundle == null) {
-			BundleException be = new BundleException(NLS.bind(Msg.BUNDLE_NOT_IN_FRAMEWORK, bundleDescription));
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, be);
-			return null;
-		}
-		boolean resolve = true;
-		if (bundle.isFragment()) {
-			BundleDescription[] hosts = bundleDescription.getHost().getHosts();
-			for (int i = 0; i < hosts.length; i++) {
-				BundleHost host = (BundleHost) framework.getBundle(hosts[i].getBundleId());
-				resolve = ((BundleFragment) bundle).addHost(host);
-			}
-		}
-		if (resolve)
-			bundle.resolve();
-		return bundle;
-	}
-
-	private void applyDeltas(BundleDelta[] bundleDeltas) throws BundleException {
-		Arrays.sort(bundleDeltas, new Comparator() {
-			public int compare(Object delta0, Object delta1) {
-				return (int) (((BundleDelta) delta0).getBundle().getBundleId() - ((BundleDelta) delta1).getBundle().getBundleId());
-			}
-		});
-		for (int i = 0; i < bundleDeltas.length; i++) {
-			int type = bundleDeltas[i].getType();
-			if ((type & (BundleDelta.REMOVAL_PENDING | BundleDelta.REMOVAL_COMPLETE)) != 0)
-				applyRemovalPending(bundleDeltas[i]);
-			if ((type & BundleDelta.RESOLVED) != 0) {
-				AbstractBundle bundle = setResolved(bundleDeltas[i].getBundle());
-				if (bundle != null && bundle.isResolved()) {
-					NativeCodeSpecification nativeCode = bundleDeltas[i].getBundle().getNativeCodeSpecification();
-					if (nativeCode != null && nativeCode.getSupplier() != null)
-						try {
-							BundleData data = bundle.getBundleData();
-							data.installNativeCode(((NativeCodeDescription) nativeCode.getSupplier()).getNativePaths());
-						} catch (BundleException e) {
-							framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-						}
-				}
-			}
-		}
-	}
-
-	private AbstractBundle[] processDelta(BundleDelta[] bundleDeltas, boolean refreshPackages, State systemState) {
-		ArrayList bundlesList = new ArrayList(bundleDeltas.length);
-		// get all the bundles that are going to be refreshed
-		for (int i = 0; i < bundleDeltas.length; i++) {
-			if ((bundleDeltas[i].getType() & BundleDelta.REMOVAL_COMPLETE) != 0 && (bundleDeltas[i].getType() & BundleDelta.REMOVED) == 0)
-				// this means the bundle was previously pending removal; do not add to list because it was already removed from before.
-				continue;
-			AbstractBundle changedBundle = framework.getBundle(bundleDeltas[i].getBundle().getBundleId());
-			if (changedBundle != null && !bundlesList.contains(changedBundle))
-				bundlesList.add(changedBundle);
-		}
-		AbstractBundle[] refresh = (AbstractBundle[]) bundlesList.toArray(new AbstractBundle[bundlesList.size()]);
-		// first sort by id/start-level order
-		Util.sort(refresh, 0, refresh.length);
-		// then sort by dependency order
-		framework.startLevelManager.sortByDependency(refresh);
-		boolean[] previouslyResolved = new boolean[refresh.length];
-		int[] previousStates = new int[refresh.length];
-		try {
-			try {
-				if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-					Debug.println("refreshPackages: Suspend each bundle and acquire its state change lock"); //$NON-NLS-1$
-				}
-				// find which bundles were previously resolved and handle extension bundles
-				boolean restart = false;
-				for (int i = refresh.length - 1; i >= 0; i--) {
-					previouslyResolved[i] = refresh[i].isResolved();
-					if (refresh[i] == framework.systemBundle)
-						restart = true;
-					else if (((refresh[i].bundledata.getType() & BundleData.TYPE_FRAMEWORK_EXTENSION) != 0) && previouslyResolved[i])
-						restart = true;
-					else if ((refresh[i].bundledata.getType() & BundleData.TYPE_BOOTCLASSPATH_EXTENSION) != 0)
-						restart = true;
-					else if ((refresh[i].bundledata.getType() & BundleData.TYPE_EXTCLASSPATH_EXTENSION) != 0 && previouslyResolved[i])
-						restart = true;
-				}
-				if (restart) {
-					FrameworkProperties.setProperty("osgi.forcedRestart", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-					framework.setForcedRestart(true);
-					// do not shutdown the framework while holding the PackageAdmin lock (bug 194149)
-					return null;
-				}
-				// now suspend each bundle and grab its state change lock.
-				if (refreshPackages)
-					for (int i = refresh.length - 1; i >= 0; i--) {
-						previousStates[i] = refresh[i].getState();
-						suspendBundle(refresh[i]);
-					}
-				/*
-				 * Refresh the bundles which will unexport the packages.
-				 * This will move RESOLVED bundles to the INSTALLED state.
-				 */
-				if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-					Debug.println("refreshPackages: refresh the bundles"); //$NON-NLS-1$
-				}
-
-				synchronized (framework.bundles) {
-					for (int i = refresh.length - 1; i >= 0; i--)
-						refresh[i].refresh();
-				}
-				// send out unresolved events outside synch block (defect #80610)
-				// send out unresolved events in reverse dependency order (defect #207505)
-				for (int i = refresh.length - 1; i >= 0; i--) {
-					// send out unresolved events
-					if (previouslyResolved[i])
-						framework.publishBundleEvent(BundleEvent.UNRESOLVED, refresh[i]);
-				}
-
-				/*
-				 * apply Deltas.
-				 */
-				if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-					Debug.println("refreshPackages: applying deltas to bundles"); //$NON-NLS-1$
-				}
-				synchronized (framework.bundles) {
-					applyDeltas(bundleDeltas);
-				}
-
-			} finally {
-				/*
-				 * Release the state change locks.
-				 */
-				if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-					Debug.println("refreshPackages: release the state change locks"); //$NON-NLS-1$
-				}
-				if (refreshPackages)
-					for (int i = 0; i < refresh.length; i++) {
-						AbstractBundle changedBundle = refresh[i];
-						changedBundle.completeStateChange();
-					}
-			}
-			/*
-			 * Take this opportunity to clean up the adaptor storage.
-			 */
-			if (refreshPackages) {
-				if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN)
-					Debug.println("refreshPackages: clean up adaptor storage"); //$NON-NLS-1$
-				try {
-					framework.adaptor.compactStorage();
-				} catch (IOException e) {
-					if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-						Debug.println("refreshPackages exception: " + e.getMessage()); //$NON-NLS-1$
-						Debug.printStackTrace(e);
-					}
-					framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, new BundleException(Msg.BUNDLE_REFRESH_FAILURE, e));
-				}
-			}
-		} catch (BundleException e) {
-			if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN) {
-				Debug.println("refreshPackages exception: " + e.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(e.getNestedException() == null ? e : e.getNestedException());
-			}
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, new BundleException(Msg.BUNDLE_REFRESH_FAILURE, e));
-		}
-
-		// send out any resolved.  This must be done after the state change locks have been release.
-		if (Debug.DEBUG && Debug.DEBUG_PACKAGEADMIN)
-			Debug.println("refreshPackages: send out RESOLVED events"); //$NON-NLS-1$
-		for (int i = 0; i < refresh.length; i++)
-			if (refresh[i].isResolved())
-				framework.publishBundleEvent(BundleEvent.RESOLVED, refresh[i]);
-
-		// if we end up refreshing the system bundle or one of its fragments the framework will be shutdown and 
-		// should be re-started. This call should return without doing further work.
-		if (!framework.isActive())
-			return refresh;
-		if (refreshPackages) {
-			// must clear permission class and condition cache
-			framework.securityAdmin.clearCaches();
-			// increment the system state timestamp if we are refreshing packages.
-			// this is needed incase we suspended a bundle from processing the delta (bug 167483)
-			if (bundleDeltas.length > 0)
-				systemState.setTimeStamp(systemState.getTimeStamp() == Long.MAX_VALUE ? 0 : systemState.getTimeStamp() + 1);
-		}
-		// always resume bundles incase we have lazy-start bundles
-		resumeBundles(refresh, refreshPackages, previousStates);
-		return refresh;
-	}
-
-	public RequiredBundle[] getRequiredBundles(String symbolicName) {
-		AbstractBundle[] bundles;
-		if (symbolicName == null)
-			bundles = framework.getAllBundles();
-		else
-			bundles = framework.getBundleBySymbolicName(symbolicName);
-		if (bundles == null || bundles.length == 0)
-			return null;
-
-		ArrayList result = new ArrayList(bundles.length);
-		for (int i = 0; i < bundles.length; i++) {
-			if (bundles[i].isFragment() || !bundles[i].isResolved() || bundles[i].getSymbolicName() == null)
-				continue;
-			if (bundles[i].hasPermission(new BundlePermission(bundles[i].getSymbolicName(), BundlePermission.PROVIDE)))
-				result.add(((BundleHost) bundles[i]).getLoaderProxy());
-		}
-		return result.size() == 0 ? null : (RequiredBundle[]) result.toArray(new RequiredBundle[result.size()]);
-	}
-
-	public Bundle[] getBundles(String symbolicName, String versionRange) {
-		if (symbolicName == null) {
-			throw new IllegalArgumentException();
-		}
-		AbstractBundle bundles[] = framework.getBundleBySymbolicName(symbolicName);
-		if (bundles == null)
-			return null;
-
-		if (versionRange == null) {
-			AbstractBundle[] result = new AbstractBundle[bundles.length];
-			System.arraycopy(bundles, 0, result, 0, result.length);
-			return result;
-		}
-
-		// This code depends on the array of bundles being in descending
-		// version order.
-		ArrayList result = new ArrayList(bundles.length);
-		VersionRange range = new VersionRange(versionRange);
-		for (int i = 0; i < bundles.length; i++) {
-			if (range.isIncluded(bundles[i].getVersion())) {
-				result.add(bundles[i]);
-			}
-		}
-
-		if (result.size() == 0)
-			return null;
-		return (AbstractBundle[]) result.toArray(new AbstractBundle[result.size()]);
-	}
-
-	public Bundle[] getFragments(Bundle bundle) {
-		return ((AbstractBundle) bundle).getFragments();
-	}
-
-	public Bundle[] getHosts(Bundle bundle) {
-		BundleHost[] hosts = ((AbstractBundle) bundle).getHosts();
-		if (hosts == null)
-			return null;
-		// copy the array to protect modification
-		Bundle[] result = new Bundle[hosts.length];
-		for (int i = 0; i < hosts.length; i++)
-			result[i] = hosts[i];
-		return result;
-	}
-
-	Bundle getBundlePriv(Class clazz) {
-		ClassLoader cl = clazz.getClassLoader();
-		if (cl instanceof BundleClassLoader) {
-			ClassLoaderDelegate delegate = ((BundleClassLoader) cl).getDelegate();
-			if (delegate instanceof BundleLoader)
-				return ((BundleLoader) delegate).getBundle();
-		}
-		if (cl == getClass().getClassLoader())
-			return framework.systemBundle;
-		return null;
-	}
-
-	public Bundle getBundle(final Class clazz) {
-		if (System.getSecurityManager() == null)
-			return getBundlePriv(clazz);
-		return (Bundle) AccessController.doPrivileged(new GetBundleAction(this, clazz));
-	}
-
-	public int getBundleType(Bundle bundle) {
-		return ((AbstractBundle) bundle).isFragment() ? PackageAdmin.BUNDLE_TYPE_FRAGMENT : 0;
-	}
-
-	protected void cleanup() {
-		//This is only called when the framework is shutting down
-		synchronized (removalPendings) {
-			for (Iterator pendings = removalPendings.values().iterator(); pendings.hasNext();) {
-				List removals = (List) pendings.next();
-				for (Iterator iRemovals = removals.iterator(); iRemovals.hasNext();)
-					try {
-						((BundleData) iRemovals.next()).close();
-					} catch (IOException e) {
-						// ignore
-					}
-			}
-			removalPendings.clear();
-		}
-	}
-
-	protected void setResolvedBundles(InternalSystemBundle systemBundle) {
-		checkSystemBundle(systemBundle);
-		// Now set the actual state of the bundles from the persisted state.
-		State state = framework.adaptor.getState();
-		BundleDescription[] descriptions = state.getBundles();
-		for (int i = 0; i < descriptions.length; i++) {
-			if (descriptions[i].getBundleId() == 0)
-				setFrameworkVersion(descriptions[i]);
-			else
-				setResolved(descriptions[i]);
-		}
-	}
-
-	private void checkSystemBundle(InternalSystemBundle systemBundle) {
-		try {
-			// first check that the system bundle has not changed since last saved state.
-			State state = framework.adaptor.getState();
-			BundleDescription oldSystemBundle = state.getBundle(0);
-			boolean different = false;
-			if (oldSystemBundle == null || !systemBundle.getBundleData().getVersion().equals(oldSystemBundle.getVersion()))
-				different = true;
-			if (!different && FrameworkProperties.getProperty("osgi.dev") == null) //$NON-NLS-1$
-				return; // return quick if not in dev mode; system bundle version changes with each build
-			BundleDescription newSystemBundle = state.getFactory().createBundleDescription(state, systemBundle.getHeaders(""), systemBundle.getLocation(), 0); //$NON-NLS-1$
-			if (newSystemBundle == null)
-				throw new BundleException(Msg.OSGI_SYSTEMBUNDLE_DESCRIPTION_ERROR);
-			if (!different) {
-				// need to check to make sure the system bundle description is up to date in the state.
-				ExportPackageDescription[] oldPackages = oldSystemBundle.getExportPackages();
-				ExportPackageDescription[] newPackages = newSystemBundle.getExportPackages();
-				if (oldPackages.length >= newPackages.length) {
-					for (int i = 0; i < newPackages.length && !different; i++) {
-						if (oldPackages[i].getName().equals(newPackages[i].getName())) {
-							Object oldVersion = oldPackages[i].getVersion();
-							Object newVersion = newPackages[i].getVersion();
-							different = oldVersion == null ? newVersion != null : !oldVersion.equals(newVersion);
-						} else {
-							different = true;
-						}
-					}
-				} else {
-					different = true;
-				}
-			}
-			if (different) {
-				state.removeBundle(0);
-				state.addBundle(newSystemBundle);
-				// force resolution so packages are properly linked
-				state.resolve(false);
-			}
-		} catch (BundleException e) /* fatal error */{
-			e.printStackTrace();
-			throw new RuntimeException(NLS.bind(Msg.OSGI_SYSTEMBUNDLE_CREATE_EXCEPTION, e.getMessage()), e);
-		}
-	}
-
-	private void setFrameworkVersion(BundleDescription systemBundle) {
-		ExportPackageDescription[] packages = systemBundle.getExportPackages();
-		for (int i = 0; i < packages.length; i++)
-			if (packages[i].getName().equals(Constants.OSGI_FRAMEWORK_PACKAGE)) {
-				FrameworkProperties.setProperty(Constants.FRAMEWORK_VERSION, packages[i].getVersion().toString());
-				break;
-			}
-		FrameworkProperties.setProperty(Constants.OSGI_IMPL_VERSION_KEY, systemBundle.getVersion().toString());
-	}
-
-	void addRemovalPending(BundleData bundledata) {
-		synchronized (removalPendings) {
-			Long id = new Long(bundledata.getBundleID());
-			List removals = (List) removalPendings.get(id);
-			if (removals == null) {
-				removals = new ArrayList(1);
-				removalPendings.put(id, removals);
-			}
-			removals.add(bundledata);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelEvent.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelEvent.java
deleted file mode 100644
index aab377f..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelEvent.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.util.EventObject;
-
-/**
- * StartLevel Event for the OSGi framework.
- *
- * Event which signifies that a start level change has been requested for the framework or for a bundle.
- *
- */
-class StartLevelEvent extends EventObject {
-	private static final long serialVersionUID = 3258125839085155891L;
-	public final static int CHANGE_BUNDLE_SL = 0x00000000;
-	public final static int CHANGE_FW_SL = 0x00000001;
-
-	/**
-	 * Event Type
-	 */
-	private transient int type;
-
-	/**
-	 * StartLevel - value depends on event type: 
-	 *  CHANGE_BUNDLE_SL - value is the new bundle startlevel
-	 *  CHANGE_FW_SL - value is the new framework startlevel
-	 * 
-	 */
-	private transient int newSl;
-
-	/**
-	 * For a change in bundle startlevel, this is the bundle to be changed.
-	 * For a change in framework startlevel, this is the bundle requesting the change.
-	 */
-	private transient AbstractBundle bundle;
-
-	/**
-	 * Creates a StartLevel event regarding the specified bundle.
-	 *
-	 * @param type The type of startlevel event (inc or dec)
-	 * @param newSl the ultimate requested startlevel we are on our way to
-	 * @param bundle The affected bundle, or system bundle if it is for the framework
-	 */
-	public StartLevelEvent(int type, int newSl, AbstractBundle bundle) {
-		super(bundle);
-		this.type = type;
-		this.newSl = newSl;
-		this.bundle = bundle;
-	}
-
-	public int getType() {
-		return this.type;
-	}
-
-	public int getNewSL() {
-		return this.newSl;
-	}
-
-	public AbstractBundle getBundle() {
-		return this.bundle;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelManager.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelManager.java
deleted file mode 100644
index 96e0c20..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelManager.java
+++ /dev/null
@@ -1,703 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.security.*;
-import java.util.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.eventmgr.*;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.startlevel.StartLevel;
-
-/**
- * StartLevel service implementation for the OSGi specification.
- *
- * Framework service which allows management of framework and bundle startlevels.
- *
- * This class also acts as the StartLevel service factory class, providing StartLevel objects
- * to those requesting org.osgi.service.startlevel.StartLevel service. 
- * 
- * If present, there will only be a single instance of this service
- * registered in the framework.
- */
-public class StartLevelManager implements EventDispatcher, EventListener, StartLevel {
-	protected static EventManager eventManager;
-	protected static Map startLevelListeners;
-
-	/** The initial bundle start level for newly installed bundles */
-	protected int initialBundleStartLevel = 1;
-	// default value is 1 for compatibility mode
-
-	/** The currently active framework start level */
-	private int activeSL = 0;
-
-	/** An object used to lock the active startlevel while it is being referenced */
-	private final Object lock = new Object();
-	private final Framework framework;
-
-	/** This constructor is called by the Framework */
-	protected StartLevelManager(Framework framework) {
-		this.framework = framework;
-	}
-
-	protected void initialize() {
-		initialBundleStartLevel = framework.adaptor.getInitialBundleStartLevel();
-
-		// create an event manager and a start level listener
-		// note that we do not pass the ContextFinder because it is set each time doSetStartLevel is called
-		eventManager = new EventManager("Start Level Event Dispatcher"); //$NON-NLS-1$
-		startLevelListeners = new CopyOnWriteIdentityMap();
-		startLevelListeners.put(this, this);
-	}
-
-	protected void cleanup() {
-		eventManager.close();
-		eventManager = null;
-		startLevelListeners.clear();
-		startLevelListeners = null;
-	}
-
-	/**
-	 * Return the initial start level value that is assigned
-	 * to a Bundle when it is first installed.
-	 *
-	 * @return The initial start level value for Bundles.
-	 * @see #setInitialBundleStartLevel
-	 */
-	public int getInitialBundleStartLevel() {
-		return initialBundleStartLevel;
-	}
-
-	/**
-	 * Set the initial start level value that is assigned
-	 * to a Bundle when it is first installed.
-	 *
-	 * <p>The initial bundle start level will be set to the specified start level. The
-	 * initial bundle start level value will be persistently recorded
-	 * by the Framework.
-	 *
-	 * <p>When a Bundle is installed via <tt>BundleContext.installBundle</tt>,
-	 * it is assigned the initial bundle start level value.
-	 *
-	 * <p>The default initial bundle start level value is 1
-	 * unless this method has been
-	 * called to assign a different initial bundle
-	 * start level value.
-	 *
-	 * <p>This method does not change the start level values of installed
-	 * bundles.
-	 *
-	 * @param startlevel The initial start level for newly installed bundles.
-	 * @throws IllegalArgumentException If the specified start level is less than or
-	 * equal to zero.
-	 * @throws SecurityException if the caller does not have the
-	 * <tt>AdminPermission</tt> and the Java runtime environment supports
-	 * permissions.
-	 */
-	public void setInitialBundleStartLevel(int startlevel) {
-		framework.checkAdminPermission(framework.systemBundle, AdminPermission.STARTLEVEL);
-		if (startlevel <= 0) {
-			throw new IllegalArgumentException();
-		}
-		initialBundleStartLevel = startlevel;
-		framework.adaptor.setInitialBundleStartLevel(startlevel);
-	}
-
-	/**
-	 * Return the active start level value of the Framework.
-	 *
-	 * If the Framework is in the process of changing the start level
-	 * this method must return the active start level if this
-	 * differs from the requested start level.
-	 *
-	 * @return The active start level value of the Framework.
-	 */
-	public int getStartLevel() {
-		return activeSL;
-	}
-
-	/**
-	 * Modify the active start level of the Framework.
-	 *
-	 * <p>The Framework will move to the requested start level. This method
-	 * will return immediately to the caller and the start level
-	 * change will occur asynchronously on another thread.
-	 *
-	 * <p>If the specified start level is
-	 * higher than the active start level, the
-	 * Framework will continue to increase the start level
-	 * until the Framework has reached the specified start level,
-	 * starting bundles at each
-	 * start level which are persistently marked to be started as described in the
-	 * <tt>Bundle.start</tt> method.
-	 *
-	 * At each intermediate start level value on the
-	 * way to and including the target start level, the framework must:
-	 * <ol>
-	 * <li>Change the active start level to the intermediate start level value.
-	 * <li>Start bundles at the intermediate start level in
-	 * ascending order by <tt>Bundle.getBundleId</tt>.
-	 * </ol>
-	 * When this process completes after the specified start level is reached,
-	 * the Framework will broadcast a Framework event of
-	 * type <tt>FrameworkEvent.STARTLEVEL_CHANGED</tt> to announce it has moved to the specified
-	 * start level.
-	 *
-	 * <p>If the specified start level is lower than the active start level, the
-	 * Framework will continue to decrease the start level
-	 * until the Framework has reached the specified start level
-	 * stopping bundles at each
-	 * start level as described in the <tt>Bundle.stop</tt> method except that their
-	 * persistently recorded state indicates that they must be restarted in the
-	 * future.
-	 *
-	 * At each intermediate start level value on the
-	 * way to and including the specified start level, the framework must:
-	 * <ol>
-	 * <li>Stop bundles at the intermediate start level in
-	 * descending order by <tt>Bundle.getBundleId</tt>.
-	 * <li>Change the active start level to the intermediate start level value.
-	 * </ol>
-	 * When this process completes after the specified start level is reached,
-	 * the Framework will broadcast a Framework event of
-	 * type <tt>FrameworkEvent.STARTLEVEL_CHANGED</tt> to announce it has moved to the specified
-	 * start level.
-	 *
-	 * <p>If the specified start level is equal to the active start level, then
-	 * no bundles are started or stopped, however, the Framework must broadcast
-	 * a Framework event of type <tt>FrameworkEvent.STARTLEVEL_CHANGED</tt> to
-	 * announce it has finished moving to the specified start level. This
-	 * event may arrive before the this method return.
-	 *
-	 * @param newSL The requested start level for the Framework.
-	 * @throws IllegalArgumentException If the specified start level is less than or
-	 * equal to zero.
-	 * @throws SecurityException If the caller does not have the
-	 * <tt>AdminPermission</tt> and the Java runtime environment supports
-	 * permissions.
-	 */
-	public void setStartLevel(int newSL, org.osgi.framework.Bundle callerBundle) {
-		if (newSL <= 0) {
-			throw new IllegalArgumentException(NLS.bind(Msg.STARTLEVEL_EXCEPTION_INVALID_REQUESTED_STARTLEVEL, "" + newSL)); //$NON-NLS-1$ 
-		}
-		framework.checkAdminPermission(framework.systemBundle, AdminPermission.STARTLEVEL);
-
-		if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-			Debug.println("StartLevelImpl: setStartLevel: " + newSL + "; callerBundle = " + callerBundle.getBundleId()); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		issueEvent(new StartLevelEvent(StartLevelEvent.CHANGE_FW_SL, newSL, (AbstractBundle) callerBundle));
-
-	}
-
-	public void setStartLevel(int newSL) {
-		setStartLevel(newSL, framework.systemBundle);
-	}
-
-	/**
-	 *  Internal method to shut down the framework synchronously by setting the startlevel to zero
-	 *  and calling the StartLevelListener worker calls directly
-	 *
-	 *  This method does not return until all bundles are stopped and the framework is shut down.
-	 */
-	protected void shutdown() {
-		doSetStartLevel(0);
-	}
-
-	/**
-	 *  Internal worker method to set the startlevel
-	 *
-	 * @param newSL start level value                  
-	 * @param callerBundle - the bundle initiating the change in start level
-	 */
-	void doSetStartLevel(int newSL) {
-		synchronized (lock) {
-			ClassLoader previousTCCL = Thread.currentThread().getContextClassLoader();
-			ClassLoader contextFinder = framework.getContextFinder();
-			if (contextFinder == previousTCCL)
-				contextFinder = null;
-			else
-				Thread.currentThread().setContextClassLoader(contextFinder);
-			try {
-				int tempSL = activeSL;
-				if (newSL > tempSL) {
-					boolean launching = tempSL == 0;
-					for (int i = tempSL; i < newSL; i++) {
-						if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-							Debug.println("sync - incrementing Startlevel from " + tempSL); //$NON-NLS-1$
-						}
-						tempSL++;
-						// Note that we must get a new list of installed bundles each time;
-						// this is because additional bundles could have been installed from the previous start-level
-						incFWSL(i + 1, getInstalledBundles(framework.bundles, false));
-					}
-					if (launching) {
-						framework.systemBundle.state = Bundle.ACTIVE;
-						framework.publishBundleEvent(BundleEvent.STARTED, framework.systemBundle);
-						framework.publishFrameworkEvent(FrameworkEvent.STARTED, framework.systemBundle, null);
-					}
-				} else {
-					AbstractBundle[] sortedBundles = getInstalledBundles(framework.bundles, true);
-					for (int i = tempSL; i > newSL; i--) {
-						if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-							Debug.println("sync - decrementing Startlevel from " + tempSL); //$NON-NLS-1$
-						}
-						tempSL--;
-						decFWSL(i - 1, sortedBundles);
-					}
-					if (newSL == 0) {
-						// stop and unload all bundles
-						suspendAllBundles(framework.bundles);
-						unloadAllBundles(framework.bundles);
-					}
-				}
-				framework.publishFrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, framework.systemBundle, null);
-				if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-					Debug.println("StartLevelImpl: doSetStartLevel: STARTLEVEL_CHANGED event published"); //$NON-NLS-1$
-				}
-			} finally {
-				if (contextFinder != null)
-					Thread.currentThread().setContextClassLoader(previousTCCL);
-			}
-		}
-	}
-
-	/** 
-	 * This method is used within the package to save the actual active startlevel value for the framework.
-	 * Externally the setStartLevel method must be used.
-	 * 
-	 * @param newSL - the new startlevel to save
-	 */
-	protected void saveActiveStartLevel(int newSL) {
-		synchronized (lock) {
-			activeSL = newSL;
-		}
-	}
-
-	/**
-	 * Return the persistent state of the specified bundle.
-	 *
-	 * <p>This method returns the persistent state of a bundle.
-	 * The persistent state of a bundle indicates whether a bundle
-	 * is persistently marked to be started when it's start level is
-	 * reached.
-	 *
-	 * @return <tt>true</tt> if the bundle is persistently marked to be started,
-	 * <tt>false</tt> if the bundle is not persistently marked to be started.
-	 * @exception java.lang.IllegalArgumentException If the specified bundle has been uninstalled.
-	 */
-	public boolean isBundlePersistentlyStarted(org.osgi.framework.Bundle bundle) {
-		if (bundle.getState() == Bundle.UNINSTALLED)
-			throw new IllegalArgumentException(NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, ((AbstractBundle) bundle).getBundleData().getLocation()));
-		return (((AbstractBundle) bundle).getBundleData().getStatus() & Constants.BUNDLE_STARTED) != 0;
-	}
-
-	public boolean isBundleActivationPolicyUsed(Bundle bundle) {
-		if (bundle.getState() == Bundle.UNINSTALLED)
-			throw new IllegalArgumentException(NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, ((AbstractBundle) bundle).getBundleData().getLocation()));
-		return (((AbstractBundle) bundle).getBundleData().getStatus() & Constants.BUNDLE_ACTIVATION_POLICY) != 0;
-	}
-
-	/**
-	 * Return the assigned start level value for the specified Bundle.
-	 *
-	 * @param bundle The target bundle.
-	 * @return The start level value of the specified Bundle.
-	 * @exception java.lang.IllegalArgumentException If the specified bundle has been uninstalled.
-	 */
-	public int getBundleStartLevel(org.osgi.framework.Bundle bundle) {
-
-		if (bundle.getState() == Bundle.UNINSTALLED) {
-			throw new IllegalArgumentException(NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, ((AbstractBundle) bundle).getBundleData().getLocation()));
-		}
-		return ((AbstractBundle) bundle).getStartLevel();
-	}
-
-	/**
-	 * Assign a start level value to the specified Bundle.
-	 *
-	 * <p>The specified bundle will be assigned the specified start level. The
-	 * start level value assigned to the bundle will be persistently recorded
-	 * by the Framework.
-	 *
-	 * If the new start level for the bundle is lower than or equal to the active start level of
-	 * the Framework, the Framework will start the specified bundle as described
-	 * in the <tt>Bundle.start</tt> method if the bundle is persistently marked
-	 * to be started. The actual starting of this bundle must occur asynchronously.
-	 *
-	 * If the new start level for the bundle is higher than the active start level of
-	 * the Framework, the Framework will stop the specified bundle as described
-	 * in the <tt>Bundle.stop</tt> method except that the persistently recorded
-	 * state for the bundle indicates that the bundle must be restarted in the
-	 * future. The actual stopping of this bundle must occur asynchronously.
-	 *
-	 * @param bundle The target bundle.
-	 * @param newSL The new start level for the specified Bundle.
-	 * @throws IllegalArgumentException
-	 * If the specified bundle has been uninstalled or
-	 * if the specified start level is less than or equal to zero, or the  specified bundle is
-	 * the system bundle.
-	 * @throws SecurityException if the caller does not have the
-	 * <tt>AdminPermission</tt> and the Java runtime environment supports
-	 * permissions.
-	 */
-	public void setBundleStartLevel(org.osgi.framework.Bundle bundle, int newSL) {
-
-		String exceptionText = null;
-		if (bundle.getBundleId() == 0) { // system bundle has id=0
-			exceptionText = Msg.STARTLEVEL_CANT_CHANGE_SYSTEMBUNDLE_STARTLEVEL;
-		} else if (bundle.getState() == Bundle.UNINSTALLED) {
-			exceptionText = NLS.bind(Msg.BUNDLE_UNINSTALLED_EXCEPTION, ((AbstractBundle) bundle).getBundleData().getLocation());
-		} else if (newSL <= 0) {
-			exceptionText = NLS.bind(Msg.STARTLEVEL_EXCEPTION_INVALID_REQUESTED_STARTLEVEL, "" + newSL); //$NON-NLS-1$ 
-		}
-		if (exceptionText != null)
-			throw new IllegalArgumentException(exceptionText);
-		// first check the permission of the caller
-		framework.checkAdminPermission(bundle, AdminPermission.EXECUTE);
-		try {
-			// if the bundle's startlevel is not already at the requested startlevel
-			if (newSL != ((org.eclipse.osgi.framework.internal.core.AbstractBundle) bundle).getStartLevel()) {
-				final AbstractBundle b = (AbstractBundle) bundle;
-				b.getBundleData().setStartLevel(newSL);
-				try {
-					AccessController.doPrivileged(new PrivilegedExceptionAction() {
-						public Object run() throws Exception {
-							b.getBundleData().save();
-							return null;
-						}
-					});
-				} catch (PrivilegedActionException e) {
-					if (e.getException() instanceof IOException) {
-						throw (IOException) e.getException();
-					}
-					throw (RuntimeException) e.getException();
-				}
-				// handle starting or stopping the bundle asynchronously
-				issueEvent(new StartLevelEvent(StartLevelEvent.CHANGE_BUNDLE_SL, newSL, (AbstractBundle) bundle));
-			}
-		} catch (IOException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-		}
-
-	}
-
-	/**
-	 *  This method sends the StartLevelEvent to the EventManager for dispatching
-	 * 
-	 * @param sle The event to be queued to the Event Manager
-	 */
-	private void issueEvent(StartLevelEvent sle) {
-
-		/* queue to hold set of listeners */
-		ListenerQueue queue = new ListenerQueue(eventManager);
-
-		/* add set of StartLevelListeners to queue */
-		queue.queueListeners(startLevelListeners.entrySet(), this);
-
-		/* dispatch event to set of listeners */
-		queue.dispatchEventAsynchronous(sle.getType(), sle);
-	}
-
-	/**
-	 * This method is the call back that is called once for each listener.
-	 * This method must cast the EventListener object to the appropriate listener
-	 * class for the event type and call the appropriate listener method.
-	 *
-	 * @param listener This listener must be cast to the appropriate listener
-	 * class for the events created by this source and the appropriate listener method
-	 * must then be called.
-	 * @param listenerObject This is the optional object that was passed to
-	 * EventListeners.addListener when the listener was added to the EventListeners.
-	 * @param eventAction This value was passed to the ListenerQueue object via one of its
-	 * dispatchEvent* method calls. It can provide information (such
-	 * as which listener method to call) so that this method
-	 * can complete the delivery of the event to the listener.
-	 * @param eventObject This object was passed to the ListenerQueue object via one of its
-	 * dispatchEvent* method calls. This object was created by the event source and
-	 * is passed to this method. It should contain all the necessary information (such
-	 * as what event object to pass) so that this method
-	 * can complete the delivery of the event to the listener.
-	 */
-	public void dispatchEvent(Object listener, Object listenerObject, int eventAction, Object eventObject) {
-		try {
-			switch (eventAction) {
-				case StartLevelEvent.CHANGE_BUNDLE_SL :
-					setBundleSL((StartLevelEvent) eventObject);
-					break;
-				case StartLevelEvent.CHANGE_FW_SL :
-					doSetStartLevel(((StartLevelEvent) eventObject).getNewSL());
-					break;
-			}
-		} catch (Throwable t) {
-			// allow the adaptor to handle this unexpected error
-			framework.adaptor.handleRuntimeError(t);
-		}
-	}
-
-	/** 
-	 *  Increment the active startlevel by one
-	 */
-	protected void incFWSL(int incToSL, AbstractBundle[] launchBundles) {
-		if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-			Debug.println("SLL: incFWSL: saving activeSL of " + incToSL); //$NON-NLS-1$
-		}
-		// save the startlevel
-		saveActiveStartLevel(incToSL);
-		// resume all bundles at the startlevel
-		resumeBundles(launchBundles, incToSL);
-	}
-
-	/**
-	 * Build an array of all installed bundles to be launch.
-	 * The returned array is sorted by increasing startlevel/id order.
-	 * @param bundles - the bundles installed in the framework
-	 * @return A sorted array of bundles 
-	 */
-	AbstractBundle[] getInstalledBundles(BundleRepository bundles, boolean sortByDependency) {
-
-		/* make copy of bundles vector in case it is modified during launch */
-		AbstractBundle[] installedBundles;
-
-		synchronized (bundles) {
-			List allBundles = bundles.getBundles();
-			installedBundles = new AbstractBundle[allBundles.size()];
-			allBundles.toArray(installedBundles);
-
-			/* sort bundle array in ascending startlevel / bundle id order
-			 * so that bundles are started in ascending order.
-			 */
-			Util.sort(installedBundles, 0, installedBundles.length);
-			if (sortByDependency)
-				sortByDependency(installedBundles);
-		}
-		return installedBundles;
-	}
-
-	void sortByDependency(AbstractBundle[] bundles) {
-		synchronized (framework.bundles) {
-			if (bundles.length <= 1)
-				return;
-			int currentSL = bundles[0].getStartLevel();
-			int currentSLindex = 0;
-			boolean lazy = false;
-			for (int i = 0; i < bundles.length; i++) {
-				if (currentSL != bundles[i].getStartLevel()) {
-					if (lazy)
-						sortByDependencies(bundles, currentSLindex, i);
-					currentSL = bundles[i].getStartLevel();
-					currentSLindex = i;
-					lazy = false;
-				}
-				lazy |= (bundles[i].getBundleData().getStatus() & Constants.BUNDLE_LAZY_START) != 0;
-			}
-			// sort the last set of bundles
-			if (lazy)
-				sortByDependencies(bundles, currentSLindex, bundles.length);
-		}
-	}
-
-	private void sortByDependencies(AbstractBundle[] bundles, int start, int end) {
-		if (end - start <= 1)
-			return;
-		List descList = new ArrayList(end - start);
-		List missingDescs = new ArrayList(0);
-		for (int i = start; i < end; i++) {
-			BundleDescription desc = bundles[i].getBundleDescription();
-			if (desc != null)
-				descList.add(desc);
-			else
-				missingDescs.add(bundles[i]);
-		}
-		if (descList.size() <= 1)
-			return;
-		BundleDescription[] descriptions = (BundleDescription[]) descList.toArray(new BundleDescription[descList.size()]);
-		framework.adaptor.getPlatformAdmin().getStateHelper().sortBundles(descriptions);
-		for (int i = start; i < descriptions.length + start; i++)
-			bundles[i] = framework.bundles.getBundle(descriptions[i - start].getBundleId());
-		if (missingDescs.size() > 0) {
-			Iterator missing = missingDescs.iterator();
-			for (int i = start + descriptions.length; i < end && missing.hasNext(); i++)
-				bundles[i] = (AbstractBundle) missing.next();
-		}
-	}
-
-	/**
-	 *  Resume all bundles in the launch list at the specified start-level
-	 * @param launch a list of Bundle Objects to launch
-	 * @param currentSL the current start-level that the bundles must meet to be resumed
-	 */
-	private void resumeBundles(AbstractBundle[] launch, int currentSL) {
-		// Resume all bundles that were previously started and whose startlevel is <= the active startlevel
-		// first resume the lazy activated bundles
-		resumeBundles(launch, true, currentSL);
-		// now resume all non lazy bundles
-		resumeBundles(launch, false, currentSL);
-	}
-
-	private void resumeBundles(AbstractBundle[] launch, boolean lazyOnly, int currentSL) {
-		for (int i = 0; i < launch.length && !framework.isForcedRestart(); i++) {
-			int bsl = launch[i].getStartLevel();
-			if (bsl < currentSL) {
-				// skip bundles who should have already been started
-				continue;
-			} else if (bsl == currentSL) {
-				if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-					Debug.println("SLL: Active sl = " + currentSL + "; Bundle " + launch[i].getBundleId() + " sl = " + bsl); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				boolean isLazyStart = launch[i].isLazyStart();
-				if (lazyOnly ? isLazyStart : !isLazyStart)
-					framework.resumeBundle(launch[i]);
-			} else {
-				// can stop resuming bundles since any remaining bundles have a greater startlevel than the framework active startlevel
-				break;
-			}
-		}
-	}
-
-	/** 
-	 *  Decrement the active startlevel by one
-	 * @param decToSL -  the startlevel value to set the framework to
-	 */
-	protected void decFWSL(int decToSL, AbstractBundle[] shutdown) {
-		if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-			Debug.println("SLL: decFWSL: saving activeSL of " + decToSL); //$NON-NLS-1$
-		}
-
-		saveActiveStartLevel(decToSL);
-
-		if (decToSL == 0) // stopping the framework
-			return;
-
-		// just decrementing the active startlevel - framework is not shutting down
-		// Do not check framework.isForcedRestart here because we want to stop the active bundles regardless.
-		for (int i = shutdown.length - 1; i >= 0; i--) {
-			int bsl = shutdown[i].getStartLevel();
-			if (bsl > decToSL + 1)
-				// skip bundles who should have already been stopped
-				continue;
-			else if (bsl <= decToSL)
-				// stopped all bundles we are going to for this start level
-				break;
-			else if (shutdown[i].isActive()) {
-				// if bundle is active or starting, then stop the bundle
-				if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL)
-					Debug.println("SLL: stopping bundle " + shutdown[i].getBundleId()); //$NON-NLS-1$
-				framework.suspendBundle(shutdown[i], false);
-			}
-		}
-	}
-
-	/**
-	 *  Suspends all bundles in the vector passed in.
-	 * @param bundles list of Bundle objects to be suspended
-	 */
-	private void suspendAllBundles(BundleRepository bundles) {
-		boolean changed;
-		do {
-			changed = false;
-
-			AbstractBundle[] shutdown = this.getInstalledBundles(bundles, false);
-
-			// shutdown all running bundles
-			for (int i = shutdown.length - 1; i >= 0; i--) {
-				AbstractBundle bundle = shutdown[i];
-
-				if (framework.suspendBundle(bundle, false)) {
-					if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-						Debug.println("SLL: stopped bundle " + bundle.getBundleId()); //$NON-NLS-1$
-					}
-					changed = true;
-				}
-			}
-		} while (changed);
-
-		try {
-			framework.systemBundle.context.stop();
-		} catch (BundleException sbe) {
-			if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-				Debug.println("SLL: Bundle suspend exception: " + sbe.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(sbe.getNestedException() == null ? sbe : sbe.getNestedException());
-			}
-
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, sbe);
-		}
-
-		framework.systemBundle.state = Bundle.RESOLVED;
-		framework.publishBundleEvent(BundleEvent.STOPPED, framework.systemBundle);
-	}
-
-	/**
-	 *  Unloads all bundles in the vector passed in.
-	 * @param bundles list of Bundle objects to be unloaded
-	 */
-	private void unloadAllBundles(BundleRepository bundles) {
-		synchronized (bundles) {
-			/* unload all installed bundles */
-			List allBundles = bundles.getBundles();
-			int size = allBundles.size();
-
-			for (int i = 0; i < size; i++) {
-				AbstractBundle bundle = (AbstractBundle) allBundles.get(i);
-
-				if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-					Debug.println("SLL: Trying to unload bundle " + bundle); //$NON-NLS-1$
-				}
-				bundle.refresh();
-				try {
-					// make sure we close all the bundle data objects
-					bundle.getBundleData().close();
-				} catch (IOException e) {
-					// ignore, we are shutting down anyway
-				}
-			}
-		}
-	}
-
-	/** 
-	 *  Set the bundle's startlevel to the new value
-	 *  This may cause the bundle to start or stop based on the active framework startlevel
-	 * @param startLevelEvent - the event requesting change in bundle startlevel
-	 */
-	protected void setBundleSL(StartLevelEvent startLevelEvent) {
-		synchronized (lock) {
-			int currentSL = getStartLevel();
-			int newSL = startLevelEvent.getNewSL();
-			AbstractBundle bundle = startLevelEvent.getBundle();
-
-			if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-				Debug.print("SLL: bundle active=" + bundle.isActive()); //$NON-NLS-1$
-				Debug.print("; newSL = " + newSL); //$NON-NLS-1$
-				Debug.println("; activeSL = " + currentSL); //$NON-NLS-1$
-			}
-
-			if (bundle.isActive() && (newSL > currentSL)) {
-				if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-					Debug.println("SLL: stopping bundle " + bundle.getBundleId()); //$NON-NLS-1$
-				}
-				framework.suspendBundle(bundle, false);
-			} else {
-				if (!bundle.isActive() && (newSL <= currentSL)) {
-					if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-						Debug.println("SLL: starting bundle " + bundle.getBundleId()); //$NON-NLS-1$
-					}
-					framework.resumeBundle(bundle);
-				}
-			}
-			if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-				Debug.println("SLL: Bundle Startlevel set to " + newSL); //$NON-NLS-1$
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleActivator.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleActivator.java
deleted file mode 100644
index b8cbd46..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleActivator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.util.Dictionary;
-import java.util.Hashtable;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.osgi.framework.*;
-import org.osgi.service.condpermadmin.ConditionalPermissionAdmin;
-
-/**
- * This class activates the System Bundle.
- */
-
-public class SystemBundleActivator implements BundleActivator {
-	private BundleContext context;
-	private InternalSystemBundle bundle;
-	private Framework framework;
-	private ServiceRegistration packageAdmin;
-	private ServiceRegistration securityAdmin;
-	private ServiceRegistration startLevel;
-	private ServiceRegistration debugOptions;
-	private ServiceRegistration contextFinder;
-
-	public SystemBundleActivator() {
-	}
-
-	public void start(BundleContext context) throws Exception {
-		this.context = context;
-		bundle = (InternalSystemBundle) context.getBundle();
-		framework = bundle.framework;
-
-		if (framework.packageAdmin != null)
-			packageAdmin = register(new String[] {Constants.OSGI_PACKAGEADMIN_NAME}, framework.packageAdmin, null);
-		if (framework.securityAdmin != null)
-			securityAdmin = register(new String[] {Constants.OSGI_PERMISSIONADMIN_NAME, ConditionalPermissionAdmin.class.getName()}, framework.securityAdmin, null);
-		if (framework.startLevelManager != null)
-			startLevel = register(new String[] {Constants.OSGI_STARTLEVEL_NAME}, framework.startLevelManager, null);
-		FrameworkDebugOptions dbgOptions = null;
-		if ((dbgOptions = FrameworkDebugOptions.getDefault()) != null) {
-			dbgOptions.start(context);
-			debugOptions = register(new String[] {org.eclipse.osgi.service.debug.DebugOptions.class.getName()}, dbgOptions, null);
-		}
-		ClassLoader tccl = framework.getContextFinder();
-		if (tccl != null) {
-			Hashtable props = new Hashtable(7);
-			props.put("equinox.classloader.type", "contextClassLoader"); //$NON-NLS-1$ //$NON-NLS-2$
-			contextFinder = register(new String[] {ClassLoader.class.getName()}, tccl, props);
-		}
-
-		// Always call the adaptor.frameworkStart() at the end of this method.
-		framework.adaptor.frameworkStart(context);
-		// attempt to resolve all bundles
-		// this is done after the adaptor.frameworkStart has been called
-		// this should be the first time the resolver State is accessed
-		framework.packageAdmin.setResolvedBundles(bundle);
-		// reinitialize the system bundles localization to take into account system bundle fragments
-		framework.systemBundle.manifestLocalization = null;
-	}
-
-	public void stop(BundleContext context) throws Exception {
-		// Always call the adaptor.frameworkStop() at the begining of this method.
-		framework.adaptor.frameworkStop(context);
-
-		if (packageAdmin != null)
-			packageAdmin.unregister();
-		if (securityAdmin != null)
-			securityAdmin.unregister();
-		if (startLevel != null)
-			startLevel.unregister();
-		if (debugOptions != null) {
-			FrameworkDebugOptions dbgOptions = FrameworkDebugOptions.getDefault();
-			if (dbgOptions != null)
-				dbgOptions.stop(context);
-			debugOptions.unregister();
-		}
-		if (contextFinder != null)
-			contextFinder.unregister();
-
-		framework = null;
-		bundle = null;
-		this.context = null;
-	}
-
-	/**
-	 * Register a service object.
-	 *
-	 */
-	private ServiceRegistration register(String[] names, Object service, Hashtable properties) {
-		if (properties == null)
-			properties = new Hashtable(7);
-		Dictionary headers = bundle.getHeaders();
-		properties.put(Constants.SERVICE_VENDOR, headers.get(Constants.BUNDLE_VENDOR));
-		properties.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		properties.put(Constants.SERVICE_PID, bundle.getBundleId() + "." + service.getClass().getName()); //$NON-NLS-1$
-		return context.registerService(names, service, properties);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Util.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Util.java
deleted file mode 100644
index de5683c..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Util.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-/**
- * This class contains utility functions.
- */
-public class Util {
-	/**
-	 * Performs a quicksort of the given objects
-	 * by their string representation in ascending order.
-	 * <p> 
-	 *
-	 * @param array	The array of objects to sort
-	 */
-	public static void sortByString(Object[] array) {
-		qSortByString(array, 0, array.length - 1);
-	}
-
-	/**
-	 * Sorts the array of objects by their string representation
-	 * in ascending order.
-	 * <p>
-	 * This is a version of C.A.R Hoare's Quick Sort algorithm.
-	 *
-	 * @param array	the	array of objects to sort
-	 * @param start	the start index to begin sorting
-	 * @param stop		the end index to stop sorting
-	 * 
-	 * @exception	ArrayIndexOutOfBoundsException when <code>start < 0</code>
-	 *				or <code>end >= array.length</code>
-	 */
-	public static void qSortByString(Object[] array, int start, int stop) {
-		if (start >= stop)
-			return;
-
-		int left = start; // left index
-		int right = stop; // right index
-		Object temp; // for swapping
-
-		// arbitrarily establish a partition element as the midpoint of the array
-		String mid = String.valueOf(array[(start + stop) / 2]);
-
-		// loop through the array until indices cross
-		while (left <= right) {
-			// find the first element that is smaller than the partition element from the left
-			while ((left < stop) && (String.valueOf(array[left]).compareTo(mid) < 0)) {
-				++left;
-			}
-			// find an element that is smaller than the partition element from the right
-			while ((right > start) && (mid.compareTo(String.valueOf(array[right])) < 0)) {
-				--right;
-			}
-			// if the indices have not crossed, swap
-			if (left <= right) {
-				temp = array[left];
-				array[left] = array[right];
-				array[right] = temp;
-				++left;
-				--right;
-			}
-		}
-		// sort the left partition, if the right index has not reached the left side of array
-		if (start < right) {
-			qSortByString(array, start, right);
-		}
-		// sort the right partition, if the left index has not reached the right side of array
-		if (left < stop) {
-			qSortByString(array, left, stop);
-		}
-	}
-
-	/**
-	 * Sorts the specified range in the array in ascending order.
-	 *
-	 * @param		array	the Object array to be sorted
-	 * @param		start	the start index to sort
-	 * @param		end		the last + 1 index to sort
-	 *
-	 * @exception	ClassCastException when an element in the array does not
-	 *				implement Comparable or elements cannot be compared to each other
-	 * @exception	IllegalArgumentException when <code>start > end</code>
-	 * @exception	ArrayIndexOutOfBoundsException when <code>start < 0</code>
-	 *				or <code>end > array.size()</code>
-	 */
-	public static void sort(Object[] array, int start, int end) {
-		int middle = (start + end) / 2;
-		if (start + 1 < middle)
-			sort(array, start, middle);
-		if (middle + 1 < end)
-			sort(array, middle, end);
-		if (start + 1 >= end)
-			return; // this case can only happen when this method is called by the user
-		if (((Comparable) array[middle - 1]).compareTo(array[middle]) <= 0)
-			return;
-		if (start + 2 == end) {
-			Object temp = array[start];
-			array[start] = array[middle];
-			array[middle] = temp;
-			return;
-		}
-		int i1 = start, i2 = middle, i3 = 0;
-		Object[] merge = new Object[end - start];
-		while (i1 < middle && i2 < end) {
-			merge[i3++] = ((Comparable) array[i1]).compareTo(array[i2]) <= 0 ? array[i1++] : array[i2++];
-		}
-		if (i1 < middle)
-			System.arraycopy(array, i1, merge, i3, middle - i1);
-		System.arraycopy(merge, 0, array, start, i2 - start);
-	}
-
-	/**
-	 * Sorts the specified range in the array in descending order.
-	 *
-	 * @param		array	the Object array to be sorted
-	 * @param		start	the start index to sort
-	 * @param		end		the last + 1 index to sort
-	 *
-	 * @exception	ClassCastException when an element in the array does not
-	 *				implement Comparable or elements cannot be compared to each other
-	 * @exception	IllegalArgumentException when <code>start > end</code>
-	 * @exception	ArrayIndexOutOfBoundsException when <code>start < 0</code>
-	 *				or <code>end > array.size()</code>
-	 */
-	public static void dsort(Object[] array, int start, int end) {
-		// first sort in ascending order
-		sort(array, start, end);
-		// then swap the elements in the array
-		swap(array);
-	}
-
-	/**
-	 *  Reverse the elements in the array.
-	 *  
-	 * @param		array	the Object array to be reversed
-	 */
-	public static void swap(Object[] array) {
-		int start = 0;
-		int end = array.length - 1;
-		while (start < end) {
-			Object temp = array[start];
-			array[start++] = array[end];
-			array[end--] = temp;
-		}
-	}
-
-	/**
-	 * Returns a string representation of the object
-	 * in the given length.
-	 * If the string representation of the given object
-	 * is longer then it is truncated.
-	 * If it is shorter then it is padded with the blanks
-	 * to the given total length.
-	 * If the given object is a number then the padding
-	 * is done on the left, otherwise on the right.
-	 *
-	 * @param	object	the object to convert
-	 * @param	length	the length the output string
-	 */
-	public static String toString(Object object, int length) {
-		boolean onLeft = object instanceof Number;
-		return toString(object, length, ' ', onLeft);
-	}
-
-	/**
-	 * Returns a string representation of the object
-	 * in the given length.
-	 * If the string representation of the given object
-	 * is longer then it is truncated.
-	 * If it is shorter then it is padded to the left or right
-	 * with the given character to the given total length.
-	 *
-	 * @param	object	the object to convert
-	 * @param	length	the length the output string
-	 * @param	pad		the pad character
-	 * @param	onLeft	if <code>true</code> pad on the left, otherwise an the right
-	 */
-	public static String toString(Object object, int length, char pad, boolean onLeft) {
-		String input = String.valueOf(object);
-		int size = input.length();
-		if (size >= length) {
-			int start = (onLeft) ? size - length : 0;
-			return input.substring(start, length);
-		}
-
-		StringBuffer padding = new StringBuffer(length - size);
-		for (int i = size; i < length; i++)
-			padding.append(pad);
-
-		StringBuffer stringBuffer = new StringBuffer(length);
-		if (onLeft)
-			stringBuffer.append(padding.toString());
-		stringBuffer.append(input);
-		if (!onLeft)
-			stringBuffer.append(padding.toString());
-		return stringBuffer.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases
deleted file mode 100644
index 8bb962c..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases
+++ /dev/null
@@ -1,43 +0,0 @@
-########################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-########################################################################
-
-# This file must be UTF8 encoded.
-
-#OS Aliases                             Description
-
-AIX                                      # IBM
-DigitalUnix                              # Compaq
-embos                                    # Segger Embedded Software Solutions
-Epoc32 SymbianOS                         # Symbian OS
-FreeBSD                                  # Free BSD
-HPUX                                     # Hewlett Packard
-IRIX                                     # Sillicon Graphics
-Linux                                    # Open source
-MacOS "Mac OS"                   # Apple
-MacOSX "Mac OS X"              # Apple 
-NetBSD                                   # Open source
-Netware                                  # Novell
-OpenBSD                                  # Open source
-OS2 OS/2                                 # IBM
-QNX procnto                              # QNX Neutrino 2.1
-Solaris                                  # Sun
-SunOS                                    # Sun
-VxWorks                                  # WindRiver Systems
-Windows95 "Windows 95" Win95 Win32       # Microsoft
-Windows98 "Windows 98" Win98 Win32       # Microsoft
-WindowsNT "Windows NT" WinNT Win32       # Microsoft
-WindowsCE "Windows CE" WinCE             # Microsoft
-Windows2000 "Windows 2000" Win2000 Win32 # Microsoft
-WindowsXP "Windows XP" WinXP Win32       # Microsoft
-Windows2003 "Windows 2003" "Windows Server 2003" Win2003 Win32 # Microsoft
-WindowsVista WinVista "Windows Vista" Win32 # Microsoft
-Windows2008 "Windows 2008" "Windows Server 2008" Win2008 Win32 # Microsoft
-Windows7 "Windows 7" Win7 Win32 # Microsoft
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases
deleted file mode 100644
index 5fb0ff3..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/processor.aliases
+++ /dev/null
@@ -1,28 +0,0 @@
-########################################################################
-# Copyright (c) 2003, 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials 
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-########################################################################
-
-# This file must be UTF8 encoded.
-
-#Processor Aliases                      Description
-
-68k                                     # Motorola 68000 and up
-ARM                                     # Intel Strong ARM
-Alpha                                   # Compaq (ex DEC)
-Ignite psc1k                            # PTSC
-Mips                                    # SGI
-PArisc                                  # Hewlett Packard PA Risc
-PowerPC power ppc                       # Motorola/IBM Power PC
-Sparc                                   # SUN
-x86 pentium i386 i486 i586 i686         # Intel
-s390                                    # IBM System 390
-s390x                                  # IBM System 390 (64-bit)
-v850e                                   # NEC V850E
-x86-64 amd64 em64t x86_64               # 64 bit x86 architecture
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerFactory.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerFactory.java
deleted file mode 100644
index 5e296dd..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerFactory.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import java.lang.reflect.Method;
-import java.net.ContentHandler;
-import java.net.URLConnection;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.Msg;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.url.URLConstants;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * The ContentHandlerFactory is registered with the JVM to provide content handlers
- * to requestors.  The ContentHandlerFactory will first look for built-in content handlers.
- * If a built in handler exists, this factory will return null.  Otherwise, this ContentHandlerFactory
- * will search the service registry for a maching Content-Handler and, if found, return a 
- * proxy for that content handler.
- */
-// TODO rename this class!!!  its really confusing to name the impl the same as the interface
-public class ContentHandlerFactory extends MultiplexingFactory implements java.net.ContentHandlerFactory {
-	private ServiceTracker contentHandlerTracker;
-
-	private static final String contentHandlerClazz = "java.net.ContentHandler"; //$NON-NLS-1$
-	private static final String CONTENT_HANDLER_PKGS = "java.content.handler.pkgs"; //$NON-NLS-1$
-	private static final String DEFAULT_VM_CONTENT_HANDLERS = "sun.net.www.content"; //$NON-NLS-1$
-
-	private static final List ignoredClasses = Arrays.asList(new Class[] {MultiplexingContentHandler.class, ContentHandlerFactory.class, URLConnection.class});
-
-	private Hashtable proxies;
-	private java.net.ContentHandlerFactory parentFactory;
-
-	public ContentHandlerFactory(BundleContext context, FrameworkAdaptor adaptor) {
-		super(context, adaptor);
-
-		proxies = new Hashtable(5);
-
-		//We need to track content handler registrations
-		contentHandlerTracker = new ServiceTracker(context, contentHandlerClazz, null);
-		contentHandlerTracker.open();
-	}
-
-	/**
-	 * @see java.net.ContentHandlerFactory#createContentHandler(String)
-	 */
-	//TODO method is too long... consider reducing indentation (returning quickly) and moving complex steps to private methods
-	public ContentHandler createContentHandler(String contentType) {
-		//first, we check to see if there exists a built in content handler for
-		//this content type.  we can not overwrite built in ContentHandlers
-		String builtInHandlers = StreamHandlerFactory.secureAction.getProperty(CONTENT_HANDLER_PKGS);
-		builtInHandlers = builtInHandlers == null ? DEFAULT_VM_CONTENT_HANDLERS : DEFAULT_VM_CONTENT_HANDLERS + '|' + builtInHandlers;
-		Class clazz = null;
-		if (builtInHandlers != null) {
-			//replace '/' with a '.' and all characters not allowed in a java class name
-			//with a '_'.
-
-			// find all characters not allowed in java names
-			String convertedContentType = contentType.replace('.', '_');
-			convertedContentType = convertedContentType.replace('/', '.');
-			convertedContentType = convertedContentType.replace('-', '_');
-			StringTokenizer tok = new StringTokenizer(builtInHandlers, "|"); //$NON-NLS-1$
-			while (tok.hasMoreElements()) {
-				StringBuffer name = new StringBuffer();
-				name.append(tok.nextToken());
-				name.append("."); //$NON-NLS-1$
-				name.append(convertedContentType);
-				try {
-					clazz = StreamHandlerFactory.secureAction.loadSystemClass(name.toString());
-					if (clazz != null) {
-						return (null); //this class exists, it is a built in handler, let the JVM handle it	
-					}
-				} catch (ClassNotFoundException ex) {
-					//keep looking
-				}
-			}
-		}
-
-		if (isMultiplexing())
-			return new MultiplexingContentHandler(contentType, this);
-
-		return createInternalContentHandler(contentType);
-	}
-
-	public ContentHandler createInternalContentHandler(String contentType) {
-		//first check to see if the handler is in the cache
-		ContentHandlerProxy proxy = (ContentHandlerProxy) proxies.get(contentType);
-		if (proxy != null) {
-			return (proxy);
-		}
-		org.osgi.framework.ServiceReference[] serviceReferences = contentHandlerTracker.getServiceReferences();
-		if (serviceReferences != null) {
-			for (int i = 0; i < serviceReferences.length; i++) {
-				Object prop = serviceReferences[i].getProperty(URLConstants.URL_CONTENT_MIMETYPE);
-				if (prop instanceof String)
-					prop = new String[] {(String) prop}; // TODO should this be a warning?
-				if (!(prop instanceof String[])) {
-					String message = NLS.bind(Msg.URL_HANDLER_INCORRECT_TYPE, new Object[] {URLConstants.URL_CONTENT_MIMETYPE, contentHandlerClazz, serviceReferences[i].getBundle()});
-					adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, message, 0, null, null));
-					continue;
-				}
-				String[] contentHandler = (String[]) prop;
-				for (int j = 0; j < contentHandler.length; j++) {
-					if (contentHandler[j].equals(contentType)) {
-						proxy = new ContentHandlerProxy(contentType, serviceReferences[i], context);
-						proxies.put(contentType, proxy);
-						return (proxy);
-					}
-				}
-			}
-		}
-		// if parent is present do parent lookup before returning a proxy
-		if (parentFactory != null) {
-			ContentHandler parentHandler = parentFactory.createContentHandler(contentType);
-			if (parentHandler != null)
-				return parentHandler;
-		}
-		//If we can't find the content handler in the service registry, return Proxy with DefaultContentHandler set.
-		//We need to do this because if we return null, we won't get called again for this content type.
-		proxy = new ContentHandlerProxy(contentType, null, context);
-		proxies.put(contentType, proxy);
-		return (proxy);
-	}
-
-	public synchronized ContentHandler findAuthorizedContentHandler(String contentType) {
-		Object factory = findAuthorizedFactory(ignoredClasses);
-		if (factory == null)
-			return null;
-
-		if (factory == this)
-			return createInternalContentHandler(contentType);
-
-		try {
-			Method createInternalContentHandlerMethod = factory.getClass().getMethod("createInternalContentHandler", new Class[] {String.class}); //$NON-NLS-1$
-			return (ContentHandler) createInternalContentHandlerMethod.invoke(factory, new Object[] {contentType});
-		} catch (Exception e) {
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(ContentHandlerFactory.class.getName(), "findAuthorizedContentHandler-loop", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-			throw new RuntimeException(e.getMessage(), e);
-		}
-	}
-
-	public Object getParentFactory() {
-		return parentFactory;
-	}
-
-	public void setParentFactory(Object parentFactory) {
-		if (this.parentFactory == null) // only allow it to be set once
-			this.parentFactory = (java.net.ContentHandlerFactory) parentFactory;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerProxy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerProxy.java
deleted file mode 100644
index 54021cc..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ContentHandlerProxy.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import java.io.IOException;
-import java.net.ContentHandler;
-import java.net.URLConnection;
-import org.osgi.framework.*;
-import org.osgi.service.url.URLConstants;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-/**
- * The ContentHandlerProxy is a ContentHandler that acts as a proxy for registered ContentHandlers.
- * When a ContentHandler is requested from the ContentHandlerFactory and it exists in the service
- * registry, a ContentHandlerProxy is created which will pass all the requests from the requestor to 
- * the real ContentHandler.  We can't return the real ContentHandler from the ContentHandlerFactory
- * because the JVM caches ContentHandlers and therefore would not support a dynamic environment of
- * ContentHandlers being registered and unregistered.
- */
-public class ContentHandlerProxy extends ContentHandler implements ServiceTrackerCustomizer {
-	protected ContentHandler realHandler;
-
-	//TODO avoid type-based names
-	protected ServiceTracker contentHandlerServiceTracker;
-
-	protected BundleContext context;
-	protected ServiceReference contentHandlerServiceReference;
-
-	protected String contentType;
-
-	protected int ranking = Integer.MIN_VALUE;
-
-	public ContentHandlerProxy(String contentType, ServiceReference reference, BundleContext context) {
-		this.context = context;
-		this.contentType = contentType;
-
-		// In case the reference == null, the proxy is constructed with DefaultContentHandler for a Content Handler 
-		// until a real ContentHandler for this mime-type is registered
-		setNewHandler(reference, getRank(reference));
-
-		contentHandlerServiceTracker = new ServiceTracker(context, ContentHandler.class.getName(), this);
-		StreamHandlerFactory.secureAction.open(contentHandlerServiceTracker);
-	}
-
-	private void setNewHandler(ServiceReference reference, int rank) {
-		if (contentHandlerServiceReference != null)
-			context.ungetService(contentHandlerServiceReference);
-
-		contentHandlerServiceReference = reference;
-		ranking = rank;
-
-		if (reference == null)
-			realHandler = new DefaultContentHandler();
-		else
-			realHandler = (ContentHandler) StreamHandlerFactory.secureAction.getService(reference, context);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(ServiceReference)
-	 */
-	public Object addingService(ServiceReference reference) {
-		//check to see if our contentType is being registered by another service
-		Object prop = reference.getProperty(URLConstants.URL_CONTENT_MIMETYPE);
-		if (!(prop instanceof String[]))
-			return null;
-		String[] contentTypes = (String[]) prop;
-		for (int i = 0; i < contentTypes.length; i++) {
-			if (contentTypes[i].equals(contentType)) {
-				//If our contentType is registered by another service, check the service ranking and switch URLStreamHandlers if nessecary.
-				int newServiceRanking = getRank(reference);
-				if (newServiceRanking > ranking || contentHandlerServiceReference == null)
-					setNewHandler(reference, newServiceRanking);
-				return (reference);
-			}
-		}
-
-		//we don't want to continue hearing events about a ContentHandler service not registered under our contentType
-		return (null);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#modifiedService(ServiceReference, Object)
-	 */
-
-	public void modifiedService(ServiceReference reference, Object service) {
-		int newrank = getRank(reference);
-		if (reference == contentHandlerServiceReference) {
-			if (newrank < ranking) {
-				// The ContentHandler we are currently using has dropped it's ranking below a ContentHandler 
-				// registered for the same protocol.  We need to swap out ContentHandlers.
-				// this should get us the highest ranked service, if available
-				ServiceReference newReference = contentHandlerServiceTracker.getServiceReference();
-				if (newReference != contentHandlerServiceReference && newReference != null) {
-					setNewHandler(newReference, ((Integer) newReference.getProperty(Constants.SERVICE_RANKING)).intValue());
-				}
-			}
-		} else if (newrank > ranking) {
-			// the service changed is another URLHandler that we are not currently using
-			// If it's ranking is higher, we must swap it in.
-			setNewHandler(reference, newrank);
-		}
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#removedService(ServiceReference, Object)
-	 */
-	public void removedService(ServiceReference reference, Object service) {
-		//check to see if our URLStreamHandler was unregistered.
-		if (reference != contentHandlerServiceReference)
-			return;
-		// If so, look for a lower ranking URLHandler
-		// this should get us the highest ranking service left, if available
-		ServiceReference newReference = contentHandlerServiceTracker.getServiceReference();
-		// if newReference == null then we will use the DefaultContentHandler here
-		setNewHandler(newReference, getRank(newReference));
-	}
-
-	/**
-	 * @see java.net.ContentHandler#getContent(URLConnection)
-	 */
-
-	public Object getContent(URLConnection uConn) throws IOException {
-		return realHandler.getContent(uConn);
-	}
-
-	private int getRank(ServiceReference reference) {
-		if (reference == null)
-			return Integer.MIN_VALUE;
-		Object property = reference.getProperty(Constants.SERVICE_RANKING);
-		return (property instanceof Integer) ? ((Integer) property).intValue() : 0;
-	}
-
-	class DefaultContentHandler extends ContentHandler {
-
-		/**
-		 * @see java.net.ContentHandler#getContent(URLConnection)
-		 */
-		public Object getContent(URLConnection uConn) throws IOException {
-			return uConn.getInputStream();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingContentHandler.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingContentHandler.java
deleted file mode 100644
index 3a49caa..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingContentHandler.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 Cognos Incorporated, IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the 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.eclipse.osgi.framework.internal.protocol;
-
-import java.io.IOException;
-import java.net.ContentHandler;
-import java.net.URLConnection;
-
-public class MultiplexingContentHandler extends ContentHandler {
-
-	private String contentType;
-	private ContentHandlerFactory factory;
-
-	public MultiplexingContentHandler(String contentType, ContentHandlerFactory factory) {
-		this.contentType = contentType;
-		this.factory = factory;
-	}
-
-	public Object getContent(URLConnection uConn) throws IOException {
-		ContentHandler handler = factory.findAuthorizedContentHandler(contentType);
-		if (handler != null)
-			return handler.getContent(uConn);
-
-		return uConn.getInputStream();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingFactory.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingFactory.java
deleted file mode 100644
index 1761141..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingFactory.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 Cognos Incorporated, IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the 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.eclipse.osgi.framework.internal.protocol;
-
-import java.lang.reflect.Method;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-/*
- * An abstract class for handler factory impls (Stream and Content) that can 
- * handle environments running multiple osgi frameworks with the same VM.
- */
-public abstract class MultiplexingFactory {
-
-	protected static final String PACKAGEADMINCLASS = "org.osgi.service.packageadmin.PackageAdmin"; //$NON-NLS-1$
-	protected BundleContext context;
-	protected FrameworkAdaptor adaptor;
-	private List factories; // list of multiplexed factories
-	private ServiceTracker packageAdminTracker;
-
-	// used to get access to the protected SecurityManager#getClassContext method
-	static class InternalSecurityManager extends SecurityManager {
-		public Class[] getClassContext() {
-			return super.getClassContext();
-		}
-	}
-
-	private static InternalSecurityManager internalSecurityManager = new InternalSecurityManager();
-
-	MultiplexingFactory(BundleContext context, FrameworkAdaptor adaptor) {
-		this.context = context;
-		this.adaptor = adaptor;
-		packageAdminTracker = new ServiceTracker(context, PACKAGEADMINCLASS, null);
-		packageAdminTracker.open();
-	}
-
-	abstract public void setParentFactory(Object parentFactory);
-
-	abstract public Object getParentFactory();
-
-	public boolean isMultiplexing() {
-		return getFactories() != null;
-	}
-
-	public void register(Object factory) {
-		// set parent for each factory so they can do proper delegation
-		try {
-			Class clazz = factory.getClass();
-			Method setParentFactory = clazz.getMethod("setParentFactory", new Class[] {Object.class}); //$NON-NLS-1$
-			setParentFactory.invoke(factory, new Object[] {getParentFactory()});
-		} catch (Exception e) {
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingFactory.class.getName(), FrameworkLogEntry.ERROR, 0, "register", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-			throw new RuntimeException(e.getMessage(), e);
-		}
-		addFactory(factory);
-	}
-
-	public void unregister(Object factory) {
-		removeFactory(factory);
-		// close the service tracker
-		try {
-			// this is brittle; if class does not directly extend MultplexingFactory then this method will not exist, but we do not want a public method here
-			Method closeTracker = factory.getClass().getSuperclass().getDeclaredMethod("closePackageAdminTracker", null); //$NON-NLS-1$
-			closeTracker.setAccessible(true); // its a private method
-			closeTracker.invoke(factory, null);
-		} catch (Exception e) {
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingFactory.class.getName(), FrameworkLogEntry.ERROR, 0, "unregister", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-			throw new RuntimeException(e.getMessage(), e);
-		}
-	}
-
-	public Object designateSuccessor() {
-		List released = releaseFactories();
-		// Note that we do this outside of the sync block above.
-		// This is only possible because we do additional locking outside of
-		// this class to ensure no other threads are trying to manipulate the
-		// list of registered factories.  See Framework class the following methods:
-		// Framework.installURLStreamHandlerFactory(BundleContext, FrameworkAdaptor)
-		// Framework.installContentHandlerFactory(BundleContext, FrameworkAdaptor)
-		// Framework.uninstallURLStreamHandlerFactory
-		// Framework.uninstallContentHandlerFactory()
-		if (released == null || released.isEmpty())
-			return getParentFactory();
-		Object successor = released.remove(0);
-		try {
-			Class clazz = successor.getClass();
-			Method register = clazz.getMethod("register", new Class[] {Object.class}); //$NON-NLS-1$		
-			for (Iterator it = released.iterator(); it.hasNext();) {
-				register.invoke(successor, new Object[] {it.next()});
-			}
-		} catch (Exception e) {
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingFactory.class.getName(), FrameworkLogEntry.ERROR, 0, "designateSuccessor", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-			throw new RuntimeException(e.getMessage(), e);
-		}
-		closePackageAdminTracker(); // close tracker
-		return successor;
-	}
-
-	private void closePackageAdminTracker() {
-		packageAdminTracker.close();
-	}
-
-	public Object findAuthorizedFactory(List ignoredClasses) {
-		List current = getFactories();
-		Class[] classStack = internalSecurityManager.getClassContext();
-		for (int i = 0; i < classStack.length; i++) {
-			Class clazz = classStack[i];
-			if (clazz == InternalSecurityManager.class || clazz == MultiplexingFactory.class || ignoredClasses.contains(clazz))
-				continue;
-			if (hasAuthority(clazz))
-				return this;
-			if (current == null)
-				continue;
-			for (Iterator it = current.iterator(); it.hasNext();) {
-				Object factory = it.next();
-				try {
-					Method hasAuthorityMethod = factory.getClass().getMethod("hasAuthority", new Class[] {Class.class}); //$NON-NLS-1$
-					if (((Boolean) hasAuthorityMethod.invoke(factory, new Object[] {clazz})).booleanValue()) {
-						return factory;
-					}
-				} catch (Exception e) {
-					adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingFactory.class.getName(), FrameworkLogEntry.ERROR, 0, "findAuthorizedURLStreamHandler-loop", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-					throw new RuntimeException(e.getMessage(), e);
-				}
-			}
-		}
-		return null;
-	}
-
-	public boolean hasAuthority(Class clazz) {
-		PackageAdmin packageAdminService = (PackageAdmin) packageAdminTracker.getService();
-		if (packageAdminService != null) {
-			return packageAdminService.getBundle(clazz) != null;
-		}
-		return false;
-	}
-
-	private synchronized List getFactories() {
-		return factories;
-	}
-
-	private synchronized List releaseFactories() {
-		if (factories == null)
-			return null;
-
-		List released = new LinkedList(factories);
-		factories = null;
-		return released;
-	}
-
-	private synchronized void addFactory(Object factory) {
-		List updated = (factories == null) ? new LinkedList() : new LinkedList(factories);
-		updated.add(factory);
-		factories = updated;
-	}
-
-	private synchronized void removeFactory(Object factory) {
-		List updated = new LinkedList(factories);
-		updated.remove(factory);
-		factories = updated.isEmpty() ? null : updated;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingURLStreamHandler.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingURLStreamHandler.java
deleted file mode 100644
index b7dadfc..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingURLStreamHandler.java
+++ /dev/null
@@ -1,247 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 Cognos Incorporated, IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the 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.eclipse.osgi.framework.internal.protocol;
-
-import java.io.IOException;
-import java.lang.reflect.*;
-import java.net.*;
-import org.eclipse.osgi.framework.internal.core.Framework;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-
-public class MultiplexingURLStreamHandler extends URLStreamHandler {
-	private static Method openConnectionMethod;
-	private static Method equalsMethod;
-	private static Method getDefaultPortMethod;
-	private static Method getHostAddressMethod;
-	private static Method hashCodeMethod;
-	private static Method hostsEqualMethod;
-	private static Method parseURLMethod;
-	private static Method sameFileMethod;
-	private static Method setURLMethod;
-	private static Method toExternalFormMethod;
-	private static Field handlerField;
-	private static boolean methodsInitialized = false;
-
-	private String protocol;
-	private StreamHandlerFactory factory;
-
-	private static synchronized void initializeMethods(StreamHandlerFactory factory) {
-		if (methodsInitialized)
-			return;
-		try {
-			openConnectionMethod = URLStreamHandler.class.getDeclaredMethod("openConnection", new Class[] {URL.class}); //$NON-NLS-1$
-			openConnectionMethod.setAccessible(true);
-
-			equalsMethod = URLStreamHandler.class.getDeclaredMethod("equals", new Class[] {URL.class, URL.class}); //$NON-NLS-1$
-			equalsMethod.setAccessible(true);
-
-			getDefaultPortMethod = URLStreamHandler.class.getDeclaredMethod("getDefaultPort", null); //$NON-NLS-1$
-			getDefaultPortMethod.setAccessible(true);
-
-			getHostAddressMethod = URLStreamHandler.class.getDeclaredMethod("getHostAddress", new Class[] {URL.class}); //$NON-NLS-1$
-			getHostAddressMethod.setAccessible(true);
-
-			hashCodeMethod = URLStreamHandler.class.getDeclaredMethod("hashCode", new Class[] {URL.class}); //$NON-NLS-1$
-			hashCodeMethod.setAccessible(true);
-
-			hostsEqualMethod = URLStreamHandler.class.getDeclaredMethod("hostsEqual", new Class[] {URL.class, URL.class}); //$NON-NLS-1$
-			hostsEqualMethod.setAccessible(true);
-
-			parseURLMethod = URLStreamHandler.class.getDeclaredMethod("parseURL", new Class[] {URL.class, String.class, Integer.TYPE, Integer.TYPE}); //$NON-NLS-1$
-			parseURLMethod.setAccessible(true);
-
-			sameFileMethod = URLStreamHandler.class.getDeclaredMethod("sameFile", new Class[] {URL.class, URL.class}); //$NON-NLS-1$
-			sameFileMethod.setAccessible(true);
-
-			setURLMethod = URLStreamHandler.class.getDeclaredMethod("setURL", new Class[] {URL.class, String.class, String.class, Integer.TYPE, String.class, String.class, String.class, String.class, String.class}); //$NON-NLS-1$
-			setURLMethod.setAccessible(true);
-
-			toExternalFormMethod = URLStreamHandler.class.getDeclaredMethod("toExternalForm", new Class[] {URL.class}); //$NON-NLS-1$
-			toExternalFormMethod.setAccessible(true);
-
-			try {
-				handlerField = URL.class.getDeclaredField("handler"); //$NON-NLS-1$
-			} catch (NoSuchFieldException e) {
-				handlerField = Framework.getField(URL.class, URLStreamHandler.class, true);
-				if (handlerField == null)
-					throw e;
-			}
-			handlerField.setAccessible(true);
-		} catch (Exception e) {
-			factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "initializeMethods", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-			throw new RuntimeException(e.getMessage(), e);
-		}
-		methodsInitialized = true;
-	}
-
-	public MultiplexingURLStreamHandler(String protocol, StreamHandlerFactory factory) {
-		this.protocol = protocol;
-		this.factory = factory;
-		initializeMethods(factory);
-	}
-
-	protected URLConnection openConnection(URL url) throws IOException {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return (URLConnection) openConnectionMethod.invoke(handler, new Object[] {url});
-			} catch (InvocationTargetException e) {
-				if (e.getTargetException() instanceof IOException)
-					throw (IOException) e.getTargetException();
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "openConnection", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new MalformedURLException();
-	}
-
-	protected boolean equals(URL url1, URL url2) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return ((Boolean) equalsMethod.invoke(handler, new Object[] {url1, url2})).booleanValue();
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "equals", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected int getDefaultPort() {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return ((Integer) getDefaultPortMethod.invoke(handler, null)).intValue();
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "getDefaultPort", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected InetAddress getHostAddress(URL url) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return (InetAddress) getHostAddressMethod.invoke(handler, new Object[] {url});
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "hashCode", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected int hashCode(URL url) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return ((Integer) hashCodeMethod.invoke(handler, new Object[] {url})).intValue();
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "hashCode", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected boolean hostsEqual(URL url1, URL url2) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return ((Boolean) hostsEqualMethod.invoke(handler, new Object[] {url1, url2})).booleanValue();
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "hostsEqual", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected void parseURL(URL arg0, String arg1, int arg2, int arg3) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				// set the real handler for the URL
-				handlerField.set(arg0, handler);
-				parseURLMethod.invoke(handler, new Object[] {arg0, arg1, new Integer(arg2), new Integer(arg3)});
-				return;
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "parseURL", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected boolean sameFile(URL url1, URL url2) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return ((Boolean) sameFileMethod.invoke(handler, new Object[] {url1, url2})).booleanValue();
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "sameFile", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected void setURL(URL arg0, String arg1, String arg2, int arg3, String arg4, String arg5, String arg6, String arg7, String arg8) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				// set the real handler for the URL
-				handlerField.set(arg0, handler);
-				setURLMethod.invoke(handler, new Object[] {arg0, arg1, arg2, new Integer(arg3), arg4, arg5, arg6, arg7, arg8});
-				return;
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "setURL", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected String toExternalForm(URL url) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return (String) toExternalFormMethod.invoke(handler, new Object[] {url});
-			} catch (InvocationTargetException e) {
-				throw (RuntimeException) e.getTargetException();
-			} catch (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "toExternalForm", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage(), e);
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/NullURLStreamHandlerService.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/NullURLStreamHandlerService.java
deleted file mode 100644
index 4cca4f9..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/NullURLStreamHandlerService.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import java.io.IOException;
-import java.net.*;
-import org.osgi.service.url.URLStreamHandlerService;
-import org.osgi.service.url.URLStreamHandlerSetter;
-
-/**
- * The NullURLStreamService is created when a registered URLStreamHandler service
- * with an associated URLStreamHandlerProxy becomes unregistered.  The associated
- * URLStreamHandlerProxy must still handle all future requests for the now unregistered
- * scheme (the JVM caches URLStreamHandlers making up impossible to "unregister" them). 
- * When requests come in for an unregistered URLStreamHandlerService, the
- * NullURLStreamHandlerService is used in it's place.
- */
-
-public class NullURLStreamHandlerService implements URLStreamHandlerService {
-
-	public URLConnection openConnection(URL u) throws IOException {
-		throw new MalformedURLException();
-	}
-
-	public boolean equals(URL url1, URL url2) {
-		throw new IllegalStateException();
-	}
-
-	public int getDefaultPort() {
-		throw new IllegalStateException();
-	}
-
-	public InetAddress getHostAddress(URL url) {
-		throw new IllegalStateException();
-	}
-
-	public int hashCode(URL url) {
-		throw new IllegalStateException();
-	}
-
-	public boolean hostsEqual(URL url1, URL url2) {
-		throw new IllegalStateException();
-	}
-
-	public boolean sameFile(URL url1, URL url2) {
-		throw new IllegalStateException();
-	}
-
-	public void setURL(URL u, String protocol, String host, int port, String authority, String userInfo, String file, String query, String ref) {
-		throw new IllegalStateException();
-	}
-
-	public void setURL(URL u, String protocol, String host, int port, String file, String ref) {
-		throw new IllegalStateException();
-	}
-
-	public String toExternalForm(URL url) {
-		throw new IllegalStateException();
-	}
-
-	public void parseURL(URLStreamHandlerSetter realHandler, URL u, String spec, int start, int limit) {
-		throw new IllegalStateException();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ProtocolActivator.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ProtocolActivator.java
deleted file mode 100644
index 39043c0..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/ProtocolActivator.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.osgi.framework.BundleContext;
-
-//TODO this is non-API, and has no internal clients - do we really need it? at least explain why
-public interface ProtocolActivator {
-
-	public void start(BundleContext context, FrameworkAdaptor adaptor);
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/StreamHandlerFactory.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/StreamHandlerFactory.java
deleted file mode 100644
index 10c5d03..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/StreamHandlerFactory.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import java.lang.reflect.Method;
-import java.net.*;
-import java.security.AccessController;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.Msg;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.url.URLConstants;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * This class contains the URL stream handler factory for the OSGi framework.
- */
-public class StreamHandlerFactory extends MultiplexingFactory implements URLStreamHandlerFactory {
-	static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-
-	private ServiceTracker handlerTracker;
-
-	protected static final String URLSTREAMHANDLERCLASS = "org.osgi.service.url.URLStreamHandlerService"; //$NON-NLS-1$
-	protected static final String PROTOCOL_HANDLER_PKGS = "java.protocol.handler.pkgs"; //$NON-NLS-1$
-	protected static final String INTERNAL_PROTOCOL_HANDLER_PKG = "org.eclipse.osgi.framework.internal.protocol"; //$NON-NLS-1$
-
-	private static final List ignoredClasses = Arrays.asList(new Class[] {MultiplexingURLStreamHandler.class, StreamHandlerFactory.class, URL.class});
-	private static final boolean useNetProxy;
-	static {
-		Class clazz = null;
-		try {
-			clazz = Class.forName("java.net.Proxy"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// expected on JRE < 1.5
-		}
-		useNetProxy = clazz != null;
-	}
-	private Hashtable proxies;
-	private URLStreamHandlerFactory parentFactory;
-	private ThreadLocal creatingProtocols = new ThreadLocal();
-
-	/**
-	 * Create the factory.
-	 *
-	 * @param context BundleContext for the system bundle
-	 */
-	public StreamHandlerFactory(BundleContext context, FrameworkAdaptor adaptor) {
-		super(context, adaptor);
-
-		proxies = new Hashtable(15);
-		handlerTracker = new ServiceTracker(context, URLSTREAMHANDLERCLASS, null);
-		handlerTracker.open();
-	}
-
-	private Class getBuiltIn(String protocol, String builtInHandlers, boolean fromFramework) {
-		if (builtInHandlers == null)
-			return null;
-		Class clazz;
-		StringTokenizer tok = new StringTokenizer(builtInHandlers, "|"); //$NON-NLS-1$
-		while (tok.hasMoreElements()) {
-			StringBuffer name = new StringBuffer();
-			name.append(tok.nextToken());
-			name.append("."); //$NON-NLS-1$
-			name.append(protocol);
-			name.append(".Handler"); //$NON-NLS-1$
-			try {
-				if (fromFramework)
-					clazz = secureAction.forName(name.toString());
-				else
-					clazz = secureAction.loadSystemClass(name.toString());
-				if (clazz != null)
-					return clazz; //this class exists, it is a built in handler	
-			} catch (ClassNotFoundException ex) {
-				// keep looking
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Creates a new URLStreamHandler instance for the specified
-	 * protocol.
-	 *
-	 * @param protocol The desired protocol
-	 * @return a URLStreamHandler for the specific protocol.
-	 */
-	public URLStreamHandler createURLStreamHandler(String protocol) {
-		// Check if we are recursing
-		if (isRecursive(protocol))
-			return null;
-		try {
-			//first check for built in handlers
-			String builtInHandlers = secureAction.getProperty(PROTOCOL_HANDLER_PKGS);
-			Class clazz = getBuiltIn(protocol, builtInHandlers, false);
-			if (clazz != null)
-				return null; // let the VM handle it
-			URLStreamHandler result = null;
-			if (isMultiplexing()) {
-				if (findAuthorizedURLStreamHandler(protocol) != null)
-					result = new MultiplexingURLStreamHandler(protocol, this);
-			} else {
-				result = createInternalURLStreamHandler(protocol);
-			}
-			// if parent is present do parent lookup
-			if (result == null && parentFactory != null)
-				result = parentFactory.createURLStreamHandler(protocol);
-			return result; //result may be null; let the VM handle it (consider sun.net.protocol.www.*)
-		} finally {
-			releaseRecursive(protocol);
-		}
-	}
-
-	private boolean isRecursive(String protocol) {
-		List protocols = (List) creatingProtocols.get();
-		if (protocols == null) {
-			protocols = new ArrayList(1);
-			creatingProtocols.set(protocols);
-		}
-		if (protocols.contains(protocol))
-			return true;
-		protocols.add(protocol);
-		return false;
-	}
-
-	private void releaseRecursive(String protocol) {
-		List protocols = (List) creatingProtocols.get();
-		protocols.remove(protocol);
-	}
-
-	public URLStreamHandler createInternalURLStreamHandler(String protocol) {
-		//internal protocol handlers
-		String internalHandlerPkgs = secureAction.getProperty(Constants.INTERNAL_HANDLER_PKGS);
-		internalHandlerPkgs = internalHandlerPkgs == null ? INTERNAL_PROTOCOL_HANDLER_PKG : internalHandlerPkgs + '|' + INTERNAL_PROTOCOL_HANDLER_PKG;
-		Class clazz = getBuiltIn(protocol, internalHandlerPkgs, true);
-
-		if (clazz == null) {
-			//Now we check the service registry
-			//first check to see if the handler is in the cache
-			URLStreamHandlerProxy handler = (URLStreamHandlerProxy) proxies.get(protocol);
-			if (handler != null)
-				return (handler);
-			//look through the service registry for a URLStramHandler registered for this protocol
-			org.osgi.framework.ServiceReference[] serviceReferences = handlerTracker.getServiceReferences();
-			if (serviceReferences == null)
-				return null;
-			for (int i = 0; i < serviceReferences.length; i++) {
-				Object prop = serviceReferences[i].getProperty(URLConstants.URL_HANDLER_PROTOCOL);
-				if (prop instanceof String)
-					prop = new String[] {(String) prop}; // TODO should this be a warning?
-				if (!(prop instanceof String[])) {
-					String message = NLS.bind(Msg.URL_HANDLER_INCORRECT_TYPE, new Object[] {URLConstants.URL_HANDLER_PROTOCOL, URLSTREAMHANDLERCLASS, serviceReferences[i].getBundle()});
-					adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, message, 0, null, null));
-					continue;
-				}
-				String[] protocols = (String[]) prop;
-				for (int j = 0; j < protocols.length; j++)
-					if (protocols[j].equals(protocol)) {
-						handler = useNetProxy ? new URLStreamHandlerFactoryProxyFor15(protocol, serviceReferences[i], context) : new URLStreamHandlerProxy(protocol, serviceReferences[i], context);
-						proxies.put(protocol, handler);
-						return (handler);
-					}
-			}
-			return null;
-		}
-
-		// must be a built-in handler
-		try {
-			URLStreamHandler handler = (URLStreamHandler) clazz.newInstance();
-
-			if (handler instanceof ProtocolActivator) {
-				((ProtocolActivator) handler).start(context, adaptor);
-			}
-
-			return handler;
-		} catch (Exception e) {
-			return null;
-		}
-	}
-
-	protected URLStreamHandler findAuthorizedURLStreamHandler(String protocol) {
-		Object factory = findAuthorizedFactory(ignoredClasses);
-		if (factory == null)
-			return null;
-
-		if (factory == this)
-			return createInternalURLStreamHandler(protocol);
-
-		try {
-			Method createInternalURLStreamHandlerMethod = factory.getClass().getMethod("createInternalURLStreamHandler", new Class[] {String.class}); //$NON-NLS-1$
-			return (URLStreamHandler) createInternalURLStreamHandlerMethod.invoke(factory, new Object[] {protocol});
-		} catch (Exception e) {
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(StreamHandlerFactory.class.getName(), "findAuthorizedURLStreamHandler-loop", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-			throw new RuntimeException(e.getMessage(), e);
-		}
-	}
-
-	public Object getParentFactory() {
-		return parentFactory;
-	}
-
-	public void setParentFactory(Object parentFactory) {
-		if (this.parentFactory == null) // only allow it to be set once
-			this.parentFactory = (URLStreamHandlerFactory) parentFactory;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerFactoryProxyFor15.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerFactoryProxyFor15.java
deleted file mode 100644
index 48b9f73..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerFactoryProxyFor15.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import java.io.IOException;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.*;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-public class URLStreamHandlerFactoryProxyFor15 extends URLStreamHandlerProxy {
-
-	public URLStreamHandlerFactoryProxyFor15(String protocol, ServiceReference reference, BundleContext context) {
-		super(protocol, reference, context);
-	}
-
-	protected URLConnection openConnection(URL u, Proxy p) throws IOException {
-		try {
-			Method openConn = realHandlerService.getClass().getMethod("openConnection", new Class[] {URL.class, Proxy.class}); //$NON-NLS-1$
-			return (URLConnection) openConn.invoke(realHandlerService, new Object[] {u, p});
-		} catch (InvocationTargetException e) {
-			if (e.getTargetException() instanceof IOException)
-				throw (IOException) e.getTargetException();
-			throw (RuntimeException) e.getTargetException();
-		} catch (Exception e) {
-			// expected on JRE < 1.5
-			throw (UnsupportedOperationException) new UnsupportedOperationException().initCause(e);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerProxy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerProxy.java
deleted file mode 100644
index ec441d6..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerProxy.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import java.io.IOException;
-import java.net.*;
-import org.osgi.framework.*;
-import org.osgi.service.url.URLConstants;
-import org.osgi.service.url.URLStreamHandlerService;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-/**
- * The URLStreamHandlerProxy is a URLStreamHandler that acts as a proxy for registered 
- * URLStreamHandlerServices.  When a URLStreamHandler is requested from the URLStreamHandlerFactory 
- * and it exists in the service registry, a URLStreamHandlerProxy is created which will pass all the 
- * requests from the requestor to the real URLStreamHandlerService.  We can't return the real 
- * URLStreamHandlerService from the URLStreamHandlerFactory because the JVM caches URLStreamHandlers 
- * and therefore would not support a dynamic environment of URLStreamHandlerServices being registered 
- * and unregistered.
- */
-
-public class URLStreamHandlerProxy extends URLStreamHandler implements ServiceTrackerCustomizer {
-	// TODO lots of type-based names 
-	protected URLStreamHandlerService realHandlerService;
-
-	protected URLStreamHandlerSetter urlSetter;
-
-	protected ServiceTracker urlStreamHandlerServiceTracker;
-
-	protected BundleContext context;
-	protected ServiceReference urlStreamServiceReference;
-
-	protected String protocol;
-
-	protected int ranking = Integer.MIN_VALUE;
-
-	public URLStreamHandlerProxy(String protocol, ServiceReference reference, BundleContext context) {
-		this.context = context;
-		this.protocol = protocol;
-
-		urlSetter = new URLStreamHandlerSetter(this);
-
-		//set the handler and ranking
-		setNewHandler(reference, getRank(reference));
-
-		urlStreamHandlerServiceTracker = new ServiceTracker(context, StreamHandlerFactory.URLSTREAMHANDLERCLASS, this);
-		StreamHandlerFactory.secureAction.open(urlStreamHandlerServiceTracker);
-	}
-
-	private void setNewHandler(ServiceReference reference, int rank) {
-		if (urlStreamServiceReference != null)
-			context.ungetService(urlStreamServiceReference);
-
-		urlStreamServiceReference = reference;
-		ranking = rank;
-
-		if (reference == null)
-			realHandlerService = new NullURLStreamHandlerService();
-		else
-			realHandlerService = (URLStreamHandlerService) StreamHandlerFactory.secureAction.getService(reference, context);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#equals(URL, URL)
-	 */
-	protected boolean equals(URL url1, URL url2) {
-		return realHandlerService.equals(url1, url2);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#getDefaultPort()
-	 */
-	protected int getDefaultPort() {
-		return realHandlerService.getDefaultPort();
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#getHostAddress(URL)
-	 */
-	protected InetAddress getHostAddress(URL url) {
-		return realHandlerService.getHostAddress(url);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#hashCode(URL)
-	 */
-	protected int hashCode(URL url) {
-		return realHandlerService.hashCode(url);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#hostsEqual(URL, URL)
-	 */
-	protected boolean hostsEqual(URL url1, URL url2) {
-		return realHandlerService.hostsEqual(url1, url2);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#openConnection(URL)
-	 */
-	protected URLConnection openConnection(URL url) throws IOException {
-		return realHandlerService.openConnection(url);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#parseURL(URL, String, int, int)
-	 */
-	protected void parseURL(URL url, String str, int start, int end) {
-		realHandlerService.parseURL(urlSetter, url, str, start, end);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#sameFile(URL, URL)
-	 */
-	protected boolean sameFile(URL url1, URL url2) {
-		return realHandlerService.sameFile(url1, url2);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#toExternalForm(URL)
-	 */
-	protected String toExternalForm(URL url) {
-		return realHandlerService.toExternalForm(url);
-	}
-
-	/**
-	 * @see java.net.URLStreamHandler#setURL(URL, String, String, int, String, String, String, String, String)
-	 */
-	public void setURL(URL u, String protocol, String host, int port, String authority, String userInfo, String file, String query, String ref) {
-		super.setURL(u, protocol, host, port, authority, userInfo, file, query, ref);
-	}
-
-	public void setURL(URL url, String protocol, String host, int port, String file, String ref) {
-
-		//using non-deprecated URLStreamHandler.setURL method. 
-		//setURL(URL u, String protocol, String host, int port, String authority, String userInfo, String file, String query, String ref) 
-		super.setURL(url, protocol, host, port, null, null, file, null, ref);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#addingService(ServiceReference)
-	 */
-	public Object addingService(ServiceReference reference) {
-		//check to see if our protocol is being registered by another service
-		Object prop = reference.getProperty(URLConstants.URL_HANDLER_PROTOCOL);
-		if (!(prop instanceof String[]))
-			return null;
-		String[] protocols = (String[]) prop;
-		for (int i = 0; i < protocols.length; i++) {
-			if (protocols[i].equals(protocol)) {
-				//If our protocol is registered by another service, check the service ranking and switch URLStreamHandlers if nessecary.
-				int newServiceRanking = getRank(reference);
-				if (newServiceRanking > ranking || urlStreamServiceReference == null)
-					setNewHandler(reference, newServiceRanking);
-				return (reference);
-			}
-		}
-
-		//we don't want to continue hearing events about a URLStreamHandlerService not registered under our protocol
-		return (null);
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#modifiedService(ServiceReference, Object)
-	 */
-	// check to see if the ranking has changed.  If so, re-select a new URLHandler
-	public void modifiedService(ServiceReference reference, Object service) {
-		int newRank = getRank(reference);
-		if (reference == urlStreamServiceReference) {
-			if (newRank < ranking) {
-				// The URLHandler we are currently using has dropped it's ranking below a URLHandler registered 
-				// for the same protocol. We need to swap out URLHandlers.
-				// this should get us the highest ranked service, if available
-				ServiceReference newReference = urlStreamHandlerServiceTracker.getServiceReference();
-				if (newReference != urlStreamServiceReference && newReference != null) {
-					setNewHandler(newReference, ((Integer) newReference.getProperty(Constants.SERVICE_RANKING)).intValue());
-				}
-			}
-		} else if (newRank > ranking) {
-			// the service changed is another URLHandler that we are not currently using
-			// If it's ranking is higher, we must swap it in.
-			setNewHandler(reference, newRank);
-		}
-	}
-
-	/**
-	 * @see org.osgi.util.tracker.ServiceTrackerCustomizer#removedService(ServiceReference, Object)
-	 */
-	public void removedService(ServiceReference reference, Object service) {
-		// check to see if our URLStreamHandler was unregistered.
-		if (reference != urlStreamServiceReference)
-			return;
-		// If so, look for a lower ranking URLHandler
-		// this should get us the highest ranking service left, if available
-		ServiceReference newReference = urlStreamHandlerServiceTracker.getServiceReference();
-		// if newReference == null then we will use the NullURLStreamHandlerService here
-		setNewHandler(newReference, getRank(newReference));
-	}
-
-	private int getRank(ServiceReference reference) {
-		if (reference == null)
-			return Integer.MIN_VALUE;
-		Object property = reference.getProperty(Constants.SERVICE_RANKING);
-		return (property instanceof Integer) ? ((Integer) property).intValue() : 0;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerSetter.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerSetter.java
deleted file mode 100644
index c576b5a..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerSetter.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol;
-
-import java.net.URL;
-
-public class URLStreamHandlerSetter implements org.osgi.service.url.URLStreamHandlerSetter {
-
-	protected URLStreamHandlerProxy handlerProxy;
-
-	public URLStreamHandlerSetter(URLStreamHandlerProxy handler) {
-		this.handlerProxy = handler;
-	}
-
-	/**
-	 * @see org.osgi.service.url.URLStreamHandlerSetter#setURL(URL, String, String, int, String, String)
-	 * @deprecated
-	 */
-	public void setURL(URL url, String protocol, String host, int port, String file, String ref) {
-		handlerProxy.setURL(url, protocol, host, port, file, ref);
-	}
-
-	/**
-	 * @see org.osgi.service.url.URLStreamHandlerSetter#setURL(URL, String, String, int, String, String, String, String, String)
-	 */
-	public void setURL(URL url, String protocol, String host, int port, String authority, String userInfo, String path, String query, String ref) {
-		handlerProxy.setURL(url, protocol, host, port, authority, userInfo, path, query, ref);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoader.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoader.java
deleted file mode 100644
index bdc8720..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoader.java
+++ /dev/null
@@ -1,1256 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.loader;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.util.KeyedHashSet;
-import org.eclipse.osgi.internal.loader.buddy.PolicyHandler;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-
-/**
- * This object is responsible for all classloader delegation for a bundle.
- * It represents the loaded state of the bundle.  BundleLoader objects
- * are created lazily; care should be taken not to force the creation
- * of a BundleLoader unless it is necessary.
- * @see org.eclipse.osgi.internal.loader.BundleLoaderProxy
- */
-public class BundleLoader implements ClassLoaderDelegate {
-	public final static String DEFAULT_PACKAGE = "."; //$NON-NLS-1$
-	public final static String JAVA_PACKAGE = "java."; //$NON-NLS-1$
-	public final static byte FLAG_IMPORTSINIT = 0x01;
-	public final static byte FLAG_HASDYNAMICIMPORTS = 0x02;
-	public final static byte FLAG_HASDYNAMICEIMPORTALL = 0x04;
-	public final static byte FLAG_CLOSED = 0x08;
-	public final static byte FLAG_LAZYTRIGGER = 0x10;
-
-	public final static ClassContext CLASS_CONTEXT = (ClassContext) AccessController.doPrivileged(new PrivilegedAction() {
-		public Object run() {
-			return new ClassContext();
-		}
-	});
-	public final static ClassLoader FW_CLASSLOADER = getClassLoader(Framework.class);
-
-	private static final int PRE_CLASS = 1;
-	private static final int POST_CLASS = 2;
-	private static final int PRE_RESOURCE = 3;
-	private static final int POST_RESOURCE = 4;
-	private static final int PRE_RESOURCES = 5;
-	private static final int POST_RESOURCES = 6;
-	private static final int PRE_LIBRARY = 7;
-	private static final int POST_LIBRARY = 8;
-
-	private static final boolean USE_GLOBAL_DEADLOCK_AVOIDANCE_LOCK = "true".equals(BundleLoaderProxy.secureAction.getProperty("osgi.classloader.singleThreadLoads")); //$NON-NLS-1$//$NON-NLS-2$
-	private static final List waitingList = USE_GLOBAL_DEADLOCK_AVOIDANCE_LOCK ? new ArrayList(0) : null;
-	private static Object lockThread;
-	private static int lockCount = 0;
-
-	/* the proxy */
-	final private BundleLoaderProxy proxy;
-	/* Bundle object */
-	final BundleHost bundle;
-	final private PolicyHandler policy;
-	/* List of package names that are exported by this BundleLoader */
-	final private Collection exportedPackages;
-	final private Collection substitutedPackages;
-	/* List of required bundle BundleLoaderProxy objects */
-	final BundleLoaderProxy[] requiredBundles;
-	/* List of indexes into the requiredBundles list of reexported bundles */
-	final int[] reexportTable;
-	/* cache of required package sources. Key is packagename, value is PackageSource */
-	final private KeyedHashSet requiredSources;
-
-	// note that the following non-final must be access using synchronization
-	/* cache of imported packages. Key is packagename, Value is PackageSource */
-	private KeyedHashSet importedSources;
-	/* If not null, list of package stems to import dynamically. */
-	private String[] dynamicImportPackageStems;
-	/* If not null, list of package names to import dynamically. */
-	private String[] dynamicImportPackages;
-	/* loader flags */
-	private byte loaderFlags = 0;
-	/* The is the BundleClassLoader for the bundle */
-	private BundleClassLoader classloader;
-	private ClassLoader parent;
-
-	/**
-	 * Returns the package name from the specified class name.
-	 * The returned package is dot seperated.
-	 *
-	 * @param name   Name of a class.
-	 * @return Dot separated package name or null if the class
-	 *         has no package name.
-	 */
-	public final static String getPackageName(String name) {
-		if (name != null) {
-			int index = name.lastIndexOf('.'); /* find last period in class name */
-			if (index > 0)
-				return name.substring(0, index);
-		}
-		return DEFAULT_PACKAGE;
-	}
-
-	/**
-	 * Returns the package name from the specified resource name.
-	 * The returned package is dot seperated.
-	 *
-	 * @param name   Name of a resource.
-	 * @return Dot separated package name or null if the resource
-	 *         has no package name.
-	 */
-	public final static String getResourcePackageName(String name) {
-		if (name != null) {
-			/* check for leading slash*/
-			int begin = ((name.length() > 1) && (name.charAt(0) == '/')) ? 1 : 0;
-			int end = name.lastIndexOf('/'); /* index of last slash */
-			if (end > begin)
-				return name.substring(begin, end).replace('/', '.');
-		}
-		return DEFAULT_PACKAGE;
-	}
-
-	/**
-	 * BundleLoader runtime constructor. This object is created lazily
-	 * when the first request for a resource is made to this bundle.
-	 *
-	 * @param bundle Bundle object for this loader.
-	 * @param proxy the BundleLoaderProxy for this loader.
-	 * @exception org.osgi.framework.BundleException
-	 */
-	protected BundleLoader(BundleHost bundle, BundleLoaderProxy proxy) throws BundleException {
-		this.bundle = bundle;
-		this.proxy = proxy;
-		try {
-			bundle.getBundleData().open(); /* make sure the BundleData is open */
-		} catch (IOException e) {
-			throw new BundleException(Msg.BUNDLE_READ_EXCEPTION, e);
-		}
-		BundleDescription description = proxy.getBundleDescription();
-		// init the require bundles list.
-		BundleDescription[] required = description.getResolvedRequires();
-		if (required.length > 0) {
-			// get a list of re-exported symbolic names
-			HashSet reExportSet = new HashSet(required.length);
-			BundleSpecification[] requiredSpecs = description.getRequiredBundles();
-			if (requiredSpecs != null && requiredSpecs.length > 0)
-				for (int i = 0; i < requiredSpecs.length; i++)
-					if (requiredSpecs[i].isExported())
-						reExportSet.add(requiredSpecs[i].getName());
-
-			requiredBundles = new BundleLoaderProxy[required.length];
-			int[] reexported = new int[required.length];
-			int reexportIndex = 0;
-			for (int i = 0; i < required.length; i++) {
-				requiredBundles[i] = getLoaderProxy(required[i]);
-				if (reExportSet.contains(required[i].getSymbolicName()))
-					reexported[reexportIndex++] = i;
-			}
-			if (reexportIndex > 0) {
-				reexportTable = new int[reexportIndex];
-				System.arraycopy(reexported, 0, reexportTable, 0, reexportIndex);
-			} else {
-				reexportTable = null;
-			}
-			requiredSources = new KeyedHashSet(10, false);
-		} else {
-			requiredBundles = null;
-			reexportTable = null;
-			requiredSources = null;
-		}
-
-		// init the provided packages set
-		ExportPackageDescription[] exports = description.getSelectedExports();
-		if (exports != null && exports.length > 0) {
-			exportedPackages = Collections.synchronizedCollection(exports.length > 10 ? (Collection) new HashSet(exports.length) : new ArrayList(exports.length));
-			initializeExports(exports, exportedPackages);
-		} else {
-			exportedPackages = Collections.synchronizedCollection(new ArrayList(0));
-		}
-
-		ExportPackageDescription substituted[] = description.getSubstitutedExports();
-		if (substituted.length > 0) {
-			substitutedPackages = substituted.length > 10 ? (Collection) new HashSet(substituted.length) : new ArrayList(substituted.length);
-			for (int i = 0; i < substituted.length; i++)
-				substitutedPackages.add(substituted[i].getName());
-		} else {
-			substitutedPackages = null;
-		}
-
-		//This is the fastest way to access to the description for fragments since the hostdescription.getFragments() is slow
-		BundleFragment[] fragmentObjects = bundle.getFragments();
-		BundleDescription[] fragments = new BundleDescription[fragmentObjects == null ? 0 : fragmentObjects.length];
-		for (int i = 0; i < fragments.length; i++)
-			fragments[i] = fragmentObjects[i].getBundleDescription();
-		// init the dynamic imports tables
-		if (description.hasDynamicImports())
-			addDynamicImportPackage(description.getImportPackages());
-		// ...and its fragments
-		for (int i = 0; i < fragments.length; i++)
-			if (fragments[i].isResolved() && fragments[i].hasDynamicImports())
-				addDynamicImportPackage(fragments[i].getImportPackages());
-
-		//Initialize the policy handler
-		String buddyList = null;
-		try {
-			buddyList = (String) bundle.getBundleData().getManifest().get(Constants.BUDDY_LOADER);
-		} catch (BundleException e) {
-			// do nothing; buddyList == null
-		}
-		policy = buddyList != null ? new PolicyHandler(this, buddyList, bundle.getFramework().getPackageAdmin()) : null;
-		if (policy != null)
-			policy.open(bundle.getFramework().getSystemBundleContext());
-	}
-
-	private void initializeExports(ExportPackageDescription[] exports, Collection exportNames) {
-		for (int i = 0; i < exports.length; i++) {
-			if (proxy.forceSourceCreation(exports[i])) {
-				if (!exportNames.contains(exports[i].getName())) {
-					// must force filtered and reexport sources to be created early
-					// to prevent lazy normal package source creation.
-					// We only do this for the first export of a package name. 
-					proxy.createPackageSource(exports[i], true);
-				}
-			}
-			exportNames.add(exports[i].getName());
-		}
-	}
-
-	public synchronized KeyedHashSet getImportedSources(KeyedHashSet visited) {
-		if ((loaderFlags & FLAG_IMPORTSINIT) != 0)
-			return importedSources;
-		BundleDescription bundleDesc = proxy.getBundleDescription();
-		ExportPackageDescription[] packages = bundleDesc.getResolvedImports();
-		if (packages != null && packages.length > 0) {
-			if (importedSources == null)
-				importedSources = new KeyedHashSet(packages.length, false);
-			for (int i = 0; i < packages.length; i++) {
-				if (packages[i].getExporter() == bundleDesc)
-					continue; // ignore imports resolved to this bundle
-				PackageSource source = createExportPackageSource(packages[i], visited);
-				if (source != null)
-					importedSources.add(source);
-			}
-		}
-		loaderFlags |= FLAG_IMPORTSINIT;
-		return importedSources;
-	}
-
-	public synchronized boolean isLazyTriggerSet() {
-		return (loaderFlags & FLAG_LAZYTRIGGER) != 0;
-	}
-
-	public void setLazyTrigger() throws BundleException {
-		synchronized (this) {
-			loaderFlags |= FLAG_LAZYTRIGGER;
-		}
-		BundleLoaderProxy.secureAction.start(bundle, Bundle.START_TRANSIENT | BundleHost.LAZY_TRIGGER);
-	}
-
-	final PackageSource createExportPackageSource(ExportPackageDescription export, KeyedHashSet visited) {
-		BundleLoaderProxy exportProxy = getLoaderProxy(export.getExporter());
-		if (exportProxy == null)
-			// TODO log error!!
-			return null;
-		PackageSource requiredSource = exportProxy.getBundleLoader().findRequiredSource(export.getName(), visited);
-		PackageSource exportSource = exportProxy.createPackageSource(export, false);
-		if (requiredSource == null)
-			return exportSource;
-		return createMultiSource(export.getName(), new PackageSource[] {requiredSource, exportSource});
-	}
-
-	private static PackageSource createMultiSource(String packageName, PackageSource[] sources) {
-		if (sources.length == 1)
-			return sources[0];
-		ArrayList sourceList = new ArrayList(sources.length);
-		for (int i = 0; i < sources.length; i++) {
-			SingleSourcePackage[] innerSources = sources[i].getSuppliers();
-			for (int j = 0; j < innerSources.length; j++)
-				if (!sourceList.contains(innerSources[j]))
-					sourceList.add(innerSources[j]);
-		}
-		return new MultiSourcePackage(packageName, (SingleSourcePackage[]) sourceList.toArray(new SingleSourcePackage[sourceList.size()]));
-	}
-
-	/*
-	 * get the loader proxy for a bundle description
-	 */
-	public final BundleLoaderProxy getLoaderProxy(BundleDescription source) {
-		BundleLoaderProxy sourceProxy = (BundleLoaderProxy) source.getUserObject();
-		if (sourceProxy == null) {
-			// may need to force the proxy to be created
-			long exportingID = source.getBundleId();
-			BundleHost exportingBundle = (BundleHost) bundle.getFramework().getBundle(exportingID);
-			if (exportingBundle == null)
-				return null;
-			sourceProxy = exportingBundle.getLoaderProxy();
-		}
-		return sourceProxy;
-	}
-
-	/*
-	 * Close the the BundleLoader.
-	 *
-	 */
-	synchronized void close() {
-		if ((loaderFlags & FLAG_CLOSED) != 0)
-			return;
-		if (classloader != null)
-			classloader.close();
-		if (policy != null)
-			policy.close(bundle.getFramework().getSystemBundleContext());
-		loaderFlags |= FLAG_CLOSED; /* This indicates the BundleLoader is destroyed */
-	}
-
-	/**
-	 * This method loads a class from the bundle.  The class is searched for in the
-	 * same manner as it would if it was being loaded from a bundle (i.e. all
-	 * hosts, fragments, import, required bundles and local resources are searched.
-	 *
-	 * @param      name     the name of the desired Class.
-	 * @return     the resulting Class
-	 * @exception  java.lang.ClassNotFoundException  if the class definition was not found.
-	 */
-	final public Class loadClass(String name) throws ClassNotFoundException {
-		BundleClassLoader bcl = createClassLoader();
-		// The instanceof check here is just to be safe.  The javadoc contract stated in BundleClassLoader
-		// mandate that BundleClassLoaders be an instance of ClassLoader.
-		if (name.length() > 0 && name.charAt(0) == '[' && bcl instanceof ClassLoader)
-			return Class.forName(name, false, (ClassLoader) bcl);
-		return bcl.loadClass(name);
-	}
-
-	/**
-	 * This method gets a resource from the bundle.  The resource is searched 
-	 * for in the same manner as it would if it was being loaded from a bundle 
-	 * (i.e. all hosts, fragments, import, required bundles and 
-	 * local resources are searched).
-	 *
-	 * @param name the name of the desired resource.
-	 * @return the resulting resource URL or null if it does not exist.
-	 */
-	final URL getResource(String name) {
-		return createClassLoader().getResource(name);
-	}
-
-	public final synchronized ClassLoader getParentClassLoader() {
-		if (parent != null)
-			return parent;
-		createClassLoader();
-		return parent;
-	}
-
-	final public synchronized BundleClassLoader createClassLoader() {
-		if (classloader != null)
-			return classloader;
-		String[] classpath;
-		try {
-			classpath = bundle.getBundleData().getClassPath();
-		} catch (BundleException e) {
-			// no classpath
-			classpath = new String[0];
-			bundle.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-		}
-		if (classpath == null) {
-			// no classpath
-			classpath = new String[0];
-			bundle.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, bundle, new BundleException(Msg.BUNDLE_NO_CLASSPATH_MATCH, BundleException.MANIFEST_ERROR));
-		}
-		BundleClassLoader bcl = createBCLPrevileged(bundle.getProtectionDomain(), classpath);
-		parent = getParentPrivileged(bcl);
-		classloader = bcl;
-		return classloader;
-	}
-
-	/**
-	 * Finds a class local to this bundle.  Only the classloader for this bundle is searched.
-	 * @param name The name of the class to find.
-	 * @return The loaded Class or null if the class is not found.
-	 * @throws ClassNotFoundException 
-	 */
-	Class findLocalClass(String name) throws ClassNotFoundException {
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("BundleLoader[" + this + "].findLocalClass(" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		try {
-			Class clazz = createClassLoader().findLocalClass(name);
-			if (Debug.DEBUG && Debug.DEBUG_LOADER && clazz != null)
-				Debug.println("BundleLoader[" + this + "] found local class " + name); //$NON-NLS-1$ //$NON-NLS-2$
-			return clazz;
-		} catch (ClassNotFoundException e) {
-			if (e instanceof StatusException) {
-				if ((((StatusException) e).getStatusCode() & StatusException.CODE_ERROR) != 0)
-					throw e;
-			}
-			return null;
-		}
-	}
-
-	/**
-	 * Finds the class for a bundle.  This method is used for delegation by the bundle's classloader.
-	 */
-	public Class findClass(String name) throws ClassNotFoundException {
-		return findClass(name, true);
-	}
-
-	Class findClass(String name, boolean checkParent) throws ClassNotFoundException {
-		ClassLoader parentCL = getParentClassLoader();
-		if (checkParent && parentCL != null && name.startsWith(JAVA_PACKAGE))
-			// 1) if startsWith "java." delegate to parent and terminate search
-			// we want to throw ClassNotFoundExceptions if a java.* class cannot be loaded from the parent.
-			return parentCL.loadClass(name);
-		try {
-			if (USE_GLOBAL_DEADLOCK_AVOIDANCE_LOCK)
-				lock(createClassLoader());
-			return findClassInternal(name, checkParent, parentCL);
-		} finally {
-			if (USE_GLOBAL_DEADLOCK_AVOIDANCE_LOCK)
-				unlock();
-		}
-	}
-
-	private Class findClassInternal(String name, boolean checkParent, ClassLoader parentCL) throws ClassNotFoundException {
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("BundleLoader[" + this + "].loadBundleClass(" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		String pkgName = getPackageName(name);
-		boolean bootDelegation = false;
-		// follow the OSGi delegation model
-		if (checkParent && parentCL != null && bundle.getFramework().isBootDelegationPackage(pkgName))
-			// 2) if part of the bootdelegation list then delegate to parent and continue of failure
-			try {
-				return parentCL.loadClass(name);
-			} catch (ClassNotFoundException cnfe) {
-				// we want to continue
-				bootDelegation = true;
-			}
-		Class result = null;
-		try {
-			result = (Class) searchHooks(name, PRE_CLASS);
-		} catch (ClassNotFoundException e) {
-			throw e;
-		} catch (FileNotFoundException e) {
-			// will not happen
-		}
-		if (result != null)
-			return result;
-		// 3) search the imported packages
-		PackageSource source = findImportedSource(pkgName, null);
-		if (source != null) {
-			// 3) found import source terminate search at the source
-			result = source.loadClass(name);
-			if (result != null)
-				return result;
-			throw new ClassNotFoundException(name);
-		}
-		// 4) search the required bundles
-		source = findRequiredSource(pkgName, null);
-		if (source != null)
-			// 4) attempt to load from source but continue on failure
-			result = source.loadClass(name);
-		// 5) search the local bundle
-		if (result == null)
-			result = findLocalClass(name);
-		if (result != null)
-			return result;
-		// 6) attempt to find a dynamic import source; only do this if a required source was not found
-		if (source == null) {
-			source = findDynamicSource(pkgName);
-			if (source != null) {
-				result = source.loadClass(name);
-				if (result != null)
-					return result;
-				// must throw CNFE if dynamic import source does not have the class
-				throw new ClassNotFoundException(name);
-			}
-		}
-
-		if (result == null)
-			try {
-				result = (Class) searchHooks(name, POST_CLASS);
-			} catch (ClassNotFoundException e) {
-				throw e;
-			} catch (FileNotFoundException e) {
-				// will not happen
-			}
-		// do buddy policy loading
-		if (result == null && policy != null)
-			result = policy.doBuddyClassLoading(name);
-		if (result != null)
-			return result;
-		// hack to support backwards compatibiility for bootdelegation
-		// or last resort; do class context trick to work around VM bugs
-		if (parentCL != null && !bootDelegation && ((checkParent && bundle.getFramework().compatibiltyBootDelegation) || isRequestFromVM()))
-			// we don't need to continue if a CNFE is thrown here.
-			try {
-				return parentCL.loadClass(name);
-			} catch (ClassNotFoundException e) {
-				// we want to generate our own exception below
-			}
-		throw new ClassNotFoundException(name);
-	}
-
-	private Object searchHooks(String name, int type) throws ClassNotFoundException, FileNotFoundException {
-		ClassLoaderDelegateHook[] delegateHooks = bundle.getFramework().getDelegateHooks();
-		if (delegateHooks == null)
-			return null;
-		Object result = null;
-		for (int i = 0; i < delegateHooks.length && result == null; i++) {
-			switch (type) {
-				case PRE_CLASS :
-					result = delegateHooks[i].preFindClass(name, createClassLoader(), bundle.getBundleData());
-					break;
-				case POST_CLASS :
-					result = delegateHooks[i].postFindClass(name, createClassLoader(), bundle.getBundleData());
-					break;
-				case PRE_RESOURCE :
-					result = delegateHooks[i].preFindResource(name, createClassLoader(), bundle.getBundleData());
-					break;
-				case POST_RESOURCE :
-					result = delegateHooks[i].postFindResource(name, createClassLoader(), bundle.getBundleData());
-					break;
-				case PRE_RESOURCES :
-					result = delegateHooks[i].preFindResources(name, createClassLoader(), bundle.getBundleData());
-					break;
-				case POST_RESOURCES :
-					result = delegateHooks[i].postFindResources(name, createClassLoader(), bundle.getBundleData());
-					break;
-				case PRE_LIBRARY :
-					result = delegateHooks[i].preFindLibrary(name, createClassLoader(), bundle.getBundleData());
-					break;
-				case POST_LIBRARY :
-					result = delegateHooks[i].postFindLibrary(name, createClassLoader(), bundle.getBundleData());
-					break;
-			}
-		}
-		return result;
-	}
-
-	private boolean isRequestFromVM() {
-		if (bundle.getFramework().isBootDelegationPackage("*") || !bundle.getFramework().contextBootDelegation) //$NON-NLS-1$
-			return false;
-		// works around VM bugs that require all classloaders to have access to parent packages
-		Class[] context = CLASS_CONTEXT.getClassContext();
-		if (context == null || context.length < 2)
-			return false;
-		// skip the first class; it is the ClassContext class
-		for (int i = 1; i < context.length; i++)
-			// find the first class in the context which is not BundleLoader or instanceof ClassLoader
-			if (context[i] != BundleLoader.class && !ClassLoader.class.isAssignableFrom(context[i])) {
-				// only find in parent if the class is not "Class" (Class#forName case) or if the class is not loaded with a BundleClassLoader
-				ClassLoader cl = getClassLoader(context[i]);
-				if (cl != FW_CLASSLOADER) { // extra check incase an adaptor adds another class into the stack besides an instance of ClassLoader
-					if (Class.class != context[i] && !(cl instanceof BundleClassLoader))
-						return true;
-					break;
-				}
-			}
-		return false;
-	}
-
-	private static ClassLoader getClassLoader(final Class clazz) {
-		if (System.getSecurityManager() == null)
-			return clazz.getClassLoader();
-		return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return clazz.getClassLoader();
-			}
-		});
-	}
-
-	/**
-	 * Finds the resource for a bundle.  This method is used for delegation by the bundle's classloader.
-	 */
-	public URL findResource(String name) {
-		return findResource(name, true);
-	}
-
-	URL findResource(String name, boolean checkParent) {
-		if ((name.length() > 1) && (name.charAt(0) == '/')) /* if name has a leading slash */
-			name = name.substring(1); /* remove leading slash before search */
-		String pkgName = getResourcePackageName(name);
-		boolean bootDelegation = false;
-		ClassLoader parentCL = getParentClassLoader();
-		// follow the OSGi delegation model
-		// First check the parent classloader for system resources, if it is a java resource.
-		if (checkParent && parentCL != null) {
-			if (pkgName.startsWith(JAVA_PACKAGE))
-				// 1) if startsWith "java." delegate to parent and terminate search
-				// we never delegate java resource requests past the parent
-				return parentCL.getResource(name);
-			else if (bundle.getFramework().isBootDelegationPackage(pkgName)) {
-				// 2) if part of the bootdelegation list then delegate to parent and continue of failure
-				URL result = parentCL.getResource(name);
-				if (result != null)
-					return result;
-				bootDelegation = true;
-			}
-		}
-
-		URL result = null;
-		try {
-			result = (URL) searchHooks(name, PRE_RESOURCE);
-		} catch (FileNotFoundException e) {
-			return null;
-		} catch (ClassNotFoundException e) {
-			// will not happen
-		}
-		if (result != null)
-			return result;
-		// 3) search the imported packages
-		PackageSource source = findImportedSource(pkgName, null);
-		if (source != null)
-			// 3) found import source terminate search at the source
-			return source.getResource(name);
-		// 4) search the required bundles
-		source = findRequiredSource(pkgName, null);
-		if (source != null)
-			// 4) attempt to load from source but continue on failure
-			result = source.getResource(name);
-		// 5) search the local bundle
-		if (result == null)
-			result = findLocalResource(name);
-		if (result != null)
-			return result;
-		// 6) attempt to find a dynamic import source; only do this if a required source was not found
-		if (source == null) {
-			source = findDynamicSource(pkgName);
-			if (source != null)
-				// must return the result of the dynamic import and do not continue
-				return source.getResource(name);
-		}
-
-		if (result == null)
-			try {
-				result = (URL) searchHooks(name, POST_RESOURCE);
-			} catch (FileNotFoundException e) {
-				return null;
-			} catch (ClassNotFoundException e) {
-				// will not happen
-			}
-		// do buddy policy loading
-		if (result == null && policy != null)
-			result = policy.doBuddyResourceLoading(name);
-		if (result != null)
-			return result;
-		// hack to support backwards compatibiility for bootdelegation
-		// or last resort; do class context trick to work around VM bugs
-		if (parentCL != null && !bootDelegation && ((checkParent && bundle.getFramework().compatibiltyBootDelegation) || isRequestFromVM()))
-			// we don't need to continue if the resource is not found here
-			return parentCL.getResource(name);
-		return result;
-	}
-
-	/**
-	 * Finds the resources for a bundle.  This  method is used for delegation by the bundle's classloader.
-	 */
-	public Enumeration findResources(String name) throws IOException {
-		// do not delegate to parent because ClassLoader#getResources already did and it is final!!
-		if ((name.length() > 1) && (name.charAt(0) == '/')) /* if name has a leading slash */
-			name = name.substring(1); /* remove leading slash before search */
-		String pkgName = getResourcePackageName(name);
-		Enumeration result = null;
-		try {
-			result = (Enumeration) searchHooks(name, PRE_RESOURCES);
-		} catch (ClassNotFoundException e) {
-			// will not happen
-		} catch (FileNotFoundException e) {
-			return null;
-		}
-		if (result != null)
-			return result;
-		// start at step 3 because of the comment above about ClassLoader#getResources
-		// 3) search the imported packages
-		PackageSource source = findImportedSource(pkgName, null);
-		if (source != null)
-			// 3) found import source terminate search at the source
-			return source.getResources(name);
-		// 4) search the required bundles
-		source = findRequiredSource(pkgName, null);
-		if (source != null)
-			// 4) attempt to load from source but continue on failure
-			result = source.getResources(name);
-
-		// 5) search the local bundle
-		// compound the required source results with the local ones
-		Enumeration localResults = findLocalResources(name);
-		result = compoundEnumerations(result, localResults);
-		// 6) attempt to find a dynamic import source; only do this if a required source was not found
-		if (result == null && source == null) {
-			source = findDynamicSource(pkgName);
-			if (source != null)
-				return source.getResources(name);
-		}
-		if (result == null)
-			try {
-				result = (Enumeration) searchHooks(name, POST_RESOURCES);
-			} catch (ClassNotFoundException e) {
-				// will not happen
-			} catch (FileNotFoundException e) {
-				return null;
-			}
-		if (policy != null) {
-			Enumeration buddyResult = policy.doBuddyResourcesLoading(name);
-			result = compoundEnumerations(result, buddyResult);
-		}
-		return result;
-	}
-
-	/*
-	 * This method is used by Bundle.getResources to do proper parent delegation.
-	 */
-	public Enumeration getResources(String name) throws IOException {
-		if ((name.length() > 1) && (name.charAt(0) == '/')) /* if name has a leading slash */
-			name = name.substring(1); /* remove leading slash before search */
-		String pkgName = getResourcePackageName(name);
-		// follow the OSGi delegation model
-		// First check the parent classloader for system resources, if it is a java resource.
-		Enumeration result = null;
-		if (pkgName.startsWith(JAVA_PACKAGE) || bundle.getFramework().isBootDelegationPackage(pkgName)) {
-			// 1) if startsWith "java." delegate to parent and terminate search
-			// 2) if part of the bootdelegation list then delegate to parent and continue of failure
-			ClassLoader parentCL = getParentClassLoader();
-			result = parentCL == null ? null : parentCL.getResources(name);
-			if (pkgName.startsWith(JAVA_PACKAGE))
-				return result;
-		}
-		return compoundEnumerations(result, findResources(name));
-	}
-
-	public static Enumeration compoundEnumerations(Enumeration list1, Enumeration list2) {
-		if (list2 == null || !list2.hasMoreElements())
-			return list1;
-		if (list1 == null || !list1.hasMoreElements())
-			return list2;
-		Vector compoundResults = new Vector();
-		while (list1.hasMoreElements())
-			compoundResults.add(list1.nextElement());
-		while (list2.hasMoreElements()) {
-			Object item = list2.nextElement();
-			if (!compoundResults.contains(item)) //don't add duplicates
-				compoundResults.add(item);
-		}
-		return compoundResults.elements();
-	}
-
-	/**
-	 * Finds a resource local to this bundle.  Only the classloader for this bundle is searched.
-	 * @param name The name of the resource to find.
-	 * @return The URL to the resource or null if the resource is not found.
-	 */
-	URL findLocalResource(final String name) {
-		return createClassLoader().findLocalResource(name);
-	}
-
-	/**
-	 * Returns an Enumeration of URLs representing all the resources with
-	 * the given name. Only the classloader for this bundle is searched.
-	 *
-	 * @param  name the resource name
-	 * @return an Enumeration of URLs for the resources
-	 */
-	Enumeration findLocalResources(String name) {
-		return createClassLoader().findLocalResources(name);
-	}
-
-	/**
-	 * Returns the absolute path name of a native library.
-	 *
-	 * @param      name   the library name
-	 * @return     the absolute path of the native library or null if not found
-	 */
-	public String findLibrary(final String name) {
-		if (System.getSecurityManager() == null)
-			return findLocalLibrary(name);
-		return (String) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return findLocalLibrary(name);
-			}
-		});
-	}
-
-	final String findLocalLibrary(final String name) {
-		String result = null;
-		try {
-			result = (String) searchHooks(name, PRE_LIBRARY);
-		} catch (FileNotFoundException e) {
-			return null;
-		} catch (ClassNotFoundException e) {
-			// will not happen
-		}
-		if (result != null)
-			return result;
-		result = bundle.getBundleData().findLibrary(name);
-		if (result != null)
-			return result;
-
-		// look in fragments imports ...
-		BundleFragment[] fragments = bundle.getFragments();
-		if (fragments != null)
-			for (int i = 0; i < fragments.length; i++) {
-				result = fragments[i].getBundleData().findLibrary(name);
-				if (result != null)
-					return result;
-			}
-		try {
-			return (String) searchHooks(name, POST_LIBRARY);
-		} catch (FileNotFoundException e) {
-			return null; // this is not necessary; but being consistent in case another step is added below
-		} catch (ClassNotFoundException e) {
-			// will not happen
-		}
-		return null;
-	}
-
-	/*
-	 * Return the bundle we are associated with.
-	 */
-	public final AbstractBundle getBundle() {
-		return bundle;
-	}
-
-	private BundleClassLoader createBCLPrevileged(final BundleProtectionDomain pd, final String[] cp) {
-		// Create the classloader as previleged code if security manager is present.
-		if (System.getSecurityManager() == null)
-			return createBCL(pd, cp);
-
-		return (BundleClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return createBCL(pd, cp);
-			}
-		});
-
-	}
-
-	BundleClassLoader createBCL(final BundleProtectionDomain pd, final String[] cp) {
-		BundleClassLoader bcl = bundle.getBundleData().createClassLoader(BundleLoader.this, pd, cp);
-		// attach existing fragments to classloader
-		BundleFragment[] fragments = bundle.getFragments();
-		if (fragments != null)
-			for (int i = 0; i < fragments.length; i++) {
-				try {
-					bcl.attachFragment(fragments[i].getBundleData(), fragments[i].getProtectionDomain(), fragments[i].getBundleData().getClassPath());
-				} catch (BundleException be) {
-					bundle.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, bundle, be);
-				}
-			}
-
-		// finish the initialization of the classloader.
-		bcl.initialize();
-		return bcl;
-	}
-
-	/**
-	 * Return a string representation of this loader.
-	 * @return String
-	 */
-	public final String toString() {
-		BundleData result = bundle.getBundleData();
-		return result == null ? "BundleLoader.bundledata == null!" : result.toString(); //$NON-NLS-1$
-	}
-
-	/**
-	 * Return true if the target package name matches
-	 * a name in the DynamicImport-Package manifest header.
-	 *
-	 * @param pkgname The name of the requested class' package.
-	 * @return true if the package should be imported.
-	 */
-	private final synchronized boolean isDynamicallyImported(String pkgname) {
-		if (this instanceof SystemBundleLoader)
-			return false; // system bundle cannot dynamically import
-		// must check for startsWith("java.") to satisfy R3 section 4.7.2
-		if (pkgname.startsWith("java.")) //$NON-NLS-1$
-			return true;
-
-		/* quick shortcut check */
-		if ((loaderFlags & FLAG_HASDYNAMICIMPORTS) == 0)
-			return false;
-
-		/* "*" shortcut */
-		if ((loaderFlags & FLAG_HASDYNAMICEIMPORTALL) != 0)
-			return true;
-
-		/* match against specific names */
-		if (dynamicImportPackages != null)
-			for (int i = 0; i < dynamicImportPackages.length; i++)
-				if (pkgname.equals(dynamicImportPackages[i]))
-					return true;
-
-		/* match against names with trailing wildcards */
-		if (dynamicImportPackageStems != null)
-			for (int i = 0; i < dynamicImportPackageStems.length; i++)
-				if (pkgname.startsWith(dynamicImportPackageStems[i]))
-					return true;
-
-		return false;
-	}
-
-	final void addExportedProvidersFor(String symbolicName, String packageName, ArrayList result, KeyedHashSet visited) {
-		if (!visited.add(bundle))
-			return;
-
-		// See if we locally provide the package.
-		PackageSource local = null;
-		if (isExportedPackage(packageName))
-			local = proxy.getPackageSource(packageName);
-		else if (isSubstitutedExport(packageName)) {
-			result.add(findImportedSource(packageName, visited));
-			return; // should not continue to required bundles in this case
-		}
-		// Must search required bundles that are exported first.
-		if (requiredBundles != null) {
-			int size = reexportTable == null ? 0 : reexportTable.length;
-			int reexportIndex = 0;
-			for (int i = 0; i < requiredBundles.length; i++) {
-				if (local != null) {
-					// always add required bundles first if we locally provide the package
-					// This allows a bundle to provide a package from a required bundle without 
-					// re-exporting the whole required bundle.
-					requiredBundles[i].getBundleLoader().addExportedProvidersFor(symbolicName, packageName, result, visited);
-				} else if (reexportIndex < size && reexportTable[reexportIndex] == i) {
-					reexportIndex++;
-					requiredBundles[i].getBundleLoader().addExportedProvidersFor(symbolicName, packageName, result, visited);
-				}
-			}
-		}
-
-		// now add the locally provided package.
-		if (local != null && local.isFriend(symbolicName))
-			result.add(local);
-	}
-
-	final boolean isExportedPackage(String name) {
-		return exportedPackages.contains(name);
-	}
-
-	final boolean isSubstitutedExport(String name) {
-		return substitutedPackages == null ? false : substitutedPackages.contains(name);
-	}
-
-	private void addDynamicImportPackage(ImportPackageSpecification[] packages) {
-		if (packages == null)
-			return;
-		ArrayList dynamicImports = new ArrayList(packages.length);
-		for (int i = 0; i < packages.length; i++)
-			if (ImportPackageSpecification.RESOLUTION_DYNAMIC.equals(packages[i].getDirective(Constants.RESOLUTION_DIRECTIVE)))
-				dynamicImports.add(packages[i].getName());
-		if (dynamicImports.size() > 0)
-			addDynamicImportPackage((String[]) dynamicImports.toArray(new String[dynamicImports.size()]));
-	}
-
-	/**
-	 * Adds a list of DynamicImport-Package manifest elements to the dynamic
-	 * import tables of this BundleLoader.  Duplicate packages are checked and
-	 * not added again.  This method is not thread safe.  Callers should ensure
-	 * synchronization when calling this method.
-	 * @param packages the DynamicImport-Package elements to add.
-	 */
-	private void addDynamicImportPackage(String[] packages) {
-		if (packages == null)
-			return;
-
-		loaderFlags |= FLAG_HASDYNAMICIMPORTS;
-		int size = packages.length;
-		ArrayList stems;
-		if (dynamicImportPackageStems == null) {
-			stems = new ArrayList(size);
-		} else {
-			stems = new ArrayList(size + dynamicImportPackageStems.length);
-			for (int i = 0; i < dynamicImportPackageStems.length; i++) {
-				stems.add(dynamicImportPackageStems[i]);
-			}
-		}
-
-		ArrayList names;
-		if (dynamicImportPackages == null) {
-			names = new ArrayList(size);
-		} else {
-			names = new ArrayList(size + dynamicImportPackages.length);
-			for (int i = 0; i < dynamicImportPackages.length; i++) {
-				names.add(dynamicImportPackages[i]);
-			}
-		}
-
-		for (int i = 0; i < size; i++) {
-			String name = packages[i];
-			if (isDynamicallyImported(name))
-				continue;
-			if (name.equals("*")) { /* shortcut *///$NON-NLS-1$
-				loaderFlags |= FLAG_HASDYNAMICEIMPORTALL;
-				return;
-			}
-
-			if (name.endsWith(".*")) //$NON-NLS-1$
-				stems.add(name.substring(0, name.length() - 1));
-			else
-				names.add(name);
-		}
-
-		size = stems.size();
-		if (size > 0)
-			dynamicImportPackageStems = (String[]) stems.toArray(new String[size]);
-
-		size = names.size();
-		if (size > 0)
-			dynamicImportPackages = (String[]) names.toArray(new String[size]);
-	}
-
-	/**
-	 * Adds a list of DynamicImport-Package manifest elements to the dynamic
-	 * import tables of this BundleLoader.  Duplicate packages are checked and
-	 * not added again.
-	 * @param packages the DynamicImport-Package elements to add.
-	 */
-	public final synchronized void addDynamicImportPackage(ManifestElement[] packages) {
-		if (packages == null)
-			return;
-		ArrayList dynamicImports = new ArrayList(packages.length);
-		for (int i = 0; i < packages.length; i++)
-			dynamicImports.add(packages[i].getValue());
-		if (dynamicImports.size() > 0)
-			addDynamicImportPackage((String[]) dynamicImports.toArray(new String[dynamicImports.size()]));
-	}
-
-	synchronized public void attachFragment(BundleFragment fragment) throws BundleException {
-		ExportPackageDescription[] exports = proxy.getBundleDescription().getSelectedExports();
-		if (classloader == null) {
-			initializeExports(exports, exportedPackages);
-			return;
-		}
-		String[] classpath = fragment.getBundleData().getClassPath();
-		if (classpath != null)
-			classloader.attachFragment(fragment.getBundleData(), fragment.getProtectionDomain(), classpath);
-		initializeExports(exports, exportedPackages);
-	}
-
-	/*
-	 * Finds a packagesource that is either imported or required from another bundle.
-	 * This will not include an local package source
-	 */
-	private PackageSource findSource(String pkgName) {
-		if (pkgName == null)
-			return null;
-		PackageSource result = findImportedSource(pkgName, null);
-		if (result != null)
-			return result;
-		// Note that dynamic imports are not checked to avoid aggressive wiring (bug 105779)  
-		return findRequiredSource(pkgName, null);
-	}
-
-	private PackageSource findImportedSource(String pkgName, KeyedHashSet visited) {
-		KeyedHashSet imports = getImportedSources(visited);
-		if (imports == null)
-			return null;
-		synchronized (imports) {
-			return (PackageSource) imports.getByKey(pkgName);
-		}
-	}
-
-	private PackageSource findDynamicSource(String pkgName) {
-		if (isDynamicallyImported(pkgName)) {
-			ExportPackageDescription exportPackage = bundle.getFramework().getAdaptor().getState().linkDynamicImport(proxy.getBundleDescription(), pkgName);
-			if (exportPackage != null) {
-				PackageSource source = createExportPackageSource(exportPackage, null);
-				synchronized (this) {
-					if (importedSources == null)
-						importedSources = new KeyedHashSet(false);
-				}
-				synchronized (importedSources) {
-					importedSources.add(source);
-				}
-				return source;
-			}
-		}
-		return null;
-	}
-
-	private PackageSource findRequiredSource(String pkgName, KeyedHashSet visited) {
-		if (requiredBundles == null)
-			return null;
-		synchronized (requiredSources) {
-			PackageSource result = (PackageSource) requiredSources.getByKey(pkgName);
-			if (result != null)
-				return result.isNullSource() ? null : result;
-		}
-		if (visited == null)
-			visited = new KeyedHashSet(false);
-		visited.add(bundle); // always add ourselves so we do not recurse back to ourselves
-		ArrayList result = new ArrayList(3);
-		for (int i = 0; i < requiredBundles.length; i++) {
-			BundleLoader requiredLoader = requiredBundles[i].getBundleLoader();
-			requiredLoader.addExportedProvidersFor(proxy.getSymbolicName(), pkgName, result, visited);
-		}
-		// found some so cache the result for next time and return
-		PackageSource source;
-		if (result.size() == 0) {
-			// did not find it in our required bundles lets record the failure
-			// so we do not have to do the search again for this package.
-			source = NullPackageSource.getNullPackageSource(pkgName);
-		} else if (result.size() == 1) {
-			// if there is just one source, remember just the single source 
-			source = (PackageSource) result.get(0);
-		} else {
-			// if there was more than one source, build a multisource and cache that.
-			PackageSource[] srcs = (PackageSource[]) result.toArray(new PackageSource[result.size()]);
-			source = createMultiSource(pkgName, srcs);
-		}
-		synchronized (requiredSources) {
-			requiredSources.add(source);
-		}
-		return source.isNullSource() ? null : source;
-	}
-
-	/*
-	 * Gets the package source for the pkgName.  This will include the local package source
-	 * if the bundle exports the package.  This is used to compare the PackageSource of a 
-	 * package from two different bundles.
-	 */
-	public final PackageSource getPackageSource(String pkgName) {
-		PackageSource result = findSource(pkgName);
-		if (!isExportedPackage(pkgName))
-			return result;
-		// if the package is exported then we need to get the local source
-		PackageSource localSource = proxy.getPackageSource(pkgName);
-		if (result == null)
-			return localSource;
-		if (localSource == null)
-			return result;
-		return createMultiSource(pkgName, new PackageSource[] {result, localSource});
-	}
-
-	private ClassLoader getParentPrivileged(final BundleClassLoader bcl) {
-		if (System.getSecurityManager() == null)
-			return bcl.getParent();
-
-		return (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return bcl.getParent();
-			}
-		});
-	}
-
-	static final class ClassContext extends SecurityManager {
-		// need to make this method public
-		public Class[] getClassContext() {
-			return super.getClassContext();
-		}
-	}
-
-	/* 
-	 * see bug 121737
-	 * To ensure that we do not enter a deadly embrace between classloader cycles
-	 * we attempt to obtain a global lock before do normal osgi delegation.
-	 * This approach ensures that only one thread has a classloader locked at a time
-	 */
-	private static void lock(Object loader) {
-		Thread currentThread = Thread.currentThread();
-		boolean interrupted = false;
-		synchronized (loader) {
-			if (tryLock(currentThread, loader))
-				return; // this thread has the lock
-
-			do {
-				try {
-					// we wait on the loader object here to release its lock incase we have it.
-					// we do not way to wait while holding this lock because that will cause deadlock
-					loader.wait();
-				} catch (InterruptedException e) {
-					interrupted = true;
-					// we still want to try again
-				}
-			} while (!tryLock(currentThread));
-		}
-		if (interrupted)
-			currentThread.interrupt();
-	}
-
-	/*
-	 * returns true if this thread can obtain the global lock or already has the lock;
-	 * otherwise this loader and thread are added to the waitingList
-	 */
-	private synchronized static boolean tryLock(Thread currentThread, Object loader) {
-		if (lockThread == currentThread) {
-			lockCount++;
-			return true;
-		}
-		if (lockThread == null) {
-			lockCount++;
-			lockThread = currentThread;
-			return true;
-		}
-		waitingList.add(new Object[] {currentThread, loader});
-		return false;
-	}
-
-	/*
-	 * returns true if this thread already has the global lock
-	 */
-	private synchronized static boolean tryLock(Thread currentThread) {
-		if (lockThread == currentThread) {
-			lockCount++;
-			return true;
-		}
-		return false;
-	}
-
-	/*
-	 * unlocks the global lock and notifies the first waiting thread that they
-	 * now have the lock
-	 */
-	private static void unlock() {
-		Thread waitingThread = null;
-		Object loader = null;
-		synchronized (BundleLoader.class) {
-			lockCount--;
-			if (lockCount != 0)
-				return;
-
-			if (waitingList.isEmpty()) {
-				lockThread = null;
-				return;
-			}
-
-			Object[] waiting = (Object[]) waitingList.get(0);
-			waitingThread = (Thread) waiting[0];
-			loader = waiting[1];
-		}
-		synchronized (loader) {
-			synchronized (BundleLoader.class) {
-				lockThread = waitingThread;
-				waitingList.remove(0);
-				loader.notifyAll();
-			}
-		}
-	}
-
-	static public void closeBundleLoader(BundleLoaderProxy proxy) {
-		if (proxy == null)
-			return;
-		// First close the BundleLoader
-		BundleLoader loader = proxy.getBasicBundleLoader();
-		if (loader != null)
-			loader.close();
-		proxy.setStale();
-		// if proxy is not null then make sure to unset user object
-		// associated with the proxy in the state
-		BundleDescription description = proxy.getBundleDescription();
-		description.setUserObject(null);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoaderProxy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoaderProxy.java
deleted file mode 100644
index 6f2e494..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/BundleLoaderProxy.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.util.KeyedHashSet;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.internal.composite.CompositeBase;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.RequiredBundle;
-
-/*
- * The BundleLoaderProxy proxies a BundleLoader object for a Bundle.  This
- * allows for a Bundle's depedencies to be linked without forcing the 
- * creating of the BundleLoader or BundleClassLoader objects.  This class
- * keeps track of the depedencies between the bundles installed in the 
- * Framework.
- */
-public class BundleLoaderProxy implements RequiredBundle {
-	static SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-	// The BundleLoader that this BundleLoaderProxy is managing
-	private BundleLoader loader;
-	// The Bundle that this BundleLoaderProxy is for
-	final private BundleHost bundle;
-	// the BundleDescription for the Bundle
-	final private BundleDescription description;
-	// Indicates if this BundleLoaderProxy is stale; 
-	// this is true when the bundle is updated or uninstalled.
-	private boolean stale = false;
-	// cached of package sources for the bundle
-	final private KeyedHashSet pkgSources;
-
-	public BundleLoaderProxy(BundleHost bundle, BundleDescription description) {
-		this.bundle = bundle;
-		this.description = description;
-		this.pkgSources = new KeyedHashSet(false);
-	}
-
-	public BundleLoader getBundleLoader() {
-		if (System.getSecurityManager() == null)
-			return getBundleLoader0();
-		return (BundleLoader) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return getBundleLoader0();
-			}
-		});
-	}
-
-	synchronized BundleLoader getBundleLoader0() {
-		if (loader != null)
-			return loader;
-		if (bundle.isResolved()) {
-			try {
-				if (bundle.getBundleId() == 0) // this is the system bundle
-					loader = new SystemBundleLoader(bundle, this);
-				else
-					loader = new BundleLoader(bundle, this);
-			} catch (BundleException e) {
-				bundle.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-				return null;
-			}
-		}
-		return loader;
-	}
-
-	public BundleLoader getBasicBundleLoader() {
-		return loader;
-	}
-
-	public AbstractBundle getBundleHost() {
-		return bundle;
-	}
-
-	void setStale() {
-		stale = true;
-	}
-
-	public boolean isStale() {
-		return stale;
-	}
-
-	public String toString() {
-		String symbolicName = bundle.getSymbolicName();
-		StringBuffer sb = new StringBuffer(symbolicName == null ? bundle.getBundleData().getLocation() : symbolicName);
-		sb.append("; ").append(Constants.BUNDLE_VERSION_ATTRIBUTE); //$NON-NLS-1$
-		sb.append("=\"").append(description.getVersion().toString()).append("\""); //$NON-NLS-1$//$NON-NLS-2$
-		return sb.toString();
-	}
-
-	public org.osgi.framework.Bundle getBundle() {
-		if (isStale())
-			return null;
-
-		return bundle;
-	}
-
-	public org.osgi.framework.Bundle[] getRequiringBundles() {
-		if (isStale())
-			return null;
-		// This is VERY slow; but never gets called in regular execution.
-		BundleDescription[] dependents = description.getDependents();
-		if (dependents == null || dependents.length == 0)
-			return new Bundle[0];
-		ArrayList result = new ArrayList(dependents.length);
-		for (int i = 0; i < dependents.length; i++)
-			addRequirers(dependents[i], result);
-		return (Bundle[]) result.toArray(new org.osgi.framework.Bundle[result.size()]);
-	}
-
-	void addRequirers(BundleDescription dependent, ArrayList result) {
-		if (dependent.getHost() != null) // don't look in fragments.
-			return;
-		BundleLoaderProxy dependentProxy = getBundleLoader().getLoaderProxy(dependent);
-		if (dependentProxy == null)
-			return; // bundle must have been uninstalled
-		if (result.contains(dependentProxy.bundle))
-			return; // prevent endless recusion
-		BundleLoader dependentLoader = dependentProxy.getBundleLoader();
-		BundleLoaderProxy[] requiredBundles = dependentLoader.requiredBundles;
-		int[] reexportTable = dependentLoader.reexportTable;
-		if (requiredBundles == null)
-			return;
-		int size = reexportTable == null ? 0 : reexportTable.length;
-		int reexportIndex = 0;
-		for (int i = 0; i < requiredBundles.length; i++) {
-			if (requiredBundles[i] == this) {
-				result.add(dependentProxy.bundle);
-				if (reexportIndex < size && reexportTable[reexportIndex] == i) {
-					reexportIndex++;
-					BundleDescription[] dependents = dependent.getDependents();
-					if (dependents == null)
-						return;
-					for (int j = 0; j < dependents.length; j++)
-						dependentProxy.addRequirers(dependents[j], result);
-				}
-				return;
-			}
-		}
-		return;
-	}
-
-	public String getSymbolicName() {
-		return description.getSymbolicName();
-	}
-
-	public Version getVersion() {
-		return description.getVersion();
-	}
-
-	public boolean isRemovalPending() {
-		return description.isRemovalPending();
-	}
-
-	BundleDescription getBundleDescription() {
-		return description;
-	}
-
-	PackageSource getPackageSource(String pkgName) {
-		// getByKey is called outside of a synch block because we really do not
-		// care too much of duplicates getting created.  Only the first one will
-		// successfully get stored into pkgSources
-		PackageSource pkgSource = (PackageSource) pkgSources.getByKey(pkgName);
-		if (pkgSource == null) {
-			pkgSource = new SingleSourcePackage(pkgName, this);
-			synchronized (pkgSources) {
-				pkgSources.add(pkgSource);
-			}
-		}
-		return pkgSource;
-	}
-
-	public boolean inUse() {
-		return (description.getDependents().length > 0) || ((bundle instanceof CompositeBase) && description.getResolvedImports().length > 0);
-	}
-
-	boolean forceSourceCreation(ExportPackageDescription export) {
-		boolean strict = Constants.STRICT_MODE.equals(secureAction.getProperty(Constants.OSGI_RESOLVER_MODE));
-		return (export.getDirective(Constants.INCLUDE_DIRECTIVE) != null) || (export.getDirective(Constants.EXCLUDE_DIRECTIVE) != null) || (strict && export.getDirective(Constants.FRIENDS_DIRECTIVE) != null);
-	}
-
-	// creates a PackageSource from an ExportPackageDescription.  This is called when initializing
-	// a BundleLoader to ensure that the proper PackageSource gets created and used for
-	// filtered and reexport packages.  The storeSource flag is used by initialize to indicate
-	// that the source for special case package sources (filtered or re-exported should be stored 
-	// in the cache.  if this flag is set then a normal SinglePackageSource will not be created
-	// (i.e. it will be created lazily)
-	public PackageSource createPackageSource(ExportPackageDescription export, boolean storeSource) {
-		PackageSource pkgSource = null;
-
-		// check to see if it is a filtered export
-		String includes = (String) export.getDirective(Constants.INCLUDE_DIRECTIVE);
-		String excludes = (String) export.getDirective(Constants.EXCLUDE_DIRECTIVE);
-		String[] friends = (String[]) export.getDirective(Constants.FRIENDS_DIRECTIVE);
-		if (friends != null) {
-			boolean strict = Constants.STRICT_MODE.equals(secureAction.getProperty(Constants.OSGI_RESOLVER_MODE));
-			if (!strict)
-				friends = null; // do not pay attention to friends if not in strict mode
-		}
-		if (includes != null || excludes != null || friends != null) {
-			pkgSource = new FilteredSourcePackage(export.getName(), this, includes, excludes, friends);
-		}
-
-		if (storeSource) {
-			// if the package source is not null then store the source only if it is not already present;
-			// getByKey is called outside of a synch block because we really do not
-			// care too much of duplicates getting created.  Only the first one will
-			// successfully get stored into pkgSources
-			if (pkgSource != null && pkgSources.getByKey(export.getName()) == null)
-				synchronized (pkgSources) {
-					pkgSources.add(pkgSource);
-				}
-		} else {
-			// we are not storing the special case sources, but pkgSource == null this means this
-			// is a normal package source; get it and return it.
-			if (pkgSource == null) {
-				pkgSource = getPackageSource(export.getName());
-				// the first export cached may not be a simple single source like we need.
-				if (pkgSource.getClass() != SingleSourcePackage.class)
-					return new SingleSourcePackage(export.getName(), this);
-			}
-		}
-
-		return pkgSource;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/FilteredSourcePackage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/FilteredSourcePackage.java
deleted file mode 100644
index f148293..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/FilteredSourcePackage.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader;
-
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.util.ManifestElement;
-
-public class FilteredSourcePackage extends SingleSourcePackage {
-	private static final char ALL = '*';
-	String[] includes;
-	String[] excludes;
-	String[] friends;
-
-	public FilteredSourcePackage(String name, BundleLoaderProxy supplier, String includes, String excludes, String[] friends) {
-		super(name, supplier);
-		if (includes != null)
-			this.includes = ManifestElement.getArrayFromList(includes);
-		if (excludes != null)
-			this.excludes = ManifestElement.getArrayFromList(excludes);
-		this.friends = friends;
-	}
-
-	public boolean isFriend(String symbolicName) {
-		if (friends == null)
-			return true;
-		for (int i = 0; i < friends.length; i++)
-			if (friends[i].equals(symbolicName))
-				return true;
-		return false;
-	}
-
-	public URL getResource(String name) {
-		if (isFiltered(name, getId()))
-			return null;
-		return super.getResource(name);
-	}
-
-	public Enumeration getResources(String name) {
-		if (isFiltered(name, getId()))
-			return null;
-		return super.getResources(name);
-	}
-
-	public Class loadClass(String name) throws ClassNotFoundException {
-		if (isFiltered(name, getId()))
-			return null;
-		return super.loadClass(name);
-	}
-
-	private boolean isFiltered(String name, String pkgName) {
-		String lastName = getName(name, pkgName);
-		return !isIncluded(lastName) || isExcluded(lastName);
-	}
-
-	private String getName(String name, String pkgName) {
-		if (!BundleLoader.DEFAULT_PACKAGE.equals(pkgName) && pkgName.length() + 1 <= name.length())
-			return name.substring(pkgName.length() + 1);
-		return name;
-	}
-
-	private boolean isIncluded(String name) {
-		if (includes == null)
-			return true;
-		return isInList(name, includes);
-	}
-
-	private boolean isExcluded(String name) {
-		if (excludes == null)
-			return false;
-		return isInList(name, excludes);
-	}
-
-	private boolean isInList(String name, String[] list) {
-		for (int i = 0; i < list.length; i++) {
-			int len = list[i].length();
-			if (len == 0)
-				continue;
-			if (list[i].charAt(0) == ALL && len == 1)
-				return true; // handles "*" wild card
-			if (list[i].charAt(len - 1) == ALL)
-				if (name.startsWith(list[i].substring(0, len - 1)))
-					return true;
-			if (name.equals(list[i]))
-				return true;
-
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/MultiSourcePackage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/MultiSourcePackage.java
deleted file mode 100644
index 3155fa5..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/MultiSourcePackage.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader;
-
-import java.net.URL;
-import java.util.Enumeration;
-
-public class MultiSourcePackage extends PackageSource {
-	SingleSourcePackage[] suppliers;
-
-	MultiSourcePackage(String id, SingleSourcePackage[] suppliers) {
-		super(id);
-		this.suppliers = suppliers;
-	}
-
-	public SingleSourcePackage[] getSuppliers() {
-		return suppliers;
-	}
-
-	public Class loadClass(String name) throws ClassNotFoundException {
-		Class result = null;
-		for (int i = 0; i < suppliers.length; i++) {
-			result = suppliers[i].loadClass(name);
-			if (result != null)
-				return result;
-		}
-		return result;
-	}
-
-	public URL getResource(String name) {
-		URL result = null;
-		for (int i = 0; i < suppliers.length; i++) {
-			result = suppliers[i].getResource(name);
-			if (result != null)
-				return result;
-		}
-		return result;
-	}
-
-	public Enumeration getResources(String name) {
-		Enumeration results = null;
-		for (int i = 0; i < suppliers.length; i++)
-			results = BundleLoader.compoundEnumerations(results, suppliers[i].getResources(name));
-		return results;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/NullPackageSource.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/NullPackageSource.java
deleted file mode 100644
index b70b483..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/NullPackageSource.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader;
-
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.util.KeyedHashSet;
-
-/**
- * This class is used to optimize finding provided-packages for a bundle.
- * If the package cannot be found in a list of required bundles then this class
- * is used to cache a null package source so that the search does not need to
- * be done again.
- */
-public class NullPackageSource extends PackageSource {
-	static KeyedHashSet sources;
-
-	private NullPackageSource(String name) {
-		super(name);
-	}
-
-	public SingleSourcePackage[] getSuppliers() {
-		return null;
-	}
-
-	public boolean isNullSource() {
-		return true;
-	}
-
-	public String toString() {
-		return id + " -> null"; //$NON-NLS-1$
-	}
-
-	public Class loadClass(String name) {
-		return null;
-	}
-
-	public URL getResource(String name) {
-		return null;
-	}
-
-	public Enumeration getResources(String name) {
-		return null;
-	}
-
-	public static synchronized NullPackageSource getNullPackageSource(String name) {
-		if (sources == null)
-			sources = new KeyedHashSet();
-		NullPackageSource result = (NullPackageSource) sources.getByKey(name);
-		if (result != null)
-			return result;
-		result = new NullPackageSource(name);
-		sources.add(result);
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/PackageSource.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/PackageSource.java
deleted file mode 100644
index 6b4eaeb..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/PackageSource.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.util.KeyedElement;
-
-public abstract class PackageSource implements KeyedElement {
-	protected String id;
-
-	public PackageSource(String id) {
-		// others depend on the id being interned; see SingleSourcePackage.equals
-		this.id = id.intern();
-	}
-
-	public String getId() {
-		return id;
-	}
-
-	public abstract SingleSourcePackage[] getSuppliers();
-
-	public boolean compare(KeyedElement other) {
-		return id.equals(((PackageSource) other).getId());
-	}
-
-	public int getKeyHashCode() {
-		return id.hashCode();
-	}
-
-	public Object getKey() {
-		return id;
-	}
-
-	public boolean isNullSource() {
-		return false;
-	}
-
-	public boolean isFriend(String symbolicName) {
-		return true;
-	}
-
-	public abstract Class loadClass(String name) throws ClassNotFoundException;
-
-	public abstract URL getResource(String name);
-
-	public abstract Enumeration getResources(String name) throws IOException;
-
-	//TODO See how this relates with FilteredSourcePackage. Overwriting or doing a double dispatch might be good.
-	// This is intentionally lenient; we don't force all suppliers to match (only one)
-	// it is better to get class cast exceptions in split package cases than miss an event
-	public boolean hasCommonSource(PackageSource other) {
-		if (other == null)
-			return false;
-		if (this == other)
-			return true;
-		SingleSourcePackage[] suppliers1 = getSuppliers();
-		SingleSourcePackage[] suppliers2 = other.getSuppliers();
-		if (suppliers1 == null || suppliers2 == null)
-			return false;
-		// This will return true if the specified source has at least one
-		// of the suppliers of this source.
-		for (int i = 0; i < suppliers1.length; i++)
-			for (int j = 0; j < suppliers2.length; j++)
-				if (suppliers2[j].equals(suppliers1[i]))
-					return true;
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SingleSourcePackage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SingleSourcePackage.java
deleted file mode 100644
index 7079bb2..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SingleSourcePackage.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader;
-
-import java.net.URL;
-import java.util.Enumeration;
-
-public class SingleSourcePackage extends PackageSource {
-	BundleLoaderProxy supplier;
-
-	public SingleSourcePackage(String id, BundleLoaderProxy supplier) {
-		super(id);
-		this.supplier = supplier;
-	}
-
-	public SingleSourcePackage[] getSuppliers() {
-		return new SingleSourcePackage[] {this};
-	}
-
-	public String toString() {
-		return id + " -> " + supplier; //$NON-NLS-1$
-	}
-
-	public Class loadClass(String name) throws ClassNotFoundException {
-		return supplier.getBundleLoader().findLocalClass(name);
-	}
-
-	public URL getResource(String name) {
-		return supplier.getBundleLoader().findLocalResource(name);
-	}
-
-	public Enumeration getResources(String name) {
-		return supplier.getBundleLoader().findLocalResources(name);
-	}
-
-	public boolean equals(Object source) {
-		if (this == source)
-			return true;
-		if (!(source instanceof SingleSourcePackage))
-			return false;
-		SingleSourcePackage singleSource = (SingleSourcePackage) source;
-		// we do an == test on id because the id is interned in the constructor of PackageSource
-		return supplier == singleSource.supplier && id == singleSource.getId();
-	}
-
-	public int hashCode() {
-		final int prime = 31;
-		int result = 1;
-		result = prime * result + id.hashCode();
-		result = prime * result + supplier.hashCode();
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SystemBundleLoader.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SystemBundleLoader.java
deleted file mode 100644
index 0408149..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/SystemBundleLoader.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.loader;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.ProtectionDomain;
-import java.util.Enumeration;
-import java.util.HashSet;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.internal.core.BundleFragment;
-import org.eclipse.osgi.framework.internal.core.BundleHost;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-/**
- * The System Bundle's BundleLoader.  This BundleLoader is used by ImportClassLoaders
- * to load a resource that is exported by the System Bundle.
- */
-public class SystemBundleLoader extends BundleLoader {
-	public static final String EQUINOX_EE = "x-equinox-ee"; //$NON-NLS-1$
-	private final ClassLoader classLoader;
-	private final HashSet eePackages;
-	private final HashSet extPackages;
-	private final ClassLoader extClassLoader;
-
-	/**
-	 * @param bundle The system bundle.
-	 * @param proxy The BundleLoaderProxy for the system bundle
-	 * @throws BundleException On any error.
-	 */
-	protected SystemBundleLoader(BundleHost bundle, BundleLoaderProxy proxy) throws BundleException {
-		super(bundle, proxy);
-		ExportPackageDescription[] exports = proxy.getBundleDescription().getSelectedExports();
-		if (exports == null || exports.length == 0)
-			eePackages = null;
-		else {
-			eePackages = new HashSet(exports.length);
-			for (int i = 0; i < exports.length; i++)
-				if (((Integer) exports[i].getDirective(EQUINOX_EE)).intValue() >= 0)
-					eePackages.add(exports[i].getName());
-		}
-		this.classLoader = getClass().getClassLoader();
-		extPackages = new HashSet(0); // not common; start with 0
-		BundleFragment[] fragments = bundle.getFragments();
-		if (fragments != null)
-			for (int i = 0; i < fragments.length; i++)
-				addExtPackages(fragments[i]);
-		ClassLoader extCL = ClassLoader.getSystemClassLoader();
-		if (extCL == null)
-			extClassLoader = null;
-		else {
-			while (extCL.getParent() != null)
-				extCL = extCL.getParent();
-			// make sure extCL is not already on the parent chain of the system classloader
-			boolean found = false;
-			ClassLoader systemExtCL = this.classLoader;
-			while (systemExtCL.getParent() != null && !found) {
-				if (systemExtCL.getParent() == extCL)
-					found = true;
-				else
-					systemExtCL = systemExtCL.getParent();
-			}
-			extClassLoader = found ? null : extCL;
-		}
-	}
-
-	private void addExtPackages(BundleFragment fragment) {
-		if ((fragment.getBundleData().getType() & BundleData.TYPE_EXTCLASSPATH_EXTENSION) == 0)
-			return;
-		ExportPackageDescription[] extExports = fragment.getBundleDescription().getExportPackages();
-		for (int j = 0; j < extExports.length; j++)
-			extPackages.add(extExports[j].getName());
-	}
-
-	synchronized public void attachFragment(BundleFragment fragment) throws BundleException {
-		super.attachFragment(fragment);
-		synchronized (extPackages) {
-			addExtPackages(fragment);
-		}
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the class.
-	 * This method never gets called because there is no BundleClassLoader for the framework.
-	 */
-	public Class findClass(String name) throws ClassNotFoundException {
-		Class result = findLocalClass(name);
-		if (result == null)
-			throw new ClassNotFoundException(name);
-		return result;
-	}
-
-	/**
-	 * This method will always return null.
-	 * This method never gets called because there is no BundleClassLoader for the framework.
-	 */
-	public String findLibrary(String name) {
-		return null;
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the class. 
-	 */
-	Class findLocalClass(String name) {
-		try {
-			return classLoader.loadClass(name);
-		} catch (ClassNotFoundException e) {
-			if (extClassLoader != null)
-				synchronized (extPackages) {
-					if (extPackages.size() > 0 && extPackages.contains(BundleLoader.getPackageName(name)))
-						try {
-							return extClassLoader.loadClass(name);
-						} catch (ClassNotFoundException e2) {
-							return null;
-						}
-				}
-		}
-		return null;
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 */
-	URL findLocalResource(String name) {
-		URL result = classLoader.getResource(name);
-		if (result == null && extClassLoader != null)
-			synchronized (extPackages) {
-				if (extPackages.size() > 0 && extPackages.contains(BundleLoader.getResourcePackageName(name)))
-					result = extClassLoader.getResource(name);
-			}
-		return result;
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 */
-	Enumeration findLocalResources(String name) {
-		Enumeration result = null;
-		try {
-			result = classLoader.getResources(name);
-		} catch (IOException e) {
-			// do nothing
-		}
-		if ((result == null || !result.hasMoreElements()) && extClassLoader != null)
-			synchronized (extPackages) {
-				if (extPackages.size() > 0 && extPackages.contains(BundleLoader.getResourcePackageName(name)))
-					try {
-						result = extClassLoader.getResources(name);
-					} catch (IOException e) {
-						// do nothing
-					}
-			}
-		return result;
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 * This method never gets called because there is no BundleClassLoader for the framework.
-	 */
-	public URL findResource(String name) {
-		return findLocalResource(name);
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 * This method never gets called because there is no BundleClassLoader for the framework.
-	 */
-	public Enumeration findResources(String name) throws IOException {
-		return findLocalResources(name);
-	}
-
-	/**
-	 * Do nothing on a close.
-	 */
-	protected void close() {
-		// Do nothing.
-	}
-
-	public boolean isEEPackage(String pkgName) {
-		return eePackages.contains(pkgName);
-	}
-
-	BundleClassLoader createBCL(BundleProtectionDomain pd, String[] cp) {
-		return new BundleClassLoader() {
-
-			public Bundle getBundle() {
-				return SystemBundleLoader.this.getBundle();
-			}
-
-			public Class loadClass(String name) throws ClassNotFoundException {
-				return SystemBundleLoader.this.loadClass(name);
-			}
-
-			public void initialize() {
-				// nothing
-			}
-
-			public Enumeration getResources(String name) throws IOException {
-				return findLocalResources(name);
-			}
-
-			public URL getResource(String name) {
-				return SystemBundleLoader.this.findLocalResource(name);
-			}
-
-			public ClassLoader getParent() {
-				return SystemBundleLoader.this.classLoader.getParent();
-			}
-
-			public ClassLoaderDelegate getDelegate() {
-				return SystemBundleLoader.this;
-			}
-
-			public Enumeration findLocalResources(String resource) {
-				return SystemBundleLoader.this.findLocalResources(resource);
-			}
-
-			public URL findLocalResource(String resource) {
-				return getResource(resource);
-			}
-
-			public Class findLocalClass(String classname) throws ClassNotFoundException {
-				return SystemBundleLoader.this.findLocalClass(classname);
-			}
-
-			public void close() {
-				// nothing
-			}
-
-			public void attachFragment(BundleData bundledata, ProtectionDomain domain, String[] classpath) {
-				// nothing
-			}
-		};
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/DependentPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/DependentPolicy.java
deleted file mode 100644
index 85240f2..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/DependentPolicy.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.loader.buddy;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-
-/**
- * DependentPolicy is an implementation of a buddy policy. 
- * It is responsible for looking up a class in the dependents of the bundle
- * to which this policy is attached to.
- */
-public class DependentPolicy implements IBuddyPolicy {
-	BundleLoader buddyRequester;
-	int lastDependentOfAdded = -1; //remember the index of the bundle for which we last added the dependent
-	List allDependents = null; //the list of all dependents known so far
-
-	public DependentPolicy(BundleLoader requester) {
-		buddyRequester = requester;
-
-		//Initialize with the first level of dependent the list
-		allDependents = new ArrayList();
-		basicAddImmediateDependents(buddyRequester.getBundle().getBundleDescription());
-		//If there is no dependent, reset to null
-		if (allDependents.size() == 0)
-			allDependents = null;
-	}
-
-	public Class loadClass(String name) {
-		if (allDependents == null)
-			return null;
-
-		Class result = null;
-		//size may change, so we must check it every time
-		for (int i = 0; i < allDependents.size() && result == null; i++) {
-			BundleDescription searchedBundle = (BundleDescription) allDependents.get(i);
-			try {
-				BundleLoaderProxy proxy = buddyRequester.getLoaderProxy(searchedBundle);
-				if (proxy == null)
-					continue;
-				result = proxy.getBundleLoader().findClass(name);
-			} catch (ClassNotFoundException e) {
-				if (result == null)
-					addDependent(i, searchedBundle);
-			}
-		}
-		return result;
-	}
-
-	private synchronized void addDependent(int i, BundleDescription searchedBundle) {
-		if (i > lastDependentOfAdded) {
-			lastDependentOfAdded = i;
-			basicAddImmediateDependents(searchedBundle);
-		}
-	}
-
-	public URL loadResource(String name) {
-		if (allDependents == null)
-			return null;
-
-		URL result = null;
-		//size may change, so we must check it every time
-		for (int i = 0; i < allDependents.size() && result == null; i++) {
-			BundleDescription searchedBundle = (BundleDescription) allDependents.get(i);
-			BundleLoaderProxy proxy = buddyRequester.getLoaderProxy(searchedBundle);
-			if (proxy == null)
-				continue;
-			result = proxy.getBundleLoader().findResource(name);
-			if (result == null) {
-				addDependent(i, searchedBundle);
-			}
-		}
-		return result;
-	}
-
-	public Enumeration loadResources(String name) {
-		if (allDependents == null)
-			return null;
-
-		Enumeration results = null;
-		//size may change, so we must check it every time
-		for (int i = 0; i < allDependents.size(); i++) {
-			BundleDescription searchedBundle = (BundleDescription) allDependents.get(i);
-			try {
-				BundleLoaderProxy proxy = buddyRequester.getLoaderProxy(searchedBundle);
-				if (proxy == null)
-					continue;
-				results = BundleLoader.compoundEnumerations(results, proxy.getBundleLoader().findResources(name));
-				addDependent(i, searchedBundle);
-			} catch (IOException e) {
-				//Ignore and keep looking
-			}
-		}
-		return results;
-	}
-
-	private void basicAddImmediateDependents(BundleDescription root) {
-		BundleDescription[] dependents = root.getDependents();
-		for (int i = 0; i < dependents.length; i++) {
-			BundleDescription toAdd = dependents[i];
-			if (toAdd.getHost() == null && !allDependents.contains(toAdd)) {
-				allDependents.add(toAdd);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/GlobalPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/GlobalPolicy.java
deleted file mode 100644
index e1dc69b..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/GlobalPolicy.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader.buddy;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.osgi.service.packageadmin.ExportedPackage;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-/**
- * Global policy is an implementation of a buddy policy. It is responsible
- * for looking up a class within the global set of exported classes. If multiple
- * version of the same package are exported in the system, the exported package
- * with the highest version will be returned.
- */
-public class GlobalPolicy implements IBuddyPolicy {
-	private PackageAdmin admin;
-
-	public GlobalPolicy(PackageAdmin admin) {
-		this.admin = admin;
-	}
-
-	public Class loadClass(String name) {
-		ExportedPackage pkg = admin.getExportedPackage(BundleLoader.getPackageName(name));
-		if (pkg == null)
-			return null;
-		try {
-			return pkg.getExportingBundle().loadClass(name);
-		} catch (ClassNotFoundException e) {
-			return null;
-		}
-	}
-
-	public URL loadResource(String name) {
-		//get all exported packages that match the resource's package
-		ExportedPackage pkg = admin.getExportedPackage(BundleLoader.getResourcePackageName(name));
-		if (pkg == null)
-			return null;
-		return pkg.getExportingBundle().getResource(name);
-	}
-
-	public Enumeration loadResources(String name) {
-		//get all exported packages that match the resource's package
-		ExportedPackage[] pkgs = admin.getExportedPackages(BundleLoader.getResourcePackageName(name));
-		if (pkgs == null || pkgs.length == 0)
-			return null;
-
-		//get all matching resources for each package
-		Enumeration results = null;
-		for (int i = 0; i < pkgs.length; i++) {
-			try {
-				results = BundleLoader.compoundEnumerations(results, pkgs[i].getExportingBundle().getResources(name));
-			} catch (IOException e) {
-				//ignore IO problems and try next package
-			}
-		}
-
-		return results;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/IBuddyPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/IBuddyPolicy.java
deleted file mode 100644
index 3e513f6..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/IBuddyPolicy.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader.buddy;
-
-import java.net.URL;
-import java.util.Enumeration;
-
-public interface IBuddyPolicy {
-	public Class loadClass(String name);
-
-	public URL loadResource(String name);
-
-	public Enumeration loadResources(String name);
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/PolicyHandler.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/PolicyHandler.java
deleted file mode 100644
index 6ade20e..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/PolicyHandler.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader.buddy;
-
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-
-public class PolicyHandler implements SynchronousBundleListener {
-	//Key for the framework buddies
-	private final static String DEPENDENT_POLICY = "dependent"; //$NON-NLS-1$
-	private final static String GLOBAL_POLICY = "global"; //$NON-NLS-1$
-	private final static String REGISTERED_POLICY = "registered"; //$NON-NLS-1$
-	private final static String APP_POLICY = "app"; //$NON-NLS-1$
-	private final static String EXT_POLICY = "ext"; //$NON-NLS-1$
-	private final static String BOOT_POLICY = "boot"; //$NON-NLS-1$
-	private final static String PARENT_POLICY = "parent"; //$NON-NLS-1$
-
-	//The loader to which this policy is attached.
-	private final BundleLoader policedLoader;
-	//List of the policies as well as cache for the one that have been created. The size of this array never changes over time. This is why the synchronization is not done when iterating over it.
-	private volatile Object[] policies = null;
-
-	//Support to cut class / resource loading cycles in the context of one thread. The contained object is a set of classname
-	private final ThreadLocal beingLoaded;
-	private final PackageAdmin packageAdmin;
-
-	public PolicyHandler(BundleLoader loader, String buddyList, PackageAdmin packageAdmin) {
-		policedLoader = loader;
-		policies = getArrayFromList(buddyList);
-		beingLoaded = new ThreadLocal();
-		this.packageAdmin = packageAdmin;
-	}
-
-	static Object[] getArrayFromList(String stringList) {
-		if (stringList == null || stringList.trim().equals("")) //$NON-NLS-1$
-			return null;
-		Vector list = new Vector();
-		StringTokenizer tokens = new StringTokenizer(stringList, ","); //$NON-NLS-1$
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			if (!token.equals("")) //$NON-NLS-1$
-				list.addElement(token);
-		}
-		return list.isEmpty() ? new Object[0] : (Object[]) list.toArray(new Object[list.size()]);
-	}
-
-	private IBuddyPolicy getPolicyImplementation(Object[] policiesSnapshot, int policyOrder) {
-		synchronized (policiesSnapshot) {
-			if (policyOrder >= policiesSnapshot.length)
-				return null;
-			if (policiesSnapshot[policyOrder] instanceof String) {
-				String buddyName = (String) policiesSnapshot[policyOrder];
-
-				if (REGISTERED_POLICY.equals(buddyName)) {
-					policiesSnapshot[policyOrder] = new RegisteredPolicy(policedLoader);
-					return (IBuddyPolicy) policiesSnapshot[policyOrder];
-				}
-				if (BOOT_POLICY.equals(buddyName)) {
-					policiesSnapshot[policyOrder] = SystemPolicy.getInstance(SystemPolicy.BOOT);
-					return (IBuddyPolicy) policiesSnapshot[policyOrder];
-				}
-				if (APP_POLICY.equals(buddyName)) {
-					policiesSnapshot[policyOrder] = SystemPolicy.getInstance(SystemPolicy.APP);
-					return (IBuddyPolicy) policiesSnapshot[policyOrder];
-				}
-				if (EXT_POLICY.equals(buddyName)) {
-					policiesSnapshot[policyOrder] = SystemPolicy.getInstance(SystemPolicy.EXT);
-					return (IBuddyPolicy) policiesSnapshot[policyOrder];
-				}
-				if (DEPENDENT_POLICY.equals(buddyName)) {
-					policiesSnapshot[policyOrder] = new DependentPolicy(policedLoader);
-					return (IBuddyPolicy) policiesSnapshot[policyOrder];
-				}
-				if (GLOBAL_POLICY.equals(buddyName)) {
-					policiesSnapshot[policyOrder] = new GlobalPolicy(packageAdmin);
-					return (IBuddyPolicy) policiesSnapshot[policyOrder];
-				}
-				if (PARENT_POLICY.equals(buddyName)) {
-					policiesSnapshot[policyOrder] = new SystemPolicy(policedLoader.getParentClassLoader());
-					return (IBuddyPolicy) policiesSnapshot[policyOrder];
-				}
-
-				//			//Buddy policy can be provided by service implementations
-				//			BundleContext fwkCtx = policedLoader.bundle.framework.systemBundle.context;
-				//			ServiceReference[] matchingBuddies = null;
-				//			try {
-				//				matchingBuddies = fwkCtx.getAllServiceReferences(IBuddyPolicy.class.getName(), "buddyName=" + buddyName);
-				//			} catch (InvalidSyntaxException e) {
-				//				//The filter is valid
-				//			}
-				//			if (matchingBuddies == null)
-				//				return new IBuddyPolicy() {
-				//					public Class loadClass(String name) {
-				//						return null;
-				//					}
-				//
-				//					public URL loadResource(String name) {
-				//						return null;
-				//					}
-				//
-				//					public Enumeration loadResources(String name) {
-				//						return null;
-				//					}
-				//				};
-				//
-				//			//The policies loaded through service are not cached
-				//			return ((IBuddyPolicy) fwkCtx.getService(matchingBuddies[0]));
-			}
-			return (IBuddyPolicy) policiesSnapshot[policyOrder];
-		}
-	}
-
-	public Class doBuddyClassLoading(String name) {
-		if (startLoading(name) == false)
-			return null;
-
-		Class result = null;
-		Object[] policiesSnapshot = policies;
-		int policyCount = (policiesSnapshot == null) ? 0 : policiesSnapshot.length;
-		for (int i = 0; i < policyCount && result == null; i++) {
-			IBuddyPolicy policy = getPolicyImplementation(policiesSnapshot, i);
-			if (policy != null)
-				result = policy.loadClass(name);
-		}
-		stopLoading(name);
-		return result;
-	}
-
-	public URL doBuddyResourceLoading(String name) {
-		if (startLoading(name) == false)
-			return null;
-
-		URL result = null;
-		Object[] policiesSnapshot = policies;
-		int policyCount = (policiesSnapshot == null) ? 0 : policiesSnapshot.length;
-		for (int i = 0; i < policyCount && result == null; i++) {
-			IBuddyPolicy policy = getPolicyImplementation(policiesSnapshot, i);
-			if (policy != null)
-				result = policy.loadResource(name);
-		}
-		stopLoading(name);
-		return result;
-	}
-
-	public Enumeration doBuddyResourcesLoading(String name) {
-		if (startLoading(name) == false)
-			return null;
-
-		Vector results = null;
-		Object[] policiesSnapshot = policies;
-		int policyCount = (policiesSnapshot == null) ? 0 : policiesSnapshot.length;
-		for (int i = 0; i < policyCount; i++) {
-			IBuddyPolicy policy = getPolicyImplementation(policiesSnapshot, i);
-			if (policy == null)
-				continue;
-			Enumeration result = policy.loadResources(name);
-			if (result != null) {
-				if (results == null)
-					results = new Vector(policyCount);
-				while (result.hasMoreElements()) {
-					Object url = result.nextElement();
-					if (!results.contains(url)) //only add if not already added 
-						results.add(url);
-				}
-			}
-		}
-		stopLoading(name);
-		return results == null || results.isEmpty() ? null : results.elements();
-	}
-
-	private boolean startLoading(String name) {
-		Set classesAndResources = (Set) beingLoaded.get();
-		if (classesAndResources != null && classesAndResources.contains(name))
-			return false;
-
-		if (classesAndResources == null) {
-			classesAndResources = new HashSet(3);
-			beingLoaded.set(classesAndResources);
-		}
-		classesAndResources.add(name);
-		return true;
-	}
-
-	private void stopLoading(String name) {
-		((Set) beingLoaded.get()).remove(name);
-	}
-
-	public void open(BundleContext context) {
-		context.addBundleListener(this);
-	}
-
-	public void close(BundleContext context) {
-		context.removeBundleListener(this);
-	}
-
-	public void bundleChanged(BundleEvent event) {
-		if ((event.getType() & (BundleEvent.RESOLVED | BundleEvent.UNRESOLVED)) == 0)
-			return;
-		// reinitialize the policies
-		try {
-			String list = (String) policedLoader.getBundle().getBundleData().getManifest().get(Constants.BUDDY_LOADER);
-			policies = getArrayFromList(list);
-		} catch (BundleException e) {
-			//Ignore
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/RegisteredPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/RegisteredPolicy.java
deleted file mode 100644
index 9623081..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/RegisteredPolicy.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader.buddy;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.Iterator;
-import org.eclipse.osgi.framework.internal.core.AbstractBundle;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.BundleException;
-
-/**
- *Registered policy is an implementation of a buddy policy. 
- * It is responsible for looking up a class in the bundles (registrant) that declare interest in the bundle that require the buddy loading.
- * Note that the registrants must have a direct dependency on the bundle needing buddy.
- */
-public class RegisteredPolicy extends DependentPolicy {
-
-	public RegisteredPolicy(BundleLoader requester) {
-		super(requester);
-
-		//Filter the dependents;
-		if (allDependents == null)
-			return;
-
-		for (Iterator iter = allDependents.iterator(); iter.hasNext();) {
-			BundleLoaderProxy proxy = buddyRequester.getLoaderProxy((BundleDescription) iter.next());
-			if (proxy == null)
-				iter.remove();
-
-			try {
-				String[] allContributions = ManifestElement.getArrayFromList((String) ((AbstractBundle) proxy.getBundle()).getBundleData().getManifest().get(Constants.REGISTERED_POLICY));
-				if (allContributions == null) {
-					iter.remove();
-					continue;
-				}
-				boolean contributes = false;
-				for (int j = 0; j < allContributions.length && contributes == false; j++) {
-					if (allContributions[j].equals(buddyRequester.getBundle().getSymbolicName()))
-						contributes = true;
-				}
-				if (!contributes)
-					iter.remove();
-
-			} catch (BundleException e) {
-				iter.remove();
-			}
-		}
-
-		//After the filtering, if nothing is left then null out the variable for optimization
-		if (allDependents.size() == 0)
-			allDependents = null;
-	}
-
-	public Class loadClass(String name) {
-		if (allDependents == null)
-			return null;
-
-		Class result = null;
-		int size = allDependents.size();
-		for (int i = 0; i < size && result == null; i++) {
-			try {
-				BundleLoaderProxy proxy = buddyRequester.getLoaderProxy((BundleDescription) allDependents.get(i));
-				if (proxy == null)
-					continue;
-				result = proxy.getBundleLoader().findClass(name);
-			} catch (ClassNotFoundException e) {
-				//Nothing to do, just keep looking
-				continue;
-			}
-		}
-		return result;
-	}
-
-	public URL loadResource(String name) {
-		if (allDependents == null)
-			return null;
-
-		URL result = null;
-		int size = allDependents.size();
-		for (int i = 0; i < size && result == null; i++) {
-			BundleLoaderProxy proxy = buddyRequester.getLoaderProxy((BundleDescription) allDependents.get(i));
-			if (proxy == null)
-				continue;
-			result = proxy.getBundleLoader().findResource(name);
-		}
-		return result;
-	}
-
-	public Enumeration loadResources(String name) {
-		if (allDependents == null)
-			return null;
-
-		Enumeration results = null;
-		int size = allDependents.size();
-		for (int i = 0; i < size; i++) {
-			try {
-				BundleLoaderProxy proxy = buddyRequester.getLoaderProxy((BundleDescription) allDependents.get(i));
-				if (proxy == null)
-					continue;
-				results = BundleLoader.compoundEnumerations(results, proxy.getBundleLoader().findResources(name));
-			} catch (IOException e) {
-				//Ignore and keep looking
-			}
-		}
-		return results;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/SystemPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/SystemPolicy.java
deleted file mode 100644
index 04d12f1..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/loader/buddy/SystemPolicy.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.loader.buddy;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Enumeration;
-
-public class SystemPolicy implements IBuddyPolicy {
-
-	private static class ParentClassLoader extends ClassLoader {
-		protected ParentClassLoader() {
-			super(Object.class.getClassLoader());
-		}
-	}
-
-	public static final byte BOOT = 0;
-	public static final byte EXT = 1;
-	public static final byte APP = 2;
-
-	private static SystemPolicy[] instances = new SystemPolicy[3];
-
-	private ClassLoader classLoader;
-
-	public static SystemPolicy getInstance(final byte type) {
-		if (instances[type] == null) {
-			instances[type] = new SystemPolicy();
-			instances[type].classLoader = (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					return createClassLoader(type);
-				}
-			});
-		}
-		return instances[type];
-	}
-
-	public SystemPolicy() {
-		//Nothing to do
-	}
-
-	public SystemPolicy(ClassLoader parent) {
-		classLoader = parent;
-	}
-
-	static ClassLoader createClassLoader(byte type) {
-		switch (type) {
-			case APP :
-				if (ClassLoader.getSystemClassLoader() != null)
-					return ClassLoader.getSystemClassLoader();
-				return new ParentClassLoader();
-
-			case BOOT :
-				return new ParentClassLoader();
-
-			case EXT :
-				if (ClassLoader.getSystemClassLoader() != null)
-					return ClassLoader.getSystemClassLoader().getParent();
-				return new ParentClassLoader();
-		}
-		return null;
-	}
-
-	public Class loadClass(String name) {
-		try {
-			return classLoader.loadClass(name);
-		} catch (ClassNotFoundException e) {
-			return null;
-		}
-	}
-
-	public URL loadResource(String name) {
-		return classLoader.getResource(name);
-	}
-
-	public Enumeration loadResources(String name) {
-		try {
-			return classLoader.getResources(name);
-		} catch (IOException e) {
-			return null;
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/BundlePermissions.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/BundlePermissions.java
deleted file mode 100644
index 659410a..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/BundlePermissions.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-import org.osgi.framework.Bundle;
-
-public final class BundlePermissions extends PermissionCollection {
-	private static final long serialVersionUID = -5443618108312606612L;
-
-	// Note that this forces the Enumeration inner class to be loaded as soon as possible (see bug 119069)  
-	static final Enumeration EMPTY_ENUMERATION = new Enumeration() {
-		public boolean hasMoreElements() {
-			return false;
-		}
-
-		public Object nextElement() {
-			throw new NoSuchElementException();
-		}
-	};
-
-	private final Bundle bundle;
-	private final SecurityAdmin securityAdmin;
-	private final PermissionInfoCollection impliedPermissions;
-	private final PermissionInfoCollection restrictedPermissions;
-
-	public BundlePermissions(Bundle bundle, SecurityAdmin securityAdmin, PermissionInfoCollection impliedPermissions, PermissionInfoCollection restrictedPermissions) {
-		this.bundle = bundle;
-		this.securityAdmin = securityAdmin;
-		this.impliedPermissions = impliedPermissions;
-		this.restrictedPermissions = restrictedPermissions;
-		setReadOnly(); // collections are managed with ConditionalPermissionAdmin
-	}
-
-	public void add(Permission permission) {
-		throw new SecurityException();
-	}
-
-	public Enumeration elements() {
-		// TODO return an empty enumeration for now; 
-		// It does not seem possible to do this properly with multiple exports and conditional permissions.
-		// When looking to fix this be sure the Enumeration class is loaded as soon as possible (see bug 119069)
-		return EMPTY_ENUMERATION;
-	}
-
-	public boolean implies(Permission permission) {
-		// first check implied permissions
-		if ((impliedPermissions != null) && impliedPermissions.implies(permission))
-			return true;
-		// We must be allowed by the restricted permissions to have any hope of passing the check
-		if ((restrictedPermissions != null) && !restrictedPermissions.implies(permission))
-			return false;
-		return securityAdmin.checkPermission(permission, this);
-	}
-
-	public Bundle getBundle() {
-		return bundle;
-	}
-
-	void clearPermissionCache() {
-		if (impliedPermissions != null)
-			impliedPermissions.clearPermissionCache();
-		if (restrictedPermissions != null)
-			restrictedPermissions.clearPermissionCache();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/EquinoxSecurityManager.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/EquinoxSecurityManager.java
deleted file mode 100644
index dd94b59..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/EquinoxSecurityManager.java
+++ /dev/null
@@ -1,193 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.permadmin;
-
-import java.security.*;
-import java.util.*;
-import org.eclipse.osgi.internal.permadmin.SecurityRow.Decision;
-import org.osgi.service.condpermadmin.Condition;
-
-/**
- * 
- * This security manager implements the ConditionalPermission processing for
- * OSGi. It is to be used with ConditionalPermissionAdmin.
- * 
- */
-public class EquinoxSecurityManager extends SecurityManager {
-	/* 
-	 * This is super goofy, but we need to make sure that the CheckContext and
-	 * CheckPermissionAction classes load early. Otherwise, we run into problems later.
-	 */
-	static {
-		Class c;
-		c = CheckPermissionAction.class;
-		c = CheckContext.class;
-		c.getName(); // to prevent compiler warnings
-	}
-
-	static class CheckContext {
-		// A non zero depth indicates that we are doing a recursive permission check.
-		ArrayList depthCondSets = new ArrayList(2);
-		ArrayList accs = new ArrayList(2);
-		ArrayList CondClassSet;
-
-		public int getDepth() {
-			return depthCondSets.size() - 1;
-		}
-	}
-
-	static class CheckPermissionAction implements PrivilegedAction {
-		Permission perm;
-		Object context;
-		EquinoxSecurityManager fsm;
-
-		CheckPermissionAction(EquinoxSecurityManager fsm, Permission perm, Object context) {
-			this.fsm = fsm;
-			this.perm = perm;
-			this.context = context;
-		}
-
-		public Object run() {
-			fsm.internalCheckPermission(perm, context);
-			return null;
-		}
-	}
-
-	private final ThreadLocal localCheckContext = new ThreadLocal();
-
-	boolean addConditionsForDomain(Decision results[]) {
-		CheckContext cc = (CheckContext) localCheckContext.get();
-		if (cc == null) {
-			// We are being invoked in a weird way. Perhaps the ProtectionDomain is
-			// getting invoked directly.
-			return false;
-		}
-		ArrayList condSets = (ArrayList) cc.depthCondSets.get(cc.getDepth());
-		if (condSets == null) {
-			condSets = new ArrayList(1);
-			cc.depthCondSets.set(cc.getDepth(), condSets);
-		}
-		condSets.add(results);
-		return true;
-	}
-
-	boolean inCheckPermission() {
-		return localCheckContext.get() != null;
-	}
-
-	public void checkPermission(Permission perm, Object context) {
-		AccessController.doPrivileged(new CheckPermissionAction(this, perm, context));
-	}
-
-	/**
-	 * Gets the AccessControlContext currently being evaluated by
-	 * the SecurityManager.
-	 * 
-	 * @return the AccessControlContext currently being evaluated by the SecurityManager, or
-	 * null if no AccessControlContext is being evaluated. Note: this method will
-	 * return null if the permission check is being done directly on the AccessControlContext
-	 * rather than the SecurityManager.
-	 */
-	public AccessControlContext getContextToBeChecked() {
-		CheckContext cc = (CheckContext) localCheckContext.get();
-		if (cc != null && cc.accs != null && !cc.accs.isEmpty())
-			return (AccessControlContext) cc.accs.get(cc.accs.size() - 1);
-		return null;
-	}
-
-	void internalCheckPermission(Permission perm, Object context) {
-		AccessControlContext acc = (AccessControlContext) context;
-		CheckContext cc = (CheckContext) localCheckContext.get();
-		if (cc == null) {
-			cc = new CheckContext();
-			localCheckContext.set(cc);
-		}
-		cc.depthCondSets.add(null); // initialize postponed condition set to null
-		cc.accs.add(acc);
-		try {
-			acc.checkPermission(perm);
-			// We want to pop the first set of postponed conditions and process them
-			ArrayList conditionSets = (ArrayList) cc.depthCondSets.get(cc.getDepth());
-			if (conditionSets == null)
-				return;
-			// TODO the spec seems impossible to implement just doing the simple thing for now
-			HashMap conditionDictionaries = new HashMap();
-			for (Iterator iConditionSets = conditionSets.iterator(); iConditionSets.hasNext();) {
-				Decision[] domainDecisions = (Decision[]) iConditionSets.next();
-				boolean grant = false;
-				for (int i = 0; i < domainDecisions.length; i++) {
-					if (domainDecisions[i] == null)
-						break;
-					if ((domainDecisions[i].decision & SecurityTable.ABSTAIN) != 0)
-						continue;
-					if ((domainDecisions[i].decision & SecurityTable.POSTPONED) == 0) {
-						// hit an immediate decision; use it
-						if ((domainDecisions[i].decision & SecurityTable.GRANTED) != 0)
-							grant = true;
-						break;
-					}
-					int decision = getPostponedDecision(domainDecisions[i], conditionDictionaries, cc);
-					if ((decision & SecurityTable.ABSTAIN) != 0)
-						continue;
-					if ((decision & SecurityTable.GRANTED) != 0)
-						grant = true;
-					break;
-				}
-				if (!grant)
-					// did not find a condition to grant the permission for this domain
-					throw new SecurityException("Conditions not satisfied"); //$NON-NLS-1$
-				// continue to next domain
-			}
-
-		} finally {
-			cc.depthCondSets.remove(cc.getDepth());
-			cc.accs.remove(cc.accs.size() - 1);
-		}
-	}
-
-	private int getPostponedDecision(Decision decision, HashMap conditionDictionaries, CheckContext cc) {
-		Condition[] postponed = decision.postponed;
-		for (int i = 0; i < postponed.length; i++) {
-			Dictionary condContext = (Dictionary) conditionDictionaries.get(postponed[i].getClass());
-			if (condContext == null) {
-				condContext = new Hashtable();
-				conditionDictionaries.put(postponed[i].getClass(), condContext);
-			}
-			// prevent recursion into Condition
-			if (cc.CondClassSet == null)
-				cc.CondClassSet = new ArrayList(2);
-			if (cc.CondClassSet.contains(postponed[i].getClass()))
-				return SecurityTable.ABSTAIN;
-			cc.CondClassSet.add(postponed[i].getClass());
-			try {
-				// must call isMutable before calling isSatisfied according to the specification
-				boolean mutable = postponed[i].isMutable();
-				boolean isSatisfied = postponed[i].isSatisfied(new Condition[] {postponed[i]}, condContext);
-				decision.handleImmutable(postponed[i], isSatisfied, mutable);
-				if (!isSatisfied)
-					return SecurityTable.ABSTAIN;
-			} finally {
-				cc.CondClassSet.remove(postponed[i].getClass());
-			}
-		}
-		// call postponed conditions are satisfied return the decision
-		return decision.decision;
-	}
-
-	public void checkPermission(Permission perm) {
-		checkPermission(perm, getSecurityContext());
-	}
-
-	public Object getSecurityContext() {
-		return AccessController.getContext();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionAdminTable.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionAdminTable.java
deleted file mode 100644
index c933323..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionAdminTable.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.util.HashMap;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public class PermissionAdminTable {
-	private final HashMap locations = new HashMap();
-
-	String[] getLocations() {
-		return (String[]) locations.keySet().toArray(new String[locations.size()]);
-	}
-
-	PermissionInfo[] getPermissions(String location) {
-		PermissionInfoCollection collection = (PermissionInfoCollection) locations.get(location);
-		if (collection != null)
-			return collection.getPermissionInfos();
-		return null;
-	}
-
-	void setPermissions(String location, PermissionInfo[] permissions) {
-		if (permissions == null) {
-			locations.remove(location);
-			return;
-		}
-		locations.put(location, new PermissionInfoCollection(permissions));
-	}
-
-	PermissionInfoCollection getCollection(String location) {
-		return (PermissionInfoCollection) locations.get(location);
-	}
-
-	PermissionInfoCollection[] getCollections() {
-		String[] currentLocations = getLocations();
-		PermissionInfoCollection[] results = new PermissionInfoCollection[currentLocations.length];
-		for (int i = 0; i < results.length; i++)
-			results[i] = getCollection(currentLocations[i]);
-		return results;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionInfoCollection.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionInfoCollection.java
deleted file mode 100644
index cbea15e..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionInfoCollection.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.security.*;
-import java.util.Enumeration;
-import java.util.HashMap;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public final class PermissionInfoCollection extends PermissionCollection {
-	private static final long serialVersionUID = 3140511562980923957L;
-	/* Used to find permission constructors in addPermissions */
-	static private final Class twoStringClassArray[] = new Class[] {String.class, String.class};
-	static private final Class oneStringClassArray[] = new Class[] {String.class};
-	static private final Class noArgClassArray[] = new Class[] {};
-	static private final Class[][] permClassArrayArgs = new Class[][] {noArgClassArray, oneStringClassArray, twoStringClassArray};
-
-	/* @GuardedBy(cachedPermisssionCollections) */
-	private final HashMap cachedPermissionCollections = new HashMap();
-	private final boolean hasAllPermission;
-	private final PermissionInfo[] permInfos;
-
-	public PermissionInfoCollection(PermissionInfo[] permInfos) {
-		this.permInfos = permInfos;
-		boolean tempAllPermissions = false;
-		for (int i = 0; i < permInfos.length && !tempAllPermissions; i++)
-			if (permInfos[i].getType().equals(AllPermission.class.getName()))
-				tempAllPermissions = true;
-		this.hasAllPermission = tempAllPermissions;
-		setReadOnly(); // collections are managed with ConditionalPermissionAdmin
-	}
-
-	public void add(Permission arg0) {
-		throw new SecurityException();
-	}
-
-	public Enumeration elements() {
-		// TODO return an empty enumeration for now; 
-		return BundlePermissions.EMPTY_ENUMERATION;
-	}
-
-	public boolean implies(Permission perm) {
-		if (hasAllPermission)
-			return true;
-		Class permClass = perm.getClass();
-		PermissionCollection collection;
-		synchronized (cachedPermissionCollections) {
-			collection = (PermissionCollection) cachedPermissionCollections.get(permClass);
-		}
-		// must populate the collection outside of the lock to prevent class loader deadlock
-		if (collection == null) {
-			collection = perm.newPermissionCollection();
-			if (collection == null)
-				collection = new PermissionsHash();
-			try {
-				addPermissions(collection, permClass);
-			} catch (Exception e) {
-				throw (SecurityException) new SecurityException("Exception creating permissions: " + e.getClass().getName() + ": " + e.getMessage()).initCause(e); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			synchronized (cachedPermissionCollections) {
-				// check to see if another thread beat this thread at adding the collection
-				PermissionCollection exists = (PermissionCollection) cachedPermissionCollections.get(permClass);
-				if (exists != null)
-					collection = exists;
-				else
-					cachedPermissionCollections.put(permClass, collection);
-			}
-		}
-		return collection.implies(perm);
-	}
-
-	PermissionInfo[] getPermissionInfos() {
-		return permInfos;
-	}
-
-	private void addPermissions(PermissionCollection collection, Class permClass) throws NoSuchMethodException, IllegalAccessException, InstantiationException, InvocationTargetException {
-		String permClassName = permClass.getName();
-		Constructor constructor = null;
-		int numArgs = -1;
-		for (int i = permClassArrayArgs.length - 1; i >= 0; i--) {
-			try {
-				constructor = permClass.getConstructor(permClassArrayArgs[i]);
-				numArgs = i;
-				break;
-			} catch (NoSuchMethodException e) {
-				// ignore
-			}
-		}
-		if (constructor == null)
-			throw new NoSuchMethodException(permClass.getName() + ".<init>()"); //$NON-NLS-1$
-		/*
-		 * TODO: We need to cache the permission constructors to enhance performance (see bug 118813).
-		 */
-		for (int i = 0; i < permInfos.length; i++) {
-			if (permInfos[i].getType().equals(permClassName)) {
-				String args[] = new String[numArgs];
-				if (numArgs > 0)
-					args[0] = permInfos[i].getName();
-				if (numArgs > 1)
-					args[1] = permInfos[i].getActions();
-
-				if (permInfos[i].getType().equals("java.io.FilePermission")) { //$NON-NLS-1$
-					// map FilePermissions for relative names to the bundle's data area
-					if (!args[0].equals("<<ALL FILES>>")) { //$NON-NLS-1$
-						File file = new File(args[0]);
-						if (!file.isAbsolute()) { // relative name
-							// TODO need to figure out how to do relative FilePermissions from the dataFile
-							continue;
-						}
-					}
-				}
-				collection.add((Permission) constructor.newInstance(args));
-			}
-		}
-	}
-
-	void clearPermissionCache() {
-		synchronized (cachedPermissionCollections) {
-			cachedPermissionCollections.clear();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionsHash.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionsHash.java
deleted file mode 100644
index b2dc8a8..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/PermissionsHash.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-/**
- * A simple Hashtable based collection of Permission objects.
- * <p>
- * The class' .implies method simply scans each permission
- * individually and asks if the permission should be granted.
- * No addition semantics is provided by the collection, so it is
- * not possible to grant permissions whose "grantedness" is
- * split across multiple stored Permissions.
- * <p>
- * Instances of this class can be used to store heterogeneous
- * collections of permissions, as long as it is not necessary
- * to remember when multiple occurances of .equal permissions
- * are added.
- *
- */
-class PermissionsHash extends PermissionCollection {
-	private static final long serialVersionUID = 3258408426341284153L;
-	/**
-	 * A hashtable to store the elements of the collection.
-	 */
-	Hashtable perms = new Hashtable(8);
-
-	/**
-	 * Constructs a new instance of this class.
-	 *
-	 */
-	public PermissionsHash() {
-		super();
-	}
-
-	/**
-	 * Adds the argument to the collection.
-	 *
-	 * @param		perm java.security.Permission
-	 *					the permission to add to the collection.
-	 * @exception	IllegalStateException
-	 *					if the collection is read only.
-	 */
-	public void add(Permission perm) {
-		if (isReadOnly()) {
-			throw new SecurityException();
-		}
-
-		perms.put(perm, perm);
-	}
-
-	/**
-	 * Answers an enumeration of the permissions
-	 * in the receiver.
-	 *
-	 * @return		Enumeration
-	 *					the permissions in the receiver.
-	 */
-	public Enumeration elements() {
-		return perms.keys();
-	}
-
-	/**
-	 * Indicates whether the argument permission is implied
-	 * by the permissions contained in the receiver.
-	 *
-	 * @return		boolean
-	 *					<code>true</code> if the argument permission
-	 *					is implied by the permissions in the receiver,
-	 *					and <code>false</code> if it is not.
-	 * @param		perm java.security.Permission
-	 *					the permission to check
-	 */
-	public boolean implies(Permission perm) {
-		Permission p = (Permission) perms.get(perm);
-
-		if ((p != null) && p.implies(perm)) {
-			return true;
-		}
-
-		Enumeration permsEnum = elements();
-
-		while (permsEnum.hasMoreElements()) {
-			if (((Permission) permsEnum.nextElement()).implies(perm)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurePermissionStorage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurePermissionStorage.java
deleted file mode 100644
index 39b87d0..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurePermissionStorage.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.permadmin;
-
-import java.io.IOException;
-import java.security.*;
-import org.eclipse.osgi.framework.adaptor.PermissionStorage;
-
-/**
- * PermissionStorage privileged action class.
- */
-
-public class SecurePermissionStorage implements PermissionStorage, PrivilegedExceptionAction {
-	private PermissionStorage storage;
-	private String location;
-	private String[] data;
-	private String[] infos;
-	private int action;
-	private static final int GET = 1;
-	private static final int SET = 2;
-	private static final int LOCATION = 3;
-	private static final int GET_INFOS = 4;
-	private static final int SAVE_INFOS = 5;
-
-	public SecurePermissionStorage(PermissionStorage storage) {
-		this.storage = storage;
-	}
-
-	public Object run() throws IOException {
-		switch (action) {
-			case GET :
-				return storage.getPermissionData(location);
-			case SET :
-				storage.setPermissionData(location, data);
-				return null;
-			case LOCATION :
-				return storage.getLocations();
-			case SAVE_INFOS :
-				storage.saveConditionalPermissionInfos(infos);
-				return null;
-			case GET_INFOS :
-				return storage.getConditionalPermissionInfos();
-		}
-
-		throw new UnsupportedOperationException();
-	}
-
-	public String[] getPermissionData(String location) throws IOException {
-		this.location = location;
-		this.action = GET;
-
-		try {
-			return (String[]) AccessController.doPrivileged(this);
-		} catch (PrivilegedActionException e) {
-			throw (IOException) e.getException();
-		}
-	}
-
-	public String[] getLocations() throws IOException {
-		this.action = LOCATION;
-
-		try {
-			return (String[]) AccessController.doPrivileged(this);
-		} catch (PrivilegedActionException e) {
-			throw (IOException) e.getException();
-		}
-	}
-
-	public void setPermissionData(String location, String[] data) throws IOException {
-		this.location = location;
-		this.data = data;
-		this.action = SET;
-
-		try {
-			AccessController.doPrivileged(this);
-		} catch (PrivilegedActionException e) {
-			throw (IOException) e.getException();
-		}
-	}
-
-	public void saveConditionalPermissionInfos(String[] infos) throws IOException {
-		this.action = SAVE_INFOS;
-		this.infos = infos;
-		try {
-			AccessController.doPrivileged(this);
-		} catch (PrivilegedActionException e) {
-			throw (IOException) e.getException();
-		}
-
-	}
-
-	public String[] getConditionalPermissionInfos() throws IOException {
-		this.action = GET_INFOS;
-		try {
-			return (String[]) AccessController.doPrivileged(this);
-		} catch (PrivilegedActionException e) {
-			throw (IOException) e.getException();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityAdmin.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityAdmin.java
deleted file mode 100644
index cc369b1..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityAdmin.java
+++ /dev/null
@@ -1,859 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.io.*;
-import java.math.BigInteger;
-import java.net.URL;
-import java.security.*;
-import java.security.cert.*;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.BundleProtectionDomain;
-import org.eclipse.osgi.framework.adaptor.PermissionStorage;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.osgi.framework.*;
-import org.osgi.service.condpermadmin.*;
-import org.osgi.service.permissionadmin.PermissionAdmin;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public final class SecurityAdmin implements PermissionAdmin, ConditionalPermissionAdmin {
-	private static final PermissionCollection DEFAULT_DEFAULT;
-	static {
-		AllPermission allPerm = new AllPermission();
-		DEFAULT_DEFAULT = allPerm.newPermissionCollection();
-		if (DEFAULT_DEFAULT != null)
-			DEFAULT_DEFAULT.add(allPerm);
-	}
-
-	private static final String ADMIN_IMPLIED_ACTIONS = AdminPermission.RESOURCE + ',' + AdminPermission.METADATA + ',' + AdminPermission.CLASS + ',' + AdminPermission.CONTEXT;
-	private static final PermissionInfo[] EMPTY_PERM_INFO = new PermissionInfo[0];
-	/* @GuardedBy(lock) */
-	private final PermissionAdminTable permAdminTable = new PermissionAdminTable();
-	/* @GuardedBy(lock) */
-	private SecurityTable condAdminTable;
-	/* @GuardedBy(lock) */
-	private PermissionInfoCollection permAdminDefaults;
-	/* @GuardedBy(lock) */
-	private long timeStamp = 0;
-	/* @GuardedBy(lock) */
-	private long nextID = System.currentTimeMillis();
-	/* @GuardedBy(lock) */
-	private final PermissionStorage permissionStorage;
-	private final Object lock = new Object();
-	private final Framework framework;
-	private final PermissionInfo[] impliedPermissionInfos;
-	private final EquinoxSecurityManager supportedSecurityManager;
-
-	private SecurityAdmin(EquinoxSecurityManager supportedSecurityManager, Framework framework, PermissionInfo[] impliedPermissionInfos, PermissionInfoCollection permAdminDefaults) {
-		this.supportedSecurityManager = supportedSecurityManager;
-		this.framework = framework;
-		this.impliedPermissionInfos = impliedPermissionInfos;
-		this.permAdminDefaults = permAdminDefaults;
-		this.permissionStorage = null;
-	}
-
-	public SecurityAdmin(EquinoxSecurityManager supportedSecurityManager, Framework framework, PermissionStorage permissionStorage) throws IOException {
-		this.supportedSecurityManager = supportedSecurityManager;
-		this.framework = framework;
-		this.permissionStorage = new SecurePermissionStorage(permissionStorage);
-		this.impliedPermissionInfos = SecurityAdmin.getPermissionInfos(getClass().getResource(Constants.OSGI_BASE_IMPLIED_PERMISSIONS), framework);
-		String[] encodedDefaultInfos = permissionStorage.getPermissionData(null);
-		PermissionInfo[] defaultInfos = getPermissionInfos(encodedDefaultInfos);
-		if (defaultInfos != null)
-			permAdminDefaults = new PermissionInfoCollection(defaultInfos);
-		String[] locations = permissionStorage.getLocations();
-		if (locations != null) {
-			for (int i = 0; i < locations.length; i++) {
-				String[] encodedLocationInfos = permissionStorage.getPermissionData(locations[i]);
-				if (encodedLocationInfos != null) {
-					PermissionInfo[] locationInfos = getPermissionInfos(encodedLocationInfos);
-					permAdminTable.setPermissions(locations[i], locationInfos);
-				}
-			}
-		}
-		String[] encodedCondPermInfos = permissionStorage.getConditionalPermissionInfos();
-		if (encodedCondPermInfos == null)
-			condAdminTable = new SecurityTable(this, new SecurityRow[0]);
-		else {
-			SecurityRow[] rows = new SecurityRow[encodedCondPermInfos.length];
-			try {
-				for (int i = 0; i < rows.length; i++)
-					rows[i] = SecurityRow.createSecurityRow(this, encodedCondPermInfos[i]);
-			} catch (IllegalArgumentException e) {
-				// TODO should log
-				// bad format persisted in storage; start clean
-				rows = new SecurityRow[0];
-			}
-			condAdminTable = new SecurityTable(this, rows);
-		}
-	}
-
-	private static PermissionInfo[] getPermissionInfos(String[] encodedInfos) {
-		if (encodedInfos == null)
-			return null;
-		PermissionInfo[] results = new PermissionInfo[encodedInfos.length];
-		for (int i = 0; i < results.length; i++)
-			results[i] = new PermissionInfo(encodedInfos[i]);
-		return results;
-	}
-
-	boolean checkPermission(Permission permission, BundlePermissions bundlePermissions) {
-		// check permissions by location
-		PermissionInfoCollection locationCollection;
-		SecurityTable curCondAdminTable;
-		PermissionInfoCollection curPermAdminDefaults;
-		// save off the current state of the world while holding the lock
-		synchronized (lock) {
-			// get location the hard way to avoid permission check
-			Bundle bundle = bundlePermissions.getBundle();
-			locationCollection = bundle instanceof AbstractBundle ? permAdminTable.getCollection(((AbstractBundle) bundle).getBundleData().getLocation()) : null;
-			curCondAdminTable = condAdminTable;
-			curPermAdminDefaults = permAdminDefaults;
-		}
-		if (locationCollection != null)
-			return locationCollection.implies(permission);
-		// if conditional admin table is empty the fall back to defaults
-		if (curCondAdminTable.isEmpty())
-			return curPermAdminDefaults != null ? curPermAdminDefaults.implies(permission) : DEFAULT_DEFAULT.implies(permission);
-		// check the condition table	
-		int result = curCondAdminTable.evaluate(bundlePermissions, permission);
-		if ((result & SecurityTable.GRANTED) != 0)
-			return true;
-		if ((result & SecurityTable.DENIED) != 0)
-			return false;
-		if ((result & SecurityTable.POSTPONED) != 0)
-			return true;
-		return false;
-	}
-
-	public PermissionInfo[] getDefaultPermissions() {
-		synchronized (lock) {
-			if (permAdminDefaults == null)
-				return null;
-			return permAdminDefaults.getPermissionInfos();
-		}
-	}
-
-	public String[] getLocations() {
-		synchronized (lock) {
-			String[] results = permAdminTable.getLocations();
-			return results.length == 0 ? null : results;
-		}
-	}
-
-	public PermissionInfo[] getPermissions(String location) {
-		synchronized (lock) {
-			return permAdminTable.getPermissions(location);
-		}
-	}
-
-	public void setDefaultPermissions(PermissionInfo[] permissions) {
-		checkAllPermission();
-		synchronized (lock) {
-			if (permissions == null)
-				permAdminDefaults = null;
-			else
-				permAdminDefaults = new PermissionInfoCollection(permissions);
-			try {
-				permissionStorage.setPermissionData(null, getEncodedPermissionInfos(permissions));
-			} catch (IOException e) {
-				// log
-				e.printStackTrace();
-			}
-		}
-	}
-
-	private static void checkAllPermission() {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new AllPermission());
-	}
-
-	private static String[] getEncodedPermissionInfos(PermissionInfo[] permissions) {
-		if (permissions == null)
-			return null;
-		String[] encoded = new String[permissions.length];
-		for (int i = 0; i < encoded.length; i++)
-			encoded[i] = permissions[i].getEncoded();
-		return encoded;
-	}
-
-	public void setPermissions(String location, PermissionInfo[] permissions) {
-		checkAllPermission();
-		synchronized (lock) {
-			permAdminTable.setPermissions(location, permissions);
-			try {
-				permissionStorage.setPermissionData(location, getEncodedPermissionInfos(permissions));
-			} catch (IOException e) {
-				// TODO log
-				e.printStackTrace();
-			}
-		}
-	}
-
-	void delete(SecurityRow securityRow, boolean firstTry) {
-		ConditionalPermissionUpdate update = newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		for (Iterator iRows = rows.iterator(); iRows.hasNext();) {
-			ConditionalPermissionInfo info = (ConditionalPermissionInfo) iRows.next();
-			if (securityRow.getName().equals(info.getName())) {
-				iRows.remove();
-				synchronized (lock) {
-					if (!update.commit()) {
-						if (firstTry)
-							// try again
-							delete(securityRow, false);
-					}
-				}
-				break;
-			}
-		}
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public ConditionalPermissionInfo addConditionalPermissionInfo(ConditionInfo[] conds, PermissionInfo[] perms) {
-		return setConditionalPermissionInfo(null, conds, perms, true);
-	}
-
-	public ConditionalPermissionInfo newConditionalPermissionInfo(String name, ConditionInfo[] conditions, PermissionInfo[] permissions, String decision) {
-		return new SecurityRowSnapShot(name, conditions, permissions, decision);
-	}
-
-	public ConditionalPermissionInfo newConditionalPermissionInfo(String encoded) {
-		return SecurityRow.createSecurityRowSnapShot(encoded);
-	}
-
-	public ConditionalPermissionUpdate newConditionalPermissionUpdate() {
-		synchronized (lock) {
-			return new SecurityTableUpdate(this, condAdminTable.getRows(), timeStamp);
-		}
-	}
-
-	public AccessControlContext getAccessControlContext(String[] signers) {
-		SecurityAdmin snapShot = getSnapShot();
-		return new AccessControlContext(new ProtectionDomain[] {createProtectionDomain(createMockBundle(signers), snapShot)});
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public ConditionalPermissionInfo getConditionalPermissionInfo(String name) {
-		synchronized (lock) {
-			return condAdminTable.getRow(name);
-		}
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public Enumeration getConditionalPermissionInfos() {
-		// could implement our own Enumeration, but we don't care about performance here.  Just do something simple:
-		synchronized (lock) {
-			SecurityRow[] rows = condAdminTable.getRows();
-			Vector vRows = new Vector(rows.length);
-			for (int i = 0; i < rows.length; i++)
-				vRows.add(rows[i]);
-			return vRows.elements();
-		}
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public ConditionalPermissionInfo setConditionalPermissionInfo(String name, ConditionInfo[] conds, PermissionInfo[] perms) {
-		return setConditionalPermissionInfo(name, conds, perms, true);
-	}
-
-	private SecurityAdmin getSnapShot() {
-		SecurityAdmin sa;
-		synchronized (lock) {
-			sa = new SecurityAdmin(supportedSecurityManager, framework, impliedPermissionInfos, permAdminDefaults);
-			SecurityRow[] rows = condAdminTable.getRows();
-			SecurityRow[] rowsSnapShot = new SecurityRow[rows.length];
-			for (int i = 0; i < rows.length; i++)
-				rowsSnapShot[i] = new SecurityRow(sa, rows[i].getName(), rows[i].getConditionInfos(), rows[i].getPermissionInfos(), rows[i].getAccessDecision());
-			sa.condAdminTable = new SecurityTable(sa, rowsSnapShot);
-		}
-		return sa;
-	}
-
-	private ConditionalPermissionInfo setConditionalPermissionInfo(String name, ConditionInfo[] conds, PermissionInfo[] perms, boolean firstTry) {
-		ConditionalPermissionUpdate update = newConditionalPermissionUpdate();
-		List rows = update.getConditionalPermissionInfos();
-		ConditionalPermissionInfo newInfo = newConditionalPermissionInfo(name, conds, perms, ConditionalPermissionInfo.ALLOW);
-		int index = -1;
-		if (name != null) {
-			for (int i = 0; i < rows.size() && index < 0; i++) {
-				ConditionalPermissionInfo info = (ConditionalPermissionInfo) rows.get(i);
-				if (name.equals(info.getName())) {
-					index = i;
-				}
-			}
-		}
-		if (index < 0) {
-			// must always add to the beginning (bug 303930)
-			rows.add(0, newInfo);
-			index = 0;
-		} else {
-			rows.set(index, newInfo);
-		}
-		synchronized (lock) {
-			if (!update.commit()) {
-				if (firstTry)
-					// try again
-					setConditionalPermissionInfo(name, conds, perms, false);
-			}
-			return condAdminTable.getRow(index);
-		}
-	}
-
-	boolean commit(List rows, long updateStamp) {
-		checkAllPermission();
-		synchronized (lock) {
-			if (updateStamp != timeStamp)
-				return false;
-			SecurityRow[] newRows = new SecurityRow[rows.size()];
-			Collection names = new ArrayList();
-			for (int i = 0; i < newRows.length; i++) {
-				Object rowObj = rows.get(i);
-				if (!(rowObj instanceof ConditionalPermissionInfo))
-					throw new IllegalStateException("Invalid type \"" + rowObj.getClass().getName() + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$
-				ConditionalPermissionInfo infoBaseRow = (ConditionalPermissionInfo) rowObj;
-				String name = infoBaseRow.getName();
-				if (name == null)
-					name = generateName();
-				if (names.contains(name))
-					throw new IllegalStateException("Duplicate name \"" + name + "\" at row: " + i); //$NON-NLS-1$//$NON-NLS-2$
-				newRows[i] = new SecurityRow(this, name, infoBaseRow.getConditionInfos(), infoBaseRow.getPermissionInfos(), infoBaseRow.getAccessDecision());
-			}
-			condAdminTable = new SecurityTable(this, newRows);
-			try {
-				permissionStorage.saveConditionalPermissionInfos(condAdminTable.getEncodedRows());
-			} catch (IOException e) {
-				// TODO log
-				e.printStackTrace();
-			}
-			timeStamp += 1;
-			return true;
-		}
-	}
-
-	/* GuardedBy(lock) */
-	private String generateName() {
-		return "generated_" + Long.toString(nextID++); //$NON-NLS-1$;
-	}
-
-	public BundleProtectionDomain createProtectionDomain(Bundle bundle) {
-		return createProtectionDomain(bundle, this);
-	}
-
-	private BundleProtectionDomain createProtectionDomain(Bundle bundle, SecurityAdmin sa) {
-		PermissionInfoCollection impliedPermissions = getImpliedPermission(bundle);
-		PermissionInfo[] restrictedInfos = getFileRelativeInfos(SecurityAdmin.getPermissionInfos(bundle.getEntry("OSGI-INF/permissions.perm"), framework), bundle); //$NON-NLS-1$
-		PermissionInfoCollection restrictedPermissions = restrictedInfos == null ? null : new PermissionInfoCollection(restrictedInfos);
-		BundlePermissions bundlePermissions = new BundlePermissions(bundle, sa, impliedPermissions, restrictedPermissions);
-		return new BundleProtectionDomain(bundlePermissions, null, bundle);
-	}
-
-	private PermissionInfoCollection getImpliedPermission(Bundle bundle) {
-		if (impliedPermissionInfos == null)
-			return null;
-		// create the implied AdminPermission actions for this bundle
-		PermissionInfo impliedAdminPermission = new PermissionInfo(AdminPermission.class.getName(), "(id=" + bundle.getBundleId() + ")", ADMIN_IMPLIED_ACTIONS); //$NON-NLS-1$ //$NON-NLS-2$
-		PermissionInfo[] bundleImpliedInfos = new PermissionInfo[impliedPermissionInfos.length + 1];
-		System.arraycopy(impliedPermissionInfos, 0, bundleImpliedInfos, 0, impliedPermissionInfos.length);
-		bundleImpliedInfos[impliedPermissionInfos.length] = impliedAdminPermission;
-		return new PermissionInfoCollection(getFileRelativeInfos(bundleImpliedInfos, bundle));
-	}
-
-	private PermissionInfo[] getFileRelativeInfos(PermissionInfo[] permissionInfos, Bundle bundle) {
-		if (permissionInfos == null || !(bundle instanceof AbstractBundle))
-			return permissionInfos;
-		PermissionInfo[] results = new PermissionInfo[permissionInfos.length];
-		for (int i = 0; i < permissionInfos.length; i++) {
-			results[i] = permissionInfos[i];
-			if ("java.io.FilePermission".equals(permissionInfos[i].getType())) { //$NON-NLS-1$
-				if (!"<<ALL FILES>>".equals(permissionInfos[i].getName())) { //$NON-NLS-1$
-					File file = new File(permissionInfos[i].getName());
-					if (!file.isAbsolute()) { // relative name
-						File target = ((AbstractBundle) bundle).getBundleData().getDataFile(permissionInfos[i].getName());
-						if (target != null)
-							results[i] = new PermissionInfo(permissionInfos[i].getType(), target.getPath(), permissionInfos[i].getActions());
-					}
-				}
-			}
-		}
-		return results;
-	}
-
-	public void clearCaches() {
-		PermissionInfoCollection[] permAdminCollections;
-		SecurityRow[] condAdminRows;
-		synchronized (lock) {
-			permAdminCollections = permAdminTable.getCollections();
-			condAdminRows = condAdminTable.getRows();
-		}
-		for (int i = 0; i < permAdminCollections.length; i++)
-			permAdminCollections[i].clearPermissionCache();
-		for (int i = 0; i < condAdminRows.length; i++)
-			condAdminRows[i].clearCaches();
-	}
-
-	EquinoxSecurityManager getSupportedSecurityManager() {
-		return supportedSecurityManager != null ? supportedSecurityManager : getSupportedSystemSecurityManager();
-	}
-
-	static private EquinoxSecurityManager getSupportedSystemSecurityManager() {
-		try {
-			EquinoxSecurityManager equinoxManager = (EquinoxSecurityManager) System.getSecurityManager();
-			return equinoxManager != null && equinoxManager.inCheckPermission() ? equinoxManager : null;
-		} catch (ClassCastException e) {
-			return null;
-		}
-	}
-
-	private static PermissionInfo[] getPermissionInfos(URL resource, Framework framework) {
-		if (resource == null)
-			return null;
-		PermissionInfo[] info = EMPTY_PERM_INFO;
-		DataInputStream in = null;
-		try {
-			in = new DataInputStream(resource.openStream());
-			ArrayList permissions = new ArrayList();
-			BufferedReader reader;
-			try {
-				reader = new BufferedReader(new InputStreamReader(in, "UTF8")); //$NON-NLS-1$
-			} catch (UnsupportedEncodingException e) {
-				reader = new BufferedReader(new InputStreamReader(in));
-			}
-
-			while (true) {
-				String line = reader.readLine();
-				if (line == null) /* EOF */
-					break;
-				line = line.trim();
-				if ((line.length() == 0) || line.startsWith("#") || line.startsWith("//")) /* comments *///$NON-NLS-1$ //$NON-NLS-2$
-					continue;
-
-				try {
-					permissions.add(new PermissionInfo(line));
-				} catch (IllegalArgumentException iae) {
-					/* incorrectly encoded permission */
-					if (framework != null)
-						framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.getBundle(0), iae);
-				}
-			}
-			int size = permissions.size();
-			if (size > 0)
-				info = (PermissionInfo[]) permissions.toArray(new PermissionInfo[size]);
-		} catch (IOException e) {
-			// do nothing
-		} finally {
-			try {
-				if (in != null)
-					in.close();
-			} catch (IOException ee) {
-				// do nothing
-			}
-		}
-		return info;
-	}
-
-	private static Bundle createMockBundle(String[] signers) {
-		Map /* <X509Certificate, List<X509Certificate>> */signersMap = new HashMap();
-		for (int i = 0; i < signers.length; i++) {
-			List chain = parseDNchain(signers[i]);
-			List /* <X509Certificate> */signersList = new ArrayList();
-			Principal subject = null, issuer = null;
-			X509Certificate first = null;
-			for (Iterator iChain = chain.iterator(); iChain.hasNext();) {
-				subject = issuer == null ? new MockPrincipal((String) iChain.next()) : issuer;
-				issuer = iChain.hasNext() ? new MockPrincipal((String) iChain.next()) : subject;
-				X509Certificate cert = new MockX509Certificate(subject, issuer);
-				if (first == null)
-					first = cert;
-				signersList.add(cert);
-			}
-			if (subject != issuer)
-				signersList.add(new MockX509Certificate(issuer, issuer));
-			signersMap.put(first, signersList);
-		}
-		return new MockBundle(signersMap);
-	}
-
-	static class MockBundle implements Bundle {
-		private final Map signers;
-
-		MockBundle(Map signers) {
-			this.signers = signers;
-		}
-
-		public Enumeration findEntries(String path, String filePattern, boolean recurse) {
-			return null;
-		}
-
-		public BundleContext getBundleContext() {
-			return null;
-		}
-
-		public long getBundleId() {
-			return -1;
-		}
-
-		public URL getEntry(String path) {
-			return null;
-		}
-
-		public Enumeration getEntryPaths(String path) {
-			return null;
-		}
-
-		public Dictionary getHeaders() {
-			return new Hashtable();
-		}
-
-		public Dictionary getHeaders(String locale) {
-			return getHeaders();
-		}
-
-		public long getLastModified() {
-			return 0;
-		}
-
-		public String getLocation() {
-			return ""; //$NON-NLS-1$
-		}
-
-		public ServiceReference[] getRegisteredServices() {
-			return null;
-		}
-
-		public URL getResource(String name) {
-			return null;
-		}
-
-		/**
-		 * @throws IOException  
-		 */
-		public Enumeration getResources(String name) throws IOException {
-			return null;
-		}
-
-		public ServiceReference[] getServicesInUse() {
-			return null;
-		}
-
-		public Map getSignerCertificates(int signersType) {
-			return new HashMap(signers);
-		}
-
-		public int getState() {
-			return Bundle.UNINSTALLED;
-		}
-
-		public String getSymbolicName() {
-			return null;
-		}
-
-		public Version getVersion() {
-			return Version.emptyVersion;
-		}
-
-		public boolean hasPermission(Object permission) {
-			return false;
-		}
-
-		/**
-		 * @throws ClassNotFoundException  
-		 */
-		public Class loadClass(String name) throws ClassNotFoundException {
-			throw new IllegalStateException();
-		}
-
-		/**
-		 * @throws BundleException  
-		 */
-		public void start(int options) throws BundleException {
-			throw new IllegalStateException();
-		}
-
-		/**
-		 * @throws BundleException  
-		 */
-		public void start() throws BundleException {
-			throw new IllegalStateException();
-		}
-
-		/**
-		 * @throws BundleException  
-		 */
-		public void stop(int options) throws BundleException {
-			throw new IllegalStateException();
-		}
-
-		/**
-		 * @throws BundleException  
-		 */
-		public void stop() throws BundleException {
-			throw new IllegalStateException();
-		}
-
-		/**
-		 * @throws BundleException  
-		 */
-		public void uninstall() throws BundleException {
-			throw new IllegalStateException();
-		}
-
-		/**
-		 * @throws BundleException  
-		 */
-		public void update() throws BundleException {
-			throw new IllegalStateException();
-		}
-
-		/**
-		 * @throws BundleException  
-		 */
-		public void update(InputStream in) throws BundleException {
-			throw new IllegalStateException();
-		}
-	}
-
-	private static class MockX509Certificate extends X509Certificate {
-		private final Principal subject;
-		private final Principal issuer;
-
-		MockX509Certificate(Principal subject, Principal issuer) {
-			this.subject = subject;
-			this.issuer = issuer;
-		}
-
-		public Principal getSubjectDN() {
-			return subject;
-		}
-
-		public boolean equals(Object obj) {
-			if (this == obj)
-				return true;
-			if (obj instanceof MockX509Certificate)
-				return subject.equals(((MockX509Certificate) obj).subject) && issuer.equals(((MockX509Certificate) obj).issuer);
-			return false;
-		}
-
-		public int hashCode() {
-			return subject.hashCode() + issuer.hashCode();
-		}
-
-		public String toString() {
-			return subject.toString();
-		}
-
-		/**
-		 * @throws CertificateExpiredException 
-		 * @throws java.security.cert.CertificateNotYetValidException  
-		 */
-		public void checkValidity() throws CertificateExpiredException, java.security.cert.CertificateNotYetValidException {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @throws java.security.cert.CertificateExpiredException 
-		 * @throws java.security.cert.CertificateNotYetValidException  
-		 */
-		public void checkValidity(Date var0) throws java.security.cert.CertificateExpiredException, java.security.cert.CertificateNotYetValidException {
-			throw new UnsupportedOperationException();
-		}
-
-		public int getBasicConstraints() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Principal getIssuerDN() {
-			return issuer;
-		}
-
-		public boolean[] getIssuerUniqueID() {
-			throw new UnsupportedOperationException();
-		}
-
-		public boolean[] getKeyUsage() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Date getNotAfter() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Date getNotBefore() {
-			throw new UnsupportedOperationException();
-		}
-
-		public BigInteger getSerialNumber() {
-			throw new UnsupportedOperationException();
-		}
-
-		public String getSigAlgName() {
-			throw new UnsupportedOperationException();
-		}
-
-		public String getSigAlgOID() {
-			throw new UnsupportedOperationException();
-		}
-
-		public byte[] getSigAlgParams() {
-			throw new UnsupportedOperationException();
-		}
-
-		public byte[] getSignature() {
-			throw new UnsupportedOperationException();
-		}
-
-		public boolean[] getSubjectUniqueID() {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @throws CertificateEncodingException  
-		 */
-		public byte[] getTBSCertificate() throws CertificateEncodingException {
-			throw new UnsupportedOperationException();
-		}
-
-		public int getVersion() {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @throws CertificateEncodingException  
-		 */
-		public byte[] getEncoded() throws CertificateEncodingException {
-			throw new UnsupportedOperationException();
-		}
-
-		public PublicKey getPublicKey() {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @throws java.security.InvalidKeyException 
-		 * @throws java.security.NoSuchAlgorithmException  
-		 * @throws java.security.NoSuchProviderException 
-		 * @throws java.security.SignatureException 
-		 * @throws java.security.cert.CertificateException 
-		 */
-		public void verify(PublicKey var0) throws java.security.InvalidKeyException, java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException, java.security.SignatureException, java.security.cert.CertificateException {
-			throw new UnsupportedOperationException();
-		}
-
-		/**
-		 * @throws InvalidKeyException 
-		 * @throws NoSuchAlgorithmException 
-		 * @throws NoSuchProviderException 
-		 * @throws SignatureException 
-		 * @throws CertificateException  
-		 */
-		public void verify(PublicKey var0, String var1) throws InvalidKeyException, NoSuchAlgorithmException, NoSuchProviderException, SignatureException, CertificateException {
-			throw new UnsupportedOperationException();
-		}
-
-		public Set getCriticalExtensionOIDs() {
-			throw new UnsupportedOperationException();
-		}
-
-		public byte[] getExtensionValue(String var0) {
-			throw new UnsupportedOperationException();
-		}
-
-		public Set getNonCriticalExtensionOIDs() {
-			throw new UnsupportedOperationException();
-		}
-
-		public boolean hasUnsupportedCriticalExtension() {
-			throw new UnsupportedOperationException();
-		}
-	}
-
-	private static class MockPrincipal implements Principal {
-		private final String name;
-
-		MockPrincipal(String name) {
-			this.name = name;
-		}
-
-		public String getName() {
-			return name;
-		}
-
-		public boolean equals(Object obj) {
-			if (this == obj) {
-				return true;
-			}
-			if (obj instanceof MockPrincipal) {
-				return name.equals(((MockPrincipal) obj).name);
-			}
-			return false;
-		}
-
-		public int hashCode() {
-			return name.hashCode();
-		}
-
-		public String toString() {
-			return getName();
-		}
-	}
-
-	private static ArrayList parseDNchain(String dnChain) {
-		if (dnChain == null) {
-			throw new IllegalArgumentException("The DN chain must not be null."); //$NON-NLS-1$
-		}
-		ArrayList parsed = new ArrayList();
-		int startIndex = 0;
-		startIndex = skipSpaces(dnChain, startIndex);
-		while (startIndex < dnChain.length()) {
-			int endIndex = startIndex;
-			boolean inQuote = false;
-			out: while (endIndex < dnChain.length()) {
-				char c = dnChain.charAt(endIndex);
-				switch (c) {
-					case '"' :
-						inQuote = !inQuote;
-						break;
-					case '\\' :
-						endIndex++; // skip the escaped char
-						break;
-					case ';' :
-						if (!inQuote)
-							break out;
-				}
-				endIndex++;
-			}
-			if (endIndex > dnChain.length()) {
-				throw new IllegalArgumentException("unterminated escape");
-			}
-			parsed.add(dnChain.substring(startIndex, endIndex));
-			startIndex = endIndex + 1;
-			startIndex = skipSpaces(dnChain, startIndex);
-		}
-		return parsed;
-	}
-
-	private static int skipSpaces(String dnChain, int startIndex) {
-		while (startIndex < dnChain.length() && dnChain.charAt(startIndex) == ' ') {
-			startIndex++;
-		}
-		return startIndex;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRow.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRow.java
deleted file mode 100644
index fb3d9b3..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRow.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.lang.reflect.*;
-import java.security.Permission;
-import java.util.*;
-import org.osgi.framework.Bundle;
-import org.osgi.service.condpermadmin.*;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public final class SecurityRow implements ConditionalPermissionInfo {
-	/* Used to find condition constructors getConditions */
-	static final Class[] conditionMethodArgs = new Class[] {Bundle.class, ConditionInfo.class};
-	static Condition[] ABSTAIN_LIST = new Condition[0];
-	static Condition[] SATISFIED_LIST = new Condition[0];
-	static final Decision DECISION_ABSTAIN = new Decision(SecurityTable.ABSTAIN, null, null, null);
-	static final Decision DECISION_GRANTED = new Decision(SecurityTable.GRANTED, null, null, null);
-	static final Decision DECISION_DENIED = new Decision(SecurityTable.DENIED, null, null, null);
-
-	private final SecurityAdmin securityAdmin;
-	private final String name;
-	private final ConditionInfo[] conditionInfos;
-	private final PermissionInfoCollection permissionInfoCollection;
-	private final boolean deny;
-	/* GuardedBy(bundleConditions) */
-	final HashMap bundleConditions;
-
-	public SecurityRow(SecurityAdmin securityAdmin, String name, ConditionInfo[] conditionInfos, PermissionInfo[] permissionInfos, String decision) {
-		if (permissionInfos == null || permissionInfos.length == 0)
-			throw new IllegalArgumentException("It is invalid to have empty permissionInfos"); //$NON-NLS-1$
-		this.securityAdmin = securityAdmin;
-		this.conditionInfos = conditionInfos == null ? new ConditionInfo[0] : conditionInfos;
-		decision = decision.toLowerCase();
-		boolean d = ConditionalPermissionInfo.DENY.equals(decision);
-		boolean a = ConditionalPermissionInfo.ALLOW.equals(decision);
-		if (!(d | a))
-			throw new IllegalArgumentException("Invalid decision: " + decision); //$NON-NLS-1$
-		this.deny = d;
-		this.name = name;
-		this.permissionInfoCollection = new PermissionInfoCollection(permissionInfos);
-		if (conditionInfos == null || conditionInfos.length == 0)
-			bundleConditions = null;
-		else
-			bundleConditions = new HashMap();
-	}
-
-	static SecurityRowSnapShot createSecurityRowSnapShot(String encoded) {
-		return (SecurityRowSnapShot) createConditionalPermissionInfo(null, encoded);
-	}
-
-	static SecurityRow createSecurityRow(SecurityAdmin securityAdmin, String encoded) {
-		return (SecurityRow) createConditionalPermissionInfo(securityAdmin, encoded);
-	}
-
-	private static ConditionalPermissionInfo createConditionalPermissionInfo(SecurityAdmin securityAdmin, String encoded) {
-		encoded = encoded.trim();
-		if (encoded.length() == 0)
-			throw new IllegalArgumentException("Empty encoded string is invalid"); //$NON-NLS-1$
-		char[] chars = encoded.toCharArray();
-		int end = encoded.length() - 1;
-		char lastChar = chars[end];
-		if (lastChar != '}' && lastChar != '"')
-			throw new IllegalArgumentException(encoded);
-		String encodedName = null;
-		if (lastChar == '"') {
-			// we have a name: an empty name must have at least 2 chars for the quotes
-			if (chars.length < 2)
-				throw new IllegalArgumentException(encoded);
-			int endName = encoded.length() - 1;
-			int startName = endName - 1;
-			while (startName > 0) {
-				if (chars[startName] == '"') {
-					startName--;
-					if (startName > 0 && chars[startName] == '\\')
-						startName--;
-					else {
-						startName++;
-						break;
-					}
-				}
-				startName--;
-			}
-			if (chars[startName] != '"')
-				throw new IllegalArgumentException(encoded);
-			encodedName = unescapeString(encoded.substring(startName + 1, endName));
-			end = encoded.lastIndexOf('}', startName);
-		}
-		int start = encoded.indexOf('{');
-		if (start < 0 || end < start)
-			throw new IllegalArgumentException(encoded);
-
-		String decision = encoded.substring(0, start);
-		decision = decision.trim();
-		if (decision.length() == 0 || (!ConditionalPermissionInfo.DENY.equalsIgnoreCase(decision) && !ConditionalPermissionInfo.ALLOW.equalsIgnoreCase(decision)))
-			throw new IllegalArgumentException(encoded);
-
-		ArrayList condList = new ArrayList();
-		ArrayList permList = new ArrayList();
-		int pos = start + 1;
-		while (pos < end) {
-			while (pos < end && chars[pos] != '[' && chars[pos] != '(')
-				pos++;
-			if (pos == end)
-				break; // no perms or conds left
-			int startPos = pos;
-			char endChar = chars[startPos] == '[' ? ']' : ')';
-			while (pos < end && chars[pos] != endChar) {
-				if (chars[pos] == '"') {
-					pos++;
-					while (chars[pos] != '"') {
-						if (chars[pos] == '\\')
-							pos++;
-						pos++;
-					}
-				}
-				pos++;
-			}
-			int endPos = pos;
-			String token = new String(chars, startPos, endPos - startPos + 1);
-			if (endChar == ']')
-				condList.add(new ConditionInfo(token));
-			else
-				permList.add(new PermissionInfo(token));
-			pos++;
-		}
-		if (permList.size() == 0)
-			throw new IllegalArgumentException("No Permission infos: " + encoded); //$NON-NLS-1$
-		ConditionInfo[] conds = (ConditionInfo[]) condList.toArray(new ConditionInfo[condList.size()]);
-		PermissionInfo[] perms = (PermissionInfo[]) permList.toArray(new PermissionInfo[permList.size()]);
-		if (securityAdmin == null)
-			return new SecurityRowSnapShot(encodedName, conds, perms, decision);
-		return new SecurityRow(securityAdmin, encodedName, conds, perms, decision);
-	}
-
-	static Object cloneArray(Object[] array) {
-		if (array == null)
-			return null;
-		Object result = Array.newInstance(array.getClass().getComponentType(), array.length);
-		System.arraycopy(array, 0, result, 0, array.length);
-		return result;
-	}
-
-	private static void escapeString(String str, StringBuffer output) {
-		int len = str.length();
-		for (int i = 0; i < len; i++) {
-			char c = str.charAt(i);
-			switch (c) {
-				case '"' :
-				case '\\' :
-					output.append('\\');
-					output.append(c);
-					break;
-				case '\r' :
-					output.append("\\r"); //$NON-NLS-1$
-					break;
-				case '\n' :
-					output.append("\\n"); //$NON-NLS-1$
-					break;
-				default :
-					output.append(c);
-					break;
-			}
-		}
-	}
-
-	private static String unescapeString(String str) {
-		StringBuffer output = new StringBuffer(str.length());
-		int end = str.length();
-		for (int i = 0; i < end; i++) {
-			char c = str.charAt(i);
-			if (c == '\\') {
-				i++;
-				if (i < end) {
-					c = str.charAt(i);
-					switch (c) {
-						case '"' :
-						case '\\' :
-							break;
-						case 'r' :
-							c = '\r';
-							break;
-						case 'n' :
-							c = '\n';
-							break;
-						default :
-							c = '\\';
-							i--;
-							break;
-					}
-				}
-			}
-			output.append(c);
-		}
-
-		return output.toString();
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public ConditionInfo[] getConditionInfos() {
-		// must make a copy for the public API method to prevent modification
-		return (ConditionInfo[]) cloneArray(conditionInfos);
-	}
-
-	ConditionInfo[] internalGetConditionInfos() {
-		return conditionInfos;
-	}
-
-	public String getAccessDecision() {
-		return deny ? ConditionalPermissionInfo.DENY : ConditionalPermissionInfo.ALLOW;
-	}
-
-	public PermissionInfo[] getPermissionInfos() {
-		// must make a copy for the public API method to prevent modification
-		return (PermissionInfo[]) cloneArray(permissionInfoCollection.getPermissionInfos());
-	}
-
-	PermissionInfo[] internalGetPermissionInfos() {
-		return permissionInfoCollection.getPermissionInfos();
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public void delete() {
-		securityAdmin.delete(this, true);
-	}
-
-	Condition[] getConditions(Bundle bundle) {
-		Condition[] conditions = new Condition[conditionInfos.length];
-		for (int i = 0; i < conditionInfos.length; i++) {
-			/*
-			 * TODO: Can we pre-get the Constructors in our own constructor
-			 */
-			Class clazz;
-			try {
-				clazz = Class.forName(conditionInfos[i].getType());
-			} catch (ClassNotFoundException e) {
-				/* If the class isn't there, we fail */
-				return null;
-			}
-			Constructor constructor = null;
-			Method method = null;
-			try {
-				method = clazz.getMethod("getCondition", conditionMethodArgs); //$NON-NLS-1$
-				if ((method.getModifiers() & Modifier.STATIC) == 0)
-					method = null;
-			} catch (NoSuchMethodException e) {
-				// This is a normal case
-			}
-			if (method == null)
-				try {
-					constructor = clazz.getConstructor(conditionMethodArgs);
-				} catch (NoSuchMethodException e) {
-					// TODO should post a FrameworkEvent of type error here
-					conditions[i] = Condition.FALSE;
-					continue;
-				}
-
-			Object args[] = {bundle, conditionInfos[i]};
-			try {
-				if (method != null)
-					conditions[i] = (Condition) method.invoke(null, args);
-				else
-					conditions[i] = (Condition) constructor.newInstance(args);
-			} catch (Throwable t) {
-				// TODO should post a FrameworkEvent of type error here
-				conditions[i] = Condition.FALSE;
-			}
-		}
-		return conditions;
-	}
-
-	Decision evaluate(BundlePermissions bundlePermissions, Permission permission) {
-		if (bundleConditions == null || bundlePermissions == null)
-			return evaluatePermission(permission);
-		Condition[] conditions;
-		synchronized (bundleConditions) {
-			conditions = (Condition[]) bundleConditions.get(bundlePermissions);
-			if (conditions == null) {
-				conditions = getConditions(bundlePermissions.getBundle());
-				bundleConditions.put(bundlePermissions, conditions);
-			}
-		}
-		if (conditions == ABSTAIN_LIST)
-			return DECISION_ABSTAIN;
-		if (conditions == SATISFIED_LIST)
-			return evaluatePermission(permission);
-
-		boolean empty = true;
-		List postponedConditions = null;
-		Decision postponedPermCheck = null;
-		for (int i = 0; i < conditions.length; i++) {
-			Condition condition = conditions[i];
-			if (condition == null)
-				continue; // this condition must have been satisfied && !mutable in a previous check
-			if (!isPostponed(condition)) {
-				// must call isMutable before calling isSatisfied according to the specification.
-				boolean mutable = condition.isMutable();
-				if (condition.isSatisfied()) {
-					if (!mutable)
-						conditions[i] = null; // ignore this condition for future checks
-				} else {
-					if (!mutable)
-						// this will cause the row to always abstain; mark this to be ignored in future checks
-						synchronized (bundleConditions) {
-							bundleConditions.put(bundlePermissions, ABSTAIN_LIST);
-						}
-					return DECISION_ABSTAIN;
-				}
-			} else { // postponed case
-				if (postponedPermCheck == null)
-					// perform a permission check now
-					postponedPermCheck = evaluatePermission(permission);
-				if (postponedPermCheck == DECISION_ABSTAIN)
-					return postponedPermCheck; // no need to postpone the condition if the row abstains
-				// this row will deny or allow the permission; must queue the postponed condition
-				if (postponedConditions == null)
-					postponedConditions = new ArrayList(1);
-				postponedConditions.add(condition);
-			}
-			empty &= conditions[i] == null;
-		}
-		if (empty) {
-			synchronized (bundleConditions) {
-				bundleConditions.put(bundlePermissions, SATISFIED_LIST);
-			}
-		}
-		if (postponedPermCheck != null)
-			return new Decision(postponedPermCheck.decision | SecurityTable.POSTPONED, (Condition[]) postponedConditions.toArray(new Condition[postponedConditions.size()]), this, bundlePermissions);
-		return evaluatePermission(permission);
-	}
-
-	private boolean isPostponed(Condition condition) {
-		// postponed checks can only happen if we are using a supported security manager
-		return condition.isPostponed() && securityAdmin.getSupportedSecurityManager() != null;
-	}
-
-	private Decision evaluatePermission(Permission permission) {
-		return permissionInfoCollection.implies(permission) ? (deny ? DECISION_DENIED : DECISION_GRANTED) : DECISION_ABSTAIN;
-	}
-
-	public String toString() {
-		return getEncoded();
-	}
-
-	public String getEncoded() {
-		return getEncoded(name, conditionInfos, internalGetPermissionInfos(), deny);
-	}
-
-	public boolean equals(Object obj) {
-		// doing the simple (slow) thing for now
-		if (obj == this)
-			return true;
-		if (!(obj instanceof ConditionalPermissionInfo))
-			return false;
-		// we assume the encoded string provides a canonical (comparable) form
-		return getEncoded().equals(((ConditionalPermissionInfo) obj).getEncoded());
-	}
-
-	public int hashCode() {
-		return getHashCode(name, internalGetConditionInfos(), internalGetPermissionInfos(), getAccessDecision());
-	}
-
-	static int getHashCode(String name, ConditionInfo[] conds, PermissionInfo[] perms, String decision) {
-		int h = 31 * 17 + decision.hashCode();
-		for (int i = 0; i < conds.length; i++)
-			h = 31 * h + conds[i].hashCode();
-		for (int i = 0; i < perms.length; i++)
-			h = 31 * h + perms[i].hashCode();
-		if (name != null)
-			h = 31 * h + name.hashCode();
-		return h;
-	}
-
-	static String getEncoded(String name, ConditionInfo[] conditionInfos, PermissionInfo[] permissionInfos, boolean deny) {
-		StringBuffer result = new StringBuffer();
-		if (deny)
-			result.append(ConditionalPermissionInfo.DENY);
-		else
-			result.append(ConditionalPermissionInfo.ALLOW);
-		result.append(" { "); //$NON-NLS-1$
-		if (conditionInfos != null)
-			for (int i = 0; i < conditionInfos.length; i++)
-				result.append(conditionInfos[i].getEncoded()).append(' ');
-		if (permissionInfos != null)
-			for (int i = 0; i < permissionInfos.length; i++)
-				result.append(permissionInfos[i].getEncoded()).append(' ');
-		result.append('}');
-		if (name != null) {
-			result.append(" \""); //$NON-NLS-1$
-			escapeString(name, result);
-			result.append('"');
-		}
-		return result.toString();
-	}
-
-	PermissionInfoCollection getPermissionInfoCollection() {
-		return permissionInfoCollection;
-	}
-
-	void clearCaches() {
-		permissionInfoCollection.clearPermissionCache();
-		if (bundleConditions != null)
-			synchronized (bundleConditions) {
-				bundleConditions.clear();
-			}
-	}
-
-	static class Decision {
-		final int decision;
-		final Condition[] postponed;
-		private final SecurityRow row;
-		private final BundlePermissions bundlePermissions;
-
-		Decision(int decision, Condition[] postponed, SecurityRow row, BundlePermissions bundlePermissions) {
-			this.decision = decision;
-			this.postponed = postponed;
-			this.row = row;
-			this.bundlePermissions = bundlePermissions;
-		}
-
-		void handleImmutable(Condition condition, boolean isSatisfied, boolean mutable) {
-			if (mutable || !condition.isPostponed())
-				return; // do nothing
-			if (isSatisfied) {
-				synchronized (row.bundleConditions) {
-					Condition[] rowConditions = (Condition[]) row.bundleConditions.get(bundlePermissions);
-					boolean isEmpty = true;
-					for (int i = 0; i < rowConditions.length; i++) {
-						if (rowConditions[i] == condition)
-							if (isSatisfied)
-								rowConditions[i] = null;
-						isEmpty &= rowConditions[i] == null;
-					}
-					if (isEmpty)
-						row.bundleConditions.put(bundlePermissions, SATISFIED_LIST);
-				}
-			} else {
-				synchronized (row.bundleConditions) {
-					row.bundleConditions.put(bundlePermissions, ABSTAIN_LIST);
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRowSnapShot.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRowSnapShot.java
deleted file mode 100644
index 7976771..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityRowSnapShot.java
+++ /dev/null
@@ -1,85 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import org.osgi.service.condpermadmin.ConditionInfo;
-import org.osgi.service.condpermadmin.ConditionalPermissionInfo;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-public class SecurityRowSnapShot implements ConditionalPermissionInfo {
-
-	private final String name;
-	private final ConditionInfo[] conditionInfos;
-	private final PermissionInfo[] permissionInfos;
-	private final String decision;
-
-	public SecurityRowSnapShot(String name, ConditionInfo[] conditionInfos, PermissionInfo[] permissionInfos, String decision) {
-		if (permissionInfos == null || permissionInfos.length == 0)
-			throw new IllegalArgumentException("It is invalid to have empty permissionInfos"); //$NON-NLS-1$
-		decision = decision.toLowerCase();
-		boolean d = ConditionalPermissionInfo.DENY.equals(decision);
-		boolean a = ConditionalPermissionInfo.ALLOW.equals(decision);
-		if (!(d | a))
-			throw new IllegalArgumentException("Invalid decision: " + decision); //$NON-NLS-1$
-		conditionInfos = conditionInfos == null ? new ConditionInfo[0] : conditionInfos;
-		this.name = name;
-		// must create copies of the passed in arrays to prevent changes
-		this.conditionInfos = (ConditionInfo[]) SecurityRow.cloneArray(conditionInfos);
-		this.permissionInfos = (PermissionInfo[]) SecurityRow.cloneArray(permissionInfos);
-		this.decision = decision;
-	}
-
-	public ConditionInfo[] getConditionInfos() {
-		return (ConditionInfo[]) SecurityRow.cloneArray(conditionInfos);
-	}
-
-	public String getAccessDecision() {
-		return decision;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public PermissionInfo[] getPermissionInfos() {
-		return (PermissionInfo[]) SecurityRow.cloneArray(permissionInfos);
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public void delete() {
-		throw new UnsupportedOperationException();
-	}
-
-	public String toString() {
-		return getEncoded();
-	}
-
-	public String getEncoded() {
-		return SecurityRow.getEncoded(name, conditionInfos, permissionInfos, DENY.equalsIgnoreCase(decision));
-	}
-
-	public boolean equals(Object obj) {
-		// doing the simple (slow) thing for now
-		if (obj == this)
-			return true;
-		if (!(obj instanceof ConditionalPermissionInfo))
-			return false;
-		// we assume the encoded string provides a canonical (comparable) form
-		return getEncoded().equals(((ConditionalPermissionInfo) obj).getEncoded());
-	}
-
-	public int hashCode() {
-		return SecurityRow.getHashCode(name, conditionInfos, permissionInfos, getAccessDecision());
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTable.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTable.java
deleted file mode 100644
index 62d4126..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTable.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.Enumeration;
-import org.eclipse.osgi.internal.permadmin.SecurityRow.Decision;
-
-public class SecurityTable extends PermissionCollection {
-	private static final long serialVersionUID = -1800193310096318060L;
-	static final int GRANTED = 0x0001;
-	static final int DENIED = 0x0002;
-	static final int ABSTAIN = 0x0004;
-	static final int POSTPONED = 0x0008;
-
-	private final SecurityRow[] rows;
-	private final SecurityAdmin securityAdmin;
-
-	public SecurityTable(SecurityAdmin securityAdmin, SecurityRow[] rows) {
-		if (rows == null)
-			throw new NullPointerException("rows cannot be null!!"); //$NON-NLS-1$
-		this.rows = rows;
-		this.securityAdmin = securityAdmin;
-	}
-
-	boolean isEmpty() {
-		return rows.length == 0;
-	}
-
-	int evaluate(BundlePermissions bundlePermissions, Permission permission) {
-		if (isEmpty())
-			return ABSTAIN;
-		boolean postponed = false;
-		Decision[] results = new Decision[rows.length];
-		int immediateDecisionIdx = -1;
-		// evaluate each row
-		for (int i = 0; i < rows.length; i++) {
-			try {
-				results[i] = rows[i].evaluate(bundlePermissions, permission);
-			} catch (Throwable t) {
-				// TODO log?
-				results[i] = SecurityRow.DECISION_ABSTAIN;
-			}
-			if ((results[i].decision & ABSTAIN) != 0)
-				continue; // ignore this row and continue to next row
-			if ((results[i].decision & POSTPONED) != 0) {
-				// row is postponed; we can no longer return quickly on a denied decision
-				postponed = true;
-				continue; // continue to next row
-			}
-			if (!postponed)
-				// no postpones encountered yet; we can return the decision quickly
-				return results[i].decision; // return GRANTED or DENIED
-			// got an immediate answer; but it is after a postponed condition.
-			// no need to process the rest of the rows
-			immediateDecisionIdx = i;
-			break;
-		}
-		if (postponed) {
-			int immediateDecision = immediateDecisionIdx < 0 ? DENIED : results[immediateDecisionIdx].decision;
-			// iterate over all postponed conditions; 
-			// if they all provide the same decision as the immediate decision then return the immediate decision
-			boolean allSameDecision = true;
-			int i = immediateDecisionIdx < 0 ? results.length - 1 : immediateDecisionIdx - 1;
-			for (; i >= 0 && allSameDecision; i--) {
-				if (results[i] == null)
-					continue;
-				if ((results[i].decision & POSTPONED) != 0) {
-					if ((results[i].decision & immediateDecision) == 0)
-						allSameDecision = false;
-					else
-						results[i] = SecurityRow.DECISION_ABSTAIN; // we can clear postpones with the same decision as the immediate
-				}
-			}
-			if (allSameDecision)
-				return immediateDecision;
-
-			// we now are forced to postpone; we need to also remember the postponed decisions and 
-			// the immediate decision if there is one.
-			EquinoxSecurityManager equinoxManager = securityAdmin.getSupportedSecurityManager();
-			if (equinoxManager == null)
-				// TODO this is really an error condition.
-				// This should never happen.  We checked for a supported manager when the row was postponed
-				return ABSTAIN;
-			equinoxManager.addConditionsForDomain(results);
-		}
-		return postponed ? POSTPONED : ABSTAIN;
-	}
-
-	SecurityRow getRow(int i) {
-		return rows.length <= i || i < 0 ? null : rows[i];
-	}
-
-	SecurityRow getRow(String name) {
-		for (int i = 0; i < rows.length; i++) {
-			if (name.equals(rows[i].getName()))
-				return rows[i];
-		}
-		return null;
-	}
-
-	SecurityRow[] getRows() {
-		return rows;
-	}
-
-	String[] getEncodedRows() {
-		String[] encoded = new String[rows.length];
-		for (int i = 0; i < rows.length; i++)
-			encoded[i] = rows[i].getEncoded();
-		return encoded;
-	}
-
-	public void add(Permission permission) {
-		throw new SecurityException();
-	}
-
-	public Enumeration elements() {
-		return BundlePermissions.EMPTY_ENUMERATION;
-	}
-
-	public boolean implies(Permission permission) {
-		return (evaluate(null, permission) & SecurityTable.GRANTED) != 0;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTableUpdate.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTableUpdate.java
deleted file mode 100644
index 4214924..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/SecurityTableUpdate.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.permadmin;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.osgi.service.condpermadmin.ConditionalPermissionUpdate;
-
-public class SecurityTableUpdate implements ConditionalPermissionUpdate {
-
-	private final SecurityAdmin securityAdmin;
-	private final List rows;
-	private final long timeStamp;
-
-	public SecurityTableUpdate(SecurityAdmin securityAdmin, SecurityRow[] rows, long timeStamp) {
-		this.securityAdmin = securityAdmin;
-		this.timeStamp = timeStamp;
-		// must make a snap shot of the security rows.
-		this.rows = new ArrayList(rows.length);
-		for (int i = 0; i < rows.length; i++)
-			// Use SecurityRowSnapShot to prevent modification before commit 
-			// and to throw exceptions from delete
-			this.rows.add(new SecurityRowSnapShot(rows[i].getName(), rows[i].internalGetConditionInfos(), rows[i].internalGetPermissionInfos(), rows[i].getAccessDecision()));
-	}
-
-	public boolean commit() {
-		return securityAdmin.commit(rows, timeStamp);
-	}
-
-	public List getConditionalPermissionInfos() {
-		// it is fine to return the internal list; it is a snap shot and we allow clients to modify it.
-		return rows;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/default.permissions b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/default.permissions
deleted file mode 100644
index e04a889..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/default.permissions
+++ /dev/null
@@ -1,25 +0,0 @@
-########################################################################

-# Copyright (c) 2003, 2005 IBM Corporation and others.

-# All rights reserved. This program and the accompanying materials 

-# are made available under the terms of the Eclipse Public License v1.0

-# which accompanies this distribution, and is available at

-# http://www.eclipse.org/legal/epl-v10.html

-# 

-# Contributors:

-#     IBM Corporation - initial API and implementation

-########################################################################

-

-# Lines beginning with '#' or '//' are comments

-#

-# This file contains the default permissions to be granted

-# to bundles with no specific permission if there are no

-# default permission set. This file must be UTF8 encoded.

-#

-# In this file, FilePermissions with relative names are not

-# mapped to an individual bundle's data directory.

-#

-# The permissions are listed one per

-# line in PermissionInfo encoded format.

-# See org.osgi.service.permissionadmin.PermissionInfo

-

-(java.security.AllPermission)

diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/implied.permissions b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/implied.permissions
deleted file mode 100644
index 1bf4626..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/permadmin/implied.permissions
+++ /dev/null
@@ -1,48 +0,0 @@
-########################################################################

-# Copyright (c) 2003, 2005 IBM Corporation and others.

-# All rights reserved. This program and the accompanying materials 

-# are made available under the terms of the Eclipse Public License v1.0

-# which accompanies this distribution, and is available at

-# http://www.eclipse.org/legal/epl-v10.html

-# 

-# Contributors:

-#     IBM Corporation - initial API and implementation

-########################################################################

-

-# Lines beginning with '#' or '//' are comments

-#

-# This file contains the implied permissions to be granted

-# to all bundles. This file must be UTF8 encoded.

-#

-# In this file, FilePermissions with relative names are

-# mapped to an individual bundle's data directory.

-#

-# The permissions are listed one per

-# line in PermissionInfo encoded format.

-# See org.osgi.service.permissionadmin.PermissionInfo

-

-(java.util.PropertyPermission "java.vendor" "read")

-(java.util.PropertyPermission "java.specification.version" "read")

-(java.util.PropertyPermission "line.separator" "read")

-(java.util.PropertyPermission "java.class.version" "read")

-(java.util.PropertyPermission "java.specification.name" "read")

-(java.util.PropertyPermission "java.vendor.url" "read")

-(java.util.PropertyPermission "java.vm.version" "read")

-(java.util.PropertyPermission "os.name" "read")

-(java.util.PropertyPermission "os.arch" "read")

-(java.util.PropertyPermission "os.version" "read")

-(java.util.PropertyPermission "java.version" "read")

-(java.util.PropertyPermission "java.vm.specification.version" "read")

-(java.util.PropertyPermission "java.vm.specification.name" "read")

-(java.util.PropertyPermission "java.specification.vendor" "read")

-(java.util.PropertyPermission "java.vm.vendor" "read")

-(java.util.PropertyPermission "file.separator" "read")

-(java.util.PropertyPermission "path.separator" "read")

-(java.util.PropertyPermission "java.vm.name" "read")

-(java.util.PropertyPermission "java.vm.specification.vendor" "read")

-(java.util.PropertyPermission "org.osgi.framework.*" "read")

-(java.io.FilePermission "" "read")

-(java.io.FilePermission "-" "read,write,delete")

-

-# Added for OSGi SP R3

-(org.osgi.framework.PackagePermission "java.*" "import")

diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/DefaultProfileLogger.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/DefaultProfileLogger.java
deleted file mode 100644
index b3b27e1..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/DefaultProfileLogger.java
+++ /dev/null
@@ -1,393 +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.osgi.internal.profile;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-
-public class DefaultProfileLogger implements ProfileLogger {
-	protected static final String DEFAULTPROFILE_PROP = "osgi.defaultprofile."; //$NON-NLS-1$
-	protected static final String PROP_FILENAME = DEFAULTPROFILE_PROP + "logfilename"; //$NON-NLS-1$
-	protected static final String PROP_LOGSYNCHRONOUSLY = DEFAULTPROFILE_PROP + "logsynchronously"; //$NON-NLS-1$
-	protected static final String PROP_BUFFERSIZE = DEFAULTPROFILE_PROP + "buffersize"; //$NON-NLS-1$
-
-	protected static final String DEFAULTPROFILE_OPTION = "org.eclipse.osgi/defaultprofile/"; //$NON-NLS-1$
-	protected static final String OPTION_FILENAME = DEFAULTPROFILE_OPTION + "logfilename"; //$NON-NLS-1$
-	protected static final String OPTION_LOGSYNCHRONOUSLY = DEFAULTPROFILE_OPTION + "logsynchronously"; //$NON-NLS-1$
-	protected static final String OPTION_BUFFERSIZE = DEFAULTPROFILE_OPTION + "buffersize"; //$NON-NLS-1$
-
-	protected boolean logSynchronously = false;
-	protected long startTime = 0;
-	protected static final int DEFAULT_BUFFER_SIZE = 256;
-
-	protected TimeEntry[] timeLogEntries = null;
-	protected int timeEntriesIndex = 0;
-	protected StringBuffer timelog = null;
-
-	protected long launchTime = -1;
-	protected int bufferSize = DEFAULT_BUFFER_SIZE;
-	protected String logFileName = null;
-	protected File logFile = null;
-	private StringBuffer entryReport = new StringBuffer(120);
-	private StringBuffer padsb = new StringBuffer(16); // to prevent creating this over and over
-	protected int indent;
-	protected int timePaddingLength;
-	protected Stack scopeStack;
-	protected Map scopeToAccumPerfDataMap;
-
-	public DefaultProfileLogger() {
-		initProps();
-
-		int size = getBufferSize();
-		timeLogEntries = new TimeEntry[size];
-		timelog = new StringBuffer(4096);
-		for (int i = 0; i < size; i++) {
-			timeLogEntries[i] = timeEntryFactory();
-		}
-		timeEntriesIndex = 0;
-
-		launchTime = getLaunchTime();
-		if (launchTime == -1) {
-			startTime = getMainStartTime();
-		} else {
-			startTime = launchTime;
-		}
-
-		long freq = getTimerFrequency();
-		for (timePaddingLength = 3; freq > 9; timePaddingLength++) {
-			freq /= 10;
-		}
-
-		logInitMessages();
-	}
-
-	protected void logInitMessages() {
-		int index = 0;
-		if (launchTime != -1L) {
-			logTime(Profile.FLAG_NONE, "DefaultProfileLogger.init()", "launch time initialized", null); //$NON-NLS-1$//$NON-NLS-2$
-			timeLogEntries[index++].time = launchTime;
-		}
-
-		logTime(Profile.FLAG_NONE, "DefaultProfileLogger.init()", "start time initialized", null); //$NON-NLS-1$//$NON-NLS-2$
-		timeLogEntries[index++].time = getMainStartTime();
-	}
-
-	protected long getLaunchTime() {
-		String launchTimeString = FrameworkProperties.getProperty("launch.startMillis"); //$NON-NLS-1$
-		if (launchTimeString != null) {
-			return Long.parseLong(launchTimeString);
-		}
-		return -1L;
-	}
-
-	protected long getMainStartTime() {
-		String timeString = FrameworkProperties.getProperty("eclipse.startTime"); //$NON-NLS-1$
-		if (timeString != null)
-			return Long.parseLong(timeString);
-
-		return System.currentTimeMillis();
-	}
-
-	public void initProps() {
-		String prop;
-		FrameworkDebugOptions dbgOptions = null;
-		// if osgi.debug is not available, don't force DebugOptions
-		//  to init as this variable may be set later on where 
-		//  DebugOptions will succeed.
-		if (FrameworkProperties.getProperty("osgi.debug") != null) { //$NON-NLS-1$
-			dbgOptions = FrameworkDebugOptions.getDefault();
-			if (dbgOptions != null) {
-				logFileName = dbgOptions.getOption(OPTION_FILENAME);
-				logSynchronously = dbgOptions.getBooleanOption(OPTION_LOGSYNCHRONOUSLY, false);
-				int size = dbgOptions.getIntegerOption(OPTION_BUFFERSIZE, 0);
-				if (size > 0)
-					bufferSize = size;
-			}
-		}
-
-		if ((prop = FrameworkProperties.getProperty(PROP_FILENAME)) != null) {
-			logFileName = prop;
-			if (dbgOptions != null)
-				dbgOptions.setOption(OPTION_FILENAME, logFileName);
-		}
-		if ((prop = FrameworkProperties.getProperty(PROP_LOGSYNCHRONOUSLY)) != null) {
-			logSynchronously = Boolean.valueOf(prop).booleanValue();
-			if (dbgOptions != null)
-				dbgOptions.setOption(OPTION_LOGSYNCHRONOUSLY, new Boolean(logSynchronously).toString());
-		}
-		if ((prop = FrameworkProperties.getProperty(PROP_BUFFERSIZE)) != null) {
-			try {
-				int value = Integer.parseInt(prop);
-				if (value > 0) {
-					bufferSize = value;
-					if (dbgOptions != null)
-						dbgOptions.setOption(OPTION_BUFFERSIZE, Integer.toString(bufferSize));
-				}
-			} catch (NumberFormatException e) {
-				// do nothing
-			}
-		}
-	}
-
-	public synchronized void logTime(int flag, String id, String msg, String description) {
-		if (timeEntriesIndex == timeLogEntries.length) {
-			makeLog();
-			logTime(Profile.FLAG_NONE, "Profile.logTime()", "log entries rolled", null); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		TimeEntry entry = timeLogEntries[timeEntriesIndex++];
-		entry.time = getTime();
-		entry.id = id;
-		entry.msg = msg;
-		entry.flag = flag;
-		entry.description = description;
-
-		if (logSynchronously) {
-			System.out.print(getProfileLog().substring(2));
-		}
-	}
-
-	public synchronized String getProfileLog() {
-		String log;
-		log = getProfileLogReport();
-		writeToProfileLogFile(log);
-		return log;
-	}
-
-	public synchronized void accumLogEnter(String scope) {
-		// Initialize our data structures
-		if (scopeStack == null)
-			scopeStack = new Stack();
-		if (scopeToAccumPerfDataMap == null)
-			scopeToAccumPerfDataMap = new TreeMap();
-
-		// We want getTime() to evaluate as late as possible
-		scopeStack.push(new AccumPerfScope(scope, getTime()));
-	}
-
-	public synchronized void accumLogExit(String scope) {
-		// What time is it?
-		long exit = getTime();
-
-		// Initialize our data structures
-		if (scopeStack == null)
-			scopeStack = new Stack();
-		if (scopeToAccumPerfDataMap == null)
-			scopeToAccumPerfDataMap = new TreeMap();
-
-		// Do our calculations
-		AccumPerfScope then = (AccumPerfScope) scopeStack.pop();
-		if (then == null)
-			System.err.println("ACCUM PERF ERROR: Scope stack empty: " + scope); //$NON-NLS-1$
-		else {
-			if (!then.scope.equals(scope))
-				System.err.println("ACCUM PERF ERROR: Scope mismatch: then='" + then.scope + "', now='" + scope + "'"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$
-
-			AccumPerfData now = (AccumPerfData) scopeToAccumPerfDataMap.get(scope);
-			if (now == null) {
-				now = new AccumPerfData(scope);
-				scopeToAccumPerfDataMap.put(scope, now);
-			}
-
-			now.time += exit - then.enter;
-			now.enters++;
-		}
-	}
-
-	protected long getTime() {
-		return System.currentTimeMillis();
-	}
-
-	protected long getTimerFrequency() {
-		return 1000L; // millisecond
-	}
-
-	protected TimeEntry findCompareEntry(int index, String id, int flag) {
-		if (index > 0)
-			index--;
-		int prev = index;
-		if (flag != Profile.FLAG_ENTER) {
-			while (index >= 0) {
-				TimeEntry entry = timeLogEntries[index];
-				if (entry.id.equals(id)) {
-					switch (flag) {
-						case Profile.FLAG_NONE :
-							return entry;
-						case Profile.FLAG_EXIT :
-							if (entry.flag == Profile.FLAG_ENTER)
-								return entry;
-							break;
-					}
-				}
-				index--;
-			}
-		}
-		return timeLogEntries[prev];
-	}
-
-	protected String entryReport(TimeEntry entry, TimeEntry compareWith) {
-		// indent level:
-		entryReport.setLength(0);
-		if (entry.flag == Profile.FLAG_ENTER)
-			indent++;
-		long zeroTime = getRelativeTime(getStartTime());
-
-		entryReport.append('-');
-		long entryTime = getRelativeTime(entry.time);
-		long diff = entryTime - zeroTime;
-		entryReport.append(pad(Long.toString(diff), timePaddingLength));
-		entryReport.append(" :"); //$NON-NLS-1$
-		diff = entry.time - compareWith.time;
-		entryReport.append(pad(Long.toString(diff), timePaddingLength));
-		entryReport.append(pad("", indent * 2)); // indent before displaying the entry.id //$NON-NLS-1$
-
-		if (entry.flag == Profile.FLAG_ENTER)
-			entryReport.append(" >> "); //$NON-NLS-1$
-		else if (entry.flag == Profile.FLAG_EXIT)
-			entryReport.append(" << "); //$NON-NLS-1$
-		else if (entry.flag == Profile.FLAG_NONE)
-			entryReport.append(" -- "); //$NON-NLS-1$
-
-		entryReport.append(entry.id);
-		entryReport.append(" > "); //$NON-NLS-1$
-		entryReport.append(entry.msg);
-		if (entry.description != null) {
-			entryReport.append(" :: "); //$NON-NLS-1$
-			entryReport.append(entry.description);
-		}
-		entryReport.append("\r\n"); //$NON-NLS-1$
-
-		if (entry.flag == Profile.FLAG_EXIT)
-			indent -= 1;
-		return entryReport.toString();
-	}
-
-	protected String accumEntryReport(AccumPerfData d) {
-		return ("     " + d.scope + ":enters=" + d.enters + ";time=" + d.time + ";\r\n"); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
-	}
-
-	protected void makeLog() {
-		indent = 0;
-		timelog.append("\r\n"); //$NON-NLS-1$
-		for (int i = 0; i < timeEntriesIndex; i++) {
-			TimeEntry entry = timeLogEntries[i];
-			TimeEntry cmpEntry = findCompareEntry(i, entry.id, entry.flag);
-			timelog.append(entryReport(entry, cmpEntry));
-		}
-		timeEntriesIndex = 0;
-
-		if (scopeToAccumPerfDataMap == null || scopeToAccumPerfDataMap.isEmpty())
-			return; // No data; nothing to do
-		timelog.append("\r\n"); //$NON-NLS-1$
-		timelog.append("Cumulative Log:\r\n"); //$NON-NLS-1$
-		Iterator iter = scopeToAccumPerfDataMap.values().iterator();
-		while (iter.hasNext()) {
-			AccumPerfData d = (AccumPerfData) iter.next();
-			timelog.append(accumEntryReport(d));
-		}
-		scopeToAccumPerfDataMap.clear();
-	}
-
-	protected String pad(String str, int size) {
-		padsb.setLength(0);
-		int len = str.length();
-		int count = size - len;
-		for (int i = 0; i < count; i++)
-			padsb.append(' ');
-		padsb.append(str);
-		return padsb.toString();
-	}
-
-	protected String getProfileLogReport() {
-		if (timelog == null)
-			return ""; //$NON-NLS-1$
-		makeLog();
-		String log = timelog.toString();
-		timelog.setLength(0);
-		return log;
-	}
-
-	protected void writeToProfileLogFile(String log) {
-		File profileLog = getProfileLogFile();
-		if (profileLog == null)
-			return;
-		FileWriter fw = null;
-		try {
-			fw = new FileWriter(profileLog.getAbsolutePath(), true);
-			fw.write(log);
-		} catch (IOException e) {
-			e.printStackTrace();
-		} finally {
-			if (fw != null)
-				try {
-					fw.close();
-				} catch (IOException e) {
-					// do nothing
-				}
-		}
-	}
-
-	protected File getProfileLogFile() {
-		if (logFile == null)
-			if ((logFileName != null) && (logFileName.length() > 0))
-				logFile = new File(logFileName);
-		return logFile;
-	}
-
-	protected long getStartTime() {
-		return startTime;
-	}
-
-	protected long getRelativeTime(long absoluteTime) {
-		return absoluteTime;
-	}
-
-	protected int getBufferSize() {
-		if (bufferSize < 2)
-			return DEFAULT_BUFFER_SIZE;
-		return bufferSize;
-	}
-
-	protected TimeEntry timeEntryFactory() {
-		return new TimeEntry();
-	}
-
-	protected class TimeEntry {
-		public long time;
-		public String id;
-		public String msg;
-		public String description;
-		public int flag;
-	}
-
-	protected static class AccumPerfData {
-		public AccumPerfData(String scope) {
-			this.scope = scope;
-		}
-
-		public String scope;
-		public long time;
-		public long enters;
-	}
-
-	protected static class AccumPerfScope {
-		public AccumPerfScope(String scope, long enter) {
-			this.scope = scope;
-			this.enter = enter;
-		}
-
-		public String scope;
-		public long enter;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/Profile.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/Profile.java
deleted file mode 100644
index b8c49ca..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/Profile.java
+++ /dev/null
@@ -1,268 +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.osgi.internal.profile;
-
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-
-/**
- * This class is a development tool that provides a simple way to log 
- * programmer defined timmings for performance evaluations. This profiling
- * allows logging of a timestamp with a corresponding message to a trace 
- * buffer. 
- */
-
-public class Profile {
-	/**
-	 * Profiling is enabled and available.
-	 */
-	public static final boolean PROFILE = true; // enable profile compiling
-	/**
-	 * The logging state of <tt>STARTUP</tt> messages
-	 */
-	public static boolean STARTUP = false; // enable startup profiling
-	/**
-	 * The logging state of <tt>BENCHMARK</tt> messages
-	 */
-	public static boolean BENCHMARK = false; // enable all benchmarking
-	/**
-	 * The logging state of <tt>DEBUG</tt> messages
-	 */
-	public static boolean DEBUG = false; // enable general debug profiling
-
-	private static final String OSGI_PROP = "osgi.profile."; //$NON-NLS-1$
-	private static final String PROP_STARTUP = OSGI_PROP + "startup"; //$NON-NLS-1$
-	private static final String PROP_BENCHMARK = OSGI_PROP + "benchmark"; //$NON-NLS-1$
-	private static final String PROP_DEBUG = OSGI_PROP + "debug"; //$NON-NLS-1$
-	private static final String PROP_IMPL = OSGI_PROP + "impl"; //$NON-NLS-1$
-
-	private static final String OSGI_OPTION = "org.eclipse.osgi/profile/"; //$NON-NLS-1$
-	private static final String OPTION_STARTUP = OSGI_OPTION + "startup"; //$NON-NLS-1$
-	private static final String OPTION_BENCHMARK = OSGI_OPTION + "benchmark"; //$NON-NLS-1$
-	private static final String OPTION_DEBUG = OSGI_OPTION + "debug"; //$NON-NLS-1$
-	private static final String OPTION_IMPL = OSGI_OPTION + "impl"; //$NON-NLS-1$
-
-	/**
-	 *  The default logging flag. 
-	 */
-	public static final int FLAG_NONE = 0;
-	/**
-	 * The logging flag for <strong>method enter</strong>
-	 */
-	public static final int FLAG_ENTER = 1;
-	/**
-	 * The logging flag for <strong>method exit</strong>
-	 */
-	public static final int FLAG_EXIT = 2;
-	/**
-	 * The description for <strong>method enter</strong>
-	 */
-	public static final String ENTER_DESCRIPTION = "enter"; //$NON-NLS-1$
-	/**
-	 * The description for <strong>method exit</strong>
-	 */
-	public static final String EXIT_DESCRIPTION = "exit"; //$NON-NLS-1$
-
-	private static ProfileLogger profileLogger = null;
-	private static String profileLoggerClassName = null;
-
-	static {
-		initProps();
-	}
-
-	/**
-	 * Initialize/update profiling properties.
-	 * 
-	 * If profiling properties are updated, this method is called to update
-	 * the profile states.
-	 */
-	public static void initProps() {
-		String prop;
-		FrameworkDebugOptions dbgOptions = null;
-
-		// if osgi.debug is not available, don't force DebugOptions
-		//  to init as this variable may be set later on where 
-		//  DebugOptions will succeed.
-		if (FrameworkProperties.getProperty("osgi.debug") != null) { //$NON-NLS-1$
-			dbgOptions = FrameworkDebugOptions.getDefault();
-			if (dbgOptions != null) {
-				STARTUP = dbgOptions.getBooleanOption(OPTION_STARTUP, false);
-				BENCHMARK = dbgOptions.getBooleanOption(OPTION_BENCHMARK, false);
-				DEBUG = dbgOptions.getBooleanOption(OPTION_DEBUG, false);
-				if (profileLogger == null)
-					profileLoggerClassName = dbgOptions.getOption(OPTION_IMPL);
-			}
-		}
-
-		// System properties will always override anything in .options file
-		if ((prop = FrameworkProperties.getProperty(PROP_STARTUP)) != null) {
-			STARTUP = Boolean.valueOf(prop).booleanValue();
-			if (dbgOptions != null)
-				dbgOptions.setOption(OPTION_STARTUP, new Boolean(STARTUP).toString());
-		}
-		if ((prop = FrameworkProperties.getProperty(PROP_BENCHMARK)) != null) {
-			BENCHMARK = Boolean.valueOf(prop).booleanValue();
-			if (dbgOptions != null)
-				dbgOptions.setOption(OPTION_BENCHMARK, new Boolean(BENCHMARK).toString());
-		}
-		if ((prop = FrameworkProperties.getProperty(PROP_DEBUG)) != null) {
-			DEBUG = Boolean.valueOf(prop).booleanValue();
-			if (dbgOptions != null)
-				dbgOptions.setOption(OPTION_DEBUG, new Boolean(DEBUG).toString());
-		}
-
-		if (profileLogger == null) {
-			if ((prop = FrameworkProperties.getProperty(PROP_IMPL)) != null) {
-				profileLoggerClassName = prop;
-				if (dbgOptions != null)
-					dbgOptions.setOption(OPTION_IMPL, profileLoggerClassName);
-			}
-		} else {
-			profileLogger.initProps();
-		}
-	}
-
-	/**
-	 * Log a method enter.
-	 * 
-	 * @param id The method's unique identification (e.g. org.eclipse.class#name).
-	 */
-	public static void logEnter(String id) {
-		logTime(FLAG_ENTER, id, ENTER_DESCRIPTION, null);
-	}
-
-	/**
-	 * Log a method enter.
-	 * 
-	 * @param id The method's unique identification (e.g. org.eclipse.class#name).
-	 * @param description A description of the method.
-	 */
-	public static void logEnter(String id, String description) {
-		logTime(FLAG_ENTER, id, ENTER_DESCRIPTION, description);
-	}
-
-	/**
-	 * Log a method exit.
-	 * 
-	 * @param id The method's unique identification (e.g. org.eclipse.class#name).
-	 */
-	public static void logExit(String id) {
-		logTime(FLAG_EXIT, id, EXIT_DESCRIPTION, null);
-	}
-
-	/**
-	 * Log a method exit.
-	 * 
-	 * @param id The method's unique identification (e.g. org.eclipse.class#name).
-	 * @param description A description of the method.
-	 */
-	public static void logExit(String id, String description) {
-		logTime(FLAG_EXIT, id, EXIT_DESCRIPTION, description);
-	}
-
-	/**
-	 * Log a message.
-	 * 
-	 * @param id The method's unique identification (e.g. org.eclipse.class#name).
-	 * @param msg The message.
-	 */
-	public static void logTime(String id, String msg) {
-		logTime(FLAG_NONE, id, msg, null);
-	}
-
-	/**
-	 * Log a message.
-	 * 
-	 * @param id The method's unique identification (e.g. org.eclipse.class#name).
-	 * @param msg The message.
-	 * @param description A description of the method.
-	 */
-	public static void logTime(String id, String msg, String description) {
-		logTime(FLAG_NONE, id, msg, description);
-	}
-
-	/**
-	 * Log a message.
-	 * 
-	 * @param flag A profile logging flag.
-	 * @param id The method's unique identification (e.g. org.eclipse.class#name).
-	 * @param msg The message.
-	 * @param description A description of the method.
-	 * 
-	 * @see #FLAG_ENTER
-	 * @see #FLAG_EXIT
-	 * @see #FLAG_NONE
-	 */
-	public static void logTime(int flag, String id, String msg, String description) {
-		if (profileLogger == null)
-			profileLogger = createProfileLogger();
-		profileLogger.logTime(flag, id, msg, description);
-	}
-
-	/**
-	 * Use cumulative logging to record the entrance from this scope.
-	 * 
-	 * @param scope The entering scope
-	 */
-	public static void accumLogEnter(String scope) {
-		if (profileLogger == null)
-			profileLogger = createProfileLogger();
-		profileLogger.accumLogEnter(scope);
-	}
-
-	/**
-	 * Use cumulative logging to record the exit from this scope.
-	 * 
-	 * @param scope The exiting scope
-	 */
-	public static void accumLogExit(String scope) {
-		if (profileLogger == null)
-			profileLogger = createProfileLogger();
-		profileLogger.accumLogExit(scope);
-	}
-
-	/**
-	 * Get the profiling log report and reset the trace buffer.
-	 * 
-	 * @return The profiling log report.
-	 */
-	public static String getProfileLog() {
-		if (profileLogger != null)
-			return profileLogger.getProfileLog();
-		return ""; //$NON-NLS-1$
-	}
-
-	/**
-	 *  Create an instance of the appropriate profile logger
-	 */
-	private static ProfileLogger createProfileLogger() {
-		ProfileLogger result = null;
-
-		// Try to create it by class name
-		if (profileLoggerClassName != null) {
-			Class profileImplClass = null;
-			try {
-				profileImplClass = Class.forName(profileLoggerClassName);
-				result = (ProfileLogger) profileImplClass.newInstance();
-			} catch (Exception e) {
-				// could not find the class
-				e.printStackTrace();
-			}
-		}
-
-		// Use the default
-		if (result == null)
-			result = new DefaultProfileLogger();
-
-		return (result);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/ProfileLogger.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/ProfileLogger.java
deleted file mode 100644
index 31cab05..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/profile/ProfileLogger.java
+++ /dev/null
@@ -1,42 +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.osgi.internal.profile;
-
-public interface ProfileLogger {
-
-	/**
-	 * 
-	 *@see Profile#initProps()
-	 */
-	public void initProps();
-
-	/**
-	 *@see Profile#logTime(int, String, String, String) 
-	 */
-	public void logTime(int flag, String id, String msg, String description);
-
-	/**
-	 * @see Profile#accumLogEnter(String)
-	 */
-	public void accumLogEnter(String scope);
-
-	/**
-	 * @see Profile#accumLogExit(String)
-	 */
-	public void accumLogExit(String scope);
-
-	/**
-	 * 
-	 * @see Profile#getProfileLog()
-	 */
-	public String getProfileLog();
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/FilteredServiceListener.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/FilteredServiceListener.java
deleted file mode 100755
index beeb492..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/FilteredServiceListener.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.BundleContextImpl;
-import org.eclipse.osgi.framework.internal.core.FilterImpl;
-import org.osgi.framework.*;
-import org.osgi.framework.hooks.service.ListenerHook;
-
-/**
- * Service Listener delegate.
- */
-class FilteredServiceListener implements ServiceListener, ListenerHook.ListenerInfo {
-	/** Filter for listener. */
-	private final FilterImpl filter;
-	/** Real listener. */
-	private final ServiceListener listener;
-	/** The bundle context */
-	private final BundleContextImpl context;
-	/** is this an AllServiceListener */
-	private final boolean allservices;
-	/** an objectClass required by the filter */
-	private final String objectClass;
-	/** indicates whether the listener has been removed */
-	private volatile boolean removed;
-
-	/**
-	 * Constructor.
-	 *
-	 * @param context The bundle context of the bundle which added the specified service listener.
-	 * @param filterstring The filter string specified when this service listener was added.
-	 * @param listener The service listener object.
-	 * @exception InvalidSyntaxException if the filter is invalid.
-	 */
-	FilteredServiceListener(final BundleContextImpl context, final ServiceListener listener, final String filterstring) throws InvalidSyntaxException {
-		if (filterstring == null) {
-			this.filter = null;
-			this.objectClass = null;
-		} else {
-			FilterImpl filterImpl = FilterImpl.newInstance(filterstring);
-			String clazz = filterImpl.getRequiredObjectClass();
-			if (clazz == null) {
-				this.objectClass = null;
-				this.filter = filterImpl;
-			} else {
-				this.objectClass = clazz.intern(); /*intern the name for future identity comparison */
-				this.filter = filterstring.equals(getObjectClassFilterString(this.objectClass)) ? null : filterImpl;
-			}
-		}
-		this.removed = false;
-		this.listener = listener;
-		this.context = context;
-		this.allservices = (listener instanceof AllServiceListener);
-	}
-
-	/**
-	 * Receives notification that a service has had a lifecycle change.
-	 * 
-	 * @param event The <code>ServiceEvent</code> object.
-	 */
-	public void serviceChanged(ServiceEvent event) {
-		ServiceReferenceImpl reference = (ServiceReferenceImpl) event.getServiceReference();
-
-		// first check if we can short circuit the filter match if the required objectClass does not match the event
-		objectClassCheck: if (objectClass != null) {
-			String[] classes = reference.getClasses();
-			int size = classes.length;
-			for (int i = 0; i < size; i++) {
-				if (classes[i] == objectClass) // objectClass strings have previously been interned for identity comparison 
-					break objectClassCheck;
-			}
-			return; // no class in this event matches a required part of the filter; we do not need to deliver this event
-		}
-		// TODO could short circuit service.id filters as well since the id is constant for a registration.
-
-		if (!ServiceRegistry.hasListenServicePermission(event, context))
-			return;
-
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = this.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(this)); //$NON-NLS-1$
-			Debug.println("filterServiceEvent(" + listenerName + ", \"" + getFilter() + "\", " + reference.getRegistration().getProperties() + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-
-		event = filterMatch(event);
-		if (event == null) {
-			return;
-		}
-		if (allservices || ServiceRegistry.isAssignableTo(context, reference)) {
-			if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-				String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-				Debug.println("dispatchFilteredServiceEvent(" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-
-			listener.serviceChanged(event);
-		}
-	}
-
-	/**
-	 * Returns a service event that should be delivered to the listener based on the filter evaluation.
-	 * This may result in a service event of type MODIFIED_ENDMATCH.
-	 * 
-	 * @param delivered The service event delivered by the framework.
-	 * @return The event to be delivered or null if no event is to be delivered to the listener.
-	 */
-	private ServiceEvent filterMatch(ServiceEvent delivered) {
-		boolean modified = delivered.getType() == ServiceEvent.MODIFIED;
-		ServiceEvent event = modified ? ((ModifiedServiceEvent) delivered).getModifiedEvent() : delivered;
-		if (filter == null) {
-			return event;
-		}
-		ServiceReference reference = event.getServiceReference();
-		if (filter.match(reference)) {
-			return event;
-		}
-		if (modified) {
-			ModifiedServiceEvent modifiedServiceEvent = (ModifiedServiceEvent) delivered;
-			if (modifiedServiceEvent.matchPreviousProperties(filter)) {
-				return modifiedServiceEvent.getModifiedEndMatchEvent();
-			}
-		}
-		// does not match and did not match previous properties; do not send event
-		return null;
-	}
-
-	/**
-	 * The string representation of this Filtered listener.
-	 *
-	 * @return The string representation of this listener.
-	 */
-	public String toString() {
-		String filterString = getFilter();
-		if (filterString == null) {
-			filterString = ""; //$NON-NLS-1$
-		}
-		return listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)) + filterString; //$NON-NLS-1$
-	}
-
-	/** 
-	 * Return the bundle context for the ListenerHook.
-	 * @return The context of the bundle which added the service listener.
-	 * @see org.osgi.framework.hooks.service.ListenerHook.ListenerInfo#getBundleContext()
-	 */
-	public BundleContext getBundleContext() {
-		return context;
-	}
-
-	/** 
-	 * Return the filter string for the ListenerHook.
-	 * @return The filter string with which the listener was added. This may
-	 * be <code>null</code> if the listener was added without a filter.
-	 * @see org.osgi.framework.hooks.service.ListenerHook.ListenerInfo#getFilter()
-	 */
-	public String getFilter() {
-		if (filter != null) {
-			return filter.toString();
-		}
-		return getObjectClassFilterString(objectClass);
-	}
-
-	/**
-	 * Return the state of the listener for this addition and removal life
-	 * cycle. Initially this method will return <code>false</code>
-	 * indicating the listener has been added but has not been removed.
-	 * After the listener has been removed, this method must always return
-	 * <code>true</code>.
-	 * 
-	 * @return <code>false</code> if the listener has not been been removed,
-	 *         <code>true</code> otherwise.
-	 */
-	public boolean isRemoved() {
-		return removed;
-	}
-
-	/** 
-	 * Mark the service listener registration as removed.
-	 */
-	void markRemoved() {
-		removed = true;
-	}
-
-	/**
-	 * Returns an objectClass filter string for the specified class name.
-	 * @return A filter string for the specified class name or <code>null</code> if the 
-	 * specified class name is <code>null</code>.
-	 */
-	private static String getObjectClassFilterString(String className) {
-		if (className == null) {
-			return null;
-		}
-		return "(" + Constants.OBJECTCLASS + "=" + className + ")"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ModifiedServiceEvent.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ModifiedServiceEvent.java
deleted file mode 100644
index 78fe99d..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ModifiedServiceEvent.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import org.osgi.framework.*;
-
-/**
- * ServiceEvent subtype for MODIFIED_ENDMATCH computation.
- *
- */
-class ModifiedServiceEvent extends ServiceEvent {
-	private static final long serialVersionUID = -5373850978543026102L;
-	private final ServiceEvent modified;
-	private final ServiceEvent modifiedEndMatch;
-	private final ServiceProperties previousProperties;
-
-	/**
-	 * Create a ServiceEvent containing the service properties prior to modification.
-	 * 
-	 * @param reference Reference to service with modified properties.
-	 * @param previousProperties Service properties prior to modification.
-	 */
-	ModifiedServiceEvent(ServiceReference reference, ServiceProperties previousProperties) {
-		super(ServiceEvent.MODIFIED, reference);
-		this.modified = new ServiceEvent(ServiceEvent.MODIFIED, reference);
-		this.modifiedEndMatch = new ServiceEvent(ServiceEvent.MODIFIED_ENDMATCH, reference);
-		this.previousProperties = previousProperties;
-	}
-
-	/**
-	 * Return the service event of type MODIFIED.
-	 * 
-	 * @return The service event of type MODIFIED.
-	 */
-	ServiceEvent getModifiedEvent() {
-		return modified;
-	}
-
-	/**
-	 * Return the service event of type MODIFIED_ENDMATCH.
-	 * 
-	 * @return The service event of type MODIFIED_ENDMATCH.
-	 */
-	ServiceEvent getModifiedEndMatchEvent() {
-		return modifiedEndMatch;
-	}
-
-	/**
-	 * Return if the specified filter matches the previous service 
-	 * properties.
-	 * 
-	 * @param filter The filer to evaluate using the previous service 
-	 * properties.
-	 * @return True is the filter matches the previous service properties.
-	 */
-	boolean matchPreviousProperties(Filter filter) {
-		/* We use matchCase here since ServiceProperties already 
-		 * does case insensitive lookup.
-		 */
-		return filter.matchCase(previousProperties);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java
deleted file mode 100644
index d9dc630..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceProperties.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import java.lang.reflect.Array;
-import java.util.*;
-import org.eclipse.osgi.framework.util.Headers;
-import org.osgi.framework.Constants;
-
-/**
- * Hashtable for service properties.
- * 
- * Supports case-insensitive key lookup.
- */
-class ServiceProperties extends Headers {
-	/**
-	 * Create a properties object for the service.
-	 *
-	 * @param props The properties for this service.
-	 */
-	private ServiceProperties(int size, Dictionary props) {
-		super(size);
-
-		if (props == null) {
-			return;
-		}
-		synchronized (props) {
-			Enumeration keysEnum = props.keys();
-
-			while (keysEnum.hasMoreElements()) {
-				Object key = keysEnum.nextElement();
-
-				if (key instanceof String) {
-					String header = (String) key;
-
-					setProperty(header, props.get(header));
-				}
-			}
-		}
-	}
-
-	/**
-	 * Create a properties object for the service.
-	 *
-	 * @param props The properties for this service.
-	 */
-	ServiceProperties(Dictionary props) {
-		this((props == null) ? 2 : props.size() + 2, props);
-	}
-
-	/**
-	 * Get a clone of the value of a service's property.
-	 *
-	 * @param key header name.
-	 * @return Clone of the value of the property or <code>null</code> if there is
-	 * no property by that name.
-	 */
-	Object getProperty(String key) {
-		return cloneValue(get(key));
-	}
-
-	/**
-	 * Get the list of key names for the service's properties.
-	 *
-	 * @return The list of property key names.
-	 */
-	synchronized String[] getPropertyKeys() {
-		int size = size();
-
-		String[] keynames = new String[size];
-
-		Enumeration keysEnum = keys();
-
-		for (int i = 0; i < size; i++) {
-			keynames[i] = (String) keysEnum.nextElement();
-		}
-
-		return keynames;
-	}
-
-	/**
-	 * Put a clone of the property value into this property object.
-	 *
-	 * @param key Name of property.
-	 * @param value Value of property.
-	 * @return previous property value.
-	 */
-	synchronized Object setProperty(String key, Object value) {
-		return set(key, cloneValue(value));
-	}
-
-	/**
-	 * Attempt to clone the value if necessary and possible.
-	 *
-	 * For some strange reason, you can test to see of an Object is
-	 * Cloneable but you can't call the clone method since it is
-	 * protected on Object!
-	 *
-	 * @param value object to be cloned.
-	 * @return cloned object or original object if we didn't clone it.
-	 */
-	private static Object cloneValue(Object value) {
-		if (value == null)
-			return null;
-		if (value instanceof String) /* shortcut String */
-			return value;
-		if (value instanceof Number) /* shortcut Number */
-			return value;
-		if (value instanceof Character) /* shortcut Character */
-			return value;
-		if (value instanceof Boolean) /* shortcut Boolean */
-			return value;
-
-		Class clazz = value.getClass();
-		if (clazz.isArray()) {
-			// Do an array copy
-			Class type = clazz.getComponentType();
-			int len = Array.getLength(value);
-			Object clonedArray = Array.newInstance(type, len);
-			System.arraycopy(value, 0, clonedArray, 0, len);
-			return clonedArray;
-		}
-		// must use reflection because Object clone method is protected!!
-		try {
-			return clazz.getMethod("clone", null).invoke(value, null); //$NON-NLS-1$
-		} catch (Exception e) {
-			/* clone is not a public method on value's class */
-		} catch (Error e) {
-			/* JCL does not support reflection; try some well known types */
-			if (value instanceof Vector)
-				return ((Vector) value).clone();
-			if (value instanceof Hashtable)
-				return ((Hashtable) value).clone();
-		}
-		return value;
-	}
-
-	public synchronized String toString() {
-		String keys[] = getPropertyKeys();
-
-		int size = keys.length;
-
-		StringBuffer sb = new StringBuffer(20 * size);
-
-		sb.append('{');
-
-		int n = 0;
-		for (int i = 0; i < size; i++) {
-			String key = keys[i];
-			if (!key.equals(Constants.OBJECTCLASS)) {
-				if (n > 0)
-					sb.append(", "); //$NON-NLS-1$
-
-				sb.append(key);
-				sb.append('=');
-				Object value = get(key);
-				if (value.getClass().isArray()) {
-					sb.append('[');
-					int length = Array.getLength(value);
-					for (int j = 0; j < length; j++) {
-						if (j > 0)
-							sb.append(',');
-						sb.append(Array.get(value, j));
-					}
-					sb.append(']');
-				} else {
-					sb.append(value);
-				}
-				n++;
-			}
-		}
-
-		sb.append('}');
-
-		return sb.toString();
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceReferenceImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceReferenceImpl.java
deleted file mode 100755
index a89ef80..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceReferenceImpl.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import org.osgi.framework.*;
-
-/**
- * A reference to a service.
- * 
- * <p>
- * The Framework returns <code>ServiceReference</code> objects from the
- * <code>BundleContext.getServiceReference</code> and
- * <code>BundleContext.getServiceReferences</code> methods.
- * <p>
- * A <code>ServiceReference</code> object may be shared between bundles and
- * can be used to examine the properties of the service and to get the service
- * object.
- * <p>
- * Every service registered in the Framework has a unique
- * <code>ServiceRegistration</code> object and may have multiple, distinct
- * <code>ServiceReference</code> objects referring to it.
- * <code>ServiceReference</code> objects associated with a
- * <code>ServiceRegistration</code> object have the same <code>hashCode</code>
- * and are considered equal (more specifically, their <code>equals()</code>
- * method will return <code>true</code> when compared).
- * <p>
- * If the same service object is registered multiple times,
- * <code>ServiceReference</code> objects associated with different
- * <code>ServiceRegistration</code> objects are not equal.
- * 
- * @see BundleContext#getServiceReference
- * @see BundleContext#getServiceReferences
- * @see BundleContext#getService
- * @ThreadSafe
- */
-public class ServiceReferenceImpl implements ServiceReference, Comparable {
-	/** Registered Service object. */
-	private final ServiceRegistrationImpl registration;
-
-	/**
-	 * Construct a reference.
-	 *
-	 */
-	ServiceReferenceImpl(ServiceRegistrationImpl registration) {
-		this.registration = registration;
-		/* We must not dereference registration in the constructor
-		 * since it is "leaked" to us in the ServiceRegistrationImpl
-		 * constructor.
-		 */
-	}
-
-	/**
-	 * Returns the property value to which the specified property key is mapped
-	 * in the properties <code>Dictionary</code> object of the service
-	 * referenced by this <code>ServiceReference</code> object.
-	 * 
-	 * <p>
-	 * Property keys are case-insensitive.
-	 * 
-	 * <p>
-	 * This method must continue to return property values after the service has
-	 * been unregistered. This is so references to unregistered services (for
-	 * example, <code>ServiceReference</code> objects stored in the log) can
-	 * still be interrogated.
-	 * 
-	 * @param key The property key.
-	 * @return The property value to which the key is mapped; <code>null</code>
-	 *         if there is no property named after the key.
-	 */
-	public Object getProperty(String key) {
-		return registration.getProperty(key);
-	}
-
-	/**
-	 * Returns an array of the keys in the properties <code>Dictionary</code>
-	 * object of the service referenced by this <code>ServiceReference</code>
-	 * object.
-	 * 
-	 * <p>
-	 * This method will continue to return the keys after the service has been
-	 * unregistered. This is so references to unregistered services (for
-	 * example, <code>ServiceReference</code> objects stored in the log) can
-	 * still be interrogated.
-	 * 
-	 * <p>
-	 * This method is <i>case-preserving </i>; this means that every key in the
-	 * returned array must have the same case as the corresponding key in the
-	 * properties <code>Dictionary</code> that was passed to the
-	 * {@link BundleContext#registerService(String[],Object,java.util.Dictionary)}
-	 * or {@link ServiceRegistration#setProperties} methods.
-	 * 
-	 * @return An array of property keys.
-	 */
-	public String[] getPropertyKeys() {
-		return registration.getPropertyKeys();
-	}
-
-	/**
-	 * Returns the bundle that registered the service referenced by this
-	 * <code>ServiceReference</code> object.
-	 * 
-	 * <p>
-	 * This method must return <code>null</code> when the service has been
-	 * unregistered. This can be used to determine if the service has been
-	 * unregistered.
-	 * 
-	 * @return The bundle that registered the service referenced by this
-	 *         <code>ServiceReference</code> object; <code>null</code> if
-	 *         that service has already been unregistered.
-	 * @see BundleContext#registerService(String[],Object,java.util.Dictionary)
-	 */
-	public Bundle getBundle() {
-		return registration.getBundle();
-	}
-
-	/**
-	 * Returns the bundles that are using the service referenced by this
-	 * <code>ServiceReference</code> object. Specifically, this method returns
-	 * the bundles whose usage count for that service is greater than zero.
-	 * 
-	 * @return An array of bundles whose usage count for the service referenced
-	 *         by this <code>ServiceReference</code> object is greater than
-	 *         zero; <code>null</code> if no bundles are currently using that
-	 *         service.
-	 * 
-	 * @since 1.1
-	 */
-	public Bundle[] getUsingBundles() {
-		return registration.getUsingBundles();
-	}
-
-	/**
-	 * Tests if the bundle that registered the service referenced by this
-	 * <code>ServiceReference</code> and the specified bundle use the same
-	 * source for the package of the specified class name.
-	 * <p>
-	 * This method performs the following checks:
-	 * <ol>
-	 * <li>Get the package name from the specified class name.</li>
-	 * <li>For the bundle that registered the service referenced by this
-	 * <code>ServiceReference</code> (registrant bundle); find the source for
-	 * the package. If no source is found then return <code>true</code> if the
-	 * registrant bundle is equal to the specified bundle; otherwise return
-	 * <code>false</code>.</li>
-	 * <li>If the package source of the registrant bundle is equal to the
-	 * package source of the specified bundle then return <code>true</code>;
-	 * otherwise return <code>false</code>.</li>
-	 * </ol>
-	 * 
-	 * @param bundle The <code>Bundle</code> object to check.
-	 * @param className The class name to check.
-	 * @return <code>true</code> if the bundle which registered the service
-	 *         referenced by this <code>ServiceReference</code> and the
-	 *         specified bundle use the same source for the package of the
-	 *         specified class name. Otherwise <code>false</code> is returned.
-	 * 
-	 * @since 1.3
-	 */
-	public boolean isAssignableTo(Bundle bundle, String className) {
-		return registration.isAssignableTo(bundle, className);
-	}
-
-	/**
-	 * Compares this <code>ServiceReference</code> with the specified
-	 * <code>ServiceReference</code> for order.
-	 * 
-	 * <p>
-	 * If this <code>ServiceReference</code> and the specified
-	 * <code>ServiceReference</code> have the same
-	 * {@link Constants#SERVICE_ID service id} they are equal. This
-	 * <code>ServiceReference</code> is less than the specified
-	 * <code>ServiceReference</code> if it has a lower
-	 * {@link Constants#SERVICE_RANKING service ranking} and greater if it has a
-	 * higher service ranking. Otherwise, if this <code>ServiceReference</code>
-	 * and the specified <code>ServiceReference</code> have the same
-	 * {@link Constants#SERVICE_RANKING service ranking}, this
-	 * <code>ServiceReference</code> is less than the specified
-	 * <code>ServiceReference</code> if it has a higher
-	 * {@link Constants#SERVICE_ID service id} and greater if it has a lower
-	 * service id.
-	 * 
-	 * @param object The <code>ServiceReference</code> to be compared.
-	 * @return Returns a negative integer, zero, or a positive integer if this
-	 *         <code>ServiceReference</code> is less than, equal to, or
-	 *         greater than the specified <code>ServiceReference</code>.
-	 * @since 1.4
-	 */
-	public int compareTo(Object object) {
-		ServiceRegistrationImpl other = ((ServiceReferenceImpl) object).registration;
-
-		final int thisRanking = registration.getRanking();
-		final int otherRanking = other.getRanking();
-		if (thisRanking != otherRanking) {
-			if (thisRanking < otherRanking) {
-				return -1;
-			}
-			return 1;
-		}
-		final long thisId = registration.getId();
-		final long otherId = other.getId();
-		if (thisId == otherId) {
-			return 0;
-		}
-		if (thisId < otherId) {
-			return 1;
-		}
-		return -1;
-	}
-
-	/**
-	 * Returns a hash code value for the object.
-	 *
-	 * @return  a hash code value for this object.
-	 */
-	public int hashCode() {
-		return registration.hashCode();
-	}
-
-	/**
-	 * Indicates whether some other object is "equal to" this one.
-	 *
-	 * @param   obj   the reference object with which to compare.
-	 * @return  <code>true</code> if this object is the same as the obj
-	 *          argument; <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof ServiceReferenceImpl)) {
-			return false;
-		}
-
-		ServiceReferenceImpl other = (ServiceReferenceImpl) obj;
-
-		return registration == other.registration;
-	}
-
-	/**
-	 * Return a string representation of this reference.
-	 *
-	 * @return String
-	 */
-	public String toString() {
-		return registration.toString();
-	}
-
-	/**
-	 * Return the ServiceRegistrationImpl for this ServiceReferenceImpl.
-	 * 
-	 * @return The ServiceRegistrationImpl for this ServiceReferenceImpl.
-	 */
-	public ServiceRegistrationImpl getRegistration() {
-		return registration;
-	}
-
-	/**
-	 * Return the classes under which the referenced service was registered.
-	 *
-	 * @return array of class names.
-	 */
-	String[] getClasses() {
-		return registration.getClasses();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistrationImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistrationImpl.java
deleted file mode 100755
index 787759e..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistrationImpl.java
+++ /dev/null
@@ -1,631 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import java.util.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.osgi.framework.*;
-import org.osgi.framework.Constants;
-
-/**
- * A registered service.
- *
- * The framework returns a ServiceRegistration object when a
- * {@link BundleContextImpl#registerService(String, Object, Dictionary) BundleContext.registerService}
- * method is successful. This object is for the private use of
- * the registering bundle and should not be shared with other bundles.
- * <p>The ServiceRegistration object may be used to update the properties
- * for the service or to unregister the service.
- *
- * <p>If the ServiceRegistration is garbage collected the framework may remove
- * the service. This implies that if a
- * bundle wants to keep its service registered, it should keep the
- * ServiceRegistration object referenced.
- * 
- * @ThreadSafe
- */
-public class ServiceRegistrationImpl implements ServiceRegistration, Comparable {
-	/** Internal framework object. */
-	private final Framework framework;
-
-	private final ServiceRegistry registry;
-
-	/** context which registered this service. */
-	private final BundleContextImpl context;
-
-	/** bundle which registered this service. */
-	private final Bundle bundle;
-
-	/** service classes for this registration. */
-	private final String[] clazzes;
-
-	/** service object for this registration. */
-	private final Object service;
-
-	/** Reference to this registration. */
-	/* @GuardedBy("registrationLock") */
-	private ServiceReferenceImpl reference;
-
-	/** List of contexts using the service. 
-	 * List&lt;BundleContextImpl&gt;.
-	 * */
-	/* @GuardedBy("registrationLock") */
-	private final List contextsUsing;
-
-	/** properties for this registration. */
-	/* @GuardedBy("registrationLock") */
-	private ServiceProperties properties;
-
-	/** service id. */
-	private final long serviceid;
-
-	/** service ranking. */
-	/* @GuardedBy("registrationLock") */
-	private int serviceranking;
-
-	/* internal object to use for synchronization */
-	private final Object registrationLock = new Object();
-
-	/** The registration state */
-	/* @GuardedBy("registrationLock") */
-	private int state;
-	private static final int REGISTERED = 0x00;
-	private static final int UNREGISTERING = 0x01;
-	private static final int UNREGISTERED = 0x02;
-
-	/**
-	 * Construct a ServiceRegistration and register the service
-	 * in the framework's service registry.
-	 *
-	 */
-	ServiceRegistrationImpl(ServiceRegistry registry, BundleContextImpl context, String[] clazzes, Object service) {
-		this.registry = registry;
-		this.context = context;
-		this.bundle = context.getBundleImpl();
-		this.framework = context.getFramework();
-		this.clazzes = clazzes; /* must be set before calling createProperties. */
-		this.service = service;
-		this.serviceid = registry.getNextServiceId(); /* must be set before calling createProperties. */
-		this.contextsUsing = new ArrayList(10);
-
-		synchronized (registrationLock) {
-			this.state = REGISTERED;
-			/* We leak this from the constructor here, but it is ok
-			 * because the ServiceReferenceImpl constructor only
-			 * stores the value in a final field without
-			 * otherwise using it.
-			 */
-			this.reference = new ServiceReferenceImpl(this);
-		}
-	}
-
-	/**
-	 * Call after constructing this object to complete the registration.
-	 */
-	void register(Dictionary props) {
-		final ServiceReferenceImpl ref;
-		synchronized (registry) {
-			context.checkValid();
-			synchronized (registrationLock) {
-				ref = reference; /* used to publish event outside sync */
-				this.properties = createProperties(props); /* must be valid after unregister is called. */
-			}
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println("registerService[" + bundle + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			registry.addServiceRegistration(context, this);
-		}
-
-		/* must not hold the registrations lock when this event is published */
-		registry.publishServiceEvent(new ServiceEvent(ServiceEvent.REGISTERED, ref));
-	}
-
-	/**
-	 * Update the properties associated with this service.
-	 *
-	 * <p>The key "objectClass" cannot be modified by this method. It's
-	 * value is set when the service is registered.
-	 *
-	 * <p>The following steps are followed to modify a service's properties:
-	 * <ol>
-	 * <li>The service's properties are replaced with the provided properties.
-	 * <li>A {@link ServiceEvent} of type {@link ServiceEvent#MODIFIED}
-	 * is synchronously sent.
-	 * </ol>
-	 *
-	 * @param props The properties for this service.
-	 *        Changes should not be made to this object after calling this method.
-	 *        To update the service's properties this method should be called again.
-	 * @exception java.lang.IllegalStateException If
-	 * this ServiceRegistration has already been unregistered.
-	 *
-	 * @exception IllegalArgumentException If the <tt>properties</tt>
-	 * parameter contains case variants of the same key name.
-	 */
-	public void setProperties(Dictionary props) {
-		final ServiceReferenceImpl ref;
-		final ServiceProperties previousProperties;
-		synchronized (registry) {
-			synchronized (registrationLock) {
-				if (state != REGISTERED) { /* in the process of unregisterING */
-					throw new IllegalStateException(Msg.SERVICE_ALREADY_UNREGISTERED_EXCEPTION);
-				}
-
-				ref = reference; /* used to publish event outside sync */
-				previousProperties = this.properties;
-				this.properties = createProperties(props);
-			}
-			registry.modifyServiceRegistration(context, this);
-		}
-		/* must not hold the registrationLock when this event is published */
-		registry.publishServiceEvent(new ModifiedServiceEvent(ref, previousProperties));
-	}
-
-	/**
-	 * Unregister the service.
-	 * Remove a service registration from the framework's service
-	 * registry.
-	 * All {@link ServiceReferenceImpl} objects for this registration
-	 * can no longer be used to interact with the service.
-	 *
-	 * <p>The following steps are followed to unregister a service:
-	 * <ol>
-	 * <li>The service is removed from the framework's service
-	 * registry so that it may no longer be used.
-	 * {@link ServiceReferenceImpl}s for the service may no longer be used
-	 * to get a service object for the service.
-	 * <li>A {@link ServiceEvent} of type {@link ServiceEvent#UNREGISTERING}
-	 * is synchronously sent so that bundles using this service
-	 * may release their use of the service.
-	 * <li>For each bundle whose use count for this service is greater
-	 * than zero:
-	 * <ol>
-	 * <li>The bundle's use count for this service is set to zero.
-	 * <li>If the service was registered with a {@link ServiceFactory},
-	 * the {@link ServiceFactory#ungetService ServiceFactory.ungetService} method
-	 * is called to release the service object for the bundle.
-	 * </ol>
-	 * </ol>
-	 *
-	 * @exception java.lang.IllegalStateException If
-	 * this ServiceRegistration has already been unregistered.
-	 * @see BundleContextImpl#ungetService
-	 */
-	public void unregister() {
-		final ServiceReferenceImpl ref;
-		synchronized (registry) {
-			synchronized (registrationLock) {
-				if (state != REGISTERED) { /* in the process of unregisterING */
-					throw new IllegalStateException(Msg.SERVICE_ALREADY_UNREGISTERED_EXCEPTION);
-				}
-
-				/* remove this object from the service registry */
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println("unregisterService[" + bundle + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-
-				registry.removeServiceRegistration(context, this);
-
-				state = UNREGISTERING; /* mark unregisterING */
-				ref = reference; /* used to publish event outside sync */
-			}
-		}
-
-		/* must not hold the registrationLock when this event is published */
-		registry.publishServiceEvent(new ServiceEvent(ServiceEvent.UNREGISTERING, ref));
-
-		int size = 0;
-		BundleContextImpl[] users = null;
-
-		synchronized (registrationLock) {
-			/* we have published the ServiceEvent, now mark the service fully unregistered */
-			state = UNREGISTERED;
-
-			size = contextsUsing.size();
-			if (size > 0) {
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println("unregisterService: releasing users"); //$NON-NLS-1$
-				}
-				users = (BundleContextImpl[]) contextsUsing.toArray(new BundleContextImpl[size]);
-			}
-		}
-
-		/* must not hold the registrationLock while releasing services */
-		for (int i = 0; i < size; i++) {
-			releaseService(users[i]);
-		}
-
-		synchronized (registrationLock) {
-			contextsUsing.clear();
-
-			reference = null; /* mark registration dead */
-		}
-
-		/* The properties field must remain valid after unregister completes. */
-	}
-
-	/**
-	 * Returns a {@link ServiceReferenceImpl} object for this registration.
-	 * The {@link ServiceReferenceImpl} object may be shared with other bundles.
-	 *
-	 * @exception java.lang.IllegalStateException If
-	 * this ServiceRegistration has already been unregistered.
-	 * @return A {@link ServiceReferenceImpl} object.
-	 */
-	public ServiceReference getReference() {
-		return getReferenceImpl();
-	}
-
-	ServiceReferenceImpl getReferenceImpl() {
-		/* use reference instead of unregistered so that ServiceFactorys, called
-		 * by releaseService after the registration is unregistered, can
-		 * get the ServiceReference. Note this technically may violate the spec
-		 * but makes more sense.
-		 */
-		synchronized (registrationLock) {
-			if (reference == null) {
-				throw new IllegalStateException(Msg.SERVICE_ALREADY_UNREGISTERED_EXCEPTION);
-			}
-
-			return reference;
-		}
-	}
-
-	/**
-	 * Construct a properties object from the dictionary for this
-	 * ServiceRegistration.
-	 *
-	 * @param p The properties for this service.
-	 * @return A Properties object for this ServiceRegistration.
-	 */
-	/* @GuardedBy("registrationLock") */
-	private ServiceProperties createProperties(Dictionary p) {
-		ServiceProperties props = new ServiceProperties(p);
-
-		props.set(Constants.OBJECTCLASS, clazzes, true);
-		props.set(Constants.SERVICE_ID, new Long(serviceid), true);
-		props.setReadOnly();
-		Object ranking = props.getProperty(Constants.SERVICE_RANKING);
-
-		serviceranking = (ranking instanceof Integer) ? ((Integer) ranking).intValue() : 0;
-
-		return props;
-	}
-
-	/**
-	 * Return the properties object. This is for framework internal use only.
-	 * @return The service registration's properties.
-	 */
-	public ServiceProperties getProperties() {
-		synchronized (registrationLock) {
-			return properties;
-		}
-	}
-
-	/**
-	 * Get the value of a service's property.
-	 *
-	 * <p>This method will continue to return property values after the
-	 * service has been unregistered. This is so that references to
-	 * unregistered service can be interrogated.
-	 * (For example: ServiceReference objects stored in the log.)
-	 *
-	 * @param key Name of the property.
-	 * @return Value of the property or <code>null</code> if there is
-	 * no property by that name.
-	 */
-	Object getProperty(String key) {
-		synchronized (registrationLock) {
-			return properties.getProperty(key);
-		}
-	}
-
-	/**
-	 * Get the list of key names for the service's properties.
-	 *
-	 * <p>This method will continue to return the keys after the
-	 * service has been unregistered. This is so that references to
-	 * unregistered service can be interrogated.
-	 * (For example: ServiceReference objects stored in the log.)
-	 *
-	 * @return The list of property key names.
-	 */
-	String[] getPropertyKeys() {
-		synchronized (registrationLock) {
-			return properties.getPropertyKeys();
-		}
-	}
-
-	/**
-	 * Return the service id for this service.
-	 * @return The service id for this service.
-	 */
-	long getId() {
-		return serviceid;
-	}
-
-	/**
-	 * Return the service ranking for this service.
-	 * @return The service ranking for this service.
-	 */
-	int getRanking() {
-		synchronized (registrationLock) {
-			return serviceranking;
-		}
-	}
-
-	String[] getClasses() {
-		return clazzes;
-	}
-
-	Object getServiceObject() {
-		return service;
-	}
-
-	/**
-	 * Return the bundle which registered the service.
-	 *
-	 * <p>This method will always return <code>null</code> when the
-	 * service has been unregistered. This can be used to
-	 * determine if the service has been unregistered.
-	 *
-	 * @return The bundle which registered the service.
-	 */
-	Bundle getBundle() {
-		synchronized (registrationLock) {
-			if (reference == null) {
-				return null;
-			}
-
-			return bundle;
-		}
-	}
-
-	/**
-	 * Get a service object for the using BundleContext.
-	 *
-	 * @param user BundleContext using service.
-	 * @return Service object
-	 */
-	Object getService(BundleContextImpl user) {
-		synchronized (registrationLock) {
-			if (state == UNREGISTERED) { /* service unregistered */
-				return null;
-			}
-		}
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("getService[" + user.getBundleImpl() + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		Map servicesInUse = user.getServicesInUseMap();
-		if (servicesInUse == null) { /* user is closed */
-			user.checkValid(); /* throw exception */
-		}
-		/* Use a while loop to support retry if a call to a ServiceFactory fails */
-		while (true) {
-			ServiceUse use;
-			boolean added = false;
-			/* Obtain the ServiceUse object for this service by bundle user */
-			synchronized (servicesInUse) {
-				user.checkValid();
-				use = (ServiceUse) servicesInUse.get(this);
-				if (use == null) {
-					/* if this is the first use of the service
-					 * optimistically record this service is being used. */
-					use = new ServiceUse(user, this);
-					added = true;
-					synchronized (registrationLock) {
-						if (state == UNREGISTERED) { /* service unregistered */
-							return null;
-						}
-						servicesInUse.put(this, use);
-						contextsUsing.add(user);
-					}
-				}
-			}
-
-			/* Obtain and return the service object */
-			synchronized (use) {
-				/* if another thread removed the ServiceUse, then
-				 * go back to the top and start again */
-				synchronized (servicesInUse) {
-					user.checkValid();
-					if (servicesInUse.get(this) != use) {
-						continue;
-					}
-				}
-				Object serviceObject = use.getService();
-				/* if the service factory failed to return an object and
-				 * we created the service use, then remove the 
-				 * optimistically added ServiceUse. */
-				if ((serviceObject == null) && added) {
-					synchronized (servicesInUse) {
-						synchronized (registrationLock) {
-							servicesInUse.remove(this);
-							contextsUsing.remove(user);
-						}
-					}
-				}
-				return serviceObject;
-			}
-		}
-	}
-
-	/**
-	 * Unget a service for the using BundleContext.
-	 *
-	 * @param user BundleContext using service.
-	 * @return <code>false</code> if the context bundle's use count for the service
-	 *         is zero or if the service has been unregistered,
-	 *         otherwise <code>true</code>.
-	 */
-	boolean ungetService(BundleContextImpl user) {
-		synchronized (registrationLock) {
-			if (state == UNREGISTERED) {
-				return false;
-			}
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("ungetService[" + user.getBundleImpl() + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		Map servicesInUse = user.getServicesInUseMap();
-		if (servicesInUse == null) {
-			return false;
-		}
-
-		ServiceUse use;
-		synchronized (servicesInUse) {
-			use = (ServiceUse) servicesInUse.get(this);
-			if (use == null) {
-				return false;
-			}
-		}
-
-		synchronized (use) {
-			if (use.ungetService()) {
-				/* use count is now zero */
-				synchronized (servicesInUse) {
-					synchronized (registrationLock) {
-						servicesInUse.remove(this);
-						contextsUsing.remove(user);
-					}
-				}
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Release the service for the using BundleContext.
-	 *
-	 * @param user BundleContext using service.
-	 */
-	void releaseService(BundleContextImpl user) {
-		synchronized (registrationLock) {
-			if (reference == null) { /* registration dead */
-				return;
-			}
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("releaseService[" + user.getBundleImpl() + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		Map servicesInUse = user.getServicesInUseMap();
-		if (servicesInUse == null) {
-			return;
-		}
-		ServiceUse use;
-		synchronized (servicesInUse) {
-			synchronized (registrationLock) {
-				use = (ServiceUse) servicesInUse.remove(this);
-				if (use == null) {
-					return;
-				}
-				contextsUsing.remove(user);
-			}
-		}
-		synchronized (use) {
-			use.releaseService();
-		}
-	}
-
-	/**
-	 * Return the list of bundle which are using this service.
-	 *
-	 * @return Array of Bundles using this service.
-	 */
-	Bundle[] getUsingBundles() {
-		synchronized (registrationLock) {
-			if (state == UNREGISTERED) /* service unregistered */
-				return null;
-
-			int size = contextsUsing.size();
-			if (size == 0)
-				return null;
-
-			/* Copy list of BundleContext into an array of Bundle. */
-			Bundle[] bundles = new Bundle[size];
-			for (int i = 0; i < size; i++)
-				bundles[i] = ((BundleContextImpl) contextsUsing.get(i)).getBundleImpl();
-
-			return bundles;
-		}
-	}
-
-	boolean isAssignableTo(Bundle client, String className) {
-		return framework.isServiceAssignableTo(bundle, client, className, service.getClass());
-	}
-
-	/**
-	 * Return a String representation of this object.
-	 *
-	 * @return String representation of this object.
-	 */
-	public String toString() {
-		int size = clazzes.length;
-		StringBuffer sb = new StringBuffer(50 * size);
-
-		sb.append('{');
-
-		for (int i = 0; i < size; i++) {
-			if (i > 0) {
-				sb.append(", "); //$NON-NLS-1$
-			}
-			sb.append(clazzes[i]);
-		}
-
-		sb.append("}="); //$NON-NLS-1$
-		sb.append(getProperties().toString());
-
-		return sb.toString();
-	}
-
-	/**
-	 * Compares this <code>ServiceRegistrationImpl</code> with the specified
-	 * <code>ServiceRegistrationImpl</code> for order.
-	 * 
-	 * <p>
-	 * This does a reverse comparison so that the highest item is sorted to the left.
-	 * We keep ServiceRegistationImpls in sorted lists such that the highest
-	 * ranked service is at element 0 for quick retrieval.
-	 * 
-	 * @param object The <code>ServiceRegistrationImpl</code> to be compared.
-	 * @return Returns a negative integer, zero, or a positive integer if this
-	 *         <code>ServiceRegistrationImpl</code> is greater than, equal to, or
-	 *         less than the specified <code>ServiceRegistrationImpl</code>.
-	 */
-	public int compareTo(Object object) {
-		ServiceRegistrationImpl other = (ServiceRegistrationImpl) object;
-
-		final int thisRanking = this.getRanking();
-		final int otherRanking = other.getRanking();
-		if (thisRanking != otherRanking) {
-			if (thisRanking < otherRanking) {
-				return 1;
-			}
-			return -1;
-		}
-		final long thisId = this.getId();
-		final long otherId = other.getId();
-		if (thisId == otherId) {
-			return 0;
-		}
-		if (thisId < otherId) {
-			return -1;
-		}
-		return 1;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java
deleted file mode 100755
index 86ab5f0..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceRegistry.java
+++ /dev/null
@@ -1,1288 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import java.security.*;
-import java.util.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.eventmgr.*;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.framework.Constants;
-import org.osgi.framework.hooks.service.*;
-
-/**
- * The Service Registry. This class is the main control point for service 
- * layer operations in the framework.
- * 
- * @ThreadSafe
- */
-public class ServiceRegistry {
-	public static final int SERVICEEVENT = 3;
-
-	private static final String findHookName = FindHook.class.getName();
-	private static final String eventHookName = EventHook.class.getName();
-	private static final String listenerHookName = ListenerHook.class.getName();
-
-	/** Published services by class name. 
-	 * Map&lt;String,List&lt;ServiceRegistrationImpl&gt;&gt;
-	 * The List&lt;ServiceRegistrationImpl&gt;s are sorted.
-	 */
-	/* @GuardedBy("this") */
-	private final Map/*<String,List<ServiceRegistrationImpl>>*/publishedServicesByClass;
-	/** All published services. 
-	 * List&lt;ServiceRegistrationImpl&gt;.
-	 * The List&lt;ServiceRegistrationImpl&gt;s are sorted.
-	 */
-	/* @GuardedBy("this") */
-	private final List/*<ServiceRegistrationImpl>*/allPublishedServices;
-	/** Published services by BundleContextImpl.  
-	 * Map&lt;BundleContextImpl,List&lt;ServiceRegistrationImpl&gt;&gt;.
-	 * The List&lt;ServiceRegistrationImpl&gt;s are NOT sorted.
-	 */
-	/* @GuardedBy("this") */
-	private final Map/*<BundleContextImpl,List<ServiceRegistrationImpl>>*/publishedServicesByContext;
-	/** next free service id. */
-	/* @GuardedBy("this") */
-	private long serviceid;
-	/** Active Service Listeners.
-	 * Map&lt;BundleContextImpl,CopyOnWriteIdentityMap&lt;ServiceListener,FilteredServiceListener&gt;&gt;.
-	 */
-	/* @GuardedBy("serviceEventListeners") */
-	private final Map/*<BundleContextImpl,CopyOnWriteIdentityMap<ServiceListener,FilteredServiceListener>>*/serviceEventListeners;
-
-	/** initial capacity of the main data structure */
-	private static final int initialCapacity = 50;
-	/** initial capacity of the nested data structure */
-	private static final int initialSubCapacity = 10;
-	/** framework which created this service registry */
-	private final Framework framework;
-
-	/**
-	 * Initializes the internal data structures of this ServiceRegistry.
-	 *
-	 */
-	public ServiceRegistry(Framework framework) {
-		this.framework = framework;
-		serviceid = 1;
-		publishedServicesByClass = new HashMap(initialCapacity);
-		publishedServicesByContext = new HashMap(initialCapacity);
-		allPublishedServices = new ArrayList(initialCapacity);
-		serviceEventListeners = new HashMap(initialCapacity);
-	}
-
-	/**
-	 * Registers the specified service object with the specified properties
-	 * under the specified class names into the Framework. A
-	 * <code>ServiceRegistrationImpl</code> object is returned. The
-	 * <code>ServiceRegistrationImpl</code> object is for the private use of the
-	 * bundle registering the service and should not be shared with other
-	 * bundles. The registering bundle is defined to be the context bundle.
-	 * Other bundles can locate the service by using either the
-	 * {@link #getServiceReferences} or {@link #getServiceReference} method.
-	 * 
-	 * <p>
-	 * A bundle can register a service object that implements the
-	 * {@link ServiceFactory} interface to have more flexibility in providing
-	 * service objects to other bundles.
-	 * 
-	 * <p>
-	 * The following steps are required to register a service:
-	 * <ol>
-	 * <li>If <code>service</code> is not a <code>ServiceFactory</code>,
-	 * an <code>IllegalArgumentException</code> is thrown if
-	 * <code>service</code> is not an <code>instanceof</code> all the
-	 * classes named.
-	 * <li>The Framework adds these service properties to the specified
-	 * <code>Dictionary</code> (which may be <code>null</code>): a property
-	 * named {@link Constants#SERVICE_ID} identifying the registration number of
-	 * the service and a property named {@link Constants#OBJECTCLASS} containing
-	 * all the specified classes. If any of these properties have already been
-	 * specified by the registering bundle, their values will be overwritten by
-	 * the Framework.
-	 * <li>The service is added to the Framework service registry and may now
-	 * be used by other bundles.
-	 * <li>A service event of type {@link ServiceEvent#REGISTERED} is fired.
-	 * <li>A <code>ServiceRegistration</code> object for this registration is
-	 * returned.
-	 * </ol>
-	 * 
-	 * @param context The BundleContext of the registering bundle.
-	 * @param clazzes The class names under which the service can be located.
-	 *        The class names in this array will be stored in the service's
-	 *        properties under the key {@link Constants#OBJECTCLASS}.
-	 * @param service The service object or a <code>ServiceFactory</code>
-	 *        object.
-	 * @param properties The properties for this service. The keys in the
-	 *        properties object must all be <code>String</code> objects. See
-	 *        {@link Constants} for a list of standard service property keys.
-	 *        Changes should not be made to this object after calling this
-	 *        method. To update the service's properties the
-	 *        {@link ServiceRegistration#setProperties} method must be called.
-	 *        The set of properties may be <code>null</code> if the service
-	 *        has no properties.
-	 * 
-	 * @return A <code>ServiceRegistrationImpl</code> object for use by the bundle
-	 *         registering the service to update the service's properties or to
-	 *         unregister the service.
-	 * 
-	 * @throws java.lang.IllegalArgumentException If one of the following is
-	 *         true:
-	 *         <ul>
-	 *         <li><code>service</code> is <code>null</code>.
-	 *         <li><code>service</code> is not a <code>ServiceFactory</code>
-	 *         object and is not an instance of all the named classes in
-	 *         <code>clazzes</code>.
-	 *         <li><code>properties</code> contains case variants of the same
-	 *         key name.
-	 *         </ul>
-	 * 
-	 * @throws java.lang.SecurityException If the caller does not have the
-	 *         <code>ServicePermission</code> to register the service for all
-	 *         the named classes and the Java Runtime Environment supports
-	 *         permissions.
-	 * 
-	 * @throws java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * 
-	 * @see ServiceRegistration
-	 * @see ServiceFactory
-	 */
-	public ServiceRegistrationImpl registerService(BundleContextImpl context, String[] clazzes, Object service, Dictionary properties) {
-		if (service == null) {
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println("Service object is null"); //$NON-NLS-1$
-			}
-
-			throw new IllegalArgumentException(Msg.SERVICE_ARGUMENT_NULL_EXCEPTION);
-		}
-
-		int size = clazzes.length;
-
-		if (size == 0) {
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println("Classes array is empty"); //$NON-NLS-1$
-			}
-
-			throw new IllegalArgumentException(Msg.SERVICE_EMPTY_CLASS_LIST_EXCEPTION);
-		}
-
-		/* copy the array so that changes to the original will not affect us. */
-		List copy = new ArrayList(size);
-		// intern the strings and remove duplicates
-		for (int i = 0; i < size; i++) {
-			String clazz = clazzes[i].intern();
-			if (!copy.contains(clazz)) {
-				copy.add(clazz);
-			}
-		}
-		size = copy.size();
-		clazzes = (String[]) copy.toArray(new String[size]);
-
-		/* check for ServicePermissions. */
-		checkRegisterServicePermission(clazzes);
-
-		if (!(service instanceof ServiceFactory)) {
-			String invalidService = checkServiceClass(clazzes, service);
-			if (invalidService != null) {
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println("Service object is not an instanceof " + invalidService); //$NON-NLS-1$
-				}
-				throw new IllegalArgumentException(NLS.bind(Msg.SERVICE_NOT_INSTANCEOF_CLASS_EXCEPTION, invalidService));
-			}
-		}
-
-		ServiceRegistrationImpl registration = new ServiceRegistrationImpl(this, context, clazzes, service);
-		registration.register(properties);
-		if (copy.contains(listenerHookName)) {
-			notifyNewListenerHook(registration);
-		}
-		return registration;
-	}
-
-	/**
-	 * Returns an array of <code>ServiceReferenceImpl</code> objects. The returned
-	 * array of <code>ServiceReferenceImpl</code> objects contains services that
-	 * were registered under the specified class, match the specified filter
-	 * criteria, and the packages for the class names under which the services
-	 * were registered match the context bundle's packages as defined in
-	 * {@link ServiceReference#isAssignableTo(Bundle, String)}.
-	 * 
-	 * <p>
-	 * The list is valid at the time of the call to this method, however since
-	 * the Framework is a very dynamic environment, services can be modified or
-	 * unregistered at anytime.
-	 * 
-	 * <p>
-	 * <code>filter</code> is used to select the registered service whose
-	 * properties objects contain keys and values which satisfy the filter. See
-	 * {@link Filter} for a description of the filter string syntax.
-	 * 
-	 * <p>
-	 * If <code>filter</code> is <code>null</code>, all registered services
-	 * are considered to match the filter. If <code>filter</code> cannot be
-	 * parsed, an {@link InvalidSyntaxException} will be thrown with a human
-	 * readable message where the filter became unparsable.
-	 * 
-	 * <p>
-	 * The following steps are required to select a set of
-	 * <code>ServiceReferenceImpl</code> objects:
-	 * <ol>
-	 * <li>If the filter string is not <code>null</code>, the filter string
-	 * is parsed and the set <code>ServiceReferenceImpl</code> objects of
-	 * registered services that satisfy the filter is produced. If the filter
-	 * string is <code>null</code>, then all registered services are
-	 * considered to satisfy the filter.
-	 * <li>If the Java Runtime Environment supports permissions, the set of
-	 * <code>ServiceReferenceImpl</code> objects produced by the previous step is
-	 * reduced by checking that the caller has the
-	 * <code>ServicePermission</code> to get at least one of the class names
-	 * under which the service was registered. If the caller does not have the
-	 * correct permission for a particular <code>ServiceReferenceImpl</code>
-	 * object, then it is removed from the set.
-	 * <li>If <code>clazz</code> is not <code>null</code>, the set is
-	 * further reduced to those services that are an <code>instanceof</code>
-	 * and were registered under the specified class. The complete list of
-	 * classes of which a service is an instance and which were specified when
-	 * the service was registered is available from the service's
-	 * {@link Constants#OBJECTCLASS} property.
-	 * <li>The set is reduced one final time by cycling through each
-	 * <code>ServiceReference</code> object and calling
-	 * {@link ServiceReference#isAssignableTo(Bundle, String)} with the context
-	 * bundle and each class name under which the <code>ServiceReference</code>
-	 * object was registered. For any given <code>ServiceReferenceImpl</code>
-	 * object, if any call to
-	 * {@link ServiceReference#isAssignableTo(Bundle, String)} returns
-	 * <code>false</code>, then it is removed from the set of
-	 * <code>ServiceReferenceImpl</code> objects.
-	 * <li>An array of the remaining <code>ServiceReferenceImpl</code> objects is
-	 * returned.
-	 * </ol>
-	 * 
-	 * @param context The BundleContext of the requesting bundle.
-	 * @param clazz The class name with which the service was registered or
-	 *        <code>null</code> for all services.
-	 * @param filterstring The filter criteria.
-	 * @param allservices True if the bundle called getAllServiceReferences.
-	 * @return An array of <code>ServiceReferenceImpl</code> objects or
-	 *         <code>null</code> if no services are registered which satisfy
-	 *         the search.
-	 * @throws InvalidSyntaxException If <code>filter</code> contains an
-	 *         invalid filter string that cannot be parsed.
-	 * @throws java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public ServiceReferenceImpl[] getServiceReferences(final BundleContextImpl context, final String clazz, final String filterstring, final boolean allservices) throws InvalidSyntaxException {
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println((allservices ? "getAllServiceReferences(" : "getServiceReferences(") + clazz + ", \"" + filterstring + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-		Filter filter = (filterstring == null) ? null : context.createFilter(filterstring);
-		List references = changeRegistrationsToReferences(lookupServiceRegistrations(clazz, filter));
-		for (Iterator iter = references.iterator(); iter.hasNext();) {
-			ServiceReferenceImpl reference = (ServiceReferenceImpl) iter.next();
-			if (allservices || isAssignableTo(context, reference)) {
-				try { /* test for permission to get the service */
-					checkGetServicePermission(reference);
-				} catch (SecurityException se) {
-					iter.remove();
-				}
-			} else {
-				iter.remove();
-			}
-		}
-
-		final Collection shrinkable = new ShrinkableCollection(references);
-		notifyFindHooks(context, clazz, filterstring, allservices, shrinkable);
-
-		int size = references.size();
-		if (size == 0) {
-			return null;
-		}
-		return (ServiceReferenceImpl[]) references.toArray(new ServiceReferenceImpl[size]);
-	}
-
-	/**
-	 * Returns a <code>ServiceReference</code> object for a service that
-	 * implements and was registered under the specified class.
-	 * 
-	 * <p>
-	 * This <code>ServiceReference</code> object is valid at the time of the
-	 * call to this method, however as the Framework is a very dynamic
-	 * environment, services can be modified or unregistered at anytime.
-	 * 
-	 * <p>
-	 * This method is the same as calling
-	 * {@link BundleContext#getServiceReferences(String, String)} with a
-	 * <code>null</code> filter string. It is provided as a convenience for
-	 * when the caller is interested in any service that implements the
-	 * specified class.
-	 * <p>
-	 * If multiple such services exist, the service with the highest ranking (as
-	 * specified in its {@link Constants#SERVICE_RANKING} property) is returned.
-	 * <p>
-	 * If there is a tie in ranking, the service with the lowest service ID (as
-	 * specified in its {@link Constants#SERVICE_ID} property); that is, the
-	 * service that was registered first is returned.
-	 * 
-	 * @param context The BundleContext of the requesting bundle.
-	 * @param clazz The class name with which the service was registered.
-	 * @return A <code>ServiceReference</code> object, or <code>null</code>
-	 *         if no services are registered which implement the named class.
-	 * @throws java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public ServiceReferenceImpl getServiceReference(BundleContextImpl context, String clazz) {
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("getServiceReference(" + clazz + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		try {
-			ServiceReferenceImpl[] references = getServiceReferences(context, clazz, null, false);
-
-			if (references != null) {
-				// Since we maintain the registrations in a sorted List, the first element is always the
-				// correct one to return.
-				return references[0];
-			}
-		} catch (InvalidSyntaxException e) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("InvalidSyntaxException w/ null filter" + e.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(e);
-			}
-		}
-
-		return null;
-	}
-
-	/**
-	 * Returns the specified service object for a service.
-	 * <p>
-	 * A bundle's use of a service is tracked by the bundle's use count of that
-	 * service. Each time a service's service object is returned by
-	 * {@link #getService(BundleContextImpl, ServiceReferenceImpl)} the context bundle's use count for
-	 * that service is incremented by one. Each time the service is released by
-	 * {@link #ungetService(BundleContextImpl, ServiceReferenceImpl)} the context bundle's use count
-	 * for that service is decremented by one.
-	 * <p>
-	 * When a bundle's use count for a service drops to zero, the bundle should
-	 * no longer use that service.
-	 * 
-	 * <p>
-	 * This method will always return <code>null</code> when the service
-	 * associated with this <code>reference</code> has been unregistered.
-	 * 
-	 * <p>
-	 * The following steps are required to get the service object:
-	 * <ol>
-	 * <li>If the service has been unregistered, <code>null</code> is
-	 * returned.
-	 * <li>The context bundle's use count for this service is incremented by
-	 * one.
-	 * <li>If the context bundle's use count for the service is currently one
-	 * and the service was registered with an object implementing the
-	 * <code>ServiceFactory</code> interface, the
-	 * {@link ServiceFactory#getService(Bundle, ServiceRegistration)} method is
-	 * called to create a service object for the context bundle. This service
-	 * object is cached by the Framework. While the context bundle's use count
-	 * for the service is greater than zero, subsequent calls to get the
-	 * services's service object for the context bundle will return the cached
-	 * service object. <br>
-	 * If the service object returned by the <code>ServiceFactory</code>
-	 * object is not an <code>instanceof</code> all the classes named when the
-	 * service was registered or the <code>ServiceFactory</code> object throws
-	 * an exception, <code>null</code> is returned and a Framework event of
-	 * type {@link FrameworkEvent#ERROR} containing a {@link ServiceException}
-	 * describing the error is fired.
-	 * <li>The service object for the service is returned.
-	 * </ol>
-	 * 
-	 * @param context The BundleContext of the requesting bundle.
-	 * @param reference A reference to the service.
-	 * @return A service object for the service associated with
-	 *         <code>reference</code> or <code>null</code> if the service is
-	 *         not registered, the service object returned by a
-	 *         <code>ServiceFactory</code> does not implement the classes
-	 *         under which it was registered or the <code>ServiceFactory</code>
-	 *         threw an exception.
-	 * @throws java.lang.SecurityException If the caller does not have the
-	 *         <code>ServicePermission</code> to get the service using at
-	 *         least one of the named classes the service was registered under
-	 *         and the Java Runtime Environment supports permissions.
-	 * @throws java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @see #ungetService(BundleContextImpl, ServiceReferenceImpl)
-	 * @see ServiceFactory
-	 */
-	public Object getService(BundleContextImpl context, ServiceReferenceImpl reference) {
-		/* test for permission to get the service */
-		checkGetServicePermission(reference);
-
-		return reference.getRegistration().getService(context);
-	}
-
-	/**
-	 * Releases the service object referenced by the specified
-	 * <code>ServiceReference</code> object. If the context bundle's use count
-	 * for the service is zero, this method returns <code>false</code>.
-	 * Otherwise, the context bundle's use count for the service is decremented
-	 * by one.
-	 * 
-	 * <p>
-	 * The service's service object should no longer be used and all references
-	 * to it should be destroyed when a bundle's use count for the service drops
-	 * to zero.
-	 * 
-	 * <p>
-	 * The following steps are required to unget the service object:
-	 * <ol>
-	 * <li>If the context bundle's use count for the service is zero or the
-	 * service has been unregistered, <code>false</code> is returned.
-	 * <li>The context bundle's use count for this service is decremented by
-	 * one.
-	 * <li>If the context bundle's use count for the service is currently zero
-	 * and the service was registered with a <code>ServiceFactory</code>
-	 * object, the
-	 * {@link ServiceFactory#ungetService(Bundle, ServiceRegistration, Object)}
-	 * method is called to release the service object for the context bundle.
-	 * <li><code>true</code> is returned.
-	 * </ol>
-	 * 
-	 * @param context The BundleContext of the requesting bundle.
-	 * @param reference A reference to the service to be released.
-	 * @return <code>false</code> if the context bundle's use count for the
-	 *         service is zero or if the service has been unregistered;
-	 *         <code>true</code> otherwise.
-	 * @throws java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @see #getService
-	 * @see ServiceFactory
-	 */
-	public boolean ungetService(BundleContextImpl context, ServiceReferenceImpl reference) {
-		ServiceRegistrationImpl registration = reference.getRegistration();
-
-		return registration.ungetService(context);
-	}
-
-	/**
-	 * Returns this bundle's <code>ServiceReference</code> list for all
-	 * services it has registered or <code>null</code> if this bundle has no
-	 * registered services.
-	 * 
-	 * <p>
-	 * If the Java runtime supports permissions, a <code>ServiceReference</code>
-	 * object to a service is included in the returned list only if the caller
-	 * has the <code>ServicePermission</code> to get the service using at
-	 * least one of the named classes the service was registered under.
-	 * 
-	 * <p>
-	 * The list is valid at the time of the call to this method, however, as the
-	 * Framework is a very dynamic environment, services can be modified or
-	 * unregistered at anytime.
-	 * 
-	 * @param context The BundleContext of the requesting bundle.
-	 * @return An array of <code>ServiceReference</code> objects or
-	 *         <code>null</code>.
-	 * @throws java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @see ServiceRegistration
-	 * @see ServiceReference
-	 * @see ServicePermission
-	 */
-	public ServiceReferenceImpl[] getRegisteredServices(BundleContextImpl context) {
-		List references = changeRegistrationsToReferences(lookupServiceRegistrations(context));
-		for (Iterator iter = references.iterator(); iter.hasNext();) {
-			ServiceReferenceImpl reference = (ServiceReferenceImpl) iter.next();
-			try { /* test for permission to get the service */
-				checkGetServicePermission(reference);
-			} catch (SecurityException se) {
-				iter.remove();
-			}
-		}
-
-		int size = references.size();
-		if (size == 0) {
-			return null;
-		}
-		return (ServiceReferenceImpl[]) references.toArray(new ServiceReferenceImpl[size]);
-	}
-
-	/**
-	 * Returns this bundle's <code>ServiceReference</code> list for all
-	 * services it is using or returns <code>null</code> if this bundle is not
-	 * using any services. A bundle is considered to be using a service if its
-	 * use count for that service is greater than zero.
-	 * 
-	 * <p>
-	 * If the Java Runtime Environment supports permissions, a
-	 * <code>ServiceReference</code> object to a service is included in the
-	 * returned list only if the caller has the <code>ServicePermission</code>
-	 * to get the service using at least one of the named classes the service
-	 * was registered under.
-	 * <p>
-	 * The list is valid at the time of the call to this method, however, as the
-	 * Framework is a very dynamic environment, services can be modified or
-	 * unregistered at anytime.
-	 * 
-	 * @param context The BundleContext of the requesting bundle.
-	 * @return An array of <code>ServiceReference</code> objects or
-	 *         <code>null</code>.
-	 * @throws java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @see ServiceReference
-	 * @see ServicePermission
-	 */
-	public ServiceReferenceImpl[] getServicesInUse(BundleContextImpl context) {
-		Map servicesInUse = context.getServicesInUseMap();
-		if (servicesInUse == null) {
-			return null;
-		}
-
-		List references;
-		synchronized (servicesInUse) {
-			if (servicesInUse.size() == 0) {
-				return null;
-			}
-			references = changeRegistrationsToReferences(new ArrayList(servicesInUse.keySet()));
-		}
-		for (Iterator iter = references.iterator(); iter.hasNext();) {
-			ServiceReferenceImpl reference = (ServiceReferenceImpl) iter.next();
-			try { /* test for permission to get the service */
-				checkGetServicePermission(reference);
-			} catch (SecurityException se) {
-				iter.remove();
-			}
-		}
-
-		int size = references.size();
-		if (size == 0) {
-			return null;
-		}
-		return (ServiceReferenceImpl[]) references.toArray(new ServiceReferenceImpl[size]);
-	}
-
-	/**
-	 * Called when the BundleContext is closing to unregister all services
-	 * currently registered by the bundle.
-	 * 
-	 * @param context The BundleContext of the closing bundle.
-	 */
-	public void unregisterServices(BundleContextImpl context) {
-		List registrations = lookupServiceRegistrations(context);
-		for (Iterator iter = registrations.iterator(); iter.hasNext();) {
-			ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
-			try {
-				registration.unregister();
-			} catch (IllegalStateException e) {
-				/* already unregistered */
-			}
-		}
-		removeServiceRegistrations(context); // remove empty list
-	}
-
-	/**
-	 * Called when the BundleContext is closing to unget all services
-	 * currently used by the bundle.
-	 * 
-	 * @param context The BundleContext of the closing bundle.
-	 */
-	public void releaseServicesInUse(BundleContextImpl context) {
-		Map servicesInUse = context.getServicesInUseMap();
-		if (servicesInUse == null) {
-			return;
-		}
-		List registrations;
-		synchronized (servicesInUse) {
-			if (servicesInUse.size() == 0) {
-				return;
-			}
-			registrations = new ArrayList(servicesInUse.keySet());
-		}
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("Releasing services"); //$NON-NLS-1$
-		}
-		for (Iterator iter = registrations.iterator(); iter.hasNext();) {
-			ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
-			registration.releaseService(context);
-		}
-	}
-
-	/**
-	 * Add a new Service Listener for a bundle.
-	 * 
-	 * @param context Context of bundle adding listener.
-	 * @param listener Service Listener to be added.
-	 * @param filter Filter string for listener or null.
-	 * @throws InvalidSyntaxException If the filter string is invalid.
-	 */
-	public void addServiceListener(BundleContextImpl context, ServiceListener listener, String filter) throws InvalidSyntaxException {
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("addServiceListener[" + context.getBundleImpl() + "](" + listenerName + ", \"" + filter + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-
-		FilteredServiceListener filteredListener = new FilteredServiceListener(context, listener, filter);
-		FilteredServiceListener oldFilteredListener;
-		synchronized (serviceEventListeners) {
-			Map listeners = (Map) serviceEventListeners.get(context);
-			if (listeners == null) {
-				listeners = new CopyOnWriteIdentityMap();
-				serviceEventListeners.put(context, listeners);
-			}
-			oldFilteredListener = (FilteredServiceListener) listeners.put(listener, filteredListener);
-		}
-
-		if (oldFilteredListener != null) {
-			oldFilteredListener.markRemoved();
-			Collection removedListeners = Collections.singletonList(oldFilteredListener);
-			notifyListenerHooks(removedListeners, false);
-		}
-
-		Collection addedListeners = Collections.singletonList(filteredListener);
-		notifyListenerHooks(addedListeners, true);
-	}
-
-	/**
-	 * Remove a Service Listener for a bundle.
-	 * 
-	 * @param context Context of bundle removing listener.
-	 * @param listener Service Listener to be removed.
-	 */
-	public void removeServiceListener(BundleContextImpl context, ServiceListener listener) {
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("removeServiceListener[" + context.getBundleImpl() + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		FilteredServiceListener oldFilteredListener;
-		synchronized (serviceEventListeners) {
-			Map listeners = (Map) serviceEventListeners.get(context);
-			if (listeners == null) {
-				return; // this context has no listeners to begin with
-			}
-			oldFilteredListener = (FilteredServiceListener) listeners.remove(listener);
-		}
-
-		if (oldFilteredListener == null) {
-			return;
-		}
-		oldFilteredListener.markRemoved();
-		Collection removedListeners = Collections.singletonList(oldFilteredListener);
-		notifyListenerHooks(removedListeners, false);
-	}
-
-	/**
-	 * Remove all Service Listener for a bundle.
-	 * 
-	 * @param context Context of bundle removing all listeners.
-	 */
-	public void removeAllServiceListeners(BundleContextImpl context) {
-		Map removedListenersMap;
-		synchronized (serviceEventListeners) {
-			removedListenersMap = (Map) serviceEventListeners.remove(context);
-		}
-		if ((removedListenersMap == null) || (removedListenersMap.size() == 0)) {
-			return;
-		}
-		Collection removedListeners = removedListenersMap.values();
-		for (Iterator iter = removedListeners.iterator(); iter.hasNext();) {
-			FilteredServiceListener oldFilteredListener = (FilteredServiceListener) iter.next();
-			oldFilteredListener.markRemoved();
-		}
-		notifyListenerHooks(removedListeners, false);
-	}
-
-	/**
-	 * Deliver a ServiceEvent.
-	 * 
-	 * @param event The ServiceEvent to deliver.
-	 */
-	void publishServiceEvent(final ServiceEvent event) {
-		if (System.getSecurityManager() == null) {
-			publishServiceEventPrivileged(event);
-		} else {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					publishServiceEventPrivileged(event);
-					return null;
-				}
-			});
-		}
-	}
-
-	void publishServiceEventPrivileged(final ServiceEvent event) {
-		/* Build the listener snapshot */
-		Map /*<BundleContextImpl,Set<Map.Entry<Object,Object>>>*/listenerSnapshot;
-		synchronized (serviceEventListeners) {
-			listenerSnapshot = new HashMap(serviceEventListeners.size());
-			for (Iterator iter = serviceEventListeners.entrySet().iterator(); iter.hasNext();) {
-				Map.Entry entry = (Map.Entry) iter.next();
-				BundleContextImpl context = (BundleContextImpl) entry.getKey();
-				Map listeners = (Map) entry.getValue();
-				if (!listeners.isEmpty()) {
-					listenerSnapshot.put(context, listeners.entrySet());
-				}
-			}
-		}
-
-		/* shrink the snapshot.
-		 * keySet returns a Collection which cannot be added to and
-		 * removals from that collection will result in removals of the
-		 * entry from the snapshot.
-		 */
-		Collection/*<BundleContextImpl>*/shrinkable = listenerSnapshot.keySet();
-		notifyEventHooksPrivileged(event, shrinkable);
-		if (listenerSnapshot.isEmpty()) {
-			return;
-		}
-
-		/* deliver the event to the snapshot */
-		ListenerQueue queue = framework.newListenerQueue();
-		for (Iterator iter = listenerSnapshot.entrySet().iterator(); iter.hasNext();) {
-			Map.Entry entry = (Map.Entry) iter.next();
-			EventDispatcher dispatcher = (BundleContextImpl) entry.getKey();
-			Set listeners = (Set) entry.getValue();
-			queue.queueListeners(listeners, dispatcher);
-		}
-		queue.dispatchEventSynchronous(SERVICEEVENT, event);
-	}
-
-	/**
-	 * Return the next available service id.
-	 * 
-	 * @return next service id.
-	 */
-	synchronized long getNextServiceId() {
-		long id = serviceid;
-		serviceid++;
-		return id;
-	}
-
-	/**
-	 * Add the ServiceRegistrationImpl to the data structure.
-	 * 
-	 * @param context The BundleContext of the bundle registering the service.
-	 * @param registration The new ServiceRegistration.
-	 */
-	/* @GuardedBy("this") */
-	void addServiceRegistration(BundleContextImpl context, ServiceRegistrationImpl registration) {
-		// Add the ServiceRegistrationImpl to the list of Services published by BundleContextImpl.
-		List contextServices = (List) publishedServicesByContext.get(context);
-		if (contextServices == null) {
-			contextServices = new ArrayList(initialSubCapacity);
-			publishedServicesByContext.put(context, contextServices);
-		}
-		// The list is NOT sorted, so we just add
-		contextServices.add(registration);
-
-		// Add the ServiceRegistrationImpl to the list of Services published by Class Name.
-		String[] clazzes = registration.getClasses();
-		int insertIndex;
-		for (int i = 0, size = clazzes.length; i < size; i++) {
-			String clazz = clazzes[i];
-
-			List services = (List) publishedServicesByClass.get(clazz);
-
-			if (services == null) {
-				services = new ArrayList(initialSubCapacity);
-				publishedServicesByClass.put(clazz, services);
-			}
-
-			// The list is sorted, so we must find the proper location to insert
-			insertIndex = -Collections.binarySearch(services, registration) - 1;
-			services.add(insertIndex, registration);
-		}
-
-		// Add the ServiceRegistrationImpl to the list of all published Services.
-		// The list is sorted, so we must find the proper location to insert
-		insertIndex = -Collections.binarySearch(allPublishedServices, registration) - 1;
-		allPublishedServices.add(insertIndex, registration);
-	}
-
-	/**
-	 * Modify the ServiceRegistrationImpl in the data structure.
-	 * 
-	 * @param context The BundleContext of the bundle registering the service.
-	 * @param registration The modified ServiceRegistration.
-	 */
-	/* @GuardedBy("this") */
-	void modifyServiceRegistration(BundleContextImpl context, ServiceRegistrationImpl registration) {
-		// The list of Services published by BundleContextImpl is not sorted, so
-		// we do not need to modify it.
-
-		// Remove the ServiceRegistrationImpl from the list of Services published by Class Name
-		// and then add at the correct index.
-		String[] clazzes = registration.getClasses();
-		int insertIndex;
-		for (int i = 0, size = clazzes.length; i < size; i++) {
-			String clazz = clazzes[i];
-			List services = (List) publishedServicesByClass.get(clazz);
-			services.remove(registration);
-			// The list is sorted, so we must find the proper location to insert
-			insertIndex = -Collections.binarySearch(services, registration) - 1;
-			services.add(insertIndex, registration);
-		}
-
-		// Remove the ServiceRegistrationImpl from the list of all published Services
-		// and then add at the correct index.
-		allPublishedServices.remove(registration);
-		// The list is sorted, so we must find the proper location to insert
-		insertIndex = -Collections.binarySearch(allPublishedServices, registration) - 1;
-		allPublishedServices.add(insertIndex, registration);
-	}
-
-	/**
-	 * Remove the ServiceRegistrationImpl from the data structure.
-	 * 
-	 * @param context The BundleContext of the bundle registering the service.
-	 * @param registration The ServiceRegistration to remove.
-	 */
-	/* @GuardedBy("this") */
-	void removeServiceRegistration(BundleContextImpl context, ServiceRegistrationImpl registration) {
-		// Remove the ServiceRegistrationImpl from the list of Services published by BundleContextImpl.
-		List contextServices = (List) publishedServicesByContext.get(context);
-		if (contextServices != null) {
-			contextServices.remove(registration);
-		}
-
-		// Remove the ServiceRegistrationImpl from the list of Services published by Class Name.
-		String[] clazzes = registration.getClasses();
-		for (int i = 0, size = clazzes.length; i < size; i++) {
-			String clazz = clazzes[i];
-			List services = (List) publishedServicesByClass.get(clazz);
-			services.remove(registration);
-			if (services.isEmpty()) { // remove empty list
-				publishedServicesByClass.remove(clazz);
-			}
-		}
-
-		// Remove the ServiceRegistrationImpl from the list of all published Services.
-		allPublishedServices.remove(registration);
-	}
-
-	/**
-	 * Lookup Service Registrations in the data structure by class name and filter.
-	 * 
-	 * @param clazz The class name with which the service was registered or
-	 *        <code>null</code> for all services.
-	 * @param filter The filter criteria.
-	 * @return List<ServiceRegistrationImpl>
-	 */
-	private List lookupServiceRegistrations(String clazz, Filter filter) {
-		List result;
-		synchronized (this) {
-			if (clazz == null) { /* all services */
-				result = allPublishedServices;
-			} else {
-				/* services registered under the class name */
-				result = (List) publishedServicesByClass.get(clazz);
-			}
-
-			if ((result == null) || (result.size() == 0)) {
-				return Collections.EMPTY_LIST;
-			}
-
-			result = new ArrayList(result); /* make a new list since we don't want to change the real list */
-		}
-
-		if (filter == null) {
-			return result;
-		}
-
-		for (Iterator iter = result.iterator(); iter.hasNext();) {
-			ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
-			ServiceReferenceImpl reference;
-			try {
-				reference = registration.getReferenceImpl();
-			} catch (IllegalStateException e) {
-				iter.remove(); /* service was unregistered after we left the synchronized block above */
-				continue;
-			}
-			if (!filter.match(reference)) {
-				iter.remove();
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Lookup Service Registrations in the data structure by BundleContext.
-	 * 
-	 * @param context The BundleContext for which to return Service Registrations.
-	 * @return List<ServiceRegistrationImpl>
-	 */
-	private synchronized List lookupServiceRegistrations(BundleContextImpl context) {
-		List result = (List) publishedServicesByContext.get(context);
-
-		if ((result == null) || (result.size() == 0)) {
-			return Collections.EMPTY_LIST;
-		}
-
-		return new ArrayList(result); /* make a new list since we don't want to change the real list */
-	}
-
-	/**
-	 * Remove Service Registrations in the data structure by BundleContext.
-	 * 
-	 * @param context The BundleContext for which to remove Service Registrations.
-	 */
-	private synchronized void removeServiceRegistrations(BundleContextImpl context) {
-		publishedServicesByContext.remove(context);
-	}
-
-	/**
-	 * Modify a List<ServiceRegistrationImpl> in place to a List<ServiceReferenceImpl>.
-	 * 
-	 * @param result The input List<ServiceRegistrationImpl>.
-	 * @return result which has been changed to List<ServiceReferenceImpl>
-	 */
-	private static List changeRegistrationsToReferences(List result) {
-		for (ListIterator iter = result.listIterator(); iter.hasNext();) {
-			ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
-			ServiceReferenceImpl reference;
-			try {
-				reference = registration.getReferenceImpl();
-			} catch (IllegalStateException e) {
-				iter.remove(); /* service was unregistered after we were called */
-				continue;
-			}
-			iter.set(reference); /* replace the registration with its reference */
-		}
-		return result;
-	}
-
-	/**
-	 * Check for permission to register a service.
-	 * 
-	 * The caller must have permission for ALL names.
-	 */
-	private static void checkRegisterServicePermission(String[] names) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm == null) {
-			return;
-		}
-		for (int i = 0, len = names.length; i < len; i++) {
-			sm.checkPermission(new ServicePermission(names[i], ServicePermission.REGISTER));
-		}
-	}
-
-	/**
-	 * Check for permission to get a service.
-	 */
-	private static void checkGetServicePermission(ServiceReference reference) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm == null) {
-			return;
-		}
-		sm.checkPermission(new ServicePermission(reference, ServicePermission.GET));
-	}
-
-	/**
-	 * Check for permission to listen to a service.
-	 */
-	static boolean hasListenServicePermission(ServiceEvent event, BundleContextImpl context) {
-		ProtectionDomain domain = context.getBundleImpl().getProtectionDomain();
-		if (domain == null) {
-			return true;
-		}
-
-		return domain.implies(new ServicePermission(event.getServiceReference(), ServicePermission.GET));
-	}
-
-	/** 
-	 * Return the name of the class that is not satisfied by the service object. 
-	 * @param clazzes Array of class names.
-	 * @param serviceObject Service object.
-	 * @return The name of the class that is not satisfied by the service object.
-	 */
-	static String checkServiceClass(final String[] clazzes, final Object serviceObject) {
-		ClassLoader cl = (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return serviceObject.getClass().getClassLoader();
-			}
-		});
-		for (int i = 0, len = clazzes.length; i < len; i++) {
-			try {
-				Class serviceClazz = cl == null ? Class.forName(clazzes[i]) : cl.loadClass(clazzes[i]);
-				if (!serviceClazz.isInstance(serviceObject))
-					return clazzes[i];
-			} catch (ClassNotFoundException e) {
-				//This check is rarely done
-				if (extensiveCheckServiceClass(clazzes[i], serviceObject.getClass()))
-					return clazzes[i];
-			}
-		}
-		return null;
-	}
-
-	private static boolean extensiveCheckServiceClass(String clazz, Class serviceClazz) {
-		if (clazz.equals(serviceClazz.getName()))
-			return false;
-		Class[] interfaces = serviceClazz.getInterfaces();
-		for (int i = 0, len = interfaces.length; i < len; i++)
-			if (!extensiveCheckServiceClass(clazz, interfaces[i]))
-				return false;
-		Class superClazz = serviceClazz.getSuperclass();
-		if (superClazz != null)
-			if (!extensiveCheckServiceClass(clazz, superClazz))
-				return false;
-		return true;
-	}
-
-	static boolean isAssignableTo(BundleContextImpl context, ServiceReferenceImpl reference) {
-		Bundle bundle = context.getBundleImpl();
-		String[] clazzes = reference.getClasses();
-		for (int i = 0, len = clazzes.length; i < len; i++)
-			if (!reference.isAssignableTo(bundle, clazzes[i]))
-				return false;
-		return true;
-	}
-
-	/**
-	 * Call the registered FindHook services to allow them to inspect and possibly shrink the result.
-	 * The FindHook must be called in order: descending by service.ranking, then ascending by service.id.
-	 * This is the natural order for ServiceReference.
-	 * 
-	 * @param context The context of the bundle getting the service references.
-	 * @param clazz The class name used to search for the service references.
-	 * @param filterstring The filter used to search for the service references.
-	 * @param allservices True if getAllServiceReferences called.
-	 * @param result The result to return to the caller which may have been shrunk by the FindHooks.
-	 */
-	private void notifyFindHooks(final BundleContextImpl context, final String clazz, final String filterstring, final boolean allservices, final Collection result) {
-		if (System.getSecurityManager() == null) {
-			notifyFindHooksPrivileged(context, clazz, filterstring, allservices, result);
-		} else {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					notifyFindHooksPrivileged(context, clazz, filterstring, allservices, result);
-					return null;
-				}
-			});
-		}
-	}
-
-	void notifyFindHooksPrivileged(BundleContextImpl context, String clazz, String filterstring, boolean allservices, Collection result) {
-		BundleContextImpl systemBundleContext = framework.getSystemBundleContext();
-		if (systemBundleContext == null) { // if no system bundle context, we are done!
-			return;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("notifyFindHooks(" + context.getBundleImpl() + "," + clazz + "," + filterstring + "," + allservices + "," + result + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
-		}
-
-		List hooks = lookupServiceRegistrations(findHookName, null);
-		// Since the list is already sorted, we don't need to sort the list to call the hooks
-		// in the proper order.
-
-		for (Iterator iter = hooks.iterator(); iter.hasNext();) {
-			ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
-			Object findHook = registration.getService(systemBundleContext);
-			if (findHook == null) { // if the hook is null
-				continue;
-			}
-			try {
-				if (findHook instanceof FindHook) { // if the hook is usable
-					((FindHook) findHook).find(context, clazz, filterstring, allservices, result);
-				}
-			} catch (Throwable t) {
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println(findHook + ".find() exception: " + t.getMessage()); //$NON-NLS-1$
-					Debug.printStackTrace(t);
-				}
-				// allow the adaptor to handle this unexpected error
-				framework.getAdaptor().handleRuntimeError(t);
-				ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, findHook.getClass().getName(), "find"), t); //$NON-NLS-1$ 
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-			} finally {
-				registration.ungetService(systemBundleContext);
-			}
-		}
-	}
-
-	/**
-	 * Call the registered EventHook services to allow them to inspect and possibly shrink the result.
-	 * The EventHooks must be called in order: descending by service.ranking, then ascending by service.id.
-	 * This is the natural order for ServiceReference.
-	 * 
-	 * @param event The service event to be delivered.
-	 * @param result The result to return to the caller which may have been shrunk by the EventHooks.
-	 */
-	private void notifyEventHooksPrivileged(ServiceEvent event, Collection result) {
-		BundleContextImpl systemBundleContext = framework.getSystemBundleContext();
-		if (systemBundleContext == null) { // if no system bundle context, we are done!
-			return;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("notifyEventHooks(" + event.getType() + ":" + event.getServiceReference() + "," + result + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ 
-		}
-
-		List hooks = lookupServiceRegistrations(eventHookName, null);
-		// Since the list is already sorted, we don't need to sort the list to call the hooks
-		// in the proper order.
-
-		for (Iterator iter = hooks.iterator(); iter.hasNext();) {
-			ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
-			Object eventHook = registration.getService(systemBundleContext);
-			if (eventHook == null) { // if the hook is null
-				continue;
-			}
-			try {
-				if (eventHook instanceof EventHook) { // if the hook is usable
-					((EventHook) eventHook).event(event, result);
-				}
-			} catch (Throwable t) {
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println(eventHook + ".event() exception: " + t.getMessage()); //$NON-NLS-1$
-					Debug.printStackTrace(t);
-				}
-				// allow the adaptor to handle this unexpected error
-				framework.getAdaptor().handleRuntimeError(t);
-				ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, eventHook.getClass().getName(), "event"), t); //$NON-NLS-1$ 
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-			} finally {
-				registration.ungetService(systemBundleContext);
-			}
-		}
-	}
-
-	/**
-	 * Call a newly registered ListenerHook service to provide the current collection of
-	 * service listeners.
-	 * 
-	 * @param registration The newly registered ListenerHook service.
-	 */
-	private void notifyNewListenerHook(final ServiceRegistrationImpl registration) {
-		if (System.getSecurityManager() == null) {
-			notifyNewListenerHookPrivileged(registration);
-		} else {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					notifyNewListenerHookPrivileged(registration);
-					return null;
-				}
-			});
-		}
-
-	}
-
-	void notifyNewListenerHookPrivileged(ServiceRegistrationImpl registration) {
-		BundleContextImpl systemBundleContext = framework.getSystemBundleContext();
-		if (systemBundleContext == null) { // if no system bundle context, we are done!
-			return;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("notifyNewListenerHook(" + registration + ")"); //$NON-NLS-1$ //$NON-NLS-2$ 
-		}
-
-		Collection addedListeners = new ArrayList(initialCapacity);
-		synchronized (serviceEventListeners) {
-			for (Iterator iter = serviceEventListeners.values().iterator(); iter.hasNext();) {
-				Map listeners = (Map) iter.next();
-				if (!listeners.isEmpty()) {
-					addedListeners.addAll(listeners.values());
-				}
-			}
-		}
-		addedListeners = Collections.unmodifiableCollection(addedListeners);
-
-		Object listenerHook = registration.getService(systemBundleContext);
-		if (listenerHook == null) { // if the hook is null
-			return;
-		}
-		try {
-			if (listenerHook instanceof ListenerHook) { // if the hook is usable
-				((ListenerHook) listenerHook).added(addedListeners);
-			}
-		} catch (Throwable t) {
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println(listenerHook + ".added() exception: " + t.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(t);
-			}
-			// allow the adaptor to handle this unexpected error
-			framework.getAdaptor().handleRuntimeError(t);
-			ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, listenerHook.getClass().getName(), "event"), t); //$NON-NLS-1$ 
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-		} finally {
-			registration.ungetService(systemBundleContext);
-		}
-	}
-
-	/**
-	 * Call the registered ListenerHook services to notify them of newly added or removed service listeners.
-	 * The ListenerHook must be called in order: descending by service.ranking, then ascending by service.id.
-	 * This is the natural order for ServiceReference.
-	 * 
-	 * @param listeners An unmodifiable collection of ListenerInfo objects.
-	 * @param added <code>true</code> if the specified listeners are being added. <code>false</code>
-	 * if they are being removed.
-	 */
-	private void notifyListenerHooks(final Collection listeners, final boolean added) {
-		if (System.getSecurityManager() == null) {
-			notifyListenerHooksPrivileged(listeners, added);
-		} else {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					notifyListenerHooksPrivileged(listeners, added);
-					return null;
-				}
-			});
-		}
-
-	}
-
-	void notifyListenerHooksPrivileged(Collection listeners, boolean added) {
-		BundleContextImpl systemBundleContext = framework.getSystemBundleContext();
-		if (systemBundleContext == null) { // if no system bundle context, we are done!
-			return;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("notifyListenerHooks(" + listeners + "," + (added ? "added" : "removed") + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-		}
-
-		List hooks = lookupServiceRegistrations(listenerHookName, null);
-		// Since the list is already sorted, we don't need to sort the list to call the hooks
-		// in the proper order.
-
-		for (Iterator iter = hooks.iterator(); iter.hasNext();) {
-			ServiceRegistrationImpl registration = (ServiceRegistrationImpl) iter.next();
-			Object listenerHook = registration.getService(systemBundleContext);
-			if (listenerHook == null) { // if the hook is null
-				continue;
-			}
-			try {
-				if (listenerHook instanceof ListenerHook) { // if the hook is usable
-					if (added) {
-						((ListenerHook) listenerHook).added(listeners);
-					} else {
-						((ListenerHook) listenerHook).removed(listeners);
-					}
-				}
-			} catch (Throwable t) {
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println(listenerHook + "." + (added ? "added" : "removed") + "() exception: " + t.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-					Debug.printStackTrace(t);
-				}
-				// allow the adaptor to handle this unexpected error
-				framework.getAdaptor().handleRuntimeError(t);
-				ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, listenerHook.getClass().getName(), "event"), t); //$NON-NLS-1$ 
-				framework.publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-			} finally {
-				registration.ungetService(systemBundleContext);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceUse.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceUse.java
deleted file mode 100755
index 11f3a54..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ServiceUse.java
+++ /dev/null
@@ -1,269 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.BundleContextImpl;
-import org.eclipse.osgi.framework.internal.core.Msg;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * This class represents the use of a service by a bundle. One is created for each
- * service acquired by a bundle. This class manages the calls to ServiceFactory
- * and the bundle's use count.
- * 
- * @ThreadSafe
- */
-
-public class ServiceUse {
-	/** ServiceFactory object if the service instance represents a factory,
-	 null otherwise */
-	final ServiceFactory factory;
-	/** BundleContext associated with this service use */
-	final BundleContextImpl context;
-	/** ServiceDescription of the registered service */
-	final ServiceRegistrationImpl registration;
-
-	/** Service object either registered or that returned by
-	 ServiceFactory.getService() */
-	/* @GuardedBy("this") */
-	private Object cachedService;
-	/** bundle's use count for this service */
-	/* @GuardedBy("this") */
-	private int useCount;
-
-	/** Internal framework object. */
-
-	/**
-	 * Constructs a service use encapsulating the service object.
-	 * Objects of this class should be constructed while holding the
-	 * registrations lock.
-	 *
-	 * @param   context bundle getting the service
-	 * @param   registration ServiceRegistration of the service
-	 */
-	ServiceUse(BundleContextImpl context, ServiceRegistrationImpl registration) {
-		this.useCount = 0;
-		Object service = registration.getServiceObject();
-		if (service instanceof ServiceFactory) {
-			this.factory = (ServiceFactory) service;
-			this.cachedService = null;
-		} else {
-			this.factory = null;
-			this.cachedService = service;
-		}
-		this.context = context;
-		this.registration = registration;
-	}
-
-	/**
-	 * Get a service's service object.
-	 * Retrieves the service object for a service.
-	 * A bundle's use of a service is tracked by a
-	 * use count. Each time a service's service object is returned by
-	 * {@link #getService}, the context bundle's use count for the service
-	 * is incremented by one. Each time the service is release by
-	 * {@link #ungetService}, the context bundle's use count
-	 * for the service is decremented by one.
-	 * When a bundle's use count for a service
-	 * drops to zero, the bundle should no longer use the service.
-	 *
-	 * <p>The following steps are followed to get the service object:
-	 * <ol>
-	 * <li>The context bundle's use count for this service is incremented by one.
-	 * <li>If the context bundle's use count for the service is now one and
-	 * the service was registered with a {@link ServiceFactory},
-	 * the {@link ServiceFactory#getService ServiceFactory.getService} method
-	 * is called to create a service object for the context bundle.
-	 * This service object is cached by the framework.
-	 * While the context bundle's use count for the service is greater than zero,
-	 * subsequent calls to get the services's service object for the context bundle
-	 * will return the cached service object.
-	 * <br>If the service object returned by the {@link ServiceFactory}
-	 * is not an <code>instanceof</code>
-	 * all the classes named when the service was registered or
-	 * the {@link ServiceFactory} throws an exception,
-	 * <code>null</code> is returned and a
-	 * {@link FrameworkEvent} of type {@link FrameworkEvent#ERROR} is broadcast.
-	 * <li>The service object for the service is returned.
-	 * </ol>
-	 *
-	 * @return A service object for the service associated with this
-	 * reference.
-	 */
-	/* @GuardedBy("this") */
-	Object getService() {
-		if ((useCount > 0) || (factory == null)) {
-			useCount++;
-			return cachedService;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("getService[factory=" + registration.getBundle() + "](" + context.getBundleImpl() + "," + registration + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-		final Object service;
-		try {
-			service = AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					return factory.getService(context.getBundleImpl(), registration);
-				}
-			});
-		} catch (Throwable t) {
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println(factory + ".getService() exception: " + t.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(t);
-			}
-			// allow the adaptor to handle this unexpected error
-			context.getFramework().getAdaptor().handleRuntimeError(t);
-			ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, factory.getClass().getName(), "getService"), ServiceException.FACTORY_EXCEPTION, t); //$NON-NLS-1$ 
-			context.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-			return null;
-		}
-
-		if (service == null) {
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println(factory + ".getService() returned null."); //$NON-NLS-1$
-			}
-
-			ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_OBJECT_NULL_EXCEPTION, factory.getClass().getName()), ServiceException.FACTORY_ERROR);
-			context.getFramework().publishFrameworkEvent(FrameworkEvent.WARNING, registration.getBundle(), se);
-			return null;
-		}
-
-		String[] clazzes = registration.getClasses();
-		String invalidService = ServiceRegistry.checkServiceClass(clazzes, service);
-		if (invalidService != null) {
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println("Service object is not an instanceof " + invalidService); //$NON-NLS-1$
-			}
-			ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_NOT_INSTANCEOF_CLASS_EXCEPTION, factory.getClass().getName(), invalidService), ServiceException.FACTORY_ERROR);
-			context.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-			return null;
-		}
-
-		this.cachedService = service;
-		useCount++;
-
-		return service;
-	}
-
-	/**
-	 * Unget a service's service object.
-	 * Releases the service object for a service.
-	 * If the context bundle's use count for the service is zero, this method
-	 * returns <code>false</code>. Otherwise, the context bundle's use count for the
-	 * service is decremented by one.
-	 *
-	 * <p>The service's service object
-	 * should no longer be used and all references to it should be destroyed
-	 * when a bundle's use count for the service
-	 * drops to zero.
-	 *
-	 * <p>The following steps are followed to unget the service object:
-	 * <ol>
-	 * <li>If the context bundle's use count for the service is zero or
-	 * the service has been unregistered,
-	 * <code>false</code> is returned.
-	 * <li>The context bundle's use count for this service is decremented by one.
-	 * <li>If the context bundle's use count for the service is now zero and
-	 * the service was registered with a {@link ServiceFactory},
-	 * the {@link ServiceFactory#ungetService ServiceFactory.ungetService} method
-	 * is called to release the service object for the context bundle.
-	 * <li><code>true</code> is returned.
-	 * </ol>
-	 *
-	 * @return <code>true</code> if the context bundle's use count for the service
-	 *         is zero otherwise <code>false</code>.
-	 */
-	/* @GuardedBy("this") */
-	boolean ungetService() {
-		if (useCount == 0) {
-			return true;
-		}
-
-		useCount--;
-		if (useCount > 0) {
-			return false;
-		}
-
-		if (factory == null) {
-			return true;
-		}
-
-		final Object service = cachedService;
-		cachedService = null;
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("ungetService[factory=" + registration.getBundle() + "](" + context.getBundleImpl() + "," + registration + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-		try {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					factory.ungetService(context.getBundleImpl(), registration, service);
-					return null;
-				}
-			});
-		} catch (Throwable t) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println(factory + ".ungetService() exception"); //$NON-NLS-1$
-				Debug.printStackTrace(t);
-			}
-
-			ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, factory.getClass().getName(), "ungetService"), ServiceException.FACTORY_EXCEPTION, t); //$NON-NLS-1$ 
-			context.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-		}
-
-		return true;
-	}
-
-	/**
-	 * Release a service's service object.
-	 * <ol>
-	 * <li>The bundle's use count for this service is set to zero.
-	 * <li>If the service was registered with a {@link ServiceFactory},
-	 * the {@link ServiceFactory#ungetService ServiceFactory.ungetService} method
-	 * is called to release the service object for the bundle.
-	 * </ol>
-	 */
-	/* @GuardedBy("this") */
-	void releaseService() {
-		if ((useCount == 0) || (factory == null)) {
-			return;
-		}
-		final Object service = cachedService;
-		cachedService = null;
-		useCount = 0;
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("releaseService[factory=" + registration.getBundle() + "](" + context.getBundleImpl() + "," + registration + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-		try {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					factory.ungetService(context.getBundleImpl(), registration, service);
-					return null;
-				}
-			});
-		} catch (Throwable t) {
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println(factory + ".ungetService() exception"); //$NON-NLS-1$
-				Debug.printStackTrace(t);
-			}
-
-			ServiceException se = new ServiceException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, factory.getClass().getName(), "ungetService"), ServiceException.FACTORY_EXCEPTION, t); //$NON-NLS-1$ 
-			context.getFramework().publishFrameworkEvent(FrameworkEvent.ERROR, registration.getBundle(), se);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java
deleted file mode 100644
index cbc70ec..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/internal/serviceregistry/ShrinkableCollection.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.serviceregistry;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * A Shrinkable Collection. This class provides a wrapper for a collection
- * that allows items to be removed from the wrapped collection (shrinking) but
- * does not allow items to be added to the wrapped collection. 
- * 
- * <p>
- * All the optional <code>Collection</code> operations except
- * <code>add</code> and <code>addAll</code> are supported. Attempting to add to the
- * collection will result in an <code>UnsupportedOperationException</code>.
- *
- */
-
-public class ShrinkableCollection implements Collection {
-	private final Collection collection;
-
-	ShrinkableCollection(Collection c) {
-		if (c == null) {
-			throw new NullPointerException();
-		}
-		collection = c;
-	}
-
-	public boolean add(Object var0) {
-		throw new UnsupportedOperationException();
-	}
-
-	public boolean addAll(Collection var0) {
-		throw new UnsupportedOperationException();
-	}
-
-	public void clear() {
-		collection.clear();
-	}
-
-	public boolean contains(Object var0) {
-		return collection.contains(var0);
-	}
-
-	public boolean containsAll(Collection var0) {
-		return collection.containsAll(var0);
-	}
-
-	public boolean isEmpty() {
-		return collection.isEmpty();
-	}
-
-	public Iterator iterator() {
-		return collection.iterator();
-	}
-
-	public boolean remove(Object var0) {
-		return collection.remove(var0);
-	}
-
-	public boolean removeAll(Collection var0) {
-		return collection.removeAll(var0);
-	}
-
-	public boolean retainAll(Collection var0) {
-		return collection.retainAll(var0);
-	}
-
-	public int size() {
-		return collection.size();
-	}
-
-	public Object[] toArray() {
-		return collection.toArray();
-	}
-
-	public Object[] toArray(Object[] var0) {
-		return collection.toArray(var0);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/Equinox.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/Equinox.java
deleted file mode 100644
index 3d6e280..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/Equinox.java
+++ /dev/null
@@ -1,286 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.launch;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.net.*;
-import java.security.*;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.util.Headers;
-import org.eclipse.osgi.internal.baseadaptor.DevClassPathHelper;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-import org.osgi.framework.launch.Framework;
-
-/**
- * The System Bundle implementation for the Equinox Framework.
- * 
- * @since 3.5
- */
-public class Equinox implements Framework {
-	private static final String implName = "org.eclipse.osgi.framework.internal.core.EquinoxLauncher"; //$NON-NLS-1$
-	/**@GuardedBy this*/
-	private Framework impl;
-	private final boolean useSeparateCL;
-	private final Map configuration;
-
-	public Equinox(Map configuration) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new AllPermission());
-		useSeparateCL = FrameworkProperties.inUse();
-		this.configuration = configuration == null ? Collections.EMPTY_MAP : new HashMap(configuration);
-	}
-
-	private Framework createImpl() {
-		if (System.getSecurityManager() == null)
-			return createImpl0();
-		return (Framework) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return createImpl0();
-			}
-		});
-	}
-
-	Framework createImpl0() {
-		try {
-			Class implClazz = getImplClass();
-			Constructor constructor = implClazz.getConstructor(new Class[] {Map.class});
-			return (Framework) constructor.newInstance(new Object[] {configuration});
-		} catch (ClassNotFoundException e) {
-			throw new NoClassDefFoundError(implName);
-		} catch (IllegalAccessException e) {
-			throw new RuntimeException(e.getMessage(), e);
-		} catch (NoSuchMethodException e) {
-			throw new NoSuchMethodError(e.getMessage());
-		} catch (InstantiationException e) {
-			throw new RuntimeException(e.getMessage(), e);
-		} catch (InvocationTargetException e) {
-			throw new RuntimeException(e.getMessage(), e);
-		}
-	}
-
-	private Class getImplClass() throws ClassNotFoundException {
-		ClassLoader thisCL = this.getClass().getClassLoader();
-		if (!(useSeparateCL && (thisCL instanceof URLClassLoader)))
-			return Class.forName(implName);
-		URL[] cp = getFrameworkURLs((URLClassLoader) thisCL);
-		EquinoxFWClassLoader fwCL = new EquinoxFWClassLoader(cp, thisCL);
-		return fwCL.loadClass(implName);
-	}
-
-	private URL[] getFrameworkURLs(URLClassLoader frameworkLoader) {
-		// use the classpath of the framework class loader
-		URL[] cp = frameworkLoader.getURLs();
-		ArrayList result = new ArrayList(cp.length);
-		for (int i = 0; i < cp.length; i++) {
-			// need to add only the urls for the framework and any framework fragments
-			InputStream manifest = null;
-			try {
-				if (cp[i].getFile().endsWith("/")) { //$NON-NLS-1$
-					manifest = new URL(cp[i], org.eclipse.osgi.framework.internal.core.Constants.OSGI_BUNDLE_MANIFEST).openStream();
-				} else {
-					manifest = new URL("jar:" + cp[i].toExternalForm() + "!/" + org.eclipse.osgi.framework.internal.core.Constants.OSGI_BUNDLE_MANIFEST).openStream(); //$NON-NLS-1$ //$NON-NLS-2$
-				}
-				Map headers = ManifestElement.parseBundleManifest(manifest, new Headers(10));
-				String bsnSpec = getValue(headers, Constants.BUNDLE_SYMBOLICNAME);
-				if (bsnSpec == null)
-					continue;
-				String internalBSN = org.eclipse.osgi.framework.internal.core.Constants.getInternalSymbolicName();
-				if (internalBSN.equals(bsnSpec)) {
-					// this is the framework
-					addDevClassPaths(cp[i], bsnSpec, result);
-					result.add(cp[i]);
-				} else {
-					if (!isFrameworkFragment(headers, internalBSN))
-						continue;
-					// this is for a framework extension
-					addDevClassPaths(cp[i], bsnSpec, result);
-					result.add(cp[i]);
-				}
-			} catch (IOException e) {
-				continue; // no manifest;
-			} catch (BundleException e) {
-				continue; // bad manifest;
-			} finally {
-				if (manifest != null)
-					try {
-						manifest.close();
-					} catch (IOException e) {
-						// ignore
-					}
-			}
-		}
-		return (URL[]) result.toArray(new URL[result.size()]);
-	}
-
-	private void addDevClassPaths(URL cp, String bsn, ArrayList result) {
-		if (!cp.getPath().endsWith("/")) //$NON-NLS-1$
-			return;
-		String[] devPaths = DevClassPathHelper.getDevClassPath(bsn);
-		if (devPaths == null)
-			return;
-		for (int i = 0; i < devPaths.length; i++)
-			try {
-				char lastChar = devPaths[i].charAt(devPaths[i].length() - 1);
-				URL url;
-				if ((devPaths[i].endsWith(".jar") || (lastChar == '/' || lastChar == '\\'))) //$NON-NLS-1$
-					url = new URL(cp, devPaths[i]);
-				else
-					url = new URL(cp, devPaths[i] + "/"); //$NON-NLS-1$
-				result.add(url);
-			} catch (MalformedURLException e) {
-				continue;
-			}
-	}
-
-	private boolean isFrameworkFragment(Map headers, String internalBSN) {
-		String hostBSN = getValue(headers, Constants.FRAGMENT_HOST);
-		return internalBSN.equals(hostBSN) || Constants.SYSTEM_BUNDLE_SYMBOLICNAME.equals(hostBSN);
-	}
-
-	private String getValue(Map headers, String key) {
-		String headerSpec = (String) headers.get(key);
-		if (headerSpec == null)
-			return null;
-		ManifestElement[] elements;
-		try {
-			elements = ManifestElement.parseHeader(key, headerSpec);
-		} catch (BundleException e) {
-			return null;
-		}
-		if (elements == null)
-			return null;
-		return elements[0].getValue();
-	}
-
-	private synchronized Framework getImpl() {
-		if (impl == null)
-			impl = createImpl();
-		return impl;
-	}
-
-	public void init() throws BundleException {
-		getImpl().init();
-	}
-
-	public FrameworkEvent waitForStop(long timeout) throws InterruptedException {
-		return getImpl().waitForStop(timeout);
-	}
-
-	public Enumeration findEntries(String path, String filePattern, boolean recurse) {
-		return getImpl().findEntries(path, filePattern, recurse);
-	}
-
-	public BundleContext getBundleContext() {
-		return getImpl().getBundleContext();
-	}
-
-	public long getBundleId() {
-		return getImpl().getBundleId();
-	}
-
-	public URL getEntry(String path) {
-		return getImpl().getEntry(path);
-	}
-
-	public Enumeration getEntryPaths(String path) {
-		return getImpl().getEntryPaths(path);
-	}
-
-	public Dictionary getHeaders() {
-		return getImpl().getHeaders();
-	}
-
-	public Dictionary getHeaders(String locale) {
-		return getImpl().getHeaders(locale);
-	}
-
-	public long getLastModified() {
-		return getImpl().getLastModified();
-	}
-
-	public String getLocation() {
-		return getImpl().getLocation();
-	}
-
-	public ServiceReference[] getRegisteredServices() {
-		return getImpl().getRegisteredServices();
-	}
-
-	public URL getResource(String name) {
-		return getImpl().getResource(name);
-	}
-
-	public Enumeration getResources(String name) throws IOException {
-		return getImpl().getResources(name);
-	}
-
-	public ServiceReference[] getServicesInUse() {
-		return getImpl().getServicesInUse();
-	}
-
-	public int getState() {
-		return getImpl().getState();
-	}
-
-	public String getSymbolicName() {
-		return getImpl().getSymbolicName();
-	}
-
-	public boolean hasPermission(Object permission) {
-		return getImpl().hasPermission(permission);
-	}
-
-	public Class loadClass(String name) throws ClassNotFoundException {
-		return getImpl().loadClass(name);
-	}
-
-	public void start(int options) throws BundleException {
-		getImpl().start(options);
-	}
-
-	public void start() throws BundleException {
-		getImpl().start();
-	}
-
-	public void stop(int options) throws BundleException {
-		getImpl().stop(options);
-	}
-
-	public void stop() throws BundleException {
-		getImpl().stop();
-	}
-
-	public void uninstall() throws BundleException {
-		getImpl().uninstall();
-	}
-
-	public void update() throws BundleException {
-		getImpl().update();
-	}
-
-	public void update(InputStream in) throws BundleException {
-		getImpl().update(in);
-	}
-
-	public Map getSignerCertificates(int signersType) {
-		return getImpl().getSignerCertificates(signersType);
-	}
-
-	public Version getVersion() {
-		return getImpl().getVersion();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFWClassLoader.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFWClassLoader.java
deleted file mode 100644
index 01fd48b..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFWClassLoader.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.launch;
-
-import java.net.URL;
-import java.net.URLClassLoader;
-
-class EquinoxFWClassLoader extends URLClassLoader {
-
-	private static final String[] DELEGATE_PARENT_FIRST = {"java.", "org.osgi.", "org.eclipse.osgi.launch.", "org.eclipse.osgi.service.", "org.eclipse.osgi.framework.log", "org.eclipse.osgi.framework.adaptor", "org.eclipse.osgi.framework.internal.core.ReferenceInputStream"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$
-	private static final String[] DELEGATE_CHILD_FIRST = new String[0]; // nothing right now is skipped
-
-	private final ClassLoader parent;
-
-	public EquinoxFWClassLoader(URL[] urls, ClassLoader parent) {
-		super(urls, parent);
-		this.parent = parent;
-	}
-
-	protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
-		Class clazz = findLoadedClass(name);
-		if (clazz != null)
-			return clazz;
-
-		boolean childFirst = childFirst(name);
-		ClassNotFoundException cnfe = null;
-
-		if (childFirst)
-			try {
-				clazz = findClass(name);
-			} catch (ClassNotFoundException e) {
-				// continue
-				cnfe = e;
-			}
-
-		if (clazz == null)
-			try {
-				clazz = parent.loadClass(name);
-			} catch (ClassNotFoundException e) {
-				// continue
-			}
-
-		if (clazz == null && cnfe != null)
-			throw cnfe;
-		if (clazz == null && !childFirst)
-			clazz = findClass(name);
-
-		if (resolve)
-			resolveClass(clazz);
-		return clazz;
-	}
-
-	private boolean childFirst(String name) {
-		for (int i = DELEGATE_CHILD_FIRST.length - 1; i >= 0; i--)
-			if (name.startsWith(DELEGATE_CHILD_FIRST[i]))
-				return true;
-		for (int i = DELEGATE_PARENT_FIRST.length - 1; i >= 0; i--)
-			if (name.startsWith(DELEGATE_PARENT_FIRST[i]))
-				return false;
-		return true;
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFactory.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFactory.java
deleted file mode 100644
index 5c0c9e8..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/EquinoxFactory.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.launch;
-
-import java.util.Map;
-import org.osgi.framework.launch.Framework;
-import org.osgi.framework.launch.FrameworkFactory;
-
-/**
- * The framework factory implementation for the Equinox framework.
- * @since 3.5
- */
-public class EquinoxFactory implements FrameworkFactory {
-
-	public Framework newFramework(Map configuration) {
-		return new Equinox(configuration);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/package.html b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/package.html
deleted file mode 100644
index b2d671b..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/launch/package.html
+++ /dev/null
@@ -1,17 +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 the Equinox framework launch API.
-<h2>
-Package Specification</h2>
-This package specifies the Equinox framework launch API.
-<p>
-Clients that want to launch an embedded instance of Equinox 
-will likely be interested in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseAdaptor.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseAdaptor.java
deleted file mode 100644
index 324ff1c..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseAdaptor.java
+++ /dev/null
@@ -1,486 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Properties;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.hooks.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.baseadaptor.*;
-import org.eclipse.osgi.service.resolver.PlatformAdmin;
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * A Framework adaptor implementation that allows additional functionality to be
- * hooked in.  Hooks are configured using {@link HookConfigurator}
- * objects.   A framework extension may add hook configurators which can be used
- * to add hooks to the {@link HookRegistry}.
- * @see HookConfigurator
- * @see HookRegistry
- * @see AdaptorHook
- * @since 3.2
- */
-public class BaseAdaptor implements FrameworkAdaptor {
-	// System property used to set the parent classloader type (boot is the default)
-	private static final String PROP_PARENT_CLASSLOADER = "osgi.parentClassloader"; //$NON-NLS-1$
-	// A parent classloader type that specifies the application classloader
-	private static final String PARENT_CLASSLOADER_APP = "app"; //$NON-NLS-1$
-	// A parent classloader type that specifies the extension classlaoder
-	private static final String PARENT_CLASSLOADER_EXT = "ext"; //$NON-NLS-1$
-	// A parent classloader type that specifies the boot classlaoder
-	private static final String PARENT_CLASSLOADER_BOOT = "boot"; //$NON-NLS-1$
-	// A parent classloader type that specifies the framework classlaoder
-	private static final String PARENT_CLASSLOADER_FWK = "fwk"; //$NON-NLS-1$
-	// The BundleClassLoader parent to use when creating BundleClassLoaders.
-	private static ClassLoader bundleClassLoaderParent;
-	static {
-		// check property for specified parent
-		String type = FrameworkProperties.getProperty(BaseAdaptor.PROP_PARENT_CLASSLOADER, BaseAdaptor.PARENT_CLASSLOADER_BOOT);
-		if (BaseAdaptor.PARENT_CLASSLOADER_FWK.equalsIgnoreCase(type))
-			bundleClassLoaderParent = FrameworkAdaptor.class.getClassLoader();
-		else if (BaseAdaptor.PARENT_CLASSLOADER_APP.equalsIgnoreCase(type))
-			bundleClassLoaderParent = ClassLoader.getSystemClassLoader();
-		else if (BaseAdaptor.PARENT_CLASSLOADER_EXT.equalsIgnoreCase(type)) {
-			ClassLoader appCL = ClassLoader.getSystemClassLoader();
-			if (appCL != null)
-				bundleClassLoaderParent = appCL.getParent();
-		}
-		// default to boot classloader
-		if (bundleClassLoaderParent == null)
-			bundleClassLoaderParent = new ClassLoader(Object.class.getClassLoader()) {/* boot class loader*/};
-	}
-
-	private EventPublisher eventPublisher;
-	private boolean stopping;
-	private HookRegistry hookRegistry;
-	private FrameworkLog log;
-	private BundleContext context;
-	private BaseStorage storage;
-	private BundleWatcher bundleWatcher;
-
-	/**
-	 * Constructs a BaseAdaptor.
-	 * @param args arguments passed to the adaptor by the framework.
-	 */
-	public BaseAdaptor(String[] args) {
-		if (LocationManager.getConfigurationLocation() == null)
-			LocationManager.initializeLocations();
-		hookRegistry = new HookRegistry(this);
-		FrameworkLogEntry[] errors = hookRegistry.initialize();
-		if (errors.length > 0)
-			for (int i = 0; i < errors.length; i++)
-				getFrameworkLog().log(errors[i]);
-		// get the storage after the registry has been initialized
-		storage = getStorage();
-		// TODO consider passing args to BaseAdaptorHooks
-	}
-
-	/**
-	 * This method will call all configured adaptor hooks {@link AdaptorHook#initialize(BaseAdaptor)} method.
-	 * @see FrameworkAdaptor#initialize(EventPublisher)
-	 */
-	public void initialize(EventPublisher publisher) {
-		this.eventPublisher = publisher;
-		// set the adaptor for the adaptor hooks
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++)
-			adaptorHooks[i].initialize(this);
-	}
-
-	/**
-	 * @see FrameworkAdaptor#initializeStorage()
-	 */
-	public void initializeStorage() throws IOException {
-		storage.initialize(this);
-	}
-
-	/**
-	 * @see FrameworkAdaptor#compactStorage()
-	 */
-	public void compactStorage() throws IOException {
-		storage.compact();
-	}
-
-	/**
-	 * This method will call all the configured adaptor hook {@link AdaptorHook#addProperties(Properties)} methods.
-	 * @see FrameworkAdaptor#getProperties()
-	 */
-	public Properties getProperties() {
-		Properties props = new Properties();
-		String resource = FrameworkProperties.getProperty(Constants.OSGI_PROPERTIES, Constants.DEFAULT_OSGI_PROPERTIES);
-		try {
-			InputStream in = null;
-			File file = new File(resource);
-			if (file.exists())
-				in = new FileInputStream(file);
-			if (in == null)
-				in = getClass().getResourceAsStream(resource);
-			if (in != null) {
-				try {
-					props.load(new BufferedInputStream(in));
-				} finally {
-					try {
-						in.close();
-					} catch (IOException ee) {
-						// nothing to do
-					}
-				}
-			} else {
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-					Debug.println("Skipping osgi.properties: " + resource); //$NON-NLS-1$
-			}
-		} catch (IOException e) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-				Debug.println("Unable to load osgi.properties: " + e.getMessage()); //$NON-NLS-1$
-		}
-		// add the storage properties
-		storage.addProperties(props);
-		// add the properties from each adaptor hook
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++)
-			adaptorHooks[i].addProperties(props);
-		return props;
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getInstalledBundles()
-	 */
-	public BundleData[] getInstalledBundles() {
-		return storage.getInstalledBundles();
-	}
-
-	/**
-	 * This method will call each configured adaptor hook {@link AdaptorHook#mapLocationToURLConnection(String)} method
-	 * until one returns a non-null value.  If none of the adaptor hooks return a non-null value then the 
-	 * string is used to construct a new URL object to open a new url connection.
-	 * 
-	 * @see FrameworkAdaptor#mapLocationToURLConnection(String)
-	 */
-	public URLConnection mapLocationToURLConnection(String location) throws BundleException {
-		try {
-			URLConnection result = null;
-			// try the adaptor hooks first;
-			AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-			for (int i = 0; i < adaptorHooks.length; i++) {
-				result = adaptorHooks[i].mapLocationToURLConnection(location);
-				if (result != null)
-					return result;
-			}
-			// just do the default
-			return (new URL(location).openConnection());
-		} catch (IOException e) {
-			throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_URL_CREATE_EXCEPTION, location), e);
-		}
-	}
-
-	/**
-	 * @see FrameworkAdaptor#installBundle(String, URLConnection)
-	 */
-	public BundleOperation installBundle(String location, URLConnection source) {
-		return storage.installBundle(location, source);
-	}
-
-	/**
-	 * @see FrameworkAdaptor#updateBundle(BundleData, URLConnection)
-	 */
-	public BundleOperation updateBundle(BundleData bundledata, URLConnection source) {
-		return storage.updateBundle((BaseData) bundledata, source);
-	}
-
-	/**
-	 * @see FrameworkAdaptor#uninstallBundle(BundleData)
-	 */
-	public BundleOperation uninstallBundle(BundleData bundledata) {
-		return storage.uninstallBundle((BaseData) bundledata);
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getTotalFreeSpace()
-	 */
-	public long getTotalFreeSpace() throws IOException {
-		return storage.getFreeSpace();
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getPermissionStorage()
-	 */
-	public PermissionStorage getPermissionStorage() throws IOException {
-		return storage.getPermissionStorage();
-	}
-
-	/**
-	 * This method calls all the configured adaptor hook {@link AdaptorHook#frameworkStart(BundleContext)} methods.
-	 * @see FrameworkAdaptor#frameworkStart(BundleContext)
-	 */
-	public void frameworkStart(BundleContext fwContext) throws BundleException {
-		this.context = fwContext;
-		stopping = false;
-		// always start the storage first
-		storage.frameworkStart(fwContext);
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++)
-			adaptorHooks[i].frameworkStart(fwContext);
-	}
-
-	/**
-	 * This method calls all the configured adaptor hook {@link AdaptorHook#frameworkStop(BundleContext)} methods.
-	 * @see FrameworkAdaptor#frameworkStop(BundleContext)
-	 */
-	public void frameworkStop(BundleContext fwContext) throws BundleException {
-		// first inform all configured adaptor hooks
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++)
-			adaptorHooks[i].frameworkStop(fwContext);
-		// stop the storage last
-		storage.frameworkStop(fwContext);
-	}
-
-	/**
-	 * This method calls all the configured adaptor hook {@link AdaptorHook#frameworkStopping(BundleContext)} methods.
-	 * @see FrameworkAdaptor#frameworkStopping(BundleContext)
-	 */
-	public void frameworkStopping(BundleContext fwContext) {
-		stopping = true;
-		// always tell storage of stopping first
-		storage.frameworkStopping(fwContext);
-		// inform all configured adaptor hooks last
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++)
-			adaptorHooks[i].frameworkStopping(fwContext);
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getInitialBundleStartLevel()
-	 */
-	public int getInitialBundleStartLevel() {
-		return storage.getInitialBundleStartLevel();
-	}
-
-	/**
-	 * @see FrameworkAdaptor#setInitialBundleStartLevel(int)
-	 */
-	public void setInitialBundleStartLevel(int value) {
-		storage.setInitialBundleStartLevel(value);
-	}
-
-	/**
-	 * This method calls all configured adaptor hook  {@link AdaptorHook#createFrameworkLog()} methods 
-	 * until the first one returns a non-null value.  If none of the adaptor hooks return a non-null
-	 * value then a framework log implementation which does nothing is returned.
-	 * @see FrameworkAdaptor#getFrameworkLog()
-	 */
-	public FrameworkLog getFrameworkLog() {
-		if (log != null)
-			return log;
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++) {
-			log = adaptorHooks[i].createFrameworkLog();
-			if (log != null)
-				return log;
-		}
-		log = new FrameworkLog() {
-			public void log(FrameworkEvent frameworkEvent) {
-				log(new FrameworkLogEntry(frameworkEvent.getBundle().getSymbolicName() == null ? frameworkEvent.getBundle().getLocation() : frameworkEvent.getBundle().getSymbolicName(), FrameworkLogEntry.ERROR, 0, "FrameworkEvent.ERROR", 0, frameworkEvent.getThrowable(), null)); //$NON-NLS-1$
-			}
-
-			public void log(FrameworkLogEntry logEntry) {
-				System.err.print(logEntry.getEntry() + " "); //$NON-NLS-1$
-				System.err.println(logEntry.getMessage());
-				if (logEntry.getThrowable() != null)
-					logEntry.getThrowable().printStackTrace(System.err);
-			}
-
-			public void setWriter(Writer newWriter, boolean append) {
-				// do nothing
-			}
-
-			public void setFile(File newFile, boolean append) throws IOException {
-				// do nothing
-			}
-
-			public File getFile() {
-				// do nothing
-				return null;
-			}
-
-			public void setConsoleLog(boolean consoleLog) {
-				// do nothing
-			}
-
-			public void close() {
-				// do nothing
-			}
-		};
-		return log;
-	}
-
-	/**
-	 * @see FrameworkAdaptor#createSystemBundleData()
-	 */
-	public BundleData createSystemBundleData() throws BundleException {
-		return new SystemBundleData(this);
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getBundleWatcher()
-	 */
-	public BundleWatcher getBundleWatcher() {
-		if (bundleWatcher != null)
-			return bundleWatcher;
-		final BundleWatcher[] watchers = hookRegistry.getWatchers();
-		if (watchers.length == 0)
-			return null;
-		bundleWatcher = new BundleWatcher() {
-			public void watchBundle(Bundle bundle, int type) {
-				for (int i = 0; i < watchers.length; i++)
-					watchers[i].watchBundle(bundle, type);
-			}
-		};
-		return bundleWatcher;
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getPlatformAdmin()
-	 */
-	public PlatformAdmin getPlatformAdmin() {
-		return storage.getStateManager();
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getState()
-	 */
-	public State getState() {
-		return storage.getStateManager().getSystemState();
-	}
-
-	/**
-	 * This method calls all the configured classloading hooks {@link ClassLoadingHook#getBundleClassLoaderParent()} methods 
-	 * until one returns a non-null value.
-	 * @see FrameworkAdaptor#getBundleClassLoaderParent()
-	 */
-	public ClassLoader getBundleClassLoaderParent() {
-		// ask the configured adaptor hooks first
-		ClassLoader result = null;
-		ClassLoadingHook[] cpManagerHooks = getHookRegistry().getClassLoadingHooks();
-		for (int i = 0; i < cpManagerHooks.length; i++) {
-			result = cpManagerHooks[i].getBundleClassLoaderParent();
-			if (result != null)
-				return result;
-		}
-		// none of the configured adaptor hooks gave use a parent loader; use the default
-		return bundleClassLoaderParent;
-	}
-
-	/**
-	 * This method calls all the configured adaptor hooks  {@link AdaptorHook#handleRuntimeError(Throwable)} methods.
-	 * @see FrameworkAdaptor#handleRuntimeError(Throwable)
-	 */
-	public void handleRuntimeError(Throwable error) {
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++)
-			adaptorHooks[i].handleRuntimeError(error);
-	}
-
-	/**
-	 * Returns true if the {@link #frameworkStopping(BundleContext)} method has been called
-	 * @return true if the framework is stopping
-	 */
-	public boolean isStopping() {
-		return stopping;
-	}
-
-	/**
-	 * Returns the event publisher for this BaseAdaptor
-	 * @return the event publisher for this BaseAdaptor
-	 */
-	public EventPublisher getEventPublisher() {
-		return eventPublisher;
-	}
-
-	/**
-	 * Returns the <code>HookRegistry</code> object for this adaptor.
-	 * @return the <code>HookRegistry</code> object for this adaptor.
-	 */
-	public HookRegistry getHookRegistry() {
-		return hookRegistry;
-	}
-
-	/**
-	 * Returns the system bundle's context
-	 * @return the system bundle's context
-	 */
-	public BundleContext getContext() {
-		return context;
-	}
-
-	/**
-	 * Creates a bundle file object for the given content and base data. 
-	 * This method must delegate to each configured bundle file factory 
-	 * {@link BundleFileFactoryHook#createBundleFile(Object, BaseData, boolean)} method until one 
-	 * factory returns a non-null value.  If no bundle file factory returns a non-null value 
-	 * then the the default behavior will be performed.
-	 * <p>
-	 * If the specified content is <code>null</code> then the base content of the specified 
-	 * bundledata must be found before calling any bundle file factories.
-	 * </p>
-	 * <p>
-	 * After the bundle file has been created each configured bundle file wrapper factory
-	 * {@link BundleFileWrapperFactoryHook#wrapBundleFile(BundleFile, Object, BaseData, boolean)}
-	 * method is called to wrap the bundle file.
-	 * </p>
-	 * @param content The object which contains the content of a bundle file. A value of 
-	 * <code>null</code> indicates that the storage must find the base content for the 
-	 * specified BaseData.
-	 * @param data The BaseData associated with the content
-	 * @return a BundleFile object.
-	 * @throws IOException if an error occured while creating the BundleFile
-	 */
-	public BundleFile createBundleFile(Object content, BaseData data) throws IOException {
-		return storage.createBundleFile(content, data);
-	}
-
-	/**
-	 * Returns true if the persistent storage is read-only
-	 * @return true if the persistent storage is read-only
-	 */
-	public boolean isReadOnly() {
-		return storage.isReadOnly();
-	}
-
-	/*
-	 * This is an experimental method to allow adaptors to replace the storage implementation by 
-	 * extending BaseAdaptor and overriding this method.  This method is experimental.
-	 * @return a base storage object.
-	 */
-	protected BaseStorage getStorage() {
-		if (storage != null)
-			return storage;
-		// this bit of code assumes the registry is initialized with a BaseStorageHook
-		// we want to make sure we are using the same BaseStorage instance as the BaseStorageHook
-		StorageHook[] hooks = hookRegistry.getStorageHooks();
-		for (int i = 0; i < hooks.length && storage == null; i++)
-			if (hooks[i] instanceof BaseStorageHook)
-				storage = ((BaseStorageHook) hooks[i]).getStorage();
-		return storage;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseData.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseData.java
deleted file mode 100644
index 808474e..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseData.java
+++ /dev/null
@@ -1,492 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.baseadaptor.loader.BaseClassLoader;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.protocol.bundleentry.Handler;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-
-/**
- * The BundleData implementation used by the BaseAdaptor.
- * @see BaseAdaptor
- * @see BundleData
- * @see StorageHook
- * @see ClassLoadingHook
- * @since 3.2
- */
-public class BaseData implements BundleData {
-	private final static boolean COPY_NATIVES = Boolean.valueOf(FrameworkProperties.getProperty("osgi.classloader.copy.natives")).booleanValue(); //$NON-NLS-1$
-	private long id;
-	private BaseAdaptor adaptor;
-	private Bundle bundle;
-	private int startLevel = -1;
-	private int status = 0;
-	private StorageHook[] storageHooks;
-	private String location;
-	private long lastModified;
-	protected BundleFile bundleFile;
-	private boolean dirty = false;
-	protected Dictionary manifest;
-	// This field is only used by PDE source lookup, and is set by a hook (bug 126517).  It serves no purpose at runtime.
-	protected String fileName;
-	// This is only used to keep track of when the same native library is loaded more than once
-	protected Collection loadedNativeCode;
-
-	///////////////////// Begin values from Manifest     /////////////////////
-	private String symbolicName;
-	private Version version;
-	private String activator;
-	private String classpath;
-	private String executionEnvironment;
-	private String dynamicImports;
-	private int type;
-
-	///////////////////// End values from Manifest       /////////////////////
-
-	/**
-	 * Constructs a new BaseData with the specified id for the specified adaptor
-	 * @param id the id of the BaseData
-	 * @param adaptor the adaptor of the BaseData
-	 */
-	public BaseData(long id, BaseAdaptor adaptor) {
-		this.id = id;
-		this.adaptor = adaptor;
-	}
-
-	/**
-	 * This method calls all the configured class loading hooks {@link ClassLoadingHook#createClassLoader(ClassLoader, ClassLoaderDelegate, BundleProtectionDomain, BaseData, String[])} 
-	 * methods until on returns a non-null value.  If none of the class loading hooks returns a non-null value 
-	 * then the default classloader implementation is used.
-	 * @see BundleData#createClassLoader(ClassLoaderDelegate, BundleProtectionDomain, String[])
-	 */
-	public BundleClassLoader createClassLoader(ClassLoaderDelegate delegate, BundleProtectionDomain domain, String[] bundleclasspath) {
-		ClassLoadingHook[] hooks = adaptor.getHookRegistry().getClassLoadingHooks();
-		ClassLoader parent = adaptor.getBundleClassLoaderParent();
-		BaseClassLoader cl = null;
-		for (int i = 0; i < hooks.length && cl == null; i++)
-			cl = hooks[i].createClassLoader(parent, delegate, domain, this, bundleclasspath);
-		if (cl == null)
-			cl = new DefaultClassLoader(parent, delegate, domain, this, bundleclasspath);
-		return cl;
-	}
-
-	public final URL getEntry(final String path) {
-		if (System.getSecurityManager() == null)
-			return getEntry0(path);
-		return (URL) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return getEntry0(path);
-			}
-		});
-	}
-
-	final URL getEntry0(String path) {
-		BundleEntry entry = getBundleFile().getEntry(path);
-		if (entry == null)
-			return null;
-		path = BundleFile.fixTrailingSlash(path, entry);
-		try {
-			//use the constant string for the protocol to prevent duplication
-			return new URL(Constants.OSGI_ENTRY_URL_PROTOCOL, Long.toString(id) + BundleResourceHandler.BID_FWKID_SEPARATOR + Integer.toString(adaptor.hashCode()), 0, path, new Handler(entry, adaptor));
-		} catch (MalformedURLException e) {
-			return null;
-		}
-	}
-
-	public final Enumeration getEntryPaths(String path) {
-		return getBundleFile().getEntryPaths(path);
-	}
-
-	/**
-	 * This method calls each configured classloading hook {@link ClassLoadingHook#findLibrary(BaseData, String)} method 
-	 * until the first one returns a non-null value.
-	 * @see BundleData#findLibrary(String)
-	 */
-	public String findLibrary(String libname) {
-		ClassLoadingHook[] hooks = adaptor.getHookRegistry().getClassLoadingHooks();
-		String result = null;
-		for (int i = 0; i < hooks.length; i++) {
-			result = hooks[i].findLibrary(this, libname);
-			if (result != null)
-				break;
-		}
-		// check to see if this library has been loaded by another class loader
-		if (result != null)
-			synchronized (this) {
-				if (loadedNativeCode == null)
-					loadedNativeCode = new ArrayList(1);
-				if (loadedNativeCode.contains(result) || COPY_NATIVES) {
-					// we must copy the library to a temp space to allow another class loader to load the library
-					String temp = copyToTempLibrary(result);
-					if (temp != null)
-						result = temp;
-				} else {
-					loadedNativeCode.add(result);
-				}
-			}
-		return result;
-	}
-
-	private String copyToTempLibrary(String result) {
-		try {
-			return adaptor.getStorage().copyToTempLibrary(this, result);
-		} catch (IOException e) {
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, e.getMessage(), 0, e, null));
-		}
-		return null;
-	}
-
-	public void installNativeCode(String[] nativepaths) throws BundleException {
-		adaptor.getStorage().installNativeCode(this, nativepaths);
-	}
-
-	public File getDataFile(String path) {
-		return adaptor.getStorage().getDataFile(this, path);
-	}
-
-	public Dictionary getManifest() throws BundleException {
-		if (manifest == null)
-			manifest = adaptor.getStorage().loadManifest(this);
-		return manifest;
-	}
-
-	public long getBundleID() {
-		return id;
-	}
-
-	public final String getLocation() {
-		return location;
-	}
-
-	/**
-	 * Sets the location of this bundledata
-	 * @param location the location of this bundledata
-	 */
-	public final void setLocation(String location) {
-		this.location = location;
-	}
-
-	public final long getLastModified() {
-		return lastModified;
-	}
-
-	/**
-	 * Sets the last modified time stamp of this bundledata
-	 * @param lastModified the last modified time stamp of this bundledata
-	 */
-	public final void setLastModified(long lastModified) {
-		this.lastModified = lastModified;
-	}
-
-	public void close() throws IOException {
-		if (bundleFile != null)
-			getBundleFile().close(); // only close the bundleFile if it already exists.
-	}
-
-	public void open() throws IOException {
-		getBundleFile().open();
-	}
-
-	public final void setBundle(Bundle bundle) {
-		this.bundle = bundle;
-	}
-
-	/**
-	 * Returns the bundle object of this BaseData
-	 * @return the bundle object of this BaseData
-	 */
-	public final Bundle getBundle() {
-		return bundle;
-	}
-
-	public int getStartLevel() {
-		return startLevel;
-	}
-
-	public int getStatus() {
-		return status;
-	}
-
-	/**
-	 * This method calls each configured storage hook {@link StorageHook#forgetStartLevelChange(int)} method.
-	 * If one returns true then this bundledata is not marked dirty.
-	 * @see BundleData#setStartLevel(int)
-	 */
-	public void setStartLevel(int value) {
-		startLevel = setPersistentData(value, true, startLevel);
-	}
-
-	/**
-	 * This method calls each configured storage hook {@link StorageHook#forgetStatusChange(int)} method.
-	 * If one returns true then this bundledata is not marked dirty.
-	 * @see BundleData#setStatus(int)
-	 */
-	public void setStatus(int value) {
-		status = setPersistentData(value, false, status);
-	}
-
-	private int setPersistentData(int value, boolean isStartLevel, int orig) {
-		StorageHook[] hooks = getStorageHooks();
-		for (int i = 0; i < hooks.length; i++)
-			if (isStartLevel) {
-				if (hooks[i].forgetStartLevelChange(value))
-					return value;
-			} else {
-				if (hooks[i].forgetStatusChange(value))
-					return value;
-			}
-		if (value != orig)
-			dirty = true;
-		return value;
-	}
-
-	public void save() throws IOException {
-		adaptor.getStorage().save(this);
-	}
-
-	/**
-	 * Returns true if this bundledata is dirty
-	 * @return true if this bundledata is dirty
-	 */
-	public boolean isDirty() {
-		return dirty;
-	}
-
-	/**
-	 * Sets the dirty flag for this BaseData
-	 * @param dirty the dirty flag
-	 */
-	public void setDirty(boolean dirty) {
-		this.dirty = dirty;
-	}
-
-	public final String getSymbolicName() {
-		return symbolicName;
-	}
-
-	/**
-	 * Sets the symbolic name of this BaseData
-	 * @param symbolicName the symbolic name
-	 */
-	public final void setSymbolicName(String symbolicName) {
-		this.symbolicName = symbolicName;
-	}
-
-	public final Version getVersion() {
-		return version;
-	}
-
-	/**
-	 * Sets the version of this BaseData
-	 * @param version the version
-	 */
-	public final void setVersion(Version version) {
-		this.version = version;
-	}
-
-	public final int getType() {
-		return type;
-	}
-
-	/**
-	 * Sets the type of this BaseData
-	 * @param type the type
-	 */
-	public final void setType(int type) {
-		this.type = type;
-	}
-
-	public final String[] getClassPath() throws BundleException {
-		ManifestElement[] classpathElements = ManifestElement.parseHeader(Constants.BUNDLE_CLASSPATH, classpath);
-		return getClassPath(classpathElements);
-	}
-
-	// TODO make classpath a String[] instead of saving a comma separated string.
-	public String getClassPathString() {
-		return classpath;
-	}
-
-	//TODO make classpath a String[] instead of saving a comma separated string.
-	public void setClassPathString(String classpath) {
-		this.classpath = classpath;
-	}
-
-	public final String getActivator() {
-		return activator;
-	}
-
-	/**
-	 * Sets the activator of this BaseData
-	 * @param activator the activator
-	 */
-	public final void setActivator(String activator) {
-		this.activator = activator;
-	}
-
-	public final String getExecutionEnvironment() {
-		return executionEnvironment;
-	}
-
-	/**
-	 * Sets the execution environment of this BaseData
-	 * @param executionEnvironment the execution environment
-	 */
-	public void setExecutionEnvironment(String executionEnvironment) {
-		this.executionEnvironment = executionEnvironment;
-	}
-
-	public final String getDynamicImports() {
-		return dynamicImports;
-	}
-
-	/**
-	 * Sets the dynamic imports of this BaseData
-	 * @param dynamicImports the dynamic imports
-	 */
-	public void setDynamicImports(String dynamicImports) {
-		this.dynamicImports = dynamicImports;
-	}
-
-	/**
-	 * Returns the adaptor for this BaseData
-	 * @return the adaptor
-	 */
-	public final BaseAdaptor getAdaptor() {
-		return adaptor;
-	}
-
-	/**
-	 * Returns the BundleFile for this BaseData.  The first time this method is called the
-	 * configured storage {@link BaseAdaptor#createBundleFile(Object, BaseData)} method is called.
-	 * @return the BundleFile
-	 * @throws IllegalArgumentException
-	 */
-	public synchronized BundleFile getBundleFile() throws IllegalArgumentException {
-		if (bundleFile == null)
-			try {
-				bundleFile = adaptor.createBundleFile(null, this);
-			} catch (IOException e) {
-				throw (IllegalArgumentException) new IllegalArgumentException(e.getMessage()).initCause(e);
-			}
-		return bundleFile;
-	}
-
-	private static String[] getClassPath(ManifestElement[] classpath) {
-		if (classpath == null) {
-			if (Debug.DEBUG && Debug.DEBUG_LOADER)
-				Debug.println("  no classpath"); //$NON-NLS-1$
-			/* create default BundleClassPath */
-			return new String[] {"."}; //$NON-NLS-1$
-		}
-
-		ArrayList result = new ArrayList(classpath.length);
-		for (int i = 0; i < classpath.length; i++) {
-			if (Debug.DEBUG && Debug.DEBUG_LOADER)
-				Debug.println("  found classpath entry " + classpath[i].getValueComponents()); //$NON-NLS-1$
-			String[] paths = classpath[i].getValueComponents();
-			for (int j = 0; j < paths.length; j++) {
-				result.add(paths[j]);
-			}
-		}
-
-		return (String[]) result.toArray(new String[result.size()]);
-	}
-
-	/**
-	 * Returns the storage hook which is keyed by the specified key
-	 * @param key the key of the storage hook to get
-	 * @return the storage hook which is keyed by the specified key
-	 */
-	public StorageHook getStorageHook(String key) {
-		if (storageHooks == null)
-			return null;
-		for (int i = 0; i < storageHooks.length; i++)
-			if (storageHooks[i].getKey().equals(key))
-				return storageHooks[i];
-		return null;
-	}
-
-	/**
-	 * Sets the instance storage hooks for this base data.  This is method
-	 * may only be called once for the lifetime of the base data.  Once set,
-	 * the list of storage hooks remains constant.
-	 * @param storageHooks the storage hook to add
-	 */
-	public void setStorageHooks(StorageHook[] storageHooks) {
-		if (this.storageHooks != null)
-			return; // only allow this to be set once.
-		this.storageHooks = storageHooks;
-	}
-
-	/**
-	 * Returns all the storage hooks associated with this BaseData
-	 * @return all the storage hooks associated with this BaseData
-	 */
-	public StorageHook[] getStorageHooks() {
-		return storageHooks == null ? new StorageHook[0] : storageHooks;
-	}
-
-	/**
-	 * Gets called by BundleFile during {@link BundleFile#getFile(String, boolean)}.  This method 
-	 * will allocate a File object where content of the specified path may be 
-	 * stored for the current generation of the base data.  The returned File object may 
-	 * not exist if the content has not previously be stored.
-	 * @param path the path to the content to extract from the base data
-	 * @return a file object where content of the specified path may be stored.
-	 */
-	public File getExtractFile(String path) {
-		return adaptor.getStorage().getExtractFile(this, path);
-	}
-
-	/**
-	 * This is only used to support PDE source lookup.  The field named &quot;fileName&quot; 
-	 * must be set for PDE to access the absolute path string.
-	 * @param fileName an absolute path string to the base bundle file. 
-	 */
-	// This is only done for PDE source lookup (bug 126517)
-	public void setFileName(String fileName) {
-		this.fileName = fileName;
-	}
-
-	/**
-	 * Return a string representation of the bundle that can be used in debug messages.
-	 * 
-	 * @return String representation of the bundle
-	 */
-	public String toString() {
-		String name = getSymbolicName();
-		if (name == null)
-			return getLocation();
-		Version ver = getVersion();
-		if (ver == null)
-			return name;
-		return name + "_" + ver; //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookConfigurator.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookConfigurator.java
deleted file mode 100644
index e203a11..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookConfigurator.java
+++ /dev/null
@@ -1,25 +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.osgi.baseadaptor;
-
-/**
- * A hook configurator is used to add hooks to the hook registry.
- * @see HookRegistry
- * @since 3.2
- */
-public interface HookConfigurator {
-	/**
-	 * Adds hooks to the specified hook registry.
-	 * @param hookRegistry the hook registry used to add hooks
-	 */
-	public void addHooks(HookRegistry hookRegistry);
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookRegistry.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookRegistry.java
deleted file mode 100644
index de883f8..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookRegistry.java
+++ /dev/null
@@ -1,334 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.hooks.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.util.ManifestElement;
-
-/**
- * The hook registry is used to store all the hooks which are
- * configured by the hook configurators.
- * @see HookConfigurator
- * @since 3.2
- */
-public final class HookRegistry {
-	/**
-	 * The hook configurators properties file (&quot;hookconfigurators.properties&quot;) <p>
-	 * A framework extension may supply a hook configurators properties file to specify a 
-	 * list of hook configurators.
-	 * @see #HOOK_CONFIGURATORS
-	 */
-	public static final String HOOK_CONFIGURATORS_FILE = "hookconfigurators.properties"; //$NON-NLS-1$
-
-	/**
-	 * The hook configurators property key (&quot;hookconfigurators.properties&quot;) used in 
-	 * a hook configurators properties file to specify a comma separated list of fully 
-	 * qualified hook configurator classes.
-	 */
-	public static final String HOOK_CONFIGURATORS = "hook.configurators"; //$NON-NLS-1$
-
-	/**
-	 * A system property (&quot;osgi.hook.configurators.include&quot;) used to add additional
-	 * hook configurators.  This is helpful for configuring optional hook configurators.
-	 */
-	public static final String PROP_HOOK_CONFIGURATORS_INCLUDE = "osgi.hook.configurators.include"; //$NON-NLS-1$
-
-	/**
-	 * A system property (&quot;osgi.hook.configurators.exclude&quot;) used to exclude 
-	 * any hook configurators.  This is helpful for disabling hook
-	 * configurators that is specified in hook configurator properties files.
-	 */
-	public static final String PROP_HOOK_CONFIGURATORS_EXCLUDE = "osgi.hook.configurators.exclude"; //$NON-NLS-1$
-
-	/**
-	 * A system property (&quot;osgi.hook.configurators&quot;) used to specify the list
-	 * of hook configurators.  If this property is set then the list of configurators 
-	 * specified will be the only configurators used.
-	 */
-	public static final String PROP_HOOK_CONFIGURATORS = "osgi.hook.configurators"; //$NON-NLS-1$
-
-	private static final String BUILTIN_HOOKS = "builtin.hooks"; //$NON-NLS-1$
-
-	private BaseAdaptor adaptor;
-	private boolean readonly = false;
-	private AdaptorHook[] adaptorHooks = new AdaptorHook[0];
-	private BundleWatcher[] watchers = new BundleWatcher[0];
-	private ClassLoadingHook[] classLoadingHooks = new ClassLoadingHook[0];
-	private ClassLoadingStatsHook[] classLoadingStatsHooks = new ClassLoadingStatsHook[0];
-	private ClassLoaderDelegateHook[] classLoaderDelegateHooks = new ClassLoaderDelegateHook[0];
-	private StorageHook[] storageHooks = new StorageHook[0];
-	private BundleFileFactoryHook[] bundleFileFactoryHooks = new BundleFileFactoryHook[0];
-	private BundleFileWrapperFactoryHook[] bundleFileWrapperFactoryHooks = new BundleFileWrapperFactoryHook[0];
-
-	public HookRegistry(BaseAdaptor adaptor) {
-		this.adaptor = adaptor;
-	}
-
-	/**
-	 * Initializes the hook configurators.  The following steps are used to initialize the hook configurators. <p>
-	 * 1. Get a list of hook configurators from all hook configurators properties files on the classpath, 
-	 *    add this list to the overall list of hook configurators, remove duplicates. <p>
-	 * 2. Get a list of hook configurators from the (&quot;osgi.hook.configurators.include&quot;) system property 
-	 *    and add this list to the overall list of hook configurators, remove duplicates. <p>
-	 * 3. Get a list of hook configurators from the (&quot;osgi.hook.configurators.exclude&quot;) system property
-	 *    and remove this list from the overall list of hook configurators. <p>
-	 * 4. Load each hook configurator class, create a new instance, then call the {@link HookConfigurator#addHooks(HookRegistry)} method <p>
-	 * 5. Set this HookRegistry object to read only to prevent any other hooks from being added. <p>
-	 * @return an array of error log entries that occurred while initializing the hooks
-	 */
-	public FrameworkLogEntry[] initialize() {
-		ArrayList configurators = new ArrayList(5);
-		ArrayList errors = new ArrayList(0); // optimistic that no errors will occur
-		mergeFileHookConfigurators(configurators, errors);
-		mergePropertyHookConfigurators(configurators);
-		loadConfigurators(configurators, errors);
-		// set to read-only
-		readonly = true;
-		return (FrameworkLogEntry[]) errors.toArray(new FrameworkLogEntry[errors.size()]);
-	}
-
-	private void mergeFileHookConfigurators(ArrayList configuratorList, ArrayList errors) {
-		ClassLoader cl = getClass().getClassLoader();
-		// get all hook configurators files in your classloader delegation
-		Enumeration hookConfigurators;
-		try {
-			hookConfigurators = cl != null ? cl.getResources(HookRegistry.HOOK_CONFIGURATORS_FILE) : ClassLoader.getSystemResources(HookRegistry.HOOK_CONFIGURATORS_FILE);
-		} catch (IOException e) {
-			errors.add(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, "getResources error on " + HookRegistry.HOOK_CONFIGURATORS_FILE, 0, e, null)); //$NON-NLS-1$
-			return;
-		}
-		int curBuiltin = 0;
-		while (hookConfigurators.hasMoreElements()) {
-			URL url = (URL) hookConfigurators.nextElement();
-			InputStream input = null;
-			try {
-				// check each file for a hook.configurators property
-				Properties configuratorProps = new Properties();
-				input = url.openStream();
-				configuratorProps.load(input);
-				String hooksValue = configuratorProps.getProperty(HOOK_CONFIGURATORS);
-				if (hooksValue == null)
-					continue;
-				boolean builtin = Boolean.valueOf(configuratorProps.getProperty(BUILTIN_HOOKS)).booleanValue();
-				String[] configurators = ManifestElement.getArrayFromList(hooksValue, ","); //$NON-NLS-1$
-				for (int i = 0; i < configurators.length; i++)
-					if (!configuratorList.contains(configurators[i])) {
-						if (builtin) // make sure the built-in configurators are listed first (bug 170881)
-							configuratorList.add(curBuiltin++, configurators[i]);
-						else
-							configuratorList.add(configurators[i]);
-					}
-			} catch (IOException e) {
-				errors.add(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, "error loading: " + url.toExternalForm(), 0, e, null)); //$NON-NLS-1$
-				// ignore and continue to next URL
-			} finally {
-				if (input != null)
-					try {
-						input.close();
-					} catch (IOException e) {
-						// do nothing
-					}
-			}
-		}
-	}
-
-	private void mergePropertyHookConfigurators(ArrayList configuratorList) {
-		// see if there is a configurators list
-		String[] configurators = ManifestElement.getArrayFromList(FrameworkProperties.getProperty(HookRegistry.PROP_HOOK_CONFIGURATORS), ","); //$NON-NLS-1$
-		if (configurators.length > 0) {
-			configuratorList.clear(); // clear the list, we are only going to use the configurators from the list
-			for (int i = 0; i < configurators.length; i++)
-				if (!configuratorList.contains(configurators[i]))
-					configuratorList.add(configurators[i]);
-			return; // don't do anything else
-		}
-		// Make sure the configurators from the include property are in the list
-		String[] includeConfigurators = ManifestElement.getArrayFromList(FrameworkProperties.getProperty(HookRegistry.PROP_HOOK_CONFIGURATORS_INCLUDE), ","); //$NON-NLS-1$
-		for (int i = 0; i < includeConfigurators.length; i++)
-			if (!configuratorList.contains(includeConfigurators[i]))
-				configuratorList.add(includeConfigurators[i]);
-		// Make sure the configurators from the exclude property are no in the list
-		String[] excludeHooks = ManifestElement.getArrayFromList(FrameworkProperties.getProperty(HookRegistry.PROP_HOOK_CONFIGURATORS_EXCLUDE), ","); //$NON-NLS-1$
-		for (int i = 0; i < excludeHooks.length; i++)
-			configuratorList.remove(excludeHooks[i]);
-	}
-
-	private void loadConfigurators(ArrayList configurators, ArrayList errors) {
-		for (Iterator iHooks = configurators.iterator(); iHooks.hasNext();) {
-			String hookName = (String) iHooks.next();
-			try {
-				Class clazz = Class.forName(hookName);
-				HookConfigurator configurator = (HookConfigurator) clazz.newInstance();
-				configurator.addHooks(this);
-			} catch (Throwable t) {
-				// We expect the follow exeptions may happen; but we need to catch all here
-				// ClassNotFoundException
-				// IllegalAccessException
-				// InstantiationException
-				// ClassCastException
-				errors.add(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, "error loading hook: " + hookName, 0, t, null)); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Returns the list of configured adaptor hooks.
-	 * @return the list of configured adaptor hooks.
-	 */
-	public AdaptorHook[] getAdaptorHooks() {
-		return adaptorHooks;
-	}
-
-	/**
-	 * Returns the list of configured bundle watchers.
-	 * @return the list of configured bundle watchers.
-	 */
-	public BundleWatcher[] getWatchers() {
-		return watchers;
-	}
-
-	/**
-	 * Returns the list of configured class loading hooks.
-	 * @return the list of configured class loading hooks.
-	 */
-	public ClassLoadingHook[] getClassLoadingHooks() {
-		return classLoadingHooks;
-	}
-
-	/**
-	 * Returns the list of configured class loading stats hooks.
-	 * @return the list of configured class loading stats hooks.
-	 */
-	public ClassLoadingStatsHook[] getClassLoadingStatsHooks() {
-		return classLoadingStatsHooks;
-	}
-
-	/**
-	 * Returns the list of configured class loader delegate hooks.
-	 * @return the list of configured class loader delegate hooks.
-	 */
-	public ClassLoaderDelegateHook[] getClassLoaderDelegateHooks() {
-		return classLoaderDelegateHooks;
-	}
-
-	/**
-	 * Returns the list of configured storage hooks.
-	 * @return the list of configured storage hooks.
-	 */
-	public StorageHook[] getStorageHooks() {
-		return storageHooks;
-	}
-
-	/**
-	 * Returns the list of configured bundle file factories.
-	 * @return the list of configured bundle file factories.
-	 */
-	public BundleFileFactoryHook[] getBundleFileFactoryHooks() {
-		return bundleFileFactoryHooks;
-	}
-
-	/**
-	 * Returns the configured bundle file wrapper factories
-	 * @return the configured bundle file wrapper factories
-	 */
-	public BundleFileWrapperFactoryHook[] getBundleFileWrapperFactoryHooks() {
-		return bundleFileWrapperFactoryHooks;
-	}
-
-	/**
-	 * Adds a adaptor hook to this hook registry.
-	 * @param adaptorHook an adaptor hook object.
-	 */
-	public void addAdaptorHook(AdaptorHook adaptorHook) {
-		adaptorHooks = (AdaptorHook[]) add(adaptorHook, adaptorHooks, new AdaptorHook[adaptorHooks.length + 1]);
-	}
-
-	/**
-	 * Adds a bundle watcher to this hook registry.
-	 * @param watcher a bundle watcher object.
-	 */
-	public void addWatcher(BundleWatcher watcher) {
-		watchers = (BundleWatcher[]) add(watcher, watchers, new BundleWatcher[watchers.length + 1]);
-	}
-
-	/**
-	 * Adds a class loading hook to this hook registry.
-	 * @param classLoadingHook a class loading hook object.
-	 */
-	public void addClassLoadingHook(ClassLoadingHook classLoadingHook) {
-		classLoadingHooks = (ClassLoadingHook[]) add(classLoadingHook, classLoadingHooks, new ClassLoadingHook[classLoadingHooks.length + 1]);
-	}
-
-	/**
-	 * Adds a class loading stats hook to this hook registry.
-	 * @param classLoadingStatsHook a class loading hook object.
-	 */
-	public void addClassLoadingStatsHook(ClassLoadingStatsHook classLoadingStatsHook) {
-		classLoadingStatsHooks = (ClassLoadingStatsHook[]) add(classLoadingStatsHook, classLoadingStatsHooks, new ClassLoadingStatsHook[classLoadingStatsHooks.length + 1]);
-	}
-
-	/**
-	 * Adds a class loader delegate hook to this hook registry.
-	 * @param classLoaderDelegateHook a class loader delegate hook.
-	 */
-	public void addClassLoaderDelegateHook(ClassLoaderDelegateHook classLoaderDelegateHook) {
-		classLoaderDelegateHooks = (ClassLoaderDelegateHook[]) add(classLoaderDelegateHook, classLoaderDelegateHooks, new ClassLoaderDelegateHook[classLoaderDelegateHooks.length + 1]);
-	}
-
-	/**
-	 * Adds a storage hook to this hook registry.
-	 * @param storageHook a storage hook object.
-	 */
-	public void addStorageHook(StorageHook storageHook) {
-		storageHooks = (StorageHook[]) add(storageHook, storageHooks, new StorageHook[storageHooks.length + 1]);
-	}
-
-	/**
-	 * Adds a bundle file factory to this hook registry.
-	 * @param factory a bundle file factory object.
-	 */
-	public void addBundleFileFactoryHook(BundleFileFactoryHook factory) {
-		bundleFileFactoryHooks = (BundleFileFactoryHook[]) add(factory, bundleFileFactoryHooks, new BundleFileFactoryHook[bundleFileFactoryHooks.length + 1]);
-	}
-
-	/**
-	 * Adds a bundle file wrapper factory for this hook registry
-	 * @param factory a bundle file wrapper factory object.
-	 */
-	public void addBundleFileWrapperFactoryHook(BundleFileWrapperFactoryHook factory) {
-		bundleFileWrapperFactoryHooks = (BundleFileWrapperFactoryHook[]) add(factory, bundleFileWrapperFactoryHooks, new BundleFileWrapperFactoryHook[bundleFileWrapperFactoryHooks.length + 1]);
-	}
-
-	private Object[] add(Object newValue, Object[] oldValues, Object[] newValues) {
-		if (readonly)
-			throw new IllegalStateException("Cannot add hooks dynamically."); //$NON-NLS-1$
-		if (oldValues.length > 0)
-			System.arraycopy(oldValues, 0, newValues, 0, oldValues.length);
-		newValues[oldValues.length] = newValue;
-		return newValues;
-	}
-
-	/**
-	 * Returns the base adaptor associated with this hook registry.
-	 * @return the base adaptor associated with this hook registry.
-	 */
-	public BaseAdaptor getAdaptor() {
-		return adaptor;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleEntry.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleEntry.java
deleted file mode 100644
index ba096bc..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleEntry.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.*;
-import java.net.URL;
-import org.eclipse.osgi.framework.debug.Debug;
-
-/**
- * A BundleEntry represents one entry of a BundleFile.
- * <p>
- * Clients may extend this class.
- * </p>
- * @since 3.2
- */
-public abstract class BundleEntry {
-	protected static final int BUF_SIZE = 8 * 1024;
-
-	/**
-	 * Return an InputStream for the entry.
-	 *
-	 * @return InputStream for the entry.
-	 * @throws java.io.IOException If an error occurs reading the bundle.
-	 */
-	public abstract InputStream getInputStream() throws IOException;
-
-	/**
-	 * Return the size of the entry (uncompressed).
-	 *
-	 * @return size of entry.
-	 */
-	public abstract long getSize();
-
-	/**
-	 * Return the name of the entry.
-	 *
-	 * @return name of entry.
-	 */
-	public abstract String getName();
-
-	/**
-	 * Get the modification time for this BundleEntry.
-	 * <p>If the modification time has not been set,
-	 * this method will return <tt>-1</tt>.
-	 *
-	 * @return last modification time.
-	 */
-	public abstract long getTime();
-
-	/**
-	 * Get a URL to the bundle entry that uses a common protocol (i.e. file:
-	 * jar: or http: etc.).  
-	 * @return a URL to the bundle entry that uses a common protocol
-	 */
-	public abstract URL getLocalURL();
-
-	/**
-	 * Get a URL to the content of the bundle entry that uses the file: protocol.
-	 * The content of the bundle entry may be downloaded or extracted to the local
-	 * file system in order to create a file: URL.
-	 * @return a URL to the content of the bundle entry that uses the file: protocol
-	 */
-	public abstract URL getFileURL();
-
-	/**
-	 * Return the name of this BundleEntry by calling getName().
-	 *
-	 * @return String representation of this BundleEntry.
-	 */
-	public String toString() {
-		return (getName());
-	}
-
-	/**
-	 * Used for class loading.  This default implementation gets the input stream from this entry
-	 * and copies the content into a byte array.
-	 * @return a byte array containing the content of this entry
-	 * @throws IOException
-	 */
-	public byte[] getBytes() throws IOException {
-		InputStream in = getInputStream();
-		int length = (int) getSize();
-		byte[] classbytes;
-		int bytesread = 0;
-		int readcount;
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("  about to read " + length + " bytes from " + getName()); //$NON-NLS-1$ //$NON-NLS-2$
-
-		try {
-			if (length > 0) {
-				classbytes = new byte[length];
-				for (; bytesread < length; bytesread += readcount) {
-					readcount = in.read(classbytes, bytesread, length - bytesread);
-					if (readcount <= 0) /* if we didn't read anything */
-						break; /* leave the loop */
-				}
-			} else /* BundleEntry does not know its own length! */{
-				length = BUF_SIZE;
-				classbytes = new byte[length];
-				readloop: while (true) {
-					for (; bytesread < length; bytesread += readcount) {
-						readcount = in.read(classbytes, bytesread, length - bytesread);
-						if (readcount <= 0) /* if we didn't read anything */
-							break readloop; /* leave the loop */
-					}
-					byte[] oldbytes = classbytes;
-					length += BUF_SIZE;
-					classbytes = new byte[length];
-					System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);
-				}
-			}
-			if (classbytes.length > bytesread) {
-				byte[] oldbytes = classbytes;
-				classbytes = new byte[bytesread];
-				System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);
-			}
-		} finally {
-			try {
-				in.close();
-			} catch (IOException ee) {
-				// nothing to do here
-			}
-		}
-		return classbytes;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFile.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFile.java
deleted file mode 100644
index 35d4cc5..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFile.java
+++ /dev/null
@@ -1,233 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.AccessController;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.protocol.bundleresource.Handler;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.util.ManifestElement;
-
-/**
- * The BundleFile API is used by Adaptors to read resources out of an 
- * installed Bundle in the Framework.
- * <p>
- * Clients may extend this class.
- * </p>
- * @since 3.2
- */
-abstract public class BundleFile {
-	protected static final String PROP_SETPERMS_CMD = "osgi.filepermissions.command"; //$NON-NLS-1$
-	static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-	/**
-	 * The File object for this BundleFile.
-	 */
-	protected File basefile;
-	private int mruIndex = -1;
-
-	/**
-	 * Default constructor
-	 *
-	 */
-	public BundleFile() {
-		// do nothing
-	}
-
-	/**
-	 * BundleFile constructor
-	 * @param basefile The File object where this BundleFile is 
-	 * persistently stored.
-	 */
-	public BundleFile(File basefile) {
-		this.basefile = basefile;
-	}
-
-	/**
-	 * Returns a File for the bundle entry specified by the path.
-	 * If required the content of the bundle entry is extracted into a file
-	 * on the file system.
-	 * @param path The path to the entry to locate a File for.
-	 * @param nativeCode true if the path is native code.
-	 * @return A File object to access the contents of the bundle entry.
-	 */
-	abstract public File getFile(String path, boolean nativeCode);
-
-	/**
-	 * Locates a file name in this bundle and returns a BundleEntry object
-	 *
-	 * @param path path of the entry to locate in the bundle
-	 * @return BundleEntry object or null if the file name
-	 *         does not exist in the bundle
-	 */
-	abstract public BundleEntry getEntry(String path);
-
-	/** 
-	 * Allows to access the entries of the bundle. 
-	 * Since the bundle content is usually a jar, this 
-	 * allows to access the jar contents.
-	 * 
-	 * GetEntryPaths allows to enumerate the content of "path".
-	 * If path is a directory, it is equivalent to listing the directory
-	 * contents. The returned names are either files or directories 
-	 * themselves. If a returned name is a directory, it finishes with a 
-	 * slash. If a returned name is a file, it does not finish with a slash.
-	 * @param path path of the entry to locate in the bundle
-	 * @return an Enumeration of Strings that indicate the paths found or
-	 * null if the path does not exist. 
-	 */
-	abstract public Enumeration getEntryPaths(String path);
-
-	/**
-	 * Closes the BundleFile.
-	 * @throws IOException if any error occurs.
-	 */
-	abstract public void close() throws IOException;
-
-	/**
-	 * Opens the BundleFiles.
-	 * @throws IOException if any error occurs.
-	 */
-	abstract public void open() throws IOException;
-
-	/**
-	 * Determines if any BundleEntries exist in the given directory path.
-	 * @param dir The directory path to check existence of.
-	 * @return true if the BundleFile contains entries under the given directory path;
-	 * false otherwise.
-	 */
-	abstract public boolean containsDir(String dir);
-
-	/**
-	 * Returns a URL to access the contents of the entry specified by the path
-	 * @param path the path to the resource
-	 * @param hostBundleID the host bundle ID
-	 * @return a URL to access the contents of the entry specified by the path
-	 * @deprecated use {@link #getResourceURL(String, BaseData, int)}
-	 */
-	public URL getResourceURL(String path, long hostBundleID) {
-		return getResourceURL(path, hostBundleID, 0);
-	}
-
-	/**
-	 * Returns a URL to access the contents of the entry specified by the path
-	 * @param path the path to the resource
-	 * @param hostBundleID the host bundle ID
-	 * @param index the resource index
-	 * @return a URL to access the contents of the entry specified by the path
-	 * @deprecated use {@link #getResourceURL(String, BaseData, int)}
-	 */
-	public URL getResourceURL(String path, long hostBundleID, int index) {
-		return internalGetResourceURL(path, null, hostBundleID, index);
-	}
-
-	/**
-	 * Returns a URL to access the contents of the entry specified by the path
-	 * @param path the path to the resource
-	 * @param hostData the host BaseData
-	 * @param index the resource index
-	 * @return a URL to access the contents of the entry specified by the path
-	 */
-	public URL getResourceURL(String path, BaseData hostData, int index) {
-		return internalGetResourceURL(path, hostData, 0, index);
-	}
-
-	private URL internalGetResourceURL(String path, BaseData hostData, long hostBundleID, int index) {
-		BundleEntry bundleEntry = getEntry(path);
-		if (bundleEntry == null)
-			return null;
-		if (hostData != null)
-			hostBundleID = hostData.getBundleID();
-		path = fixTrailingSlash(path, bundleEntry);
-		try {
-			//use the constant string for the protocol to prevent duplication
-			return secureAction.getURL(Constants.OSGI_RESOURCE_URL_PROTOCOL, Long.toString(hostBundleID) + BundleResourceHandler.BID_FWKID_SEPARATOR + Integer.toString(hostData.getAdaptor().hashCode()), index, path, new Handler(bundleEntry, hostData == null ? null : hostData.getAdaptor()));
-		} catch (MalformedURLException e) {
-			return null;
-		}
-	}
-
-	/**
-	 * Returns the base file for this BundleFile
-	 * @return the base file for this BundleFile
-	 */
-	public File getBaseFile() {
-		return basefile;
-	}
-
-	void setMruIndex(int index) {
-		mruIndex = index;
-	}
-
-	int getMruIndex() {
-		return mruIndex;
-	}
-
-	/**
-	 * Attempts to set the permissions of the file in a system dependent way.
-	 * @param file the file to set the permissions on
-	 */
-	public static void setPermissions(File file) {
-		String commandProp = FrameworkProperties.getProperty(PROP_SETPERMS_CMD);
-		if (commandProp == null)
-			commandProp = FrameworkProperties.getProperty(Constants.FRAMEWORK_EXECPERMISSION);
-		if (commandProp == null)
-			return;
-		String[] temp = ManifestElement.getArrayFromList(commandProp, " "); //$NON-NLS-1$
-		ArrayList command = new ArrayList(temp.length + 1);
-		boolean foundFullPath = false;
-		for (int i = 0; i < temp.length; i++) {
-			if ("[fullpath]".equals(temp[i]) || "${abspath}".equals(temp[i])) { //$NON-NLS-1$ //$NON-NLS-2$
-				command.add(file.getAbsolutePath());
-				foundFullPath = true;
-			} else
-				command.add(temp[i]);
-		}
-		if (!foundFullPath)
-			command.add(file.getAbsolutePath());
-		try {
-			Runtime.getRuntime().exec((String[]) command.toArray(new String[command.size()])).waitFor();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	public String toString() {
-		return String.valueOf(basefile);
-	}
-
-	public static String fixTrailingSlash(String path, BundleEntry entry) {
-		if (path.length() == 0)
-			return "/"; //$NON-NLS-1$
-		if (path.charAt(0) != '/')
-			path = '/' + path;
-		String name = entry.getName();
-		if (name.length() == 0)
-			return path;
-		boolean pathSlash = path.charAt(path.length() - 1) == '/';
-		boolean entrySlash = name.length() > 0 && name.charAt(name.length() - 1) == '/';
-		if (entrySlash != pathSlash) {
-			if (entrySlash)
-				path = path + '/';
-			else
-				path = path.substring(0, path.length() - 1);
-		}
-		return path;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFileWrapperChain.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFileWrapperChain.java
deleted file mode 100644
index 29f2fd2..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFileWrapperChain.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import org.eclipse.osgi.baseadaptor.hooks.BundleFileWrapperFactoryHook;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.baseadaptor.BaseData;
-
-/**
- * Used to chain the BundleFile objects returned from {@link BundleFileWrapperFactoryHook}.  
- * This class is useful for traversing the chain of wrapped bundle files.
- */
-public class BundleFileWrapperChain extends BundleFile {
-	private final BundleFile wrapped;
-	private final BundleFileWrapperChain next;
-
-	public BundleFileWrapperChain(BundleFile wrapped, BundleFileWrapperChain next) {
-		this.wrapped = wrapped;
-		this.next = next;
-	}
-
-	public void close() throws IOException {
-		wrapped.close();
-	}
-
-	public boolean containsDir(String dir) {
-		return wrapped.containsDir(dir);
-	}
-
-	public BundleEntry getEntry(String path) {
-		return wrapped.getEntry(path);
-	}
-
-	public Enumeration getEntryPaths(String path) {
-		return wrapped.getEntryPaths(path);
-	}
-
-	public File getFile(String path, boolean nativeCode) {
-		return wrapped.getFile(path, nativeCode);
-	}
-
-	public void open() throws IOException {
-		wrapped.open();
-	}
-
-	public File getBaseFile() {
-		return wrapped.getBaseFile();
-	}
-
-	public URL getResourceURL(String path, BaseData hostData, int index) {
-		return wrapped.getResourceURL(path, hostData, index);
-	}
-
-	public String toString() {
-		return wrapped.toString();
-	}
-
-	/**
-	 * The BundleFile that is wrapped
-	 * @return the BunldeFile that is wrapped
-	 */
-	public BundleFile getWrapped() {
-		return wrapped;
-	}
-
-	/**
-	 * The next WrapperBundleFile in the chain.  A <code>null</code> value
-	 * is returned if this is the end of the chain.
-	 * @return the next WrapperBundleFile
-	 */
-	public BundleFileWrapperChain getNext() {
-		return next;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirBundleFile.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirBundleFile.java
deleted file mode 100644
index 3f8ee1d..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirBundleFile.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Enumeration;
-import java.util.NoSuchElementException;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorMsg;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * A BundleFile that uses a directory as its base file.
- * @since 3.2
- */
-public class DirBundleFile extends BundleFile {
-
-	/**
-	 * Constructs a DirBundleFile
-	 * @param basefile the base file
-	 * @throws IOException
-	 */
-	public DirBundleFile(File basefile) throws IOException {
-		super(basefile);
-		if (!BundleFile.secureAction.exists(basefile) || !BundleFile.secureAction.isDirectory(basefile)) {
-			throw new IOException(NLS.bind(AdaptorMsg.ADAPTOR_DIRECTORY_EXCEPTION, basefile));
-		}
-	}
-
-	public File getFile(String path, boolean nativeCode) {
-		File filePath = new File(this.basefile, path);
-		if (BundleFile.secureAction.exists(filePath)) {
-			return filePath;
-		}
-		return null;
-	}
-
-	public BundleEntry getEntry(String path) {
-		File filePath = new File(this.basefile, path);
-		if (!BundleFile.secureAction.exists(filePath)) {
-			return null;
-		}
-		return new FileBundleEntry(filePath, path);
-	}
-
-	public boolean containsDir(String dir) {
-		File dirPath = new File(this.basefile, dir);
-		return BundleFile.secureAction.exists(dirPath) && BundleFile.secureAction.isDirectory(dirPath);
-	}
-
-	public Enumeration getEntryPaths(String path) {
-		if (path.length() > 0 && path.charAt(0) == '/')
-			path = path.substring(1);
-		final java.io.File pathFile = new java.io.File(basefile, path);
-		if (!BundleFile.secureAction.exists(pathFile))
-			return null;
-		if (!BundleFile.secureAction.isDirectory(pathFile))
-			return null;
-		final String[] fileList = BundleFile.secureAction.list(pathFile);
-		if (fileList == null || fileList.length == 0)
-			return null;
-		final String dirPath = path.length() == 0 || path.charAt(path.length() - 1) == '/' ? path : path + '/';
-		return new Enumeration() {
-			int cur = 0;
-
-			public boolean hasMoreElements() {
-				return fileList != null && cur < fileList.length;
-			}
-
-			public Object nextElement() {
-				if (!hasMoreElements()) {
-					throw new NoSuchElementException();
-				}
-				java.io.File childFile = new java.io.File(pathFile, fileList[cur]);
-				StringBuffer sb = new StringBuffer(dirPath).append(fileList[cur++]);
-				if (BundleFile.secureAction.isDirectory(childFile)) {
-					sb.append("/"); //$NON-NLS-1$
-				}
-				return sb.toString();
-			}
-		};
-	}
-
-	public void close() {
-		// nothing to do.
-	}
-
-	public void open() {
-		// nothing to do.
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirZipBundleEntry.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirZipBundleEntry.java
deleted file mode 100644
index 352a67e..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirZipBundleEntry.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- * Represents a directory entry in a ZipBundleFile.  This object is used to 
- * reference a directory entry in a ZipBundleFile when the directory entries are
- * not included in the zip file.
- * @since 3.2
- */
-public class DirZipBundleEntry extends BundleEntry {
-
-	/**
-	 * ZipBundleFile for this entry.
-	 */
-	private ZipBundleFile bundleFile;
-	/**
-	 * The name for this entry
-	 */
-	String name;
-
-	public DirZipBundleEntry(ZipBundleFile bundleFile, String name) {
-		this.name = (name.length() > 0 && name.charAt(0) == '/') ? name.substring(1) : name;
-		this.bundleFile = bundleFile;
-	}
-
-	public InputStream getInputStream() throws IOException {
-		return null;
-	}
-
-	public long getSize() {
-		return 0;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public long getTime() {
-		return 0;
-	}
-
-	public URL getLocalURL() {
-		try {
-			return new URL("jar:" + bundleFile.basefile.toURL() + "!/" + name); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (MalformedURLException e) {
-			//This can not happen, unless the jar protocol is not supported.
-			return null;
-		}
-	}
-
-	public URL getFileURL() {
-		try {
-			return bundleFile.extractDirectory(name).toURL();
-		} catch (MalformedURLException e) {
-			// this cannot happen.
-			return null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/FileBundleEntry.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/FileBundleEntry.java
deleted file mode 100644
index 5c143ad..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/FileBundleEntry.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- * A BundleEntry represented by a File object.  The FileBundleEntry class is
- * used for bundles that are installed as extracted zips on a file system.
- * @since 3.2
- */
-public class FileBundleEntry extends BundleEntry {
-	/**
-	 * File for this entry.
-	 */
-	private final File file;
-	/**
-	 * The name for this entry
-	 */
-	private final String name;
-
-	/**
-	 * Constructs the BundleEntry using a File.
-	 * @param file BundleFile object this entry is a member of
-	 * @param name the name of this BundleEntry
-	 */
-	FileBundleEntry(File file, String name) {
-		this.file = file;
-		boolean endsInSlash = name.length() > 0 && name.charAt(name.length() - 1) == '/';
-		if (BundleFile.secureAction.isDirectory(file)) {
-			if (!endsInSlash)
-				name += '/';
-		} else if (endsInSlash)
-			name = name.substring(0, name.length() - 1);
-		this.name = name;
-	}
-
-	/**
-	 * Return an InputStream for the entry.
-	 *
-	 * @return InputStream for the entry
-	 * @exception java.io.IOException
-	 */
-	public InputStream getInputStream() throws IOException {
-		return BundleFile.secureAction.getFileInputStream(file);
-	}
-
-	/**
-	 * Return size of the uncompressed entry.
-	 *
-	 * @return size of entry
-	 */
-	public long getSize() {
-		return BundleFile.secureAction.length(file);
-	}
-
-	/**
-	 * Return name of the entry.
-	 *
-	 * @return name of entry
-	 */
-	public String getName() {
-		return (name);
-	}
-
-	/**
-	 * Get the modification time for this BundleEntry.
-	 * <p>If the modification time has not been set,
-	 * this method will return <tt>-1</tt>.
-	 *
-	 * @return last modification time.
-	 */
-	public long getTime() {
-		return BundleFile.secureAction.lastModified(file);
-	}
-
-	public URL getLocalURL() {
-		return getFileURL();
-	}
-
-	public URL getFileURL() {
-		try {
-			return file.toURL();
-		} catch (MalformedURLException e) {
-			return null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java
deleted file mode 100644
index 1ac4e58..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.IOException;
-import java.util.Map;
-import org.eclipse.osgi.framework.eventmgr.*;
-
-/**
- * A simple/quick/small implementation of an MRU (Most Recently Used) list to keep
- * track of open BundleFiles.  The MRU will use the file limit specified by the property
- * &quot;osgi.bundlefile.limit&quot; by default unless the MRU is constructed with a specific
- * file limit.
- * @since 3.2
- */
-public class MRUBundleFileList implements EventDispatcher {
-	private static final String PROP_FILE_LIMIT = "osgi.bundlefile.limit"; //$NON-NLS-1$
-	private static final int MIN = 10;
-	private static final int PROP_FILE_LIMIT_VALUE;
-	private static final ThreadLocal closingBundleFile = new ThreadLocal();
-	static {
-		int propValue = 100; // enable to 100 open files by default
-		try {
-			String prop = BundleFile.secureAction.getProperty(PROP_FILE_LIMIT);
-			if (prop != null)
-				propValue = Integer.parseInt(prop);
-		} catch (NumberFormatException e) {
-			//MRU will be disabled
-		}
-		PROP_FILE_LIMIT_VALUE = propValue;
-	}
-	// list of open bundle files
-	final private BundleFile[] bundleFileList;
-	// list of open bundle files use stamps
-	final private long[] useStampList;
-	// the limit of open files to allow before least used bundle file is closed
-	final private int fileLimit; // value < MIN will disable MRU
-	final private EventManager bundleFileCloserManager;
-	final private Map bundleFileCloser;
-	// the current number of open bundle files
-	private int numOpen = 0;
-	// the current use stamp
-	private long curUseStamp = 0;
-	// used to work around bug 275166
-	private boolean firstDispatch = true;
-
-	public MRUBundleFileList() {
-		this(PROP_FILE_LIMIT_VALUE);
-	}
-
-	public MRUBundleFileList(int fileLimit) {
-		// only enable the MRU if the initFileLimit is > MIN
-		this.fileLimit = fileLimit;
-		if (fileLimit >= MIN) {
-			this.bundleFileList = new BundleFile[fileLimit];
-			this.useStampList = new long[fileLimit];
-			this.bundleFileCloserManager = new EventManager("Bundle File Closer"); //$NON-NLS-1$
-			this.bundleFileCloser = new CopyOnWriteIdentityMap();
-			this.bundleFileCloser.put(this, this);
-		} else {
-			this.bundleFileList = null;
-			this.useStampList = null;
-			this.bundleFileCloserManager = null;
-			this.bundleFileCloser = null;
-		}
-	}
-
-	/**
-	 * Adds a BundleFile which is about to be opened to the MRU list.  If 
-	 * the number of open BundleFiles == the fileLimit then the least 
-	 * recently used BundleFile is closed.
-	 * @param bundleFile the bundle file about to be opened.
-	 */
-	public void add(BundleFile bundleFile) {
-		if (fileLimit < MIN)
-			return; // MRU is disabled
-		BundleFile toRemove = null;
-		synchronized (this) {
-			if (bundleFile.getMruIndex() >= 0)
-				return; // do nothing; someone is trying add a bundleFile that is already in an MRU list
-			int index = 0; // default to the first slot
-			if (numOpen < fileLimit) {
-				// numOpen does not exceed the fileLimit
-				// find the first null slot to use in the MRU
-				for (int i = 0; i < fileLimit; i++)
-					if (bundleFileList[i] == null) {
-						index = i;
-						break;
-					}
-			} else {
-				// numOpen has reached the fileLimit
-				// find the least recently used bundleFile and close it 
-				// and use it slot for the new bundleFile to be opened.
-				index = 0;
-				for (int i = 1; i < fileLimit; i++)
-					if (useStampList[i] < useStampList[index])
-						index = i;
-				toRemove = bundleFileList[index];
-				if (toRemove.getMruIndex() != index)
-					throw new IllegalStateException("The BundleFile has the incorrect mru index: " + index + " != " + toRemove.getMruIndex()); //$NON-NLS-1$//$NON-NLS-2$
-				removeInternal(toRemove);
-			}
-			// found an index to place to bundleFile to be opened
-			bundleFileList[index] = bundleFile;
-			bundleFile.setMruIndex(index);
-			incUseStamp(index);
-			numOpen++;
-		}
-		// must not close the toRemove bundle file while holding the lock of another bundle file (bug 161976)
-		// This queues the bundle file for close asynchronously.
-		closeBundleFile(toRemove);
-	}
-
-	/**
-	 * Removes a bundle file which is about to be closed
-	 * @param bundleFile the bundle file about to be closed
-	 * @return true if the bundleFile existed in the MRU; false otherwise
-	 */
-	public boolean remove(BundleFile bundleFile) {
-		if (fileLimit < MIN)
-			return false; // MRU is disabled
-		synchronized (this) {
-			int index = bundleFile.getMruIndex();
-			if ((index >= 0 && index < fileLimit) && bundleFileList[index] == bundleFile) {
-				removeInternal(bundleFile);
-				return true;
-			}
-		}
-		return false;
-	}
-
-	// must be called while synchronizing "this"
-	private void removeInternal(BundleFile bundleFile) {
-		int index = bundleFile.getMruIndex();
-		bundleFile.setMruIndex(-1);
-		bundleFileList[index] = null;
-		useStampList[index] = -1;
-		numOpen--;
-	}
-
-	/**
-	 * Increments the use stamp of a bundle file
-	 * @param bundleFile the bundle file to increment the use stamp for
-	 */
-	public void use(BundleFile bundleFile) {
-		if (fileLimit < MIN)
-			return; // MRU is disabled
-		synchronized (this) {
-			int index = bundleFile.getMruIndex();
-			if ((index >= 0 && index < fileLimit) && bundleFileList[index] == bundleFile)
-				incUseStamp(index);
-		}
-	}
-
-	// must be called while synchronizing "this"
-	private void incUseStamp(int index) {
-		if (curUseStamp == Long.MAX_VALUE) {
-			// we hit the curUseStamp max better reset all the stamps
-			for (int i = 0; i < fileLimit; i++)
-				useStampList[i] = 0;
-			curUseStamp = 0;
-		}
-		useStampList[index] = ++curUseStamp;
-	}
-
-	public final void dispatchEvent(Object eventListener, Object listenerObject, int eventAction, Object eventObject) {
-		if (firstDispatch) {
-			// used to work around bug 275166; we don't want to leak the TCCL in this thread.
-			Thread.currentThread().setContextClassLoader(null);
-			firstDispatch = false;
-		}
-		try {
-			closingBundleFile.set(eventObject);
-			((BundleFile) eventObject).close();
-		} catch (IOException e) {
-			// TODO should log ??
-		} finally {
-			closingBundleFile.set(null);
-		}
-	}
-
-	private void closeBundleFile(BundleFile toRemove) {
-		if (toRemove == null)
-			return;
-		try {
-			/* queue to hold set of listeners */
-			ListenerQueue queue = new ListenerQueue(bundleFileCloserManager);
-			/* add bundle file closer to the queue */
-			queue.queueListeners(bundleFileCloser.entrySet(), this);
-			/* dispatch event to set of listeners */
-			queue.dispatchEventAsynchronous(0, toRemove);
-		} catch (Throwable t) {
-			// we cannot propagate exceptions out of this method
-			// failing to queue a bundle close should not cause an error (bug 283797)
-			// TODO should consider logging
-		}
-	}
-
-	/**
-	 * Closes the bundle file closer thread for the MRU list
-	 */
-	public void shutdown() {
-		if (bundleFileCloserManager != null)
-			bundleFileCloserManager.close();
-	}
-
-	/**
-	 * Returns true if this MRUBundleFileList is currently closing the specified bundle file on the current thread.
-	 * @param bundleFile the bundle file
-	 * @return true if the bundle file is being closed on the current thread
-	 */
-	public boolean isClosing(BundleFile bundleFile) {
-		if (fileLimit < MIN)
-			return false; // MRU is disabled
-		// check the thread local variable
-		return closingBundleFile.get() == bundleFile;
-	}
-
-	public boolean isEnabled() {
-		return fileLimit >= MIN;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/NestedDirBundleFile.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/NestedDirBundleFile.java
deleted file mode 100644
index b25f4cb..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/NestedDirBundleFile.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.Enumeration;
-
-/**
- * A NestedDirBundleFile uses another BundleFile as its source but
- * accesses all of its resources relative to a nested directory within
- * the other BundleFile object.  This is used to support zipped bundles
- * that use a Bundle-ClassPath with an nested directory specified.
- * <p>
- * For Example:
- * <pre>
- * Bundle-ClassPath: nested.jar,nesteddir/
- * </pre>
- * @since 3.2
- */
-public class NestedDirBundleFile extends BundleFile {
-	BundleFile baseBundleFile;
-	String cp;
-
-	/**
-	 * Constructs a NestedDirBundleFile
-	 * @param baseBundlefile the base bundle file
-	 * @param cp
-	 */
-	public NestedDirBundleFile(BundleFile baseBundlefile, String cp) {
-		super(baseBundlefile.getBaseFile());
-		this.baseBundleFile = baseBundlefile;
-		this.cp = cp;
-		if (cp.charAt(cp.length() - 1) != '/') {
-			this.cp = this.cp + '/';
-		}
-	}
-
-	public void close() {
-		// do nothing.
-	}
-
-	public BundleEntry getEntry(String path) {
-		if (path.length() > 0 && path.charAt(0) == '/')
-			path = path.substring(1);
-		String newpath = new StringBuffer(cp).append(path).toString();
-		return baseBundleFile.getEntry(newpath);
-	}
-
-	public boolean containsDir(String dir) {
-		if (dir == null)
-			return false;
-
-		if (dir.length() > 0 && dir.charAt(0) == '/')
-			dir = dir.substring(1);
-		String newdir = new StringBuffer(cp).append(dir).toString();
-		return baseBundleFile.containsDir(newdir);
-	}
-
-	public Enumeration getEntryPaths(String path) {
-		// getEntryPaths is only valid if this is a root bundle file.
-		return null;
-	}
-
-	public File getFile(String entry, boolean nativeCode) {
-		// getFile is only valid if this is a root bundle file.
-		return null;
-	}
-
-	public void open() throws IOException {
-		// do nothing
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleEntry.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleEntry.java
deleted file mode 100644
index 37495b4..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleEntry.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 253942)
- *******************************************************************************/
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.zip.ZipEntry;
-
-/**
- * A BundleEntry represented by a ZipEntry in a ZipFile.  The ZipBundleEntry
- * class is used for bundles that are installed as a ZipFile on a file system.
- * @since 3.2
- */
-public class ZipBundleEntry extends BundleEntry {
-	/**
-	 * ZipEntry for this entry.
-	 */
-	protected final ZipEntry zipEntry;
-
-	/**
-	 * The BundleFile for this entry.
-	 */
-	protected final ZipBundleFile bundleFile;
-
-	/**
-	 * Constructs the BundleEntry using a ZipEntry.
-	 * @param bundleFile BundleFile object this entry is a member of
-	 * @param zipEntry ZipEntry object of this entry
-	 */
-	ZipBundleEntry(ZipEntry zipEntry, ZipBundleFile bundleFile) {
-		this.zipEntry = zipEntry;
-		this.bundleFile = bundleFile;
-	}
-
-	/**
-	 * Return an InputStream for the entry.
-	 *
-	 * @return InputStream for the entry
-	 * @exception java.io.IOException
-	 */
-	public InputStream getInputStream() throws IOException {
-		ZipBundleFile zipBundleFile = bundleFile;
-
-		if (!zipBundleFile.isMruEnabled())
-			return bundleFile.getZipFile().getInputStream(zipEntry);
-
-		zipBundleFile.incrementReference();
-		InputStream result = null;
-		try {
-			return result = new ZipBundleEntryInputStream(zipBundleFile.getZipFile().getInputStream(zipEntry));
-		} finally {
-			if (result == null)
-				// an exception occurred; decrement the reference
-				zipBundleFile.decrementReference();
-		}
-	}
-
-	/**
-	 * Return size of the uncompressed entry.
-	 *
-	 * @return size of entry
-	 */
-	public long getSize() {
-		return zipEntry.getSize();
-	}
-
-	/**
-	 * Return name of the entry.
-	 *
-	 * @return name of entry
-	 */
-	public String getName() {
-		return zipEntry.getName();
-	}
-
-	/**
-	 * Get the modification time for this BundleEntry.
-	 * <p>If the modification time has not been set,
-	 * this method will return <tt>-1</tt>.
-	 *
-	 * @return last modification time.
-	 */
-	public long getTime() {
-		return zipEntry.getTime();
-	}
-
-	public URL getLocalURL() {
-		try {
-			return new URL("jar:" + bundleFile.basefile.toURL() + "!/" + zipEntry.getName()); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (MalformedURLException e) {
-			//This can not happen. 
-			return null;
-		}
-	}
-
-	public URL getFileURL() {
-		try {
-			File file = bundleFile.getFile(zipEntry.getName(), false);
-			if (file != null)
-				return file.toURL();
-		} catch (MalformedURLException e) {
-			//This can not happen. 
-		}
-		return null;
-	}
-
-	private class ZipBundleEntryInputStream extends InputStream {
-		private final InputStream stream;
-		private boolean closed = false;
-
-		public ZipBundleEntryInputStream(InputStream stream) {
-			this.stream = stream;
-		}
-
-		public int available() throws IOException {
-			return stream.available();
-		}
-
-		public void close() throws IOException {
-			try {
-				stream.close();
-			} finally {
-				synchronized (this) {
-					if (closed)
-						return;
-					closed = true;
-				}
-				bundleFile.decrementReference();
-			}
-		}
-
-		public void mark(int var0) {
-			stream.mark(var0);
-		}
-
-		public boolean markSupported() {
-			return stream.markSupported();
-		}
-
-		public int read() throws IOException {
-			return stream.read();
-		}
-
-		public int read(byte[] var0, int var1, int var2) throws IOException {
-			return stream.read(var0, var1, var2);
-		}
-
-		public int read(byte[] var0) throws IOException {
-			return stream.read(var0);
-		}
-
-		public void reset() throws IOException {
-			stream.reset();
-		}
-
-		public long skip(long var0) throws IOException {
-			return stream.skip(var0);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleFile.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleFile.java
deleted file mode 100644
index ac9f32c..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleFile.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 253942)
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.bundlefile;
-
-import java.io.*;
-import java.util.Enumeration;
-import java.util.Vector;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorMsg;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorUtil;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.FrameworkEvent;
-
-/**
- * A BundleFile that uses a ZipFile as it base file.
- * @since 3.2
- */
-public class ZipBundleFile extends BundleFile {
-
-	private final MRUBundleFileList mruList;
-	/**
-	 * The bundle data
-	 */
-	protected BaseData bundledata;
-	/**
-	 * The zip file
-	 */
-	protected volatile ZipFile zipFile;
-	/**
-	 * The closed flag
-	 */
-	protected volatile boolean closed = true;
-
-	private int referenceCount = 0;
-
-	/**
-	 * Constructs a ZipBundle File
-	 * @param basefile the base file
-	 * @param bundledata the bundle data
-	 * @throws IOException
-	 */
-	public ZipBundleFile(File basefile, BaseData bundledata) throws IOException {
-		this(basefile, bundledata, null);
-	}
-
-	public ZipBundleFile(File basefile, BaseData bundledata, MRUBundleFileList mruList) throws IOException {
-		super(basefile);
-		if (!BundleFile.secureAction.exists(basefile))
-			throw new IOException(NLS.bind(AdaptorMsg.ADAPTER_FILEEXIST_EXCEPTION, basefile));
-		this.bundledata = bundledata;
-		this.closed = true;
-		this.mruList = mruList;
-	}
-
-	/**
-	 * Checks if the zip file is open
-	 * @return true if the zip file is open
-	 */
-	protected boolean checkedOpen() {
-		try {
-			return getZipFile() != null;
-		} catch (IOException e) {
-			if (bundledata != null)
-				bundledata.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, bundledata.getBundle(), e);
-			return false;
-		}
-	}
-
-	/**
-	 * Opens the ZipFile for this bundle file
-	 * @return an open ZipFile for this bundle file
-	 * @throws IOException
-	 */
-	protected ZipFile basicOpen() throws IOException {
-		return BundleFile.secureAction.getZipFile(this.basefile);
-	}
-
-	/**
-	 * Returns an open ZipFile for this bundle file.  If an open
-	 * ZipFile does not exist then a new one is created and
-	 * returned.
-	 * @return an open ZipFile for this bundle
-	 * @throws IOException
-	 */
-	protected synchronized ZipFile getZipFile() throws IOException {
-		if (closed) {
-			mruListAdd();
-			zipFile = basicOpen();
-			closed = false;
-		} else
-			mruListUse();
-		return zipFile;
-	}
-
-	/**
-	* Returns a ZipEntry for the bundle file. Must be called while synchronizing on this object.
-	* This method does not ensure that the ZipFile is opened. Callers may need to call getZipfile() prior to calling this 
-	* method.
-	* @param path the path to an entry
-	* @return a ZipEntry or null if the entry does not exist
-	*/
-	protected ZipEntry getZipEntry(String path) {
-		if (path.length() > 0 && path.charAt(0) == '/')
-			path = path.substring(1);
-		ZipEntry entry = zipFile.getEntry(path);
-		if (entry != null && entry.getSize() == 0 && !entry.isDirectory()) {
-			// work around the directory bug see bug 83542
-			ZipEntry dirEntry = zipFile.getEntry(path + '/');
-			if (dirEntry != null)
-				entry = dirEntry;
-		}
-		return entry;
-	}
-
-	/**
-	 * Extracts a directory and all sub content to disk
-	 * @param dirName the directory name to extract
-	 * @return the File used to extract the content to.  A value
-	 * of <code>null</code> is returned if the directory to extract does 
-	 * not exist or if content extraction is not supported.
-	 */
-	protected synchronized File extractDirectory(String dirName) {
-		if (!checkedOpen())
-			return null;
-		Enumeration entries = zipFile.entries();
-		while (entries.hasMoreElements()) {
-			String entryPath = ((ZipEntry) entries.nextElement()).getName();
-			if (entryPath.startsWith(dirName) && !entryPath.endsWith("/")) //$NON-NLS-1$
-				getFile(entryPath, false);
-		}
-		return getExtractFile(dirName);
-	}
-
-	protected File getExtractFile(String entryName) {
-		if (bundledata == null)
-			return null;
-		String path = ".cp"; /* put all these entries in this subdir *///$NON-NLS-1$
-		String name = entryName.replace('/', File.separatorChar);
-		if ((name.length() > 1) && (name.charAt(0) == File.separatorChar)) /* if name has a leading slash */
-			path = path.concat(name);
-		else
-			path = path + File.separator + name;
-		return bundledata.getExtractFile(path);
-	}
-
-	public synchronized File getFile(String entry, boolean nativeCode) {
-		if (!checkedOpen())
-			return null;
-		ZipEntry zipEntry = getZipEntry(entry);
-		if (zipEntry == null)
-			return null;
-
-		try {
-			File nested = getExtractFile(zipEntry.getName());
-			if (nested != null) {
-				if (nested.exists()) {
-					/* the entry is already cached */
-					if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-						Debug.println("File already present: " + nested.getPath()); //$NON-NLS-1$
-					if (nested.isDirectory())
-						// must ensure the complete directory is extracted (bug 182585)
-						extractDirectory(zipEntry.getName());
-				} else {
-					if (zipEntry.getName().endsWith("/")) { //$NON-NLS-1$
-						if (!nested.mkdirs()) {
-							if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-								Debug.println("Unable to create directory: " + nested.getPath()); //$NON-NLS-1$
-							throw new IOException(NLS.bind(AdaptorMsg.ADAPTOR_DIRECTORY_CREATE_EXCEPTION, nested.getAbsolutePath()));
-						}
-						extractDirectory(zipEntry.getName());
-					} else {
-						InputStream in = zipFile.getInputStream(zipEntry);
-						if (in == null)
-							return null;
-						/* the entry has not been cached */
-						if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-							Debug.println("Creating file: " + nested.getPath()); //$NON-NLS-1$
-						/* create the necessary directories */
-						File dir = new File(nested.getParent());
-						if (!dir.exists() && !dir.mkdirs()) {
-							if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-								Debug.println("Unable to create directory: " + dir.getPath()); //$NON-NLS-1$
-							throw new IOException(NLS.bind(AdaptorMsg.ADAPTOR_DIRECTORY_CREATE_EXCEPTION, dir.getAbsolutePath()));
-						}
-						/* copy the entry to the cache */
-						AdaptorUtil.readFile(in, nested);
-						if (nativeCode)
-							setPermissions(nested);
-					}
-				}
-
-				return nested;
-			}
-		} catch (IOException e) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-				Debug.printStackTrace(e);
-		}
-		return null;
-	}
-
-	public synchronized boolean containsDir(String dir) {
-		if (!checkedOpen())
-			return false;
-		if (dir == null)
-			return false;
-
-		if (dir.length() == 0)
-			return true;
-
-		if (dir.charAt(0) == '/') {
-			if (dir.length() == 1)
-				return true;
-			dir = dir.substring(1);
-		}
-
-		if (dir.length() > 0 && dir.charAt(dir.length() - 1) != '/')
-			dir = dir + '/';
-
-		Enumeration entries = zipFile.entries();
-		ZipEntry zipEntry;
-		String entryPath;
-		while (entries.hasMoreElements()) {
-			zipEntry = (ZipEntry) entries.nextElement();
-			entryPath = zipEntry.getName();
-			if (entryPath.startsWith(dir)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	public synchronized BundleEntry getEntry(String path) {
-		if (!checkedOpen())
-			return null;
-		ZipEntry zipEntry = getZipEntry(path);
-		if (zipEntry == null) {
-			if (path.length() == 0 || path.charAt(path.length() - 1) == '/') {
-				// this is a directory request lets see if any entries exist in this directory
-				if (containsDir(path))
-					return new DirZipBundleEntry(this, path);
-			}
-			return null;
-		}
-
-		return new ZipBundleEntry(zipEntry, this);
-
-	}
-
-	public synchronized Enumeration getEntryPaths(String path) {
-		if (!checkedOpen())
-			return null;
-		if (path == null)
-			throw new NullPointerException();
-
-		if (path.length() > 0 && path.charAt(0) == '/')
-			path = path.substring(1);
-		if (path.length() > 0 && path.charAt(path.length() - 1) != '/')
-			path = new StringBuffer(path).append("/").toString(); //$NON-NLS-1$
-
-		Vector vEntries = new Vector();
-		Enumeration entries = zipFile.entries();
-		while (entries.hasMoreElements()) {
-			ZipEntry zipEntry = (ZipEntry) entries.nextElement();
-			String entryPath = zipEntry.getName();
-			if (entryPath.startsWith(path)) {
-				if (path.length() < entryPath.length()) {
-					if (entryPath.lastIndexOf('/') < path.length()) {
-						vEntries.add(entryPath);
-					} else {
-						entryPath = entryPath.substring(path.length());
-						int slash = entryPath.indexOf('/');
-						entryPath = path + entryPath.substring(0, slash + 1);
-						if (!vEntries.contains(entryPath))
-							vEntries.add(entryPath);
-					}
-				}
-			}
-		}
-		return vEntries.size() == 0 ? null : vEntries.elements();
-	}
-
-	public synchronized void close() throws IOException {
-		if (!closed) {
-			if (referenceCount > 0 && isMruListClosing()) {
-				// there are some opened streams to this BundleFile still;
-				// wait for them all to close because this is being closed by the MRUBundleFileList
-				try {
-					wait(1000); // timeout after 1 second
-				} catch (InterruptedException e) {
-					// do nothing for now ...
-				}
-				if (referenceCount != 0 || closed)
-					// either another thread closed the bundle file or we timed waiting for all the reference inputstreams to close
-					// If the referenceCount did not reach zero then this bundle file will remain open until the
-					// bundle file is closed explicitly (i.e. bundle is updated/uninstalled or framework is shutdown)
-					return;
-
-			}
-			closed = true;
-			zipFile.close();
-			mruListRemove();
-		}
-	}
-
-	private boolean isMruListClosing() {
-		return this.mruList != null && this.mruList.isClosing(this);
-	}
-
-	boolean isMruEnabled() {
-		return this.mruList != null && this.mruList.isEnabled();
-	}
-
-	private void mruListRemove() {
-		if (this.mruList != null) {
-			this.mruList.remove(this);
-		}
-	}
-
-	private void mruListUse() {
-		if (this.mruList != null) {
-			mruList.use(this);
-		}
-	}
-
-	private void mruListAdd() {
-		if (this.mruList != null) {
-			mruList.add(this);
-		}
-	}
-
-	public void open() {
-		//do nothing
-	}
-
-	synchronized void incrementReference() {
-		referenceCount += 1;
-	}
-
-	synchronized void decrementReference() {
-		referenceCount = Math.max(0, referenceCount - 1);
-		// only notify if the referenceCount is zero.
-		if (referenceCount == 0)
-			notify();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/AdaptorHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/AdaptorHook.java
deleted file mode 100644
index 6c7bcde..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/AdaptorHook.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.hooks;
-
-import java.io.IOException;
-import java.net.URLConnection;
-import java.util.Properties;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.HookRegistry;
-import org.eclipse.osgi.framework.adaptor.EventPublisher;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-/**
- * An AdaptorHook hooks into the <code>BaseAdaptor</code> class.
- * @see BaseAdaptor
- * @see HookRegistry#getAdaptorHooks()
- * @see HookRegistry#addAdaptorHook(AdaptorHook)
- * @since 3.2
- */
-public interface AdaptorHook {
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#initialize(EventPublisher)}.
-	 * This method allows an adaptor hook to save the adaptor object for later.
-	 * @param adaptor the adaptor object associated with this AdaptorHook.
-	 */
-	public void initialize(BaseAdaptor adaptor);
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#frameworkStart(BundleContext)}.
-	 * This method allows an adaptor hook to execute code when the framework is starting 
-	 * (e.g. to register services).
-	 * @param context the system bundle context
-	 * @throws BundleException if an error occurs
-	 */
-	public void frameworkStart(BundleContext context) throws BundleException;
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#frameworkStop(BundleContext)}.
-	 * This method allows an adaptor hook to execute code when the framework is stopped
-	 * (e.g. to unregister services).
-	 * @param context the system bundle context
-	 * @throws BundleException if an error occurs.
-	 */
-	public void frameworkStop(BundleContext context) throws BundleException;
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#frameworkStopping(BundleContext)}.
-	 * This method allows an adaptor hook to execute code when the framework is about to start 
-	 * the shutdown process.
-	 * @param context the system bundle context
-	 */
-	public void frameworkStopping(BundleContext context);
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#getProperties()}.
-	 * This method allows an adaptor hook to add property values to the adaptor 
-	 * properties object.
-	 * @param properties the adaptor properties object.
-	 */
-	public void addProperties(Properties properties);
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#mapLocationToURLConnection(String)}.
-	 * The adaptor will call this method for each configured adaptor hook until one 
-	 * adaptor hook returns a non-null value.  If no adaptor hook returns a non-null value 
-	 * then the adaptor will perform the default behavior.
-	 * @param location a bundle location string to be converted to a URLConnection
-	 * @return the URLConnection converted from the bundle location or null.
-	 * @throws IOException if an error occured creating the URLConnection
-	 */
-	public URLConnection mapLocationToURLConnection(String location) throws IOException;
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#handleRuntimeError(Throwable)}.
-	 * The adaptor will call this method for each configured adaptor hook.
-	 * @param error the unexpected error that occured.
-	 */
-	public void handleRuntimeError(Throwable error);
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#getFrameworkLog()}.
-	 * The adaptor will call this method for each configured adaptor hook until one 
-	 * adaptor hook returns a non-null value.  If no adaptor hook returns a non-null value 
-	 * then the adaptor will return null.
-	 * @return a FrameworkLog object or null.
-	 */
-	public FrameworkLog createFrameworkLog();
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileFactoryHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileFactoryHook.java
deleted file mode 100644
index 0317f14..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileFactoryHook.java
+++ /dev/null
@@ -1,35 +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.osgi.baseadaptor.hooks;
-
-import java.io.IOException;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-
-/**
- * A factory that creates bundle file objects.
- * @see BaseAdaptor#createBundleFile(Object, BaseData)
- * @since 3.2
- */
-public interface BundleFileFactoryHook {
-	/**
-	 * Creates a bundle file for the given content and base data. 
-	 * @param content The object which contains the content of a bundle file.
-	 * @param data The base data associated with the content
-	 * @param base true if the content is for the base bundle (not an inner jar, directory etc.)
-	 * @return a new bundle file for the specified content, or null if this factory cannot
-	 * create a bundle file for the specified content.
-	 * @throws IOException if an IO error occurs
-	 */
-	BundleFile createBundleFile(Object content, BaseData data, boolean base) throws IOException;
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileWrapperFactoryHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileWrapperFactoryHook.java
deleted file mode 100644
index 2c37adb..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileWrapperFactoryHook.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.hooks;
-
-import java.io.IOException;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-
-/**
- * A factory that wraps bundle file objects.
- * @see BaseAdaptor#createBundleFile(Object, BaseData)
- * @since 3.2
- */
-public interface BundleFileWrapperFactoryHook {
-	/**
-	 * Wraps a bundle file for the given content and base data.  If the 
-	 * specified bundle file should not be wrapped then null is returned 
-	 * @param bundleFile the bundle file to be wrapped
-	 * @param content The object which contains the content of a bundle file.
-	 * @param data The base data associated with the content
-	 * @param base true if the content is for the base bundle (not an inner jar, directory etc.)
-	 * @return a wrapped bundle file for the specified content, or null if the bundle content
-	 * is not wrapped.
-	 * @throws IOException if an IO error occurs
-	 */
-	BundleFile wrapBundleFile(BundleFile bundleFile, Object content, BaseData data, boolean base) throws IOException;
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingHook.java
deleted file mode 100644
index 896b6d6..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingHook.java
+++ /dev/null
@@ -1,98 +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.osgi.baseadaptor.hooks;
-
-import java.security.ProtectionDomain;
-import java.util.ArrayList;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.HookRegistry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.adaptor.*;
-
-/**
- * A ClassLoadingHook hooks into the <code>ClasspathManager</code> class.
- * @see ClasspathManager
- * @see HookRegistry#getClassLoadingHooks()
- * @see HookRegistry#addClassLoadingHook(ClassLoadingHook)
- * @since 3.2
- */
-public interface ClassLoadingHook {
-	/**
-	 * Gets called by a classpath manager before defining a class.  This method allows a class loading hook 
-	 * to process the bytes of a class that is about to be defined.
-	 * @param name the name of the class being defined
-	 * @param classbytes the bytes of the class being defined
-	 * @param classpathEntry the ClasspathEntry where the class bytes have been read from.
-	 * @param entry the BundleEntry source of the class bytes
-	 * @param manager the class path manager used to define the requested class
-	 * @return a modified array of classbytes or null if the original bytes should be used.
-	 */
-	byte[] processClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager);
-
-	/**
-	 * Gets called by a classpath manager when looking for ClasspathEntry objects.  This method allows 
-	 * a classloading hook to add additional ClasspathEntry objects
-	 * @param cpEntries the list of ClasspathEntry objects currently available for the requested classpath
-	 * @param cp the name of the requested classpath
-	 * @param hostmanager the classpath manager the requested ClasspathEntry is for
-	 * @param sourcedata the source bundle data of the requested ClasspathEntry
-	 * @param sourcedomain the source domain of the requested ClasspathEntry
-	 * @return true if a ClasspathEntry has been added to cpEntries
-	 */
-	boolean addClassPathEntry(ArrayList cpEntries, String cp, ClasspathManager hostmanager, BaseData sourcedata, ProtectionDomain sourcedomain);
-
-	/**
-	 * Gets called by a base data during {@link BundleData#findLibrary(String)}.
-	 * A base data will call this method for each configured class loading hook until one 
-	 * class loading hook returns a non-null value.  If no class loading hook returns 
-	 * a non-null value then the base data will return null.
-	 * @param data the base data to find a native library for.
-	 * @param libName the name of the native library.
-	 * @return The absolute path name of the native library or null.
-	 */
-	String findLibrary(BaseData data, String libName);
-
-	/**
-	 * Gets called by the adaptor during {@link FrameworkAdaptor#getBundleClassLoaderParent()}.
-	 * The adaptor will call this method for each configured class loading hook until one 
-	 * class loading hook returns a non-null value.  If no class loading hook returns 
-	 * a non-null value then the adaptor will perform the default behavior.
-	 * @return the parent classloader to be used by all bundle classloaders or null.
-	 */
-	public ClassLoader getBundleClassLoaderParent();
-
-	/**
-	 * Gets called by a base data during 
-	 * {@link BundleData#createClassLoader(ClassLoaderDelegate, BundleProtectionDomain, String[])}.
-	 * The BaseData will call this method for each configured class loading hook until one data
-	 * hook returns a non-null value.  If no class loading hook returns a non-null value then a 
-	 * default implemenation of BundleClassLoader will be created.
-	 * @param parent the parent classloader for the BundleClassLoader
-	 * @param delegate the delegate for the bundle classloader
-	 * @param domain the domian for the bundle classloader
-	 * @param data the BundleData for the BundleClassLoader
-	 * @param bundleclasspath the classpath for the bundle classloader
-	 * @return a newly created bundle classloader
-	 */
-	BaseClassLoader createClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, BundleProtectionDomain domain, BaseData data, String[] bundleclasspath);
-
-	/**
-	 * Gets called by a classpath manager at the end of 
-	 * {@link ClasspathManager#initialize()}.
-	 * The classpath manager will call this method for each configured class loading hook after it 
-	 * has been initialized.
-	 * @param baseClassLoader the newly created bundle classloader
-	 * @param data the BundleData associated with the bundle classloader
-	 */
-	void initializedClassLoader(BaseClassLoader baseClassLoader, BaseData data);
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingStatsHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingStatsHook.java
deleted file mode 100644
index 41a320c..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/ClassLoadingStatsHook.java
+++ /dev/null
@@ -1,80 +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.osgi.baseadaptor.hooks;
-
-import java.net.URL;
-import org.eclipse.osgi.baseadaptor.HookRegistry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.loader.ClasspathEntry;
-import org.eclipse.osgi.baseadaptor.loader.ClasspathManager;
-
-/**
- * A ClassLoadingStatsHook hooks into the <code>ClasspathManager</code> class.  This class allows 
- * a hook to record statistics about classloading.
- * @see ClasspathManager
- * @see HookRegistry#getClassLoadingStatsHooks()
- * @see HookRegistry#addClassLoadingStatsHook(ClassLoadingStatsHook)
- * @since 3.2
- */
-public interface ClassLoadingStatsHook {
-	/**
-	 * Gets called by a classpath manager during {@link ClasspathManager#findLocalClass(String)} before 
-	 * searching the local classloader for a class.  A classpath manager will call this method for 
-	 * each configured class loading stat hook.
-	 * @param name the name of the requested class
-	 * @param manager the classpath manager used to find and load the requested class
-	 * @throws ClassNotFoundException to prevent the requested class from loading
-	 */
-	void preFindLocalClass(String name, ClasspathManager manager) throws ClassNotFoundException;
-
-	/**
-	 * Gets called by a classpath manager during {@link ClasspathManager#findLocalClass(String)} after
-	 * searching the local classloader for a class. A classpath manager will call this method for 
-	 * each configured class loading stat hook.
-	 * @param name the name of the requested class
-	 * @param clazz the loaded class or null if not found
-	 * @param manager the classpath manager used to find and load the requested class
-	 */
-	void postFindLocalClass(String name, Class clazz, ClasspathManager manager) throws ClassNotFoundException;
-
-	/**
-	 * Gets called by a classpath manager during {@link ClasspathManager#findLocalResource(String)} before
-	 * searching the local classloader for a resource. A classpath manager will call this method for 
-	 * each configured class loading stat hook.
-	 * @param name the name of the requested resource
-	 * @param manager the classpath manager used to find the requested resource
-	 */
-	void preFindLocalResource(String name, ClasspathManager manager);
-
-	/**
-	 * Gets called by a classpath manager during {@link ClasspathManager#findLocalResource(String)} after
-	 * searching the local classloader for a resource. A classpath manager will call this method for 
-	 * each configured class loading stat hook.
-	 * @param name the name of the requested resource
-	 * @param resource the URL to the requested resource or null if not found
-	 * @param manager the classpath manager used to find the requested resource
-	 */
-	void postFindLocalResource(String name, URL resource, ClasspathManager manager);
-
-	/**
-	 * Gets called by a classpath manager after a successfully defining a class.  This method allows 
-	 * a class loading stat hook to record data about a class definition. 
-	 * @param name the name of the class that got defined
-	 * @param clazz the class object that got defined
-	 * @param classbytes the class bytes used to define the class
-	 * @param classpathEntry the ClasspathEntry where the class bytes got read from
-	 * @param entry the BundleEntyr source of the class bytes
-	 * @param manager the classpath manager used to define the class
-	 */
-	void recordClassDefine(String name, Class clazz, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager);
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/StorageHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/StorageHook.java
deleted file mode 100644
index 28a7b8c..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/StorageHook.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.hooks;
-
-import java.io.*;
-import java.util.Dictionary;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.osgi.framework.BundleException;
-
-/**
- * A StorageHook hooks into the persistent storage loading and saving.  A StorageHook gets 
- * associated with each BaseData object installed in the adaptor.<p>
- * A StorageHook extends {@link KeyedElement}, the key used for the element must be the 
- * fully qualified string name of the StorageHook implementation class.
- * @see BaseData#getStorageHook(String)
- * @since 3.2
- */
-public interface StorageHook extends KeyedElement {
-	/**
-	 * Returns the storage version of this storage hook.  This version 
-	 * is used by the storage to check the consistency of cached persistent 
-	 * data.  Any time a storage hook changes the format of its persistent 
-	 * data the storage version should be incremented. 
-	 * @return the storage version of this storage hook
-	 */
-	int getStorageVersion();
-
-	/**
-	 * Creates an uninitialized storage hook for the specified bundledata.  This method 
-	 * is called when a bundle is installed or updated.  The returned storage hook will be 
-	 * used for the new contents of the bundle.  The returned hook will have its 
-	 * {@link #initialize(Dictionary)} method called to initialize the storage hook.
-	 * @param bundledata a base data the created storage hook will be associated with
-	 * @return an uninitialized storage hook
-	 * @throws BundleException if any error occurs
-	 */
-	StorageHook create(BaseData bundledata) throws BundleException;
-
-	/**
-	 * Initializes this storage hook with the content of the specified bundle manifest.  
-	 * This method is called when a bundle is installed or updated.
-	 * @see #create(BaseData)
-	 * @see #copy(StorageHook)
-	 * @param manifest the bundle manifest to load into this storage hook
-	 * @throws BundleException if any error occurs
-	 */
-	void initialize(Dictionary manifest) throws BundleException;
-
-	/**
-	 * Creates a new storage hook and loads the data from the specified 
-	 * input stream into the storage hook.  This method is called during startup to 
-	 * load all the persistently installed bundles. <p>
-	 * It is important that this method and the {@link #save(DataOutputStream)} method 
-	 * stay in sync.  This method must be able to successfully read the data saved by the
-	 * {@link #save(DataOutputStream)} method.
-	 * @param bundledata a base data the loaded storage hook will be associated with
-	 * @param is an input stream used to load the storage hook's data from.
-	 * @return a loaded storage hook
-	 * @see #save(DataOutputStream)
-	 * @throws IOException if any error occurs
-	 */
-	StorageHook load(BaseData bundledata, DataInputStream is) throws IOException;
-
-	/**
-	 * Saves the data from this storage hook into the specified output stream.  This method
-	 * is called if some persistent data has changed for the bundle. <p>
-	 * It is important that this method and the {@link #load(BaseData, DataInputStream)}
-	 * method stay in sync.  This method must be able to save data which the 
-	 * {@link #load(BaseData, DataInputStream)} method can ready successfully.
-	 * @see #load(BaseData, DataInputStream)
-	 * @param os an output stream used to save the storage hook's data from.
-	 * @throws IOException if any error occurs
-	 */
-	void save(DataOutputStream os) throws IOException;
-
-	/**
-	 * Copies the data from the specified storage hook into this storage hook.  This method 
-	 * is called when a bundle is updated to copy the data from the original bundle to a 
-	 * new storage hook.  Then this storage will be initialized with the new bundle's 
-	 * manifest using the {@link #initialize(Dictionary)} method.
-	 * @see #create(BaseData)
-	 * @see #initialize(Dictionary)
-	 * @param storageHook the original storage hook to copy data out of.
-	 */
-	void copy(StorageHook storageHook);
-
-	/**
-	 * Validates the data in this storage hook, if the data is invalid then an illegal state 
-	 * exception is thrown
-	 * @throws IllegalArgumentException if the data is invalid
-	 */
-	void validate() throws IllegalArgumentException;
-
-	/**
-	 * Returns the manifest for the data in this storage hook, or null if this hook does
-	 * not provide the manifest.  Most hooks should return null from this method.  This 
-	 * method may be used to provide special handling of manifest loading.  For example,
-	 * to provide a cached manfest or to do automatic manifest generation.
-	 * @param firstLoad true if this is the very first time this manifest is being loaded.
-	 * @return the manifest for the data in this storage hook, or null if this hook does
-	 * not provide the manifest
-	 * @throws BundleException 
-	 */
-	Dictionary getManifest(boolean firstLoad) throws BundleException;
-
-	/**
-	 * Gets called by a base data during {@link BundleData#setStatus(int)}.
-	 * A base data will call this method for each configured storage hook it
-	 * is associated with until one storage hook returns true.  If all configured storage 
-	 * hooks return false then the BaseData will be marked dirty and will cause the 
-	 * status to be persistently saved.
-	 * @param status the new status of the base data
-	 * @return false if the status is not to be persistently saved; otherwise true is returned
-	 */
-	boolean forgetStatusChange(int status);
-
-	/**
-	 * Gets called by a base data during {@link BundleData#setStartLevel(int)}.
-	 * A base data will call this method for each configured storage hook it
-	 * is associated with until one storage hook returns true.  If all configured storage 
-	 * hooks return false then the BaseData will be marked dirty and will cause the 
-	 * start level to be persistently saved.
-	 * @param startlevel the new startlevel of the base data
-	 * @return false if the startlevel is not to be persistently saved; otherwise true is returned
-	 */
-	boolean forgetStartLevelChange(int startlevel);
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/BaseClassLoader.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/BaseClassLoader.java
deleted file mode 100644
index c10632a..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/BaseClassLoader.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.loader;
-
-import java.net.URL;
-import java.security.ProtectionDomain;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.framework.adaptor.BundleClassLoader;
-
-/**
- * The actual class loader object used to define classes for a classpath manager.
- * This interface provides public versions of a few methods on class loader.
- * @see ClasspathManager
- * @since 3.2
- */
-public interface BaseClassLoader extends BundleClassLoader {
-	/**
-	 * Returns the domain for the host bundle of this class loader
-	 * @return the domain for the host bundle of this class loader
-	 */
-	ProtectionDomain getDomain();
-
-	/**
-	 * Creates a classpath entry with the given bundle file and domain
-	 * @param bundlefile the source bundle file for a classpath entry
-	 * @param cpDomain the source domain for a classpath entry
-	 * @return a classpath entry with the given bundle file and domain
-	 */
-	ClasspathEntry createClassPathEntry(BundleFile bundlefile, ProtectionDomain cpDomain);
-
-	/**
-	 * Defines a Class.
-	 * @param name the name of the class to define
-	 * @param classbytes the bytes of the class to define
-	 * @param classpathEntry the classpath entry used to load the class bytes
-	 * @param entry the bundle entry used to load the class bytes
-	 * @return a defined Class
-	 */
-	Class defineClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry);
-
-	/**
-	 * A public version of the ClassLoader.findLoadedClass(java.lang.String) method.
-	 * @param classname the class name to find.
-	 * @return a loaded class
-	 */
-	Class publicFindLoaded(String classname);
-
-	/**
-	 * A public version of the ClassLoader#getPackage(java.lang.String) method.
-	 * @param pkgname the package name to get.
-	 * @return the package or null if it does not exist
-	 */
-	Object publicGetPackage(String pkgname);
-
-	/**
-	 * A public version of the ClassLoader#definePackage(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.net.URL) method.
-	 * @return a defined Package
-	 */
-	Object publicDefinePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase);
-
-	/**
-	 * Returns the ClasspathManager for this BaseClassLoader
-	 * @return the ClasspathManager
-	 */
-	ClasspathManager getClasspathManager();
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathEntry.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathEntry.java
deleted file mode 100644
index 27fc5c4..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathEntry.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.loader;
-
-import java.security.ProtectionDomain;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.eclipse.osgi.framework.util.KeyedHashSet;
-
-/**
- * A ClasspathEntry contains a single <code>BundleFile</code> which is used as 
- * a source to load classes and resources from, and a single 
- * <code>ProtectionDomain</code> which is used as the domain to define classes 
- * loaded from this ClasspathEntry.
- * @since 3.2
- */
-public class ClasspathEntry {
-	private final BundleFile bundlefile;
-	private final ProtectionDomain domain;
-	private KeyedHashSet userObjects = null;
-	// Note that PDE has internal dependency on this field type/name (bug 267238)
-	private volatile BaseData data;
-
-	/**
-	 * Constructs a ClasspathElement with the specified bundlefile and domain
-	 * @param bundlefile A BundleFile object which acts as a source
-	 * @param domain the ProtectDomain for all code loaded from this classpath element
-	 */
-	public ClasspathEntry(BundleFile bundlefile, ProtectionDomain domain) {
-		this.bundlefile = bundlefile;
-		this.domain = domain;
-	}
-
-	/**
-	 * Returns the source BundleFile for this classpath entry
-	 * @return the source BundleFile for this classpath entry
-	 */
-	public BundleFile getBundleFile() {
-		return bundlefile;
-	}
-
-	/**
-	 * Returns the base data which this entry is associated with.  This can be
-	 * either a host or fragment base data.
-	 */
-	public BaseData getBaseData() {
-		return data;
-	}
-
-	void setBaseData(BaseData data) {
-		this.data = data;
-	}
-
-	/**
-	 * Returns the ProtectionDomain for this classpath entry
-	 * @return the ProtectionDomain for this classpath entry
-	 */
-	public ProtectionDomain getDomain() {
-		return domain;
-	}
-
-	/**
-	 * Returns a user object which is keyed by the specified key
-	 * @param key the key of the user object to get
-	 * @return a user object which is keyed by the specified key
-	 */
-	public Object getUserObject(Object key) {
-		if (userObjects == null)
-			return null;
-		synchronized (userObjects) {
-			return userObjects.getByKey(key);
-		}
-	}
-
-	/**
-	 * Adds a user object
-	 * @param userObject the user object to add
-	 */
-	public synchronized void addUserObject(KeyedElement userObject) {
-		if (userObjects == null)
-			userObjects = new KeyedHashSet(5, false);
-		synchronized (userObjects) {
-			userObjects.add(userObject);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathManager.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathManager.java
deleted file mode 100644
index 08b0aac..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathManager.java
+++ /dev/null
@@ -1,641 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.loader;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.security.ProtectionDomain;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingStatsHook;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.BundleProtectionDomain;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorMsg;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.FrameworkEvent;
-
-/**
- * A helper class for <code>BaseClassLoader</code> implementations.  This class will keep track of 
- * <code>ClasspathEntry</code> objects for the host bundle and any attached fragment bundles.  This 
- * class takes care of searching the <code>ClasspathEntry</code> objects for a base class loader
- * implementation.  Additional behavior may be added to a classpath manager by configuring 
- * <code>ClassLoadingHook</code> and <code>ClassLoadingStatsHook</code>.
- * @see BaseClassLoader
- * @see ClassLoadingHook
- * @see ClassLoadingStatsHook
- * @since 3.2
- */
-public class ClasspathManager {
-	private static final FragmentClasspath[] emptyFragments = new FragmentClasspath[0];
-	private final static String PROP_CLASSLOADER_LOCK = "osgi.classloader.lock"; //$NON-NLS-1$
-	private final static String VALUE_CLASSNAME_LOCK = "classname"; //$NON-NLS-1$
-	private final static boolean LOCK_CLASSNAME = VALUE_CLASSNAME_LOCK.equals(FrameworkProperties.getProperty(PROP_CLASSLOADER_LOCK));
-
-	private BaseData data;
-	private String[] classpath;
-	// Note that PDE has internal dependency on this field type/name (bug 267238)
-	private ClasspathEntry[] entries;
-	private BaseClassLoader classloader;
-	// Note that PDE has internal dependency on this field type/name (bug 267238)
-	private FragmentClasspath[] fragments = emptyFragments;
-	// a collection of String[2], each element is {"libname", "libpath"}
-	private Collection loadedLibraries = null;
-	private HashMap classNameLocks = new HashMap(5);
-	private final boolean isParallelClassLoader;
-
-	/**
-	 * Constructs a classpath manager for the given host base data, classpath and base class loader
-	 * @param data the host base data for this classpath manager
-	 * @param classpath the host classpath for this classpath manager
-	 * @param classloader the BaseClassLoader for this classpath manager
-	 */
-	public ClasspathManager(BaseData data, String[] classpath, BaseClassLoader classloader) {
-		this.data = data;
-		this.classpath = classpath;
-		this.classloader = classloader;
-		isParallelClassLoader = (classloader instanceof ParallelClassLoader) ? ((ParallelClassLoader) classloader).isParallelCapable() : false;
-	}
-
-	/**
-	 * initializes this classpath manager.  This must be called after all existing fragments have been
-	 * attached and before any resources/classes are loaded using this classpath manager.
-	 * <p>
-	 * After the classpath manager is initialized all configured class loading hooks 
-	 * {@link ClassLoadingHook#initializedClassLoader(BaseClassLoader, BaseData)} methods are called.
-	 * </p>
-	 */
-	public void initialize() {
-		entries = buildClasspath(classpath, this, data, classloader.getDomain());
-		ClassLoadingHook[] hooks = data.getAdaptor().getHookRegistry().getClassLoadingHooks();
-		for (int i = 0; i < hooks.length; i++)
-			hooks[i].initializedClassLoader(classloader, data);
-	}
-
-	/**
-	 * Closes all the classpath entry resources for this classpath manager.
-	 *
-	 */
-	public void close() {
-		if (entries != null) {
-			for (int i = 0; i < entries.length; i++) {
-				if (entries[i] != null) {
-					try {
-						entries[i].getBundleFile().close();
-					} catch (IOException e) {
-						data.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, data.getBundle(), e);
-					}
-				}
-			}
-		}
-		for (int i = 0; i < fragments.length; i++)
-			fragments[i].close();
-	}
-
-	/**
-	 * Attaches the specified sourcedata, sourcedomain and sourceclasspath to this classpath manager
-	 * @param sourcedata the source fragment BundleData that should be attached.
-	 * @param sourcedomain the source fragment domain that should be attached.
-	 * @param sourceclasspath the source fragment classpath that should be attached.
-	 */
-	public void attachFragment(BundleData sourcedata, ProtectionDomain sourcedomain, String[] sourceclasspath) {
-		try {
-			sourcedata.open(); /* make sure the BundleData is open */
-		} catch (IOException e) {
-			((BaseData) sourcedata).getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, ((BaseData) sourcedata).getBundle(), e);
-		}
-		ClasspathEntry[] fragEntries = buildClasspath(sourceclasspath, this, (BaseData) sourcedata, sourcedomain);
-		FragmentClasspath fragClasspath = new FragmentClasspath((BaseData) sourcedata, fragEntries, sourcedomain);
-		insertFragment(fragClasspath);
-	}
-
-	private synchronized void insertFragment(FragmentClasspath fragClasspath) {
-		FragmentClasspath[] newFragments = new FragmentClasspath[fragments.length + 1];
-		// Find a place in the fragment list to insert this fragment.
-		long fragID = fragClasspath.getBundleData().getBundleID();
-		int insert = 0;
-		for (int i = 0; i < fragments.length; i++) {
-			long otherID = fragments[i].getBundleData().getBundleID();
-			if (insert == 0 && fragID < otherID) {
-				newFragments[i] = fragClasspath;
-				insert = 1;
-			}
-			newFragments[i + insert] = fragments[i];
-		}
-		// This fragment has the highest ID; put it at the end of the list.
-		if (insert == 0)
-			newFragments[fragments.length] = fragClasspath;
-		fragments = newFragments;
-	}
-
-	private static ClasspathEntry[] buildClasspath(String[] cp, ClasspathManager hostloader, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		ArrayList result = new ArrayList(cp.length);
-		// add the regular classpath entries.
-		for (int i = 0; i < cp.length; i++)
-			findClassPathEntry(result, cp[i], hostloader, sourcedata, sourcedomain);
-		return (ClasspathEntry[]) result.toArray(new ClasspathEntry[result.size()]);
-	}
-
-	/**
-	 * Finds all the ClasspathEntry objects for the requested classpath.  This method will first call all
-	 * the configured class loading hooks {@link ClassLoadingHook#addClassPathEntry(ArrayList, String, ClasspathManager, BaseData, ProtectionDomain)}
-	 * methods.  This allows class loading hooks to add additional ClasspathEntry objects to the result for the 
-	 * requested classpath.  Then the local host classpath entries and attached fragment classpath entries are
-	 * searched.
-	 * @param result a list of ClasspathEntry objects.  This list is used to add new ClasspathEntry objects to.
-	 * @param cp the requested classpath.
-	 * @param hostloader the host classpath manager for the classpath
-	 * @param sourcedata the source EquionoxData to search for the classpath
-	 * @param sourcedomain the source domain to used by the new ClasspathEntry
-	 */
-	public static void findClassPathEntry(ArrayList result, String cp, ClasspathManager hostloader, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		// look in classpath manager hooks first
-		ClassLoadingHook[] loaderHooks = sourcedata.getAdaptor().getHookRegistry().getClassLoadingHooks();
-		boolean hookAdded = false;
-		for (int i = 0; i < loaderHooks.length; i++)
-			hookAdded |= loaderHooks[i].addClassPathEntry(result, cp, hostloader, sourcedata, sourcedomain);
-		if (!addClassPathEntry(result, cp, hostloader, sourcedata, sourcedomain) && !hookAdded) {
-			BundleException be = new BundleException(NLS.bind(AdaptorMsg.BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION, cp, sourcedata.getLocation()), BundleException.MANIFEST_ERROR);
-			sourcedata.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.INFO, sourcedata.getBundle(), be);
-		}
-	}
-
-	/**
-	 * Adds a ClasspathEntry for the requested classpath to the result.  The local host classpath entries
-	 * are searched first and then attached fragments classpath entries are searched.  The search stops once the first
-	 * classpath entry is found.
-	 * @param result a list of ClasspathEntry objects.  This list is used to add new ClasspathEntry objects to.
-	 * @param cp the requested classpath.
-	 * @param hostloader the host classpath manager for the classpath
-	 * @param sourcedata the source EquionoxData to search for the classpath
-	 * @param sourcedomain the source domain to used by the new ClasspathEntry
-	 * @return true if a ClasspathEntry was added to the result
-	 */
-	public static boolean addClassPathEntry(ArrayList result, String cp, ClasspathManager hostloader, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		if (cp.equals(".")) { //$NON-NLS-1$
-			result.add(hostloader.createClassPathEntry(sourcedata.getBundleFile(), sourcedomain, sourcedata));
-			return true;
-		}
-		ClasspathEntry element = hostloader.getClasspath(cp, sourcedata, sourcedomain);
-		if (element != null) {
-			result.add(element);
-			return true;
-		}
-		// need to check in fragments for the classpath entry.
-		// only check for fragments if the data is the host's data.
-		if (hostloader.data == sourcedata)
-			for (int i = 0; i < hostloader.fragments.length; i++) {
-				FragmentClasspath fragCP = hostloader.fragments[i];
-				element = hostloader.getClasspath(cp, fragCP.getBundleData(), fragCP.getDomain());
-				if (element != null) {
-					result.add(element);
-					return true;
-				}
-			}
-		return false;
-	}
-
-	/**
-	 * Creates a new ClasspathEntry object for the requested classpath if the source exists.
-	 * @param cp the requested classpath.
-	 * @param sourcedata the source EquionoxData to search for the classpath
-	 * @param sourcedomain the source domain to used by the new ClasspathEntry
-	 * @return a new ClasspathEntry for the requested classpath or null if the source does not exist.
-	 */
-	public ClasspathEntry getClasspath(String cp, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		BundleFile bundlefile = null;
-		File file;
-		BundleEntry cpEntry = sourcedata.getBundleFile().getEntry(cp);
-		// check for internal library directories in a bundle jar file
-		if (cpEntry != null && cpEntry.getName().endsWith("/")) //$NON-NLS-1$
-			bundlefile = createBundleFile(cp, sourcedata);
-		// check for internal library jars
-		else if ((file = sourcedata.getBundleFile().getFile(cp, false)) != null)
-			bundlefile = createBundleFile(file, sourcedata);
-		if (bundlefile != null)
-			return createClassPathEntry(bundlefile, sourcedomain, sourcedata);
-		return null;
-	}
-
-	/**
-	 * Uses the requested classpath as an absolute path to locate a source for a new ClasspathEntry.
-	 * @param cp the requested classpath
-	 * @param sourcedata the source EquionoxData to search for the classpath
-	 * @param sourcedomain the source domain to used by the new ClasspathEntry
-	 * @return a classpath entry which uses an absolut path as a source
-	 */
-	public ClasspathEntry getExternalClassPath(String cp, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		File file = new File(cp);
-		if (!file.isAbsolute())
-			return null;
-		BundleFile bundlefile = createBundleFile(file, sourcedata);
-		if (bundlefile != null)
-			return createClassPathEntry(bundlefile, sourcedomain, sourcedata);
-		return null;
-	}
-
-	private static BundleFile createBundleFile(Object content, BaseData sourcedata) {
-		if (content == null || (content instanceof File && !((File) content).exists()))
-			return null;
-		try {
-			return sourcedata.getAdaptor().createBundleFile(content, sourcedata);
-		} catch (IOException e) {
-			sourcedata.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, sourcedata.getBundle(), e);
-		}
-		return null;
-	}
-
-	private ClasspathEntry createClassPathEntry(BundleFile bundlefile, ProtectionDomain cpDomain, BaseData data) {
-		ClasspathEntry entry = classloader.createClassPathEntry(bundlefile, cpDomain);
-		entry.setBaseData(data);
-		Object domain = entry.getDomain();
-		if (domain instanceof BundleProtectionDomain)
-			((BundleProtectionDomain) domain).setBundle(data.getBundle());
-		return entry;
-	}
-
-	/**
-	 * Finds a local resource by searching the ClasspathEntry objects of the classpath manager.
-	 * This method will first call all the configured class loading stats hooks 
-	 * {@link ClassLoadingStatsHook#preFindLocalResource(String, ClasspathManager)} methods.  Then it 
-	 * will search for the resource.  Finally it will call all the configured class loading stats hooks
-	 * {@link ClassLoadingStatsHook#postFindLocalResource(String, URL, ClasspathManager)} methods.
-	 * @param resource the requested resource name.
-	 * @return the requested resource URL or null if the resource does not exist
-	 */
-	public URL findLocalResource(String resource) {
-		ClassLoadingStatsHook[] hooks = data.getAdaptor().getHookRegistry().getClassLoadingStatsHooks();
-		for (int i = 0; i < hooks.length; i++)
-			hooks[i].preFindLocalResource(resource, this);
-		URL result = null;
-		try {
-			result = findLocalResourceImpl(resource, -1);
-			return result;
-		} finally {
-			for (int i = 0; i < hooks.length; i++)
-				hooks[i].postFindLocalResource(resource, result, this);
-		}
-	}
-
-	private URL findLocalResourceImpl(String resource, int classPathIndex) {
-		URL result = null;
-		int curIndex = 0;
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				result = findResourceImpl(resource, entries[i].getBundleFile(), curIndex);
-				if (result != null && (classPathIndex == -1 || classPathIndex == curIndex))
-					return result;
-			}
-			curIndex++;
-		}
-		// look in fragments
-		for (int i = 0; i < fragments.length; i++) {
-			ClasspathEntry[] fragEntries = fragments[i].getEntries();
-			for (int j = 0; j < fragEntries.length; j++) {
-				result = findResourceImpl(resource, fragEntries[j].getBundleFile(), curIndex);
-				if (result != null && (classPathIndex == -1 || classPathIndex == curIndex))
-					return result;
-				curIndex++;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Finds the local resources by searching the ClasspathEntry objects of the classpath manager.
-	 * @param resource the requested resource name.
-	 * @return an enumeration of the the requested resources or null if the resources do not exist
-	 */
-	public Enumeration findLocalResources(String resource) {
-		Vector resources = new Vector(6); // use a Vector instead of ArrayList because we need an enumeration
-		int classPathIndex = 0;
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				URL url = findResourceImpl(resource, entries[i].getBundleFile(), classPathIndex);
-				if (url != null)
-					resources.addElement(url);
-			}
-			classPathIndex++;
-		}
-		// look in fragments
-		for (int i = 0; i < fragments.length; i++) {
-			ClasspathEntry[] fragEntries = fragments[i].getEntries();
-			for (int j = 0; j < fragEntries.length; j++) {
-				URL url = findResourceImpl(resource, fragEntries[j].getBundleFile(), classPathIndex);
-				if (url != null)
-					resources.addElement(url);
-				classPathIndex++;
-			}
-		}
-		if (resources.size() > 0)
-			return resources.elements();
-		return null;
-	}
-
-	private URL findResourceImpl(String name, BundleFile bundlefile, int index) {
-		return bundlefile.getResourceURL(name, data, index);
-	}
-
-	/**
-	 * Finds a local entry by searching the ClasspathEntry objects of the classpath manager.
-	 * @param path the requested entry path.
-	 * @return the requested entry or null if the entry does not exist
-	 */
-	public BundleEntry findLocalEntry(String path) {
-		return findLocalEntry(path, -1);
-	}
-
-	/**
-	 * Finds a local entry by searching the ClasspathEntry with the specified
-	 * class path index.
-	 * @param path the requested entry path.
-	 * @param classPathIndex the index of the ClasspathEntry to search
-	 * @return the requested entry or null if the entry does not exist
-	 */
-	public BundleEntry findLocalEntry(String path, int classPathIndex) {
-		BundleEntry result = null;
-		int curIndex = 0;
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				result = findEntryImpl(path, entries[i].getBundleFile());
-				if (result != null && (classPathIndex == -1 || classPathIndex == curIndex))
-					return result;
-			}
-			curIndex++;
-		}
-		// look in fragments
-		for (int i = 0; i < fragments.length; i++) {
-			ClasspathEntry[] fragEntries = fragments[i].getEntries();
-			for (int j = 0; j < fragEntries.length; j++) {
-				result = findEntryImpl(path, fragEntries[j].getBundleFile());
-				if (result != null && (classPathIndex == -1 || classPathIndex == curIndex))
-					return result;
-				curIndex++;
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * Finds the local entries by searching the ClasspathEntry objects of the classpath manager.
-	 * @param path the requested entry path.
-	 * @return an enumeration of the the requested entries or null if the entries do not exist
-	 */
-	public Enumeration findLocalEntries(String path) {
-		Vector objects = new Vector(6); // use a Vector instead of ArrayList because we need an enumeration
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				BundleEntry result = findEntryImpl(path, entries[i].getBundleFile());
-				if (result != null)
-					objects.addElement(result);
-			}
-		}
-		// look in fragments
-		for (int i = 0; i < fragments.length; i++) {
-			ClasspathEntry[] fragEntries = fragments[i].getEntries();
-			for (int j = 0; j < fragEntries.length; j++) {
-				BundleEntry result = findEntryImpl(path, fragEntries[j].getBundleFile());
-				if (result != null)
-					objects.addElement(result);
-			}
-		}
-		if (objects.size() > 0)
-			return objects.elements();
-		return null;
-	}
-
-	private BundleEntry findEntryImpl(String path, BundleFile bundleFile) {
-		return bundleFile.getEntry(path);
-	}
-
-	/**
-	 * Finds a local class by searching the ClasspathEntry objects of the classpath manager.
-	 * This method will first call all the configured class loading stats hooks 
-	 * {@link ClassLoadingStatsHook#preFindLocalClass(String, ClasspathManager)} methods.  Then it 
-	 * will search for the class.  If a class is found then all configured class loading hooks
-	 * {@link ClassLoadingHook#processClass(String, byte[], ClasspathEntry, BundleEntry, ClasspathManager)}
-	 * methods will be called.  The class is then defined; if successfully then all configured class loading 
-	 * stats hooks {@link ClassLoadingStatsHook#recordClassDefine(String, Class, byte[], ClasspathEntry, BundleEntry, ClasspathManager)}
-	 * methods are called.  Finally all the configured class loading stats hooks
-	 * {@link ClassLoadingStatsHook#postFindLocalClass(String, Class, ClasspathManager)} methods are called.
-	 * @param classname the requested class name.
-	 * @return the requested class
-	 * @throws ClassNotFoundException if the class does not exist
-	 */
-	public Class findLocalClass(String classname) throws ClassNotFoundException {
-		Class result = null;
-		ClassLoadingStatsHook[] hooks = data.getAdaptor().getHookRegistry().getClassLoadingStatsHooks();
-		try {
-			for (int i = 0; i < hooks.length; i++)
-				hooks[i].preFindLocalClass(classname, this);
-			if (LOCK_CLASSNAME || isParallelClassLoader)
-				result = findLocalClass_LockClassName(classname, hooks);
-			else
-				result = findLocalClass_LockClassLoader(classname, hooks);
-			return result;
-		} finally {
-			for (int i = 0; i < hooks.length; i++)
-				hooks[i].postFindLocalClass(classname, result, this);
-		}
-	}
-
-	private Class findLocalClass_LockClassName(String classname, ClassLoadingStatsHook[] hooks) throws ClassNotFoundException {
-		boolean initialLock = lockClassName(classname);
-		try {
-			return findLocalClassImpl(classname, hooks);
-		} finally {
-			if (initialLock)
-				unlockClassName(classname);
-		}
-	}
-
-	private Class findLocalClass_LockClassLoader(String classname, ClassLoadingStatsHook[] hooks) throws ClassNotFoundException {
-		synchronized (classloader) {
-			return findLocalClassImpl(classname, hooks);
-		}
-	}
-
-	private Class findLocalClassImpl(String classname, ClassLoadingStatsHook[] hooks) throws ClassNotFoundException {
-		// must call findLoadedClass here even if it was called earlier,
-		// the findLoadedClass and defineClass calls must be atomic
-		Class result = classloader.publicFindLoaded(classname);
-		if (result != null)
-			return result;
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				result = findClassImpl(classname, entries[i], hooks);
-				if (result != null)
-					return result;
-			}
-		}
-		// look in fragments.
-		for (int i = 0; i < fragments.length; i++) {
-			ClasspathEntry[] fragEntries = fragments[i].getEntries();
-			for (int j = 0; j < fragEntries.length; j++) {
-				result = findClassImpl(classname, fragEntries[j], hooks);
-				if (result != null)
-					return result;
-			}
-		}
-		throw new ClassNotFoundException(classname);
-	}
-
-	private boolean lockClassName(String classname) throws ClassNotFoundException {
-		synchronized (classNameLocks) {
-			Object lockingThread = classNameLocks.get(classname);
-			Thread current = Thread.currentThread();
-			if (lockingThread == current)
-				return false;
-			while (true) {
-				if (lockingThread == null) {
-					classNameLocks.put(classname, current);
-					return true;
-				}
-				try {
-					classNameLocks.wait();
-					lockingThread = classNameLocks.get(classname);
-				} catch (InterruptedException e) {
-					current.interrupt();
-					throw new ClassNotFoundException(classname, e);
-				}
-			}
-		}
-	}
-
-	private void unlockClassName(String classname) {
-		synchronized (classNameLocks) {
-			classNameLocks.remove(classname);
-			classNameLocks.notifyAll();
-		}
-	}
-
-	private Class findClassImpl(String name, ClasspathEntry classpathEntry, ClassLoadingStatsHook[] hooks) {
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("BundleClassLoader[" + classpathEntry.getBundleFile() + "].findClass(" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
-		String filename = name.replace('.', '/').concat(".class"); //$NON-NLS-1$
-		BundleEntry entry = classpathEntry.getBundleFile().getEntry(filename);
-		if (entry == null)
-			return null;
-
-		byte[] classbytes;
-		try {
-			classbytes = entry.getBytes();
-		} catch (IOException e) {
-			if (Debug.DEBUG && Debug.DEBUG_LOADER)
-				Debug.println("  IOException reading " + filename + " from " + classpathEntry.getBundleFile()); //$NON-NLS-1$ //$NON-NLS-2$
-			return null;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_LOADER) {
-			Debug.println("  read " + classbytes.length + " bytes from " + classpathEntry.getBundleFile() + "/" + filename); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			Debug.println("  defining class " + name); //$NON-NLS-1$
-		}
-
-		try {
-			return defineClass(name, classbytes, classpathEntry, entry, hooks);
-		} catch (Error e) {
-			if (Debug.DEBUG && Debug.DEBUG_LOADER)
-				Debug.println("  error defining class " + name); //$NON-NLS-1$
-			throw e;
-		}
-	}
-
-	/**
-	 * Defines the specified class.  This method will first call all the configured class loading hooks 
-	 * {@link ClassLoadingHook#processClass(String, byte[], ClasspathEntry, BundleEntry, ClasspathManager)} 
-	 * methods.  Then it will call the {@link BaseClassLoader#defineClass(String, byte[], ClasspathEntry, BundleEntry)}
-	 * method to define the class. After that, the class loading stat hooks are called to announce the class
-	 * definition.
-	 * @param name the name of the class to define
-	 * @param classbytes the class bytes
-	 * @param classpathEntry the classpath entry used to load the class bytes
-	 * @param entry the BundleEntry used to load the class bytes
-	 * @param statsHooks the class loading stat hooks
-	 * @return the defined class
-	 */
-	private Class defineClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClassLoadingStatsHook[] statsHooks) {
-		ClassLoadingHook[] hooks = data.getAdaptor().getHookRegistry().getClassLoadingHooks();
-		byte[] modifiedBytes = classbytes;
-		for (int i = 0; i < hooks.length; i++) {
-			modifiedBytes = hooks[i].processClass(name, classbytes, classpathEntry, entry, this);
-			if (modifiedBytes != null)
-				classbytes = modifiedBytes;
-		}
-
-		Class result = classloader.defineClass(name, classbytes, classpathEntry, entry);
-
-		for (int i = 0; i < statsHooks.length; i++)
-			statsHooks[i].recordClassDefine(name, result, classbytes, classpathEntry, entry, this);
-		return result;
-	}
-
-	/**
-	 * Returns the host base data for this classpath manager
-	 * @return the host base data for this classpath manager
-	 */
-	public BaseData getBaseData() {
-		return data;
-	}
-
-	/**
-	 * Returns the fragment classpaths of this classpath manager
-	 * @return the fragment classpaths of this classpath manager
-	 */
-	public FragmentClasspath[] getFragmentClasspaths() {
-		return fragments;
-	}
-
-	/**
-	 * Returns the host classpath entries for this classpath manager
-	 * @return the host classpath entries for this classpath manager
-	 */
-	public ClasspathEntry[] getHostClasspathEntries() {
-		return entries;
-	}
-
-	/**
-	 * Returns the base class loader used by this classpath manager
-	 * @return the base class loader used by this classpath manager
-	 */
-	public BaseClassLoader getBaseClassLoader() {
-		return classloader;
-	}
-
-	public String findLibrary(String libname) {
-		synchronized (this) {
-			if (loadedLibraries == null)
-				loadedLibraries = new ArrayList(1);
-		}
-		synchronized (loadedLibraries) {
-			// we assume that each classloader will load a small number of of libraries
-			// instead of wasting space with a map we iterate over our collection of found libraries
-			// each element is a String[2], each array is {"libname", "libpath"}
-			for (Iterator libs = loadedLibraries.iterator(); libs.hasNext();) {
-				String[] libNameResult = (String[]) libs.next();
-				if (libNameResult[0].equals(libname))
-					return libNameResult[1];
-			}
-
-			String result = classloader.getDelegate().findLibrary(libname);
-			if (result != null)
-				loadedLibraries.add(new String[] {libname, result});
-			return result;
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/FragmentClasspath.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/FragmentClasspath.java
deleted file mode 100644
index db25e25..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/FragmentClasspath.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.loader;
-
-import java.io.IOException;
-import java.security.ProtectionDomain;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.osgi.framework.FrameworkEvent;
-
-/**
- * A FragmentClasspath contains all the <code>ClasspathEntry</code> objects for a fragment
- * <code>BaseData</code>.
- * @since 3.2
- */
-public class FragmentClasspath {
-	private BaseData bundledata;
-	// Note that PDE has internal dependency on this field type/name (bug 267238)
-	private ClasspathEntry[] entries;
-	private ProtectionDomain domain;
-
-	public FragmentClasspath(BaseData bundledata, ClasspathEntry[] entries, ProtectionDomain domain) {
-		this.bundledata = bundledata;
-		this.entries = entries;
-		this.domain = domain;
-	}
-
-	/**
-	 * Returns the fragment BaseData for this FragmentClasspath
-	 * @return the fragment BaseData for this FragmentClasspath
-	 */
-	public BaseData getBundleData() {
-		return bundledata;
-	}
-
-	/**
-	 * Returns the fragment domain for this FragmentClasspath
-	 * @return the fragment domain for this FragmentClasspath
-	 */
-	public ProtectionDomain getDomain() {
-		return domain;
-	}
-
-	/**
-	 * Returns the fragment classpath entries for this FragmentClasspath
-	 * @return the fragment classpath entries for this FragmentClasspath
-	 */
-	public ClasspathEntry[] getEntries() {
-		return entries;
-	}
-
-	/**
-	 * Closes all the classpath entry resources for this FragmentClasspath.
-	 *
-	 */
-	public void close() {
-		for (int i = 0; i < entries.length; i++) {
-			try {
-				entries[i].getBundleFile().close();
-			} catch (IOException e) {
-				bundledata.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, bundledata.getBundle(), e);
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ParallelClassLoader.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ParallelClassLoader.java
deleted file mode 100644
index f55c2a1..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ParallelClassLoader.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.baseadaptor.loader;
-
-/**
- * A parallel class loader.  Parallel class loaders are thread safe class loaders
- * which can handle multiple threads loading classes and resources from them at 
- * the same time.  This is important for OSGi class loaders because the 
- * class loader delegate in OSGi is not strictly hierarchical, instead the 
- * delegation is grid based and may have cycles.
- * <p>
- * The {@link ClasspathManager} handles parallel capable class loaders 
- * differently from other class loaders.  For parallel capable 
- * class loaders when {@link ClasspathManager#findLocalClass(String)} is 
- * called a lock will be obtained for the class name being searched while 
- * calling {@link BaseClassLoader#publicFindLoaded(String)} and 
- * {@link BaseClassLoader#defineClass(String, byte[], ClasspathEntry, org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry)}.
- * This prevents other threads from trying to searching for the same class at the
- * same time.  For other class loaders the class loader lock is obtained 
- * instead.  This prevents other threads from trying to search for any 
- * class while the lock is held. 
- * </p>
- * <p>
- * <b>Note:</b> This interface is part of an interim API that is still under 
- * development. It is being made available at this early stage to solicit feedback 
- * from pioneering adopters on the understanding that any code that uses this API will may 
- * be broken (repeatedly) as the API evolves.
- * </p>
- * @since 3.5
- */
-public interface ParallelClassLoader extends BaseClassLoader {
-	/**
-	 * Indicates if this class loader is parallel capable.  Even
-	 * if a class loader is able to be parallel capable there are some
-	 * restrictions imposed by the VM which may prevent a class loader 
-	 * from being parallel capable.  For example, some VMs may lock 
-	 * the class loader natively before delegating to a class loader.
-	 * This type of locking will prevent a class loader from being 
-	 * parallel capable.
-	 * @return true if this class loader is parallel capable; false otherwise.
-	 */
-	boolean isParallelCapable();
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleResourceHandler.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleResourceHandler.java
deleted file mode 100644
index ac7ae6e..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleResourceHandler.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.net.*;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.loader.BaseClassLoader;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.protocol.ProtocolActivator;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorMsg;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * URLStreamHandler the bundleentry and bundleresource protocols.
- */
-
-public abstract class BundleResourceHandler extends URLStreamHandler implements ProtocolActivator {
-	public static final String SECURITY_CHECKED = "SECURITY_CHECKED"; //$NON-NLS-1$
-	public static final String SECURITY_UNCHECKED = "SECURITY_UNCHECKED"; //$NON-NLS-1$
-	public static final String BID_FWKID_SEPARATOR = ".fwk"; //$NON-NLS-1$
-	private BaseAdaptor adaptor;
-	protected BundleEntry bundleEntry;
-
-	/**
-	 * Constructor for a bundle protocol resource URLStreamHandler.
-	 */
-	public BundleResourceHandler() {
-		this(null, null);
-	}
-
-	public BundleResourceHandler(BundleEntry bundleEntry, BaseAdaptor adaptor) {
-		this.bundleEntry = bundleEntry;
-		this.adaptor = adaptor;
-	}
-
-	public void start(BundleContext context, FrameworkAdaptor baseAdaptor) {
-		this.adaptor = (BaseAdaptor) baseAdaptor;
-	}
-
-	/** 
-	 * Parse reference URL. 
-	 */
-	protected void parseURL(URL url, String str, int start, int end) {
-		if (end < start)
-			return;
-		if (url.getPath() != null)
-			// A call to a URL constructor has been made that uses an authorized URL as its context.
-			// Null out bundleEntry because it will not be valid for the new path
-			bundleEntry = null;
-		String spec = ""; //$NON-NLS-1$
-		if (start < end)
-			spec = str.substring(start, end);
-		end -= start;
-		//Default is to use path and bundleId from context
-		String path = url.getPath();
-		String host = url.getHost();
-		int resIndex = url.getPort();
-		if (resIndex < 0) // -1 indicates port was not set; must default to 0
-			resIndex = 0;
-		int pathIdx = 0;
-		if (spec.startsWith("//")) { //$NON-NLS-1$
-			int bundleIdIdx = 2;
-			pathIdx = spec.indexOf('/', bundleIdIdx);
-			if (pathIdx == -1) {
-				pathIdx = end;
-				// Use default
-				path = ""; //$NON-NLS-1$
-			}
-			int bundleIdEnd = spec.indexOf(':', bundleIdIdx);
-			if (bundleIdEnd > pathIdx || bundleIdEnd == -1)
-				bundleIdEnd = pathIdx;
-			if (bundleIdEnd < pathIdx - 1)
-				try {
-					resIndex = Integer.parseInt(spec.substring(bundleIdEnd + 1, pathIdx));
-				} catch (NumberFormatException e) {
-					// do nothing; results in resIndex == 0
-				}
-			host = spec.substring(bundleIdIdx, bundleIdEnd);
-		}
-		if (pathIdx < end && spec.charAt(pathIdx) == '/')
-			path = spec.substring(pathIdx, end);
-		else if (end > pathIdx) {
-			if (path == null || path.equals("")) //$NON-NLS-1$
-				path = "/"; //$NON-NLS-1$
-			int last = path.lastIndexOf('/') + 1;
-			if (last == 0)
-				path = spec.substring(pathIdx, end);
-			else
-				path = path.substring(0, last) + spec.substring(pathIdx, end);
-		}
-		if (path == null)
-			path = ""; //$NON-NLS-1$
-		//modify path if there's any relative references
-		// see RFC2396 Section 5.2
-		// Note: For ".." references above the root the approach taken is removing them from the resolved path
-		if (path.endsWith("/.") || path.endsWith("/..")) //$NON-NLS-1$ //$NON-NLS-2$
-			path = path + '/';
-		int dotIndex;
-		while ((dotIndex = path.indexOf("/./")) >= 0) //$NON-NLS-1$
-			path = path.substring(0, dotIndex + 1) + path.substring(dotIndex + 3);
-		while ((dotIndex = path.indexOf("/../")) >= 0) { //$NON-NLS-1$
-			if (dotIndex != 0)
-				path = path.substring(0, path.lastIndexOf('/', dotIndex - 1)) + path.substring(dotIndex + 3);
-			else
-				path = path.substring(dotIndex + 3);
-		}
-		while ((dotIndex = path.indexOf("//")) >= 0) //$NON-NLS-1$
-			path = path.substring(0, dotIndex + 1) + path.substring(dotIndex + 2);
-
-		// Check the permission of the caller to see if they
-		// are allowed access to the resource.
-		String authorized = SECURITY_UNCHECKED;
-		long bundleId = getBundleID(host);
-		Bundle bundle = adaptor == null ? null : adaptor.getContext().getBundle(bundleId);
-		if (checkAuthorization(bundle))
-			authorized = SECURITY_CHECKED;
-		// Always force the use of the hash from the adaptor
-		if (adaptor != null)
-			host = Long.toString(bundleId) + BID_FWKID_SEPARATOR + Integer.toString(adaptor.hashCode());
-		// Setting the authority portion of the URL to SECURITY_ATHORIZED
-		// ensures that this URL was created by using this parseURL
-		// method.  The openConnection method will only open URLs
-		// that have the authority set to this.
-		setURL(url, url.getProtocol(), host, resIndex, authorized, null, path, null, url.getRef());
-	}
-
-	/**
-	 * Establishes a connection to the resource specified by <code>URL</code>.
-	 * Since different protocols may have unique ways of connecting, it must be
-	 * overridden by the subclass.
-	 *
-	 * @return java.net.URLConnection
-	 * @param url java.net.URL
-	 *
-	 * @exception	IOException 	thrown if an IO error occurs during connection establishment
-	 */
-	protected URLConnection openConnection(URL url) throws IOException {
-		if (bundleEntry != null) // if the bundleEntry is not null then return quick
-			return (new BundleURLConnection(url, bundleEntry));
-
-		String host = url.getHost();
-		if (host == null) {
-			throw new IOException(NLS.bind(AdaptorMsg.URL_NO_BUNDLE_ID, url.toExternalForm()));
-		}
-		AbstractBundle bundle = null;
-		long bundleID;
-		try {
-			bundleID = getBundleID(host);
-		} catch (NumberFormatException nfe) {
-			throw (MalformedURLException) new MalformedURLException(NLS.bind(AdaptorMsg.URL_INVALID_BUNDLE_ID, host)).initCause(nfe);
-		}
-		bundle = adaptor == null ? null : (AbstractBundle) adaptor.getContext().getBundle(bundleID);
-		if (bundle == null)
-			throw new IOException(NLS.bind(AdaptorMsg.URL_NO_BUNDLE_FOUND, url.toExternalForm()));
-		// check to make sure that this URL was created using the
-		// parseURL method.  This ensures the security check was done
-		// at URL construction.
-		if (!url.getAuthority().equals(SECURITY_CHECKED)) {
-			// No admin security check was made better check now.
-			checkAuthorization(bundle);
-		}
-		return (new BundleURLConnection(url, findBundleEntry(url, bundle)));
-	}
-
-	/**
-	 * Finds the bundle entry for this protocal.  This is handled
-	 * differently for Bundle.gerResource() and Bundle.getEntry()
-	 * because getResource uses the bundle classloader and getEntry
-	 * only used the base bundle file.
-	 * @param url The URL to find the BundleEntry for.
-	 * @return the bundle entry
-	 */
-	abstract protected BundleEntry findBundleEntry(URL url, AbstractBundle bundle) throws IOException;
-
-	/**
-	 * Converts a bundle URL to a String.
-	 *
-	 * @param   url   the URL.
-	 * @return  a string representation of the URL.
-	 */
-	protected String toExternalForm(URL url) {
-		StringBuffer result = new StringBuffer(url.getProtocol());
-		result.append("://"); //$NON-NLS-1$
-
-		String host = url.getHost();
-		if ((host != null) && (host.length() > 0))
-			result.append(host);
-		int index = url.getPort();
-		if (index > 0)
-			result.append(':').append(index);
-
-		String path = url.getPath();
-		if (path != null) {
-			if ((path.length() > 0) && (path.charAt(0) != '/')) /* if name doesn't have a leading slash */
-			{
-				result.append("/"); //$NON-NLS-1$
-			}
-
-			result.append(path);
-		}
-		String ref = url.getRef();
-		if (ref != null && ref.length() > 0)
-			result.append('#').append(ref);
-
-		return (result.toString());
-	}
-
-	protected int hashCode(URL url) {
-		int hash = 0;
-		String protocol = url.getProtocol();
-		if (protocol != null)
-			hash += protocol.hashCode();
-
-		String host = url.getHost();
-		if (host != null)
-			hash += host.hashCode();
-
-		hash += url.getPort();
-
-		String path = url.getPath();
-		if (path != null)
-			hash += path.hashCode();
-
-		if (adaptor != null)
-			hash += adaptor.hashCode();
-		return hash;
-	}
-
-	protected boolean equals(URL url1, URL url2) {
-		return sameFile(url1, url2);
-	}
-
-	protected synchronized InetAddress getHostAddress(URL url) {
-		return null;
-	}
-
-	protected boolean hostsEqual(URL url1, URL url2) {
-		String host1 = url1.getHost();
-		String host2 = url2.getHost();
-		if (host1 != null && host2 != null)
-			return host1.equalsIgnoreCase(host2);
-		return (host1 == null && host2 == null);
-	}
-
-	protected boolean sameFile(URL url1, URL url2) {
-		// do a hashcode test to allow each handler to check the adaptor first
-		if (url1.hashCode() != url2.hashCode())
-			return false;
-		String p1 = url1.getProtocol();
-		String p2 = url2.getProtocol();
-		if (!((p1 == p2) || (p1 != null && p1.equalsIgnoreCase(p2))))
-			return false;
-
-		if (!hostsEqual(url1, url2))
-			return false;
-
-		if (url1.getPort() != url2.getPort())
-			return false;
-
-		String path1 = url1.getPath();
-		String path2 = url2.getPath();
-		if (!((path1 == path2) || (path1 != null && path1.equals(path2))))
-			return false;
-
-		return true;
-		// note that the authority is not checked here because it can be different for two
-		// URLs depending on how they were constructed.
-	}
-
-	protected boolean checkAuthorization(Bundle bundle) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm == null)
-			return true;
-		if (bundle == null)
-			return false;
-		sm.checkPermission(new AdminPermission(bundle, AdminPermission.RESOURCE));
-		return true;
-	}
-
-	protected static BaseClassLoader getBundleClassLoader(AbstractBundle bundle) {
-		BundleLoader loader = bundle.getBundleLoader();
-		if (loader == null)
-			return null;
-		return (BaseClassLoader) loader.createClassLoader();
-	}
-
-	private long getBundleID(String host) {
-		int dotIndex = host.indexOf('.');
-		return (dotIndex >= 0 && dotIndex < host.length() - 1) ? Long.parseLong(host.substring(0, dotIndex)) : Long.parseLong(host);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleURLConnection.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleURLConnection.java
deleted file mode 100644
index c0163c4..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleURLConnection.java
+++ /dev/null
@@ -1,131 +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.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorMsg;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * URLConnection for BundleClassLoader resources.
- */
-
-public class BundleURLConnection extends URLConnection {
-	/** BundleEntry that the URL is associated. */
-	protected final BundleEntry bundleEntry;
-
-	/** InputStream for this URLConnection. */
-	protected InputStream in;
-
-	/** content type for this URLConnection */
-	protected String contentType;
-
-	/**
-	 * Constructor for a BundleClassLoader resource URLConnection.
-	 *
-	 * @param url  URL for this URLConnection.
-	 * @param bundleEntry  BundleEntry that the URLConnection is associated.
-	 */
-	public BundleURLConnection(URL url, BundleEntry bundleEntry) {
-		super(url);
-
-		this.bundleEntry = bundleEntry;
-		this.in = null;
-		this.contentType = null;
-	}
-
-	public synchronized void connect() throws IOException {
-		if (!connected) {
-			if (bundleEntry != null) {
-				in = bundleEntry.getInputStream();
-				connected = true;
-			} else {
-				throw new IOException(NLS.bind(AdaptorMsg.RESOURCE_NOT_FOUND_EXCEPTION, url));
-			}
-		}
-	}
-
-	public int getContentLength() {
-		return ((int) bundleEntry.getSize());
-	}
-
-	public String getContentType() {
-		if (contentType == null) {
-			contentType = guessContentTypeFromName(bundleEntry.getName());
-
-			if (contentType == null) {
-				if (!connected) {
-					try {
-						connect();
-					} catch (IOException e) {
-						return (null);
-					}
-				}
-				try {
-					if (in.markSupported())
-						contentType = guessContentTypeFromStream(in);
-				} catch (IOException e) {
-					// do nothing
-				}
-			}
-		}
-
-		return (contentType);
-	}
-
-	public boolean getDoInput() {
-		return (true);
-	}
-
-	public boolean getDoOutput() {
-		return (false);
-	}
-
-	public InputStream getInputStream() throws IOException {
-		if (!connected) {
-			connect();
-		}
-
-		return (in);
-	}
-
-	public long getLastModified() {
-		long lastModified = bundleEntry.getTime();
-
-		if (lastModified == -1) {
-			return (0);
-		}
-
-		return (lastModified);
-	}
-
-	/**
-	 * Converts the URL to a common local URL protocol (i.e file: or jar: protocol)
-	 * @return the local URL using a common local protocol
-	 */
-	public URL getLocalURL() {
-		return bundleEntry.getLocalURL();
-	}
-
-	/**
-	 * Converts the URL to a URL that uses the file: protocol.  The content of this
-	 * URL may be downloaded or extracted onto the local filesystem to create a file URL.
-	 * @return the local URL that uses the file: protocol
-	 */
-	public URL getFileURL() {
-		return bundleEntry.getFileURL();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/ReferenceInputStream.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/ReferenceInputStream.java
deleted file mode 100644
index 9a10648..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/ReferenceInputStream.java
+++ /dev/null
@@ -1,38 +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.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-/**
- * InputStream subclass which provides a reference (via URL) to the data
- * rather than allowing the input stream to be directly read.
- */
-public class ReferenceInputStream extends InputStream {
-	protected URL reference;
-
-	public ReferenceInputStream(URL reference) {
-		this.reference = reference;
-	}
-
-	/* This method should not be called.
-	 */
-	public int read() throws IOException {
-		throw new IOException();
-	}
-
-	public URL getReference() {
-		return reference;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleentry/Handler.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleentry/Handler.java
deleted file mode 100644
index 5e39fdc..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleentry/Handler.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol.bundleentry;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.framework.internal.core.AbstractBundle;
-import org.eclipse.osgi.framework.internal.core.BundleResourceHandler;
-
-/**
- * URLStreamHandler the bundleentry protocol.
- */
-
-public class Handler extends BundleResourceHandler {
-
-	/**
-	 * Constructor for a bundle protocol resource URLStreamHandler.
-	 */
-	public Handler() {
-		super();
-	}
-
-	public Handler(BundleEntry bundleEntry, BaseAdaptor adaptor) {
-		super(bundleEntry, adaptor);
-	}
-
-	protected BundleEntry findBundleEntry(URL url, AbstractBundle bundle) throws IOException {
-		BaseData bundleData = (BaseData) bundle.getBundleData();
-		BundleEntry entry = bundleData.getBundleFile().getEntry(url.getPath());
-		if (entry == null)
-			throw new FileNotFoundException(url.getPath());
-		return entry;
-
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleresource/Handler.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleresource/Handler.java
deleted file mode 100644
index 4dd5c7c..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleresource/Handler.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol.bundleresource;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.loader.BaseClassLoader;
-import org.eclipse.osgi.baseadaptor.loader.ClasspathManager;
-import org.eclipse.osgi.framework.internal.core.AbstractBundle;
-import org.eclipse.osgi.framework.internal.core.BundleResourceHandler;
-
-/**
- * URLStreamHandler the bundleresource protocol.
- */
-
-public class Handler extends BundleResourceHandler {
-
-	/**
-	 * Constructor for a bundle protocol resource URLStreamHandler.
-	 */
-	public Handler() {
-		super();
-	}
-
-	public Handler(BundleEntry bundleEntry, BaseAdaptor adaptor) {
-		super(bundleEntry, adaptor);
-	}
-
-	protected BundleEntry findBundleEntry(URL url, AbstractBundle bundle) throws IOException {
-		BaseClassLoader classloader = getBundleClassLoader(bundle);
-		if (classloader == null)
-			throw new FileNotFoundException(url.getPath());
-		ClasspathManager cpManager = classloader.getClasspathManager();
-		BundleEntry entry = cpManager.findLocalEntry(url.getPath(), url.getPort());
-		if (entry == null)
-			// this isn't strictly needed but is kept to maintain compatibility
-			entry = cpManager.findLocalEntry(url.getPath());
-		if (entry == null)
-			throw new FileNotFoundException(url.getPath());
-		return entry;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/Handler.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/Handler.java
deleted file mode 100644
index f7b4b81..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/Handler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol.reference;
-
-import java.io.IOException;
-import java.net.*;
-
-/**
- * URLStreamHandler for reference protocol.  A reference URL is used to hold a 
- * reference to a local file URL.  A reference URL allows bundles to be installed
- * by reference.  This means the content of the bundle will not be copied.  Instead
- * the content of the bundle will be loaded from the reference location specified
- * by the reference URL.  The Framework only supports reference URLs that refer
- * to a local file URL.  For example: <p>
- * <pre>
- *     reference:file:/eclipse/plugins/org.eclipse.myplugin_1.0.0/
- *     reference:file:/eclispe/plugins/org.eclipse.mybundle_1.0.0.jar
- * </pre>
- */
-public class Handler extends URLStreamHandler {
-	public Handler() {
-	}
-
-	protected URLConnection openConnection(URL url) throws IOException {
-		return new ReferenceURLConnection(url);
-	}
-
-	protected void parseURL(URL url, String str, int start, int end) {
-		if (end < start) {
-			return;
-		}
-		String reference = (start < end) ? str.substring(start, end) : url.getPath();
-
-		setURL(url, url.getProtocol(), null, -1, null, null, reference, null, null);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/ReferenceURLConnection.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/ReferenceURLConnection.java
deleted file mode 100644
index 4c8ecc1..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/ReferenceURLConnection.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.protocol.reference;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import org.eclipse.osgi.framework.adaptor.FilePath;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.internal.core.ReferenceInputStream;
-
-/**
- * URLConnection for the reference protocol.
- */
-
-public class ReferenceURLConnection extends URLConnection {
-	protected URL reference;
-
-	protected ReferenceURLConnection(URL url) {
-		super(url);
-	}
-
-	public synchronized void connect() throws IOException {
-		if (!connected) {
-			// TODO assumes that reference URLs are always based on file: URLs.
-			// There are not solid usecases to the contrary. Yet.
-			// Construct the ref URL carefully so as to preserve UNC paths etc.
-			String path = url.getPath().substring(5);
-			File file = new File(path);
-
-			URL ref;
-			if (!file.isAbsolute()) {
-				String installPath = getInstallPath();
-				if (installPath != null)
-					file = makeAbsolute(installPath, file);
-			}
-
-			// Pre-check if file exists, if not, and it contains escape characters,
-			// try decoding the absolute path generated by makeAbsolute
-			if (!file.exists() && path.indexOf('%') >= 0) {
-				String decodePath = FrameworkProperties.decode(file.getAbsolutePath());
-				File f = new File(decodePath);
-				if (f.exists())
-					file = f;
-			}
-
-			ref = file.toURL();
-			checkRead(file);
-
-			reference = ref;
-		}
-	}
-
-	private void checkRead(File file) throws IOException {
-		if (!file.exists())
-			throw new FileNotFoundException(file.toString());
-		if (file.isFile()) {
-			// Try to open the file to ensure that this is possible: see bug 260217
-			// If access is denied, a FileNotFoundException with (access denied) message is thrown
-			// Here file.canRead() cannot be used, because on Windows it does not 
-			// return correct values - bug 6203387 in Sun's bug database
-			InputStream is = new FileInputStream(file);
-			is.close();
-		} else if (file.isDirectory()) {
-			// There is no straightforward way to check if a directory
-			// has read permissions - same issues for File.canRead() as above; 
-			// try to list the files in the directory
-			File[] files = file.listFiles();
-			// File.listFiles() returns null if the directory does not exist 
-			// (which is not the current case, because we check that it exists and is directory),
-			// or if an IO error occurred during the listing of the files, including if the
-			// access is denied 
-			if (files == null)
-				throw new FileNotFoundException(file.toString() + " (probably access denied)"); //$NON-NLS-1$
-		} else {
-			// TODO not sure if we can get here.
-		}
-	}
-
-	public boolean getDoInput() {
-		return true;
-	}
-
-	public boolean getDoOutput() {
-		return false;
-	}
-
-	public InputStream getInputStream() throws IOException {
-		if (!connected) {
-			connect();
-		}
-
-		return new ReferenceInputStream(reference);
-	}
-
-	private String getInstallPath() {
-		String installURL = FrameworkProperties.getProperty("osgi.install.area"); //$NON-NLS-1$
-		if (installURL == null)
-			return null;
-		if (!installURL.startsWith("file:")) //$NON-NLS-1$
-			return null;
-		// this is the safest way to create a File object off a file: URL
-		return installURL.substring(5);
-	}
-
-	private static File makeAbsolute(String base, File relative) {
-		if (relative.isAbsolute())
-			return relative;
-		return new File(new FilePath(base + relative.getPath()).toString());
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorMsg.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorMsg.java
deleted file mode 100644
index 3185ff2..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorMsg.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.baseadaptor;
-
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Commom framework adaptor messages.
- * <p>
- * Clients may not extend this class
- * </p>
- * @since 3.1
- */
-public class AdaptorMsg extends NLS {
-
-	public static String ADAPTER_FILEEXIST_EXCEPTION;
-	public static String ADAPTOR_DATA_AREA_NOT_SET;
-	public static String ADAPTOR_DIRECTORY_CREATE_EXCEPTION;
-	public static String ADAPTOR_DIRECTORY_EXCEPTION;
-	public static String ADAPTOR_DIRECTORY_REMOVE_EXCEPTION;
-	public static String ADAPTOR_ERROR_GETTING_MANIFEST;
-	public static String ADAPTOR_EXTENSION_IMPORT_ERROR;
-	public static String ADAPTOR_EXTENSION_NATIVECODE_ERROR;
-	public static String ADAPTOR_EXTENSION_REQUIRE_ERROR;
-	public static String ADAPTOR_STORAGE_EXCEPTION;
-	public static String ADAPTOR_STORAGE_INIT_FAILED_MSG;
-	public static String ADAPTOR_STORAGE_INIT_FAILED_TITLE;
-	public static String ADAPTOR_URL_CREATE_EXCEPTION;
-
-	public static String BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION;
-	public static String BUNDLE_CLASSPATH_PROPERTIES_ERROR;
-	public static String BUNDLE_NATIVECODE_EXCEPTION;
-	public static String BUNDLE_READ_EXCEPTION;
-
-	public static String MANIFEST_NOT_FOUND_EXCEPTION;
-
-	public static String RESOURCE_NOT_FOUND_EXCEPTION;
-
-	public static String SYSTEMBUNDLE_MISSING_MANIFEST;
-	public static String SYSTEMBUNDLE_NOTRESOLVED;
-
-	public static String URL_INVALID_BUNDLE_ID;
-	public static String URL_NO_BUNDLE_FOUND;
-	public static String URL_NO_BUNDLE_ID;
-
-	private static final String BUNDLE_NAME = "org.eclipse.osgi.internal.baseadaptor.ExternalMessages"; //$NON-NLS-1$	
-
-	static {
-		// initialize resource bundles
-		NLS.initializeMessages(BUNDLE_NAME, AdaptorMsg.class);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorUtil.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorUtil.java
deleted file mode 100644
index e998e76..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorUtil.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Dictionary;
-import java.util.Hashtable;
-import org.eclipse.core.runtime.internal.adaptor.EclipseAdaptorMsg;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.util.Headers;
-import org.eclipse.osgi.framework.util.ObjectPool;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * A utility class with some generally useful static methods for adaptor hook implementations
- */
-public class AdaptorUtil {
-	/** The NULL tag used in bundle storage */
-	public static final byte NULL = 0;
-	/** The OBJECT tag used in bundle storage */
-	public static final byte OBJECT = 1;
-
-	/**
-	 * Does a recursive copy of one directory to another.
-	 * @param inDir input directory to copy.
-	 * @param outDir output directory to copy to.
-	 * @throws IOException if any error occurs during the copy.
-	 */
-	public static void copyDir(File inDir, File outDir) throws IOException {
-		String[] files = inDir.list();
-		if (files != null && files.length > 0) {
-			outDir.mkdir();
-			for (int i = 0; i < files.length; i++) {
-				File inFile = new File(inDir, files[i]);
-				File outFile = new File(outDir, files[i]);
-				if (inFile.isDirectory()) {
-					copyDir(inFile, outFile);
-				} else {
-					InputStream in = new FileInputStream(inFile);
-					readFile(in, outFile);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Read a file from an InputStream and write it to the file system.
-	 *
-	 * @param in InputStream from which to read. This stream will be closed by this method.
-	 * @param file output file to create.
-	 * @exception IOException
-	 */
-	public static void readFile(InputStream in, File file) throws IOException {
-		FileOutputStream fos = null;
-		try {
-			fos = new FileOutputStream(file);
-
-			byte buffer[] = new byte[1024];
-			int count;
-			while ((count = in.read(buffer, 0, buffer.length)) > 0) {
-				fos.write(buffer, 0, count);
-			}
-		} catch (IOException e) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Unable to read file"); //$NON-NLS-1$
-				Debug.printStackTrace(e);
-			}
-
-			throw e;
-		} finally {
-			if (in != null) {
-				try {
-					in.close();
-				} catch (IOException ee) {
-					// nothing to do here
-				}
-			}
-
-			if (fos != null) {
-				try {
-					fos.close();
-				} catch (IOException ee) {
-					// nothing to do here
-				}
-			}
-		}
-	}
-
-	/**
-	 * This function performs the equivalent of "rm -r" on a file or directory.
-	 *
-	 * @param   file file or directory to delete
-	 * @return false is the specified files still exists, true otherwise.
-	 */
-	public static boolean rm(File file) {
-		if (file.exists()) {
-			if (file.isDirectory()) {
-				String list[] = file.list();
-				if (list != null) {
-					int len = list.length;
-					for (int i = 0; i < len; i++) {
-						// we are doing a lot of garbage collecting here
-						rm(new File(file, list[i]));
-					}
-				}
-			}
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				if (file.isDirectory()) {
-					Debug.println("rmdir " + file.getPath()); //$NON-NLS-1$
-				} else {
-					Debug.println("rm " + file.getPath()); //$NON-NLS-1$
-				}
-			}
-
-			boolean success = file.delete();
-
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				if (!success) {
-					Debug.println("  rm failed!!"); //$NON-NLS-1$
-				}
-			}
-
-			return (success);
-		}
-		return (true);
-	}
-
-	public static String readString(DataInputStream in, boolean intern) throws IOException {
-		byte type = in.readByte();
-		if (type == NULL)
-			return null;
-		return intern ? in.readUTF().intern() : in.readUTF();
-	}
-
-	public static void writeStringOrNull(DataOutputStream out, String string) throws IOException {
-		if (string == null)
-			out.writeByte(NULL);
-		else {
-			out.writeByte(OBJECT);
-			out.writeUTF(string);
-		}
-	}
-
-	public static Version loadVersion(DataInputStream in) throws IOException {
-		String versionString = readString(in, false);
-		try {
-			//return Version.parseVersion(versionString);
-			return (Version) ObjectPool.intern(Version.parseVersion(versionString));
-		} catch (IllegalArgumentException e) {
-			return new InvalidVersion(versionString);
-		}
-	}
-
-	/**
-	 * Register a service object.
-	 * @param name the service class name
-	 * @param service the service object
-	 * @param context the registering bundle context
-	 * @return the service registration object
-	 */
-	public static ServiceRegistration register(String name, Object service, BundleContext context) {
-		Hashtable properties = new Hashtable(7);
-		Dictionary headers = context.getBundle().getHeaders();
-		properties.put(Constants.SERVICE_VENDOR, headers.get(Constants.BUNDLE_VENDOR));
-		properties.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		properties.put(Constants.SERVICE_PID, context.getBundle().getBundleId() + "." + service.getClass().getName()); //$NON-NLS-1$
-		return context.registerService(name, service, properties);
-	}
-
-	public static Dictionary loadManifestFrom(BaseData bundledata) throws BundleException {
-		URL url = bundledata.getEntry(Constants.OSGI_BUNDLE_MANIFEST);
-		if (url == null)
-			return null;
-		try {
-			return Headers.parseManifest(url.openStream());
-		} catch (IOException e) {
-			throw new BundleException(NLS.bind(EclipseAdaptorMsg.ECLIPSE_DATA_ERROR_READING_MANIFEST, bundledata.getLocation()), BundleException.MANIFEST_ERROR, e);
-		}
-	}
-
-	public static boolean canWrite(File installDir) {
-		if (installDir.canWrite() == false)
-			return false;
-
-		if (!installDir.isDirectory())
-			return false;
-
-		File fileTest = null;
-		try {
-			// we use the .dll suffix to properly test on Vista virtual directories
-			// on Vista you are not allowed to write executable files on virtual directories like "Program Files"
-			fileTest = File.createTempFile("writtableArea", ".dll", installDir); //$NON-NLS-1$ //$NON-NLS-2$
-		} catch (IOException e) {
-			//If an exception occured while trying to create the file, it means that it is not writtable
-			return false;
-		} finally {
-			if (fileTest != null)
-				fileTest.delete();
-		}
-		return true;
-	}
-
-	public static URL encodeFileURL(File file) throws MalformedURLException {
-		try {
-			Method toURI = File.class.getMethod("toURI", null); //$NON-NLS-1$
-			Object uri = toURI.invoke(file, null);
-			Method toURL = uri.getClass().getMethod("toURL", null); //$NON-NLS-1$
-			return (URL) toURL.invoke(uri, null);
-		} catch (NoSuchMethodException e) {
-			// use toURL.
-		} catch (IllegalAccessException e) {
-			// use toURL.
-		} catch (InvocationTargetException e) {
-			if (e.getTargetException() instanceof MalformedURLException)
-				throw (MalformedURLException) e.getTargetException();
-			// use toURL
-		}
-		// TODO should we do this by hand ourselves?
-		return file.toURL();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseClassLoadingHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseClassLoadingHook.java
deleted file mode 100644
index f1f8abf..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseClassLoadingHook.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.File;
-import java.security.ProtectionDomain;
-import java.util.ArrayList;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.adaptor.BundleProtectionDomain;
-import org.eclipse.osgi.framework.adaptor.ClassLoaderDelegate;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.Constants;
-
-public class BaseClassLoadingHook implements ClassLoadingHook {
-	private static final String[] LIB_EXTENSIONS;
-	private static final String[] EMPTY_STRINGS = new String[0];
-	static {
-		String[] libExtensions = ManifestElement.getArrayFromList(FrameworkProperties.getProperty("osgi.framework.library.extensions", FrameworkProperties.getProperty(Constants.FRAMEWORK_LIBRARY_EXTENSIONS)), ","); //$NON-NLS-1$ //$NON-NLS-2$
-		for (int i = 0; i < libExtensions.length; i++)
-			if (libExtensions[i].length() > 0 && libExtensions[i].charAt(0) != '.')
-				libExtensions[i] = '.' + libExtensions[i];
-		LIB_EXTENSIONS = libExtensions;
-	}
-
-	/*
-	 * Maps an already mapped library name to additional library file extensions.
-	 * This is needed on platforms like AIX where .a and .so can be used as library file
-	 * extensions, but System.mapLibraryName only returns a single string.
-	 */
-	public static String[] mapLibraryNames(String mappedLibName) {
-		int extIndex = mappedLibName.lastIndexOf('.');
-		if (LIB_EXTENSIONS.length == 0 || extIndex < 0)
-			return EMPTY_STRINGS;
-		String libNameBase = mappedLibName.substring(0, extIndex);
-		String[] results = new String[LIB_EXTENSIONS.length];
-		for (int i = 0; i < results.length; i++)
-			results[i] = libNameBase + LIB_EXTENSIONS[i];
-		return results;
-	}
-
-	public String findLibrary(BaseData data, String libName) {
-		String mappedName = System.mapLibraryName(libName);
-		String path = null;
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("  mapped library name: " + mappedName); //$NON-NLS-1$
-		path = findNativePath(data, mappedName);
-		if (path == null) {
-			String[] mappedNames = mapLibraryNames(mappedName);
-			for (int i = 0; i < mappedNames.length && path == null; i++)
-				path = findNativePath(data, mappedNames[i]);
-		}
-		if (path == null) {
-			if (Debug.DEBUG && Debug.DEBUG_LOADER)
-				Debug.println("  library does not exist: " + mappedName); //$NON-NLS-1$
-			path = findNativePath(data, libName);
-		}
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("  returning library: " + path); //$NON-NLS-1$
-		return path;
-	}
-
-	private String findNativePath(BaseData bundledata, String libname) {
-		int slash = libname.lastIndexOf('/');
-		if (slash >= 0)
-			libname = libname.substring(slash + 1);
-		String[] nativepaths = getNativePaths(bundledata);
-		if (nativepaths == null)
-			return null;
-		for (int i = 0; i < nativepaths.length; i++) {
-			slash = nativepaths[i].lastIndexOf('/');
-			String path = slash < 0 ? nativepaths[i] : nativepaths[i].substring(slash + 1);
-			if (path.equals(libname)) {
-				if (nativepaths[i].startsWith(BaseStorageHook.EXTERNAL_LIB_PREFIX)) {
-					// references an external library; do variable substitution
-					String externalPath = BaseStorageHook.substituteVars(nativepaths[i].substring(BaseStorageHook.EXTERNAL_LIB_PREFIX.length()));
-					File nativeFile = new File(externalPath);
-					return nativeFile.getAbsolutePath();
-				}
-				// this is a normal library contained within the bundle
-				File nativeFile = bundledata.getBundleFile().getFile(nativepaths[i], true);
-				if (nativeFile != null)
-					return nativeFile.getAbsolutePath();
-			}
-		}
-		return null;
-	}
-
-	private String[] getNativePaths(BaseData bundledata) {
-		BaseStorageHook storageHook = (BaseStorageHook) bundledata.getStorageHook(BaseStorageHook.KEY);
-		return storageHook != null ? storageHook.getNativePaths() : null;
-	}
-
-	public boolean addClassPathEntry(ArrayList cpEntries, String cp, ClasspathManager hostmanager, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		// do nothing
-		return false;
-	}
-
-	public ClassLoader getBundleClassLoaderParent() {
-		// do nothing
-		return null;
-	}
-
-	public byte[] processClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager) {
-		// do nothing
-		return null;
-	}
-
-	public BaseClassLoader createClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, BundleProtectionDomain domain, BaseData data, String[] bundleclasspath) {
-		// do nothing
-		return null;
-	}
-
-	public void initializedClassLoader(BaseClassLoader baseClassLoader, BaseData data) {
-		// do nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseHookConfigurator.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseHookConfigurator.java
deleted file mode 100644
index 9e25d1e..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseHookConfigurator.java
+++ /dev/null
@@ -1,30 +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.osgi.internal.baseadaptor;
-
-import org.eclipse.osgi.baseadaptor.HookConfigurator;
-import org.eclipse.osgi.baseadaptor.HookRegistry;
-
-/**
- * Add the hooks necessary to support the OSGi Framework specification.  
- */
-public class BaseHookConfigurator implements HookConfigurator {
-
-	public void addHooks(HookRegistry registry) {
-		// always add the BaseStorageHook and BaseClassLoadingHook; it is required for the storage implementation
-		BaseStorageHook hook = new BaseStorageHook(new BaseStorage());
-		registry.addStorageHook(hook);
-		registry.addAdaptorHook(hook);
-		registry.addClassLoadingHook(new BaseClassLoadingHook());
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BasePermissionStorage.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BasePermissionStorage.java
deleted file mode 100644
index c0deb55..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BasePermissionStorage.java
+++ /dev/null
@@ -1,83 +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.osgi.internal.baseadaptor;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Iterator;
-import org.eclipse.osgi.framework.adaptor.PermissionStorage;
-
-public class BasePermissionStorage implements PermissionStorage {
-
-	private HashMap locations = new HashMap();
-	private String[] defaultInfos;
-	private String[] condPermInfos;
-	private BaseStorage storage;
-	private boolean dirty;
-
-	BasePermissionStorage(BaseStorage storage) {
-		this.storage = storage;
-	}
-
-	public String[] getLocations() throws IOException {
-		synchronized (locations) {
-			String[] result = new String[locations.size()];
-			int i = 0;
-			for (Iterator iLocs = locations.keySet().iterator(); iLocs.hasNext(); i++)
-				result[i] = (String) iLocs.next();
-			return result;
-		}
-	}
-
-	public String[] getPermissionData(String location) throws IOException {
-		if (location == null)
-			return defaultInfos;
-		synchronized (locations) {
-			if (locations.size() == 0)
-				return null;
-			return (String[]) locations.get(location);
-		}
-	}
-
-	public void setPermissionData(String location, String[] data) throws IOException {
-		if (location == null) {
-			defaultInfos = data;
-			return;
-		}
-		synchronized (locations) {
-			if (data == null)
-				locations.remove(location);
-			else
-				locations.put(location, data);
-		}
-		setDirty(true);
-		storage.requestSave();
-	}
-
-	public void saveConditionalPermissionInfos(String[] infos) throws IOException {
-		condPermInfos = infos;
-		setDirty(true);
-		storage.requestSave();
-	}
-
-	public String[] getConditionalPermissionInfos() throws IOException {
-		return condPermInfos;
-	}
-
-	public boolean isDirty() {
-		return dirty;
-	}
-
-	public void setDirty(boolean dirty) {
-		this.dirty = dirty;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java
deleted file mode 100644
index 5d197d5..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java
+++ /dev/null
@@ -1,1369 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247520 and 253942)
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.net.*;
-import java.util.*;
-import org.eclipse.core.runtime.adaptor.EclipseStarter;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.core.runtime.internal.adaptor.EclipseAdaptorMsg;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.*;
-import org.eclipse.osgi.baseadaptor.hooks.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.framework.util.KeyedHashSet;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.storagemanager.ManagedOutputStream;
-import org.eclipse.osgi.storagemanager.StorageManager;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class BaseStorage implements SynchronousBundleListener {
-	private static final String RUNTIME_ADAPTOR = FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME + "/eclipseadaptor"; //$NON-NLS-1$
-	private static final String OPTION_PLATFORM_ADMIN = RUNTIME_ADAPTOR + "/debug/platformadmin"; //$NON-NLS-1$
-	private static final String OPTION_PLATFORM_ADMIN_RESOLVER = RUNTIME_ADAPTOR + "/debug/platformadmin/resolver"; //$NON-NLS-1$
-	private static final String OPTION_MONITOR_PLATFORM_ADMIN = RUNTIME_ADAPTOR + "/resolver/timing"; //$NON-NLS-1$
-	private static final String OPTION_RESOLVER_READER = RUNTIME_ADAPTOR + "/resolver/reader/timing"; //$NON-NLS-1$	
-	private static final String PROP_FRAMEWORK_EXTENSIONS = "osgi.framework.extensions"; //$NON-NLS-1$
-	private static final String PROP_BUNDLE_STORE = "osgi.bundlestore"; //$NON-NLS-1$
-	// The name of the bundle data directory
-	static final String DATA_DIR_NAME = "data"; //$NON-NLS-1$
-	static final String LIB_TEMP = "libtemp"; //$NON-NLS-1$
-	// System property used to determine whether State saver needs to be enabled
-	private static final String PROP_ENABLE_STATE_SAVER = "eclipse.enableStateSaver"; //$NON-NLS-1$
-	static final String BUNDLEFILE_NAME = "bundlefile"; //$NON-NLS-1$
-	// System property used to clean the osgi configuration area
-	private static final String PROP_CLEAN = "osgi.clean"; //$NON-NLS-1$
-
-	/** The current bundle data version */
-	public static final byte BUNDLEDATA_VERSION = 18;
-	/**
-	 * flag to indicate a framework extension is being intialized
-	 */
-	public static final byte EXTENSION_INITIALIZE = 0x01;
-	/**
-	 * flag to indicate a framework extension is being installed
-	 */
-	public static final byte EXTENSION_INSTALLED = 0x02;
-	/**
-	 * flag to indicate a framework extension is being uninstalled
-	 */
-	public static final byte EXTENSION_UNINSTALLED = 0x04;
-	/**
-	 * flag to indicate a framework extension is being updated
-	 */
-	public static final byte EXTENSION_UPDATED = 0x08;
-
-	/**
-	 * the file name for the delete flag.  If this file exists in one a directory 
-	 * under the bundle store area then it will be removed during the 
-	 * compact operation.
-	 */
-	public static final String DELETE_FLAG = ".delete"; //$NON-NLS-1$
-	private static final String PERM_DATA_FILE = ".permdata"; //$NON-NLS-1$
-	private static final byte PERMDATA_VERSION = 1;
-
-	private final MRUBundleFileList mruList = new MRUBundleFileList();
-
-	private BaseAdaptor adaptor;
-	// assume a file: installURL
-	private String installPath;
-	private StorageManager storageManager;
-	private StateManager stateManager;
-	// no need to synchronize on storageHooks because the elements are statically set in initialize
-	private KeyedHashSet storageHooks = new KeyedHashSet(5, false);
-	private BundleContext context;
-	private SynchronousBundleListener extensionListener;
-
-	/**
-	 * The add URL method used to support framework extensions
-	 */
-	private final Method addFwkURLMethod;
-	private final Method addExtURLMethod;
-
-	/**
-	 * The list of configured framework extensions
-	 */
-	private String[] configuredExtensions;
-
-	private long timeStamp = 0;
-	private int initialBundleStartLevel = 1;
-
-	private final Object nextIdMonitor = new Object();
-	private volatile long nextId = 1;
-	/**
-	 * directory containing installed bundles 
-	 */
-	private File bundleStoreRoot;
-
-	private BasePermissionStorage permissionStorage;
-	private StateSaver stateSaver;
-	private boolean invalidState;
-	private boolean storageManagerClosed;
-
-	BaseStorage() {
-		// make constructor package private
-		// initialize the addXYZURLMethods to support framework extensions
-		addFwkURLMethod = findAddURLMethod(getFwkClassLoader(), "addURL"); //$NON-NLS-1$
-		addExtURLMethod = findAddURLMethod(getExtClassLoader(), "addURL"); //$NON-NLS-1$
-	}
-
-	public void initialize(BaseAdaptor adaptor) throws IOException {
-		this.adaptor = adaptor;
-		setDebugOptions();
-		if (Boolean.valueOf(FrameworkProperties.getProperty(BaseStorage.PROP_CLEAN)).booleanValue())
-			cleanOSGiCache();
-
-		// we need to set the install path as soon as possible so we can determine
-		// the absolute location of install relative URLs
-		Location installLoc = LocationManager.getInstallLocation();
-		if (installLoc != null) {
-			URL installURL = installLoc.getURL();
-			// assume install URL is file: based
-			installPath = installURL.getPath();
-		}
-		boolean readOnlyConfiguration = LocationManager.getConfigurationLocation().isReadOnly();
-		storageManager = initFileManager(LocationManager.getOSGiConfigurationDir(), readOnlyConfiguration ? "none" : null, readOnlyConfiguration); //$NON-NLS-1$
-		storageManagerClosed = false;
-		// initialize the storageHooks
-		StorageHook[] hooks = adaptor.getHookRegistry().getStorageHooks();
-		for (int i = 0; i < hooks.length; i++)
-			storageHooks.add(hooks[i]);
-	}
-
-	private static Method findAddURLMethod(ClassLoader cl, String name) {
-		if (cl == null)
-			return null;
-		return findMethod(cl.getClass(), name, new Class[] {URL.class});
-	}
-
-	// recursively searches a class and it's superclasses for a (potentially inaccessable) method
-	private static Method findMethod(Class clazz, String name, Class[] args) {
-		if (clazz == null)
-			return null; // ends the recursion when getSuperClass returns null
-		try {
-			Method result = clazz.getDeclaredMethod(name, args);
-			result.setAccessible(true);
-			return result;
-		} catch (NoSuchMethodException e) {
-			// do nothing look in super class below
-		} catch (SecurityException e) {
-			// if we do not have the permissions then we will not find the method
-		}
-		return findMethod(clazz.getSuperclass(), name, args);
-	}
-
-	private static void callAddURLMethod(ClassLoader cl, Method meth, URL arg) throws InvocationTargetException {
-		try {
-			meth.invoke(cl, new Object[] {arg});
-		} catch (Throwable t) {
-			throw new InvocationTargetException(t);
-		}
-	}
-
-	private ClassLoader getFwkClassLoader() {
-		return this.getClass().getClassLoader();
-	}
-
-	private ClassLoader getExtClassLoader() {
-		ClassLoader cl = ClassLoader.getSystemClassLoader();
-		ClassLoader extcl = cl.getParent();
-		while ((extcl != null) && (extcl.getParent() != null)) {
-			extcl = extcl.getParent();
-		}
-		return extcl;
-	}
-
-	private static void setDebugOptions() {
-		FrameworkDebugOptions options = FrameworkDebugOptions.getDefault();
-		// may be null if debugging is not enabled
-		if (options == null)
-			return;
-		StateManager.DEBUG = options != null;
-		StateManager.DEBUG_READER = options.getBooleanOption(OPTION_RESOLVER_READER, false);
-		StateManager.MONITOR_PLATFORM_ADMIN = options.getBooleanOption(OPTION_MONITOR_PLATFORM_ADMIN, false);
-		StateManager.DEBUG_PLATFORM_ADMIN = options.getBooleanOption(OPTION_PLATFORM_ADMIN, false);
-		StateManager.DEBUG_PLATFORM_ADMIN_RESOLVER = options.getBooleanOption(OPTION_PLATFORM_ADMIN_RESOLVER, false);
-	}
-
-	protected StorageManager initFileManager(File baseDir, String lockMode, boolean readOnly) throws IOException {
-		StorageManager sManager = new StorageManager(baseDir, lockMode, readOnly);
-		try {
-			sManager.open(!readOnly);
-		} catch (IOException ex) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Error reading framework metadata: " + ex.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(ex);
-			}
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_FILEMANAGER_OPEN_ERROR, ex.getMessage());
-			FrameworkLogEntry logEntry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, ex, null);
-			adaptor.getFrameworkLog().log(logEntry);
-			FrameworkProperties.setProperty(EclipseStarter.PROP_EXITCODE, "15"); //$NON-NLS-1$
-			String errorDialog = "<title>" + AdaptorMsg.ADAPTOR_STORAGE_INIT_FAILED_TITLE + "</title>" + NLS.bind(AdaptorMsg.ADAPTOR_STORAGE_INIT_FAILED_MSG, baseDir) + "\n" + ex.getMessage(); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			FrameworkProperties.setProperty(EclipseStarter.PROP_EXITDATA, errorDialog);
-			throw ex;
-		}
-		return sManager;
-	}
-
-	public boolean isReadOnly() {
-		return storageManager.isReadOnly();
-	}
-
-	public void compact() throws IOException {
-		if (!isReadOnly())
-			compact(getBundleStoreRoot());
-	}
-
-	private void compact(File directory) {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-			Debug.println("compact(" + directory.getPath() + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-		String list[] = directory.list();
-		if (list == null)
-			return;
-
-		int len = list.length;
-		for (int i = 0; i < len; i++) {
-			if (BaseStorage.DATA_DIR_NAME.equals(list[i]))
-				continue; /* do not examine the bundles data dir. */
-			File target = new File(directory, list[i]);
-			// if the file is a directory
-			if (!target.isDirectory())
-				continue;
-			File delete = new File(target, BaseStorage.DELETE_FLAG);
-			// and the directory is marked for delete
-			if (delete.exists()) {
-				// if rm fails to delete the directory and .delete was removed
-				if (!AdaptorUtil.rm(target) && !delete.exists()) {
-					try {
-						// recreate .delete
-						FileOutputStream out = new FileOutputStream(delete);
-						out.close();
-					} catch (IOException e) {
-						if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-							Debug.println("Unable to write " + delete.getPath() + ": " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-				}
-			} else {
-				compact(target); /* descend into directory */
-			}
-		}
-	}
-
-	public long getFreeSpace() throws IOException {
-		// cannot implement this without native code!
-		return -1;
-	}
-
-	public File getDataFile(BaseData data, String path) {
-		BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-		if (storageHook == null)
-			return null;
-		return storageHook.getDataFile(path);
-	}
-
-	BaseAdaptor getAdaptor() {
-		return adaptor;
-	}
-
-	public void installNativeCode(BaseData data, String[] nativepaths) throws BundleException {
-		if (nativepaths.length > 0) {
-			BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-			if (storageHook != null)
-				storageHook.installNativePaths(nativepaths);
-		}
-	}
-
-	public Dictionary loadManifest(BaseData data) throws BundleException {
-		return loadManifest(data, false);
-	}
-
-	public Dictionary loadManifest(BaseData bundleData, boolean firstTime) throws BundleException {
-		Dictionary result = null;
-		StorageHook[] dataStorageHooks = bundleData.getStorageHooks();
-		for (int i = 0; i < dataStorageHooks.length && result == null; i++)
-			result = dataStorageHooks[i].getManifest(firstTime);
-		if (result == null)
-			result = AdaptorUtil.loadManifestFrom(bundleData);
-		if (result == null)
-			throw new BundleException(NLS.bind(AdaptorMsg.MANIFEST_NOT_FOUND_EXCEPTION, Constants.OSGI_BUNDLE_MANIFEST, bundleData.getLocation()), BundleException.MANIFEST_ERROR);
-		return result;
-	}
-
-	public File getExtractFile(BaseData data, String path) {
-		BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-		if (storageHook == null)
-			return null;
-		// first check the child generation dir
-		File childGenDir = storageHook.getGenerationDir();
-		if (childGenDir != null) {
-			File childPath = new File(childGenDir, path);
-			if (childPath.exists())
-				return childPath;
-		}
-		// now check the parent
-		File parentGenDir = storageHook.getParentGenerationDir();
-		if (parentGenDir != null) {
-			// there is a parent generation check if the file exists
-			File parentPath = new File(parentGenDir, path);
-			if (parentPath.exists())
-				// only use the parent generation file if it exists; do not extract there
-				return parentPath;
-		}
-		// did not exist in both locations; create a file for extraction.
-		File bundleGenerationDir = storageHook.createGenerationDir();
-		/* if the generation dir exists, then we have place to cache */
-		if (bundleGenerationDir != null && bundleGenerationDir.exists())
-			return new File(bundleGenerationDir, path);
-		return null;
-	}
-
-	public BaseData[] getInstalledBundles() {
-		try {
-			return readBundleDatas();
-		} catch (Throwable t) {
-			// be safe here and throw out the results and start over
-			// otherwise this would result in a failed launch
-			FrameworkLogEntry logEntry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, "Error loading bundle datas.  Recalculating cache.", 0, t, null); //$NON-NLS-1$
-			adaptor.getFrameworkLog().log(logEntry);
-			return null;
-		}
-	}
-
-	private BaseData[] readBundleDatas() {
-		InputStream bundleDataStream = findStorageStream(LocationManager.BUNDLE_DATA_FILE);
-		if (bundleDataStream == null)
-			return null;
-		try {
-			DataInputStream in = new DataInputStream(new BufferedInputStream(bundleDataStream));
-			try {
-				byte version = in.readByte();
-				if (version != BUNDLEDATA_VERSION)
-					return null;
-				timeStamp = in.readLong();
-				initialBundleStartLevel = in.readInt();
-				nextId = in.readLong();
-
-				int numStorageHooks = in.readInt();
-				StorageHook[] storageHooks = adaptor.getHookRegistry().getStorageHooks();
-				if (numStorageHooks != storageHooks.length)
-					return null; // must have the same number of storagehooks to properly read the data
-				for (int i = 0; i < numStorageHooks; i++) {
-					Object storageKey = storageHooks[i].getKey();
-					int storageVersion = storageHooks[i].getStorageVersion();
-					if (!storageKey.equals(in.readUTF()) || storageVersion != in.readInt())
-						return null; // some storage hooks have changed must throw the data away.
-				}
-
-				int bundleCount = in.readInt();
-				ArrayList result = new ArrayList(bundleCount);
-				long id = -1;
-				boolean bundleDiscarded = false;
-				for (int i = 0; i < bundleCount; i++) {
-					boolean error = false;
-					BaseData data = null;
-					try {
-						id = in.readLong();
-						if (id != 0) {
-							data = loadBaseData(id, in);
-							data.getBundleFile();
-							StorageHook[] dataStorageHooks = data.getStorageHooks();
-							for (int j = 0; j < dataStorageHooks.length; j++)
-								dataStorageHooks[j].validate();
-							if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-								Debug.println("BundleData created: " + data); //$NON-NLS-1$
-							processExtension(data, EXTENSION_INITIALIZE);
-							result.add(data);
-						}
-					} catch (IllegalArgumentException e) {
-						// may be from data.getBundleFile()
-						bundleDiscarded = true;
-						error = true;
-					} catch (BundleException e) {
-						// should never happen
-						bundleDiscarded = true;
-						error = true;
-					} catch (IOException e) {
-						bundleDiscarded = true;
-						error = true;
-						if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-							Debug.println("Error reading framework metadata: " + e.getMessage()); //$NON-NLS-1$ 
-							Debug.printStackTrace(e);
-						}
-					}
-					if (error && data != null) {
-						BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-						storageHook.delete(true, BaseStorageHook.DEL_BUNDLE_STORE);
-					}
-				}
-				if (bundleDiscarded)
-					FrameworkProperties.setProperty(EclipseStarter.PROP_REFRESH_BUNDLES, "true"); //$NON-NLS-1$
-				return (BaseData[]) result.toArray(new BaseData[result.size()]);
-			} finally {
-				in.close();
-			}
-		} catch (IOException e) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Error reading framework metadata: " + e.getMessage()); //$NON-NLS-1$ 
-				Debug.printStackTrace(e);
-			}
-		}
-		return null;
-	}
-
-	private void saveAllData(boolean shutdown) {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-			Debug.println("Saving framework data ..."); //$NON-NLS-1$
-		if (storageManagerClosed)
-			try {
-				storageManager.open(!LocationManager.getConfigurationLocation().isReadOnly());
-				storageManagerClosed = false;
-			} catch (IOException e) {
-				String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_FILEMANAGER_OPEN_ERROR, e.getMessage());
-				FrameworkLogEntry logEntry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null);
-				adaptor.getFrameworkLog().log(logEntry);
-			}
-		saveBundleDatas();
-		saveStateData(shutdown);
-		savePermissionStorage();
-		if (shutdown)
-			stateManager.stopDataManager();
-	}
-
-	private BasePermissionStorage readPermissionData() {
-		BasePermissionStorage result = new BasePermissionStorage(this);
-		InputStream permDataStream = findStorageStream(PERM_DATA_FILE);
-		if (permDataStream == null)
-			return result;
-		try {
-			DataInputStream in = new DataInputStream(new BufferedInputStream(permDataStream));
-			try {
-				if (PERMDATA_VERSION != in.readByte())
-					return result;
-				// read the default permissions first
-				int numPerms = in.readInt();
-				if (numPerms > 0) {
-					String[] perms = new String[numPerms];
-					for (int i = 0; i < numPerms; i++)
-						perms[i] = in.readUTF();
-					result.setPermissionData(null, perms);
-				}
-				int numLocs = in.readInt();
-				if (numLocs > 0)
-					for (int i = 0; i < numLocs; i++) {
-						String loc = in.readUTF();
-						numPerms = in.readInt();
-						String[] perms = new String[numPerms];
-						for (int j = 0; j < numPerms; j++)
-							perms[j] = in.readUTF();
-						result.setPermissionData(loc, perms);
-					}
-				int numCondPerms = in.readInt();
-				if (numCondPerms > 0) {
-					String[] condPerms = new String[numCondPerms];
-					for (int i = 0; i < numCondPerms; i++)
-						condPerms[i] = in.readUTF();
-					result.saveConditionalPermissionInfos(condPerms);
-				}
-				result.setDirty(false);
-			} finally {
-				in.close();
-			}
-		} catch (IOException e) {
-			adaptor.getFrameworkLog().log(new FrameworkEvent(FrameworkEvent.ERROR, context.getBundle(), e));
-		}
-		return result;
-	}
-
-	private void savePermissionStorage() {
-		if (permissionStorage == null || isReadOnly() || !permissionStorage.isDirty())
-			return;
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-			Debug.println("About to save permission data ..."); //$NON-NLS-1$
-		try {
-			ManagedOutputStream fmos = storageManager.getOutputStream(PERM_DATA_FILE);
-			DataOutputStream out = new DataOutputStream(new BufferedOutputStream(fmos));
-			boolean error = true;
-			try {
-				out.writeByte(PERMDATA_VERSION);
-				// always write the default permissions first
-				String[] defaultPerms = permissionStorage.getPermissionData(null);
-				out.writeInt(defaultPerms == null ? 0 : defaultPerms.length);
-				if (defaultPerms != null)
-					for (int i = 0; i < defaultPerms.length; i++)
-						out.writeUTF(defaultPerms[i]);
-				String[] locations = permissionStorage.getLocations();
-				out.writeInt(locations == null ? 0 : locations.length);
-				if (locations != null)
-					for (int i = 0; i < locations.length; i++) {
-						out.writeUTF(locations[i]);
-						String[] perms = permissionStorage.getPermissionData(locations[i]);
-						out.writeInt(perms == null ? 0 : perms.length);
-						if (perms != null)
-							for (int j = 0; j < perms.length; j++)
-								out.writeUTF(perms[j]);
-					}
-				String[] condPerms = permissionStorage.getConditionalPermissionInfos();
-				out.writeInt(condPerms == null ? 0 : condPerms.length);
-				if (condPerms != null)
-					for (int i = 0; i < condPerms.length; i++)
-						out.writeUTF(condPerms[i]);
-				out.close();
-				permissionStorage.setDirty(false);
-				error = false;
-			} finally {
-				// if something happens, don't close a corrupt file
-				if (error) {
-					fmos.abort();
-					try {
-						out.close();
-					} catch (IOException e) {/*ignore*/
-					}
-				}
-			}
-		} catch (IOException e) {
-			adaptor.getFrameworkLog().log(new FrameworkEvent(FrameworkEvent.ERROR, context.getBundle(), e));
-			return;
-		}
-	}
-
-	private void saveBundleDatas() {
-		// the cache and the state match
-		if (stateManager == null || isReadOnly() || (timeStamp == stateManager.getSystemState().getTimeStamp() && !stateManager.saveNeeded()))
-			return;
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-			Debug.println("Saving bundle data ..."); //$NON-NLS-1$
-		try {
-			ManagedOutputStream fmos = storageManager.getOutputStream(LocationManager.BUNDLE_DATA_FILE);
-			DataOutputStream out = new DataOutputStream(new BufferedOutputStream(fmos));
-			boolean error = true;
-			try {
-				out.writeByte(BUNDLEDATA_VERSION);
-				out.writeLong(stateManager.getSystemState().getTimeStamp());
-				out.writeInt(initialBundleStartLevel);
-				out.writeLong(nextId);
-
-				StorageHook[] storageHooks = adaptor.getHookRegistry().getStorageHooks();
-				out.writeInt(storageHooks.length);
-				for (int i = 0; i < storageHooks.length; i++) {
-					out.writeUTF((String) storageHooks[i].getKey());
-					out.writeInt(storageHooks[i].getStorageVersion());
-				}
-
-				Bundle[] bundles = context.getBundles();
-				out.writeInt(bundles.length);
-				for (int i = 0; i < bundles.length; i++) {
-					long id = bundles[i].getBundleId();
-					out.writeLong(id);
-					if (id != 0) {
-						BundleData data = ((org.eclipse.osgi.framework.internal.core.AbstractBundle) bundles[i]).getBundleData();
-						saveBaseData((BaseData) data, out);
-					}
-				}
-				out.close();
-				// update the 'timeStamp' after the changed Meta data is saved.
-				timeStamp = stateManager.getSystemState().getTimeStamp();
-				error = false;
-			} finally {
-				// if something happens, don't close a corrupt file
-				if (error) {
-					fmos.abort();
-					try {
-						out.close();
-					} catch (IOException e) {/*ignore*/
-					}
-				}
-			}
-		} catch (IOException e) {
-			adaptor.getFrameworkLog().log(new FrameworkEvent(FrameworkEvent.ERROR, context.getBundle(), e));
-			return;
-		}
-	}
-
-	private void saveStateData(boolean shutdown) {
-		if (shutdown && "true".equals(FrameworkProperties.getProperty("osgi.forcedRestart"))) //$NON-NLS-1$ //$NON-NLS-2$
-			// increment the state timestamp if a forced restart happened.
-			stateManager.getSystemState().setTimeStamp(stateManager.getSystemState().getTimeStamp() + 1);
-		if (stateManager == null || isReadOnly() || !stateManager.saveNeeded())
-			return;
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-			Debug.println("Saving resolver state data ..."); //$NON-NLS-1$
-		File stateTmpFile = null;
-		File lazyTmpFile = null;
-		try {
-			stateTmpFile = File.createTempFile(LocationManager.STATE_FILE, ".new", LocationManager.getOSGiConfigurationDir()); //$NON-NLS-1$
-			lazyTmpFile = File.createTempFile(LocationManager.LAZY_FILE, ".new", LocationManager.getOSGiConfigurationDir()); //$NON-NLS-1$
-			if (shutdown)
-				stateManager.shutdown(stateTmpFile, lazyTmpFile);
-			else
-				synchronized (stateManager) {
-					stateManager.update(stateTmpFile, lazyTmpFile);
-				}
-			storageManager.lookup(LocationManager.STATE_FILE, true);
-			storageManager.lookup(LocationManager.LAZY_FILE, true);
-			storageManager.update(new String[] {LocationManager.STATE_FILE, LocationManager.LAZY_FILE}, new String[] {stateTmpFile.getName(), lazyTmpFile.getName()});
-		} catch (IOException e) {
-			adaptor.getFrameworkLog().log(new FrameworkEvent(FrameworkEvent.ERROR, context.getBundle(), e));
-		} finally {
-			if (stateTmpFile != null && stateTmpFile.exists())
-				stateTmpFile.delete();
-			if (lazyTmpFile != null && lazyTmpFile.exists())
-				lazyTmpFile.delete();
-		}
-	}
-
-	public PermissionStorage getPermissionStorage() throws IOException {
-		if (permissionStorage == null)
-			permissionStorage = readPermissionData();
-		return permissionStorage;
-	}
-
-	public int getInitialBundleStartLevel() {
-		return initialBundleStartLevel;
-	}
-
-	public void setInitialBundleStartLevel(int value) {
-		this.initialBundleStartLevel = value;
-		requestSave();
-	}
-
-	public void save(BaseData data) throws IOException {
-		if (data.isDirty()) {
-			timeStamp--; // Change the value of the timeStamp, as a marker that something changed.
-			requestSave();
-			data.setDirty(false);
-		}
-	}
-
-	public BundleOperation installBundle(String location, URLConnection source) {
-		BaseData data = createBaseData(getNextBundleId(), location);
-		return new BundleInstall(data, source, this);
-	}
-
-	public BundleOperation updateBundle(BaseData data, URLConnection source) {
-		return new BundleUpdate(data, source, this);
-	}
-
-	public BundleOperation uninstallBundle(BaseData data) {
-		return new BundleUninstall(data, this);
-	}
-
-	protected Object getBundleContent(BaseData bundledata) throws IOException {
-		BaseStorageHook storageHook = (BaseStorageHook) bundledata.getStorageHook(BaseStorageHook.KEY);
-		if (storageHook == null)
-			throw new IllegalStateException();
-		return storageHook.isReference() ? new File(storageHook.getFileName()) : new File(storageHook.getGenerationDir(), storageHook.getFileName());
-	}
-
-	public BundleFile createBundleFile(Object content, BaseData data) throws IOException {
-		boolean base = false;
-		if (content == null) {
-			// this must be a request for the base bundlefile
-			base = true;
-			// get the content of this bundle
-			content = getBundleContent(data);
-		}
-		BundleFile result = null;
-		// Ask factories before doing the default behavior
-		BundleFileFactoryHook[] factories = adaptor.getHookRegistry().getBundleFileFactoryHooks();
-		for (int i = 0; i < factories.length && result == null; i++)
-			result = factories[i].createBundleFile(content, data, base);
-
-		// No factories configured or they declined to create the bundle file; do default
-		if (result == null && content instanceof File) {
-			File file = (File) content;
-			if (file.isDirectory())
-				result = new DirBundleFile(file);
-			else
-				result = new ZipBundleFile(file, data, this.mruList);
-		}
-
-		if (result == null && content instanceof String) {
-			// here we assume the content is a path offset into the base bundle file;  create a NestedDirBundleFile
-			result = new NestedDirBundleFile(data.getBundleFile(), (String) content);
-		}
-		if (result == null)
-			// nothing we can do; must throw exception for the content
-			throw new IOException("Cannot create bundle file for content of type: " + content.getClass().getName()); //$NON-NLS-1$
-
-		// try creating a wrapper bundlefile out of it.
-		BundleFileWrapperFactoryHook[] wrapperFactories = adaptor.getHookRegistry().getBundleFileWrapperFactoryHooks();
-		BundleFileWrapperChain wrapped = wrapperFactories.length == 0 ? null : new BundleFileWrapperChain(result, null);
-		for (int i = 0; i < wrapperFactories.length; i++) {
-			BundleFile wrapperBundle = wrapperFactories[i].wrapBundleFile(result, content, data, base);
-			if (wrapperBundle != null && wrapperBundle != result)
-				result = wrapped = new BundleFileWrapperChain(wrapperBundle, wrapped);
-		}
-		return result;
-	}
-
-	public synchronized StateManager getStateManager() {
-		if (stateManager != null)
-			return stateManager;
-		stateManager = readStateData();
-		checkSystemState(stateManager.getSystemState());
-		return stateManager;
-	}
-
-	private void checkSystemState(State state) {
-		BundleDescription[] bundles = state.getBundles();
-		if (bundles == null)
-			return;
-		boolean removedBundle = false;
-		for (int i = 0; i < bundles.length; i++) {
-			if (context.getBundle(bundles[i].getBundleId()) == null) {
-				state.removeBundle(bundles[i]);
-				removedBundle = true;
-			}
-		}
-		if (removedBundle)
-			state.resolve(false); // do a full resolve
-		BundleDescription systemBundle = state.getBundle(0);
-		if (systemBundle == null || !systemBundle.isResolved()) {
-			ResolverError[] errors = systemBundle == null ? new ResolverError[0] : state.getResolverErrors(systemBundle);
-			StringBuffer sb = new StringBuffer();
-			for (int i = 0; i < errors.length; i++) {
-				sb.append(errors[i].toString());
-				if (i < errors.length - 1)
-					sb.append(", "); //$NON-NLS-1$
-			}
-			// this would be a bug in the framework
-			throw new IllegalStateException(NLS.bind(AdaptorMsg.SYSTEMBUNDLE_NOTRESOLVED, sb.toString()));
-		}
-	}
-
-	private StateManager readStateData() {
-		File[] stateFiles = findStorageFiles(new String[] {LocationManager.STATE_FILE, LocationManager.LAZY_FILE});
-		File stateFile = stateFiles[0];
-		File lazyFile = stateFiles[1];
-
-		stateManager = new StateManager(stateFile, lazyFile, context, timeStamp);
-		State systemState = null;
-		if (!invalidState) {
-			systemState = stateManager.readSystemState();
-			if (systemState != null)
-				return stateManager;
-		}
-		systemState = stateManager.createSystemState();
-		Bundle[] installedBundles = context.getBundles();
-		if (installedBundles == null)
-			return stateManager;
-		StateObjectFactory factory = stateManager.getFactory();
-		for (int i = 0; i < installedBundles.length; i++) {
-			AbstractBundle toAdd = (AbstractBundle) installedBundles[i];
-			try {
-				// make sure we get the real manifest as if this is the first time.
-				Dictionary toAddManifest = loadManifest((BaseData) toAdd.getBundleData(), true);
-				BundleDescription newDescription = factory.createBundleDescription(systemState, toAddManifest, toAdd.getLocation(), toAdd.getBundleId());
-				systemState.addBundle(newDescription);
-			} catch (BundleException be) {
-				// just ignore bundle datas with invalid manifests
-			}
-		}
-		// we do not set the cached timestamp here because we want a new one to be used from the new system state object (bug 132978)
-		// we need the state resolved
-		systemState.resolve();
-		invalidState = false;
-		return stateManager;
-	}
-
-	private File[] findStorageFiles(String[] fileNames) {
-		File[] storageFiles = new File[fileNames.length];
-		try {
-			for (int i = 0; i < storageFiles.length; i++)
-				storageFiles[i] = storageManager.lookup(fileNames[i], false);
-		} catch (IOException ex) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Error reading state file " + ex.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(ex);
-			}
-		}
-		boolean success = true;
-		for (int i = 0; i < storageFiles.length; i++)
-			if (storageFiles[i] == null || !storageFiles[i].isFile()) {
-				success = false;
-				break;
-			}
-		if (success)
-			return storageFiles;
-		//if it does not exist, try to read it from the parent
-		Location parentConfiguration = null;
-		Location currentConfiguration = LocationManager.getConfigurationLocation();
-		if (currentConfiguration != null && (parentConfiguration = currentConfiguration.getParentLocation()) != null) {
-			try {
-				File stateLocationDir = new File(parentConfiguration.getURL().getFile(), FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME);
-				StorageManager newFileManager = initFileManager(stateLocationDir, "none", true); //$NON-NLS-1$);
-				for (int i = 0; i < storageFiles.length; i++)
-					storageFiles[i] = newFileManager.lookup(fileNames[i], false);
-				newFileManager.close();
-			} catch (IOException ex) {
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.println("Error reading state file " + ex.getMessage()); //$NON-NLS-1$
-					Debug.printStackTrace(ex);
-				}
-			}
-		} else {
-			try {
-				//it did not exist in either place, so create it in the original location
-				if (!isReadOnly()) {
-					for (int i = 0; i < storageFiles.length; i++)
-						storageFiles[i] = storageManager.lookup(fileNames[i], true);
-				}
-			} catch (IOException ex) {
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.println("Error reading state file " + ex.getMessage()); //$NON-NLS-1$
-					Debug.printStackTrace(ex);
-				}
-			}
-		}
-		return storageFiles;
-	}
-
-	public void frameworkStart(BundleContext fwContext) throws BundleException {
-		this.context = fwContext;
-		// System property can be set to enable state saver or not.
-		if (Boolean.valueOf(FrameworkProperties.getProperty(BaseStorage.PROP_ENABLE_STATE_SAVER, "true")).booleanValue()) //$NON-NLS-1$
-			stateSaver = new StateSaver();
-
-	}
-
-	public void frameworkStop(BundleContext fwContext) throws BundleException {
-		if (stateSaver != null)
-			stateSaver.shutdown();
-		saveAllData(true);
-		storageManager.close();
-		storageManagerClosed = true;
-		if (extensionListener != null)
-			context.removeBundleListener(extensionListener);
-		mruList.shutdown();
-	}
-
-	public void frameworkStopping(BundleContext fwContext) {
-		// do nothing in storage
-	}
-
-	public void addProperties(Properties properties) {
-		// set the extension support if we found the addURL method
-		if (addFwkURLMethod != null)
-			properties.put(Constants.SUPPORTS_FRAMEWORK_EXTENSION, "true"); //$NON-NLS-1$
-		// store bundleStore back into adaptor properties for others to see
-		properties.put(BaseStorage.PROP_BUNDLE_STORE, getBundleStoreRoot().getAbsolutePath());
-	}
-
-	private InputStream findStorageStream(String fileName) {
-		InputStream storageStream = null;
-		try {
-			storageStream = storageManager.getInputStream(fileName);
-		} catch (IOException ex) {
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Error reading framework metadata: " + ex.getMessage()); //$NON-NLS-1$
-				Debug.printStackTrace(ex);
-			}
-		}
-		if (storageStream == null) {
-			Location currentConfiguration = LocationManager.getConfigurationLocation();
-			Location parentConfiguration = null;
-			if (currentConfiguration != null && (parentConfiguration = currentConfiguration.getParentLocation()) != null) {
-				try {
-					File bundledataLocationDir = new File(parentConfiguration.getURL().getFile(), FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME);
-					StorageManager newStorageManager = initFileManager(bundledataLocationDir, "none", true); //$NON-NLS-1$
-					storageStream = newStorageManager.getInputStream(fileName);
-					newStorageManager.close();
-				} catch (MalformedURLException e1) {
-					// This will not happen since all the URLs are derived by us
-					// and we are GODS!
-				} catch (IOException e1) {
-					// That's ok we will regenerate the .bundleData
-				}
-			}
-		}
-		return storageStream;
-	}
-
-	protected void saveBaseData(BaseData bundledata, DataOutputStream out) throws IOException {
-		StorageHook[] hooks = bundledata.getStorageHooks();
-		out.writeInt(hooks.length);
-		for (int i = 0; i < hooks.length; i++) {
-			out.writeUTF((String) hooks[i].getKey());
-			hooks[i].save(out);
-		}
-	}
-
-	protected BaseData loadBaseData(long id, DataInputStream in) throws IOException {
-		BaseData result = new BaseData(id, adaptor);
-		int numHooks = in.readInt();
-		StorageHook[] hooks = new StorageHook[numHooks];
-		for (int i = 0; i < numHooks; i++) {
-			String hookKey = in.readUTF();
-			StorageHook storageHook = (StorageHook) storageHooks.getByKey(hookKey);
-			if (storageHook == null)
-				throw new IOException();
-			hooks[i] = storageHook.load(result, in);
-		}
-		result.setStorageHooks(hooks);
-		return result;
-	}
-
-	protected BaseData createBaseData(long id, String location) {
-		BaseData result = new BaseData(id, adaptor);
-		result.setLocation(location);
-		return result;
-	}
-
-	public String getInstallPath() {
-		return installPath;
-	}
-
-	private void cleanOSGiCache() {
-		File osgiConfig = LocationManager.getOSGiConfigurationDir();
-		if (!AdaptorUtil.rm(osgiConfig))
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, "The -clean (osgi.clean) option was not successful. Unable to clean the storage area: " + osgiConfig.getAbsolutePath(), 0, null, null)); //$NON-NLS-1$
-
-	}
-
-	/**
-	 * Processes an extension bundle
-	 * @param bundleData the extension bundle data 
-	 * @param type the type of extension bundle
-	 * @throws BundleException on any errors or if the extension bundle type is not supported
-	 */
-	protected void processExtension(BaseData bundleData, byte type) throws BundleException {
-		if ((bundleData.getType() & BundleData.TYPE_FRAMEWORK_EXTENSION) != 0) {
-			validateExtension(bundleData);
-			processFrameworkExtension(bundleData, type);
-		} else if ((bundleData.getType() & BundleData.TYPE_BOOTCLASSPATH_EXTENSION) != 0) {
-			validateExtension(bundleData);
-			processBootExtension(bundleData, type);
-		} else if ((bundleData.getType() & BundleData.TYPE_EXTCLASSPATH_EXTENSION) != 0) {
-			validateExtension(bundleData);
-			processExtExtension(bundleData, type);
-		}
-	}
-
-	/**
-	 * Validates the extension bundle metadata
-	 * @param bundleData the extension bundle data
-	 * @throws BundleException if the extension bundle metadata is invalid
-	 */
-	private void validateExtension(BundleData bundleData) throws BundleException {
-		Dictionary extensionManifest = bundleData.getManifest();
-		if (extensionManifest.get(Constants.IMPORT_PACKAGE) != null)
-			throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_EXTENSION_IMPORT_ERROR, bundleData.getLocation()), BundleException.MANIFEST_ERROR);
-		if (extensionManifest.get(Constants.REQUIRE_BUNDLE) != null)
-			throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_EXTENSION_REQUIRE_ERROR, bundleData.getLocation()), BundleException.MANIFEST_ERROR);
-		if (extensionManifest.get(Constants.BUNDLE_NATIVECODE) != null)
-			throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_EXTENSION_NATIVECODE_ERROR, bundleData.getLocation()), BundleException.MANIFEST_ERROR);
-	}
-
-	/**
-	 * Processes a framework extension bundle
-	 * @param bundleData the extension bundle data
-	 * @param type the type of extension bundle
-	 * @throws BundleException on errors or if framework extensions are not supported
-	 */
-	protected void processFrameworkExtension(BaseData bundleData, byte type) throws BundleException {
-		if (addFwkURLMethod == null)
-			throw new BundleException("Framework extensions are not supported.", BundleException.UNSUPPORTED_OPERATION, new UnsupportedOperationException()); //$NON-NLS-1$
-		addExtensionContent(bundleData, type, getFwkClassLoader(), addFwkURLMethod);
-	}
-
-	protected void processExtExtension(BaseData bundleData, byte type) throws BundleException {
-		if (addExtURLMethod == null)
-			throw new BundleException("Extension classpath extensions are not supported.", BundleException.UNSUPPORTED_OPERATION, new UnsupportedOperationException()); //$NON-NLS-1$
-		addExtensionContent(bundleData, type, getExtClassLoader(), addExtURLMethod);
-	}
-
-	private void addExtensionContent(BaseData bundleData, byte type, ClassLoader addToLoader, Method addToMethod) throws BundleException {
-		if ((type & (EXTENSION_UNINSTALLED | EXTENSION_UPDATED)) != 0)
-			// if uninstalled or updated then do nothing framework must be restarted.
-			return;
-
-		// first make sure this BundleData is not on the pre-configured osgi.framework.extensions list
-		String[] extensions = getConfiguredExtensions();
-		for (int i = 0; i < extensions.length; i++)
-			if (extensions[i].equals(bundleData.getSymbolicName()))
-				return;
-		if ((type & EXTENSION_INSTALLED) != 0) {
-			if (extensionListener == null) {
-				// add bundle listener to wait for extension to be resolved
-				extensionListener = this;
-				context.addBundleListener(extensionListener);
-			}
-			return;
-		}
-		File[] files = getExtensionFiles(bundleData);
-		if (files == null)
-			return;
-
-		for (int i = 0; i < files.length; i++) {
-			if (files[i] == null)
-				continue;
-			try {
-				callAddURLMethod(addToLoader, addToMethod, AdaptorUtil.encodeFileURL(files[i]));
-			} catch (InvocationTargetException e) {
-				adaptor.getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, bundleData.getBundle(), e);
-			} catch (MalformedURLException e) {
-				adaptor.getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, bundleData.getBundle(), e);
-			}
-		}
-
-		try {
-			addToLoader.loadClass("thisIsNotAClass"); // initialize the new urls  //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			// do nothing
-		}
-	}
-
-	/**
-	 * Returns a list of configured extensions
-	 * @return a list of configured extensions
-	 */
-	protected String[] getConfiguredExtensions() {
-		if (configuredExtensions != null)
-			return configuredExtensions;
-		String prop = FrameworkProperties.getProperty(BaseStorage.PROP_FRAMEWORK_EXTENSIONS);
-		if (prop == null || prop.trim().length() == 0)
-			configuredExtensions = new String[0];
-		else
-			configuredExtensions = ManifestElement.getArrayFromList(prop);
-		return configuredExtensions;
-	}
-
-	/**
-	 * Processes a boot extension bundle
-	 * @param bundleData the extension bundle data
-	 * @param type the type of extension bundle
-	 * @throws BundleException on errors or if boot extensions are not supported
-	 */
-	protected void processBootExtension(BundleData bundleData, byte type) throws BundleException {
-		throw new BundleException("Boot classpath extensions are not supported.", BundleException.UNSUPPORTED_OPERATION, new UnsupportedOperationException()); //$NON-NLS-1$
-	}
-
-	private void initBundleStoreRoot() {
-		File configurationLocation = LocationManager.getOSGiConfigurationDir();
-		if (configurationLocation != null)
-			bundleStoreRoot = new File(configurationLocation, LocationManager.BUNDLES_DIR);
-		else
-			// last resort just default to "bundles"
-			bundleStoreRoot = new File(LocationManager.BUNDLES_DIR);
-	}
-
-	public File getBundleStoreRoot() {
-		if (bundleStoreRoot == null)
-			initBundleStoreRoot();
-		return bundleStoreRoot;
-	}
-
-	/**
-	 * Returns a list of classpath files for an extension bundle
-	 * @param bundleData the bundle data for an extension bundle
-	 * @return a list of classpath files for an extension bundle
-	 */
-	protected File[] getExtensionFiles(BaseData bundleData) {
-		File[] files = null;
-		try {
-			String[] paths = bundleData.getClassPath();
-			if (DevClassPathHelper.inDevelopmentMode()) {
-				String[] devPaths = DevClassPathHelper.getDevClassPath(bundleData.getSymbolicName());
-				String[] origPaths = paths;
-
-				paths = new String[origPaths.length + devPaths.length];
-				System.arraycopy(origPaths, 0, paths, 0, origPaths.length);
-				System.arraycopy(devPaths, 0, paths, origPaths.length, devPaths.length);
-			}
-			ArrayList results = new ArrayList(paths.length);
-			for (int i = 0; i < paths.length; i++) {
-				if (".".equals(paths[i])) //$NON-NLS-1$
-					results.add(bundleData.getBundleFile().getBaseFile());
-				else {
-					File result = bundleData.getBundleFile().getFile(paths[i], false);
-					if (result != null)
-						results.add(result);
-				}
-			}
-			return (File[]) results.toArray(new File[results.size()]);
-		} catch (BundleException e) {
-			adaptor.getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, bundleData.getBundle(), e);
-		}
-		return files;
-	}
-
-	void requestSave() {
-		// Only when the State saver is enabled will the stateSaver be started.
-		if (stateSaver == null)
-			return;
-		stateSaver.requestSave();
-	}
-
-	/**
-	 * Updates the state mananager with an updated/installed/uninstalled bundle
-	 * @param bundleData the modified bundle
-	 * @param type the type of modification
-	 * @throws BundleException
-	 */
-	public void updateState(BundleData bundleData, int type) throws BundleException {
-		if (stateManager == null) {
-			invalidState = true;
-			return;
-		}
-		State systemState = stateManager.getSystemState();
-		BundleDescription oldDescription = null;
-		BundleDescription newDescription = null;
-		switch (type) {
-			case BundleEvent.UPDATED :
-				// fall through to INSTALLED
-			case BundleEvent.INSTALLED :
-				if (type == BundleEvent.UPDATED)
-					oldDescription = systemState.getBundle(bundleData.getBundleID());
-				newDescription = stateManager.getFactory().createBundleDescription(systemState, bundleData.getManifest(), bundleData.getLocation(), bundleData.getBundleID());
-				if (oldDescription == null)
-					systemState.addBundle(newDescription);
-				else
-					systemState.updateBundle(newDescription);
-				break;
-			case BundleEvent.UNINSTALLED :
-				systemState.removeBundle(bundleData.getBundleID());
-				break;
-		}
-
-		if (newDescription != null)
-			validateNativeCodePaths(newDescription, (BaseData) bundleData);
-	}
-
-	private void validateNativeCodePaths(BundleDescription newDescription, BaseData data) {
-		NativeCodeSpecification nativeCode = newDescription.getNativeCodeSpecification();
-		if (nativeCode == null)
-			return;
-		NativeCodeDescription nativeCodeDescs[] = nativeCode.getPossibleSuppliers();
-		for (int i = 0; i < nativeCodeDescs.length; i++) {
-			BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-			if (storageHook != null)
-				try {
-					storageHook.validateNativePaths(nativeCodeDescs[i].getNativePaths());
-				} catch (BundleException e) {
-					stateManager.getSystemState().setNativePathsInvalid(nativeCodeDescs[i], true);
-				}
-		}
-	}
-
-	private class StateSaver implements Runnable {
-		private final long delay_interval;
-		private final long max_total_delay_interval;
-		private boolean shutdown = false;
-		private long lastSaveTime = 0;
-		private Thread runningThread = null;
-		private Thread shutdownHook = null;
-
-		StateSaver() {
-			String prop = FrameworkProperties.getProperty("eclipse.stateSaveDelayInterval"); //$NON-NLS-1$
-			long delayValue = 30000; // 30 seconds.
-			long maxDelayValue = 1800000; // 30 minutes.
-			if (prop != null) {
-				try {
-					long val = Long.parseLong(prop);
-					if (val >= 1000 && val <= 1800000) {
-						delayValue = val;
-						maxDelayValue = val * 60;
-					} else if (val == 0) {
-						delayValue = 0;
-						maxDelayValue = 0;
-					}
-				} catch (NumberFormatException e) {
-					// ignore
-				}
-			}
-			delay_interval = delayValue;
-			max_total_delay_interval = maxDelayValue;
-		}
-
-		public void run() {
-			State systemState = adaptor.getState();
-			synchronized (systemState) {
-				long firstSaveTime = lastSaveTime;
-				long curSaveTime = 0;
-				long delayTime;
-				do {
-					do {
-						if ((System.currentTimeMillis() - firstSaveTime) > max_total_delay_interval) {
-							curSaveTime = lastSaveTime;
-							// Waiting time has been too long, so break to start saving State data to file.
-							break;
-						}
-						delayTime = Math.min(delay_interval, lastSaveTime - curSaveTime);
-						curSaveTime = lastSaveTime;
-						// wait for other save requests 
-						try {
-							if (!shutdown)
-								systemState.wait(delayTime);
-						} catch (InterruptedException ie) {
-							// force break from do/while loops
-							curSaveTime = lastSaveTime;
-							break;
-						}
-						// Continue the loop if 'lastSaveTime' is increased again during waiting.
-					} while (!shutdown && curSaveTime < lastSaveTime);
-					// Save State and Meta data.
-					saveAllData(false);
-					// Continue the loop if Saver is asked again during saving State data to file.
-				} while (!shutdown && curSaveTime < lastSaveTime);
-				runningThread = null; // clear runningThread
-				try {
-					Runtime.getRuntime().removeShutdownHook(shutdownHook);
-				} catch (IllegalStateException e) {
-					// avoid exception if shutdown is in progress
-				}
-				shutdownHook = null;
-			}
-		}
-
-		void shutdown() {
-			State systemState = adaptor.getState();
-			Thread joinWith = null;
-			synchronized (systemState) {
-				shutdown = true;
-				joinWith = runningThread;
-				systemState.notifyAll(); // To wakeup sleeping thread.
-			}
-			try {
-				if (joinWith != null) {
-					if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-						Debug.println("About to join saving thread"); //$NON-NLS-1$
-					// There should be no deadlock when 'shutdown' is true.
-					joinWith.join();
-					if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-						Debug.println("Joined with saving thread"); //$NON-NLS-1$
-				}
-			} catch (InterruptedException ie) {
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.println("Error shutdowning StateSaver: " + ie.getMessage()); //$NON-NLS-1$
-					Debug.printStackTrace(ie);
-				}
-			}
-		}
-
-		void requestSave() {
-			final State systemState = adaptor.getState();
-			synchronized (systemState) {
-				if (shutdown)
-					return; // do not start another thread if we have already shutdown
-				if (delay_interval == 0) // all saves are atomic
-					saveAllData(false);
-				lastSaveTime = System.currentTimeMillis();
-				if (runningThread == null) {
-					shutdownHook = new Thread(new Runnable() {
-						public void run() {
-							// Synchronize with JVM shutdown hook, because
-							// saveAllData creates a temp file with delete on 
-							// exit is true. The temp file will be removed in the
-							// shutdown hook. This prevents that the remove temp files
-							// in the shutdown hook is earlier handled then adding new
-							// temp file in saveAllData.
-							shutdown();
-						}
-					});
-					runningThread = new Thread(this, "State Saver"); //$NON-NLS-1$
-					runningThread.start();
-					Runtime.getRuntime().addShutdownHook(shutdownHook);
-				}
-			}
-		}
-	}
-
-	public long getNextBundleId() {
-		synchronized (this.nextIdMonitor) {
-			return nextId++;
-		}
-	}
-
-	public void bundleChanged(BundleEvent event) {
-		if (event.getType() != BundleEvent.RESOLVED)
-			return;
-		BaseData data = (BaseData) ((AbstractBundle) event.getBundle()).getBundleData();
-		try {
-			if ((data.getType() & BundleData.TYPE_FRAMEWORK_EXTENSION) != 0)
-				processFrameworkExtension(data, EXTENSION_INITIALIZE);
-			else if ((data.getType() & BundleData.TYPE_BOOTCLASSPATH_EXTENSION) != 0)
-				processBootExtension(data, EXTENSION_INITIALIZE);
-			else if ((data.getType() & BundleData.TYPE_EXTCLASSPATH_EXTENSION) != 0)
-				processExtExtension(data, EXTENSION_INITIALIZE);
-		} catch (BundleException e) {
-			// do nothing;
-		}
-	}
-
-	public String copyToTempLibrary(BaseData data, String absolutePath) throws IOException {
-		File storageRoot = getBundleStoreRoot();
-		File libTempDir = new File(storageRoot, LIB_TEMP);
-		// we assume the absolutePath is a File path
-		File realLib = new File(absolutePath);
-		String libName = realLib.getName();
-		// find a temp dir for the bundle data and the library;
-		File bundleTempDir = null;
-		File libTempFile = null;
-		// We need a somewhat predictable temp dir for the libraries of a given bundle;
-		// This is not strictly necessary but it does help scenarios where one native library loads another native library without using java.
-		// On some OSes this causes issues because the second library is cannot be found.
-		// This has been worked around by the bundles loading the libraries in a particular order (and setting some LIB_PATH env).
-		// The one catch is that the libraries need to be in the same directory and they must use their original lib names.
-		//
-		// This bit of code attempts to do that by using the bundle ID as an ID for the temp dir along with an incrementing ID 
-		// in cases where the temp dir may already exist.
-		Long bundleID = new Long(data.getBundleID());
-		for (int i = 0; i < Integer.MAX_VALUE; i++) {
-			bundleTempDir = new File(libTempDir, bundleID.toString() + "_" + new Integer(i).toString()); //$NON-NLS-1$
-			libTempFile = new File(bundleTempDir, libName);
-			if (bundleTempDir.exists()) {
-				if (libTempFile.exists())
-					continue; // to to next temp file
-				break;
-			}
-			break;
-		}
-		if (!bundleTempDir.exists()) {
-			bundleTempDir.mkdirs();
-			bundleTempDir.deleteOnExit();
-			// This is just a safeguard incase the VM is terminated unexpectantly, it also looks like deleteOnExit cannot really work because
-			// the VM likely will still have a lock on the lib file at the time of VM exit.
-			File deleteFlag = new File(libTempDir, BaseStorage.DELETE_FLAG);
-			if (!deleteFlag.exists()) {
-				// need to create a delete flag to force removal the temp libraries
-				try {
-					FileOutputStream out = new FileOutputStream(deleteFlag);
-					out.close();
-				} catch (IOException e) {
-					// do nothing; that would mean we did not make the temp dir successfully
-				}
-			}
-		}
-		// copy the library file
-		InputStream in = new FileInputStream(realLib);
-		AdaptorUtil.readFile(in, libTempFile);
-		// set permissions if needed
-		BundleFile.setPermissions(libTempFile);
-		libTempFile.deleteOnExit(); // this probably will not work because the VM will probably have the lib locked at exit
-		// return the temporary path
-		return libTempFile.getAbsolutePath();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorageHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorageHook.java
deleted file mode 100644
index 23d2e37..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorageHook.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 253942)
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.*;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.*;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.hooks.AdaptorHook;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class BaseStorageHook implements StorageHook, AdaptorHook {
-	public static final String KEY = BaseStorageHook.class.getName();
-	public static final int HASHCODE = KEY.hashCode();
-	public static final int DEL_BUNDLE_STORE = 0x01;
-	public static final int DEL_GENERATION = 0x02;
-	private static final int STORAGE_VERSION = 1;
-	public static final String EXTERNAL_LIB_PREFIX = "external:"; //$NON-NLS-1$
-	public static final String VARIABLE_DELIM_STRING = "$"; //$NON-NLS-1$
-	public static final char VARIABLE_DELIM_CHAR = '$';
-	public static String COMPOSITE_HEADER = "Equinox-CompositeBundle"; //$NON-NLS-1$
-	public static String COMPOSITE_BUNDLE = "composite"; //$NON-NLS-1$
-	public static String SURROGATE_BUNDLE = "surrogate"; //$NON-NLS-1$
-
-	/** bundle's file name */
-	private String fileName;
-	/** native code paths for this BundleData */
-	private String[] nativePaths;
-	/** bundle generation */
-	private int generation = 1;
-	/** Is bundle a reference */
-	private boolean reference;
-
-	private BaseData bundleData;
-	private BaseStorage storage;
-	private File bundleStore;
-	private File dataStore;
-
-	public BaseStorageHook(BaseStorage storage) {
-		this.storage = storage;
-	}
-
-	public int getStorageVersion() {
-		return STORAGE_VERSION;
-	}
-
-	public StorageHook create(BaseData bundledata) throws BundleException {
-		BaseStorageHook storageHook = new BaseStorageHook(storage);
-		storageHook.bundleData = bundledata;
-		return storageHook;
-	}
-
-	public void initialize(Dictionary manifest) throws BundleException {
-		BaseStorageHook.loadManifest(bundleData, manifest);
-	}
-
-	static void loadManifest(BaseData target, Dictionary manifest) throws BundleException {
-		try {
-			target.setVersion(Version.parseVersion((String) manifest.get(Constants.BUNDLE_VERSION)));
-		} catch (IllegalArgumentException e) {
-			target.setVersion(new InvalidVersion((String) manifest.get(Constants.BUNDLE_VERSION)));
-		}
-		ManifestElement[] bsnHeader = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME));
-		int bundleType = 0;
-		if (bsnHeader != null) {
-			target.setSymbolicName(bsnHeader[0].getValue());
-			String singleton = bsnHeader[0].getDirective(Constants.SINGLETON_DIRECTIVE);
-			if (singleton == null)
-				singleton = bsnHeader[0].getAttribute(Constants.SINGLETON_DIRECTIVE);
-			if ("true".equals(singleton)) //$NON-NLS-1$
-				bundleType |= BundleData.TYPE_SINGLETON;
-		}
-		// check that the classpath is valid
-		String classpath = (String) manifest.get(Constants.BUNDLE_CLASSPATH);
-		ManifestElement.parseHeader(Constants.BUNDLE_CLASSPATH, classpath);
-		target.setClassPathString(classpath);
-		target.setActivator((String) manifest.get(Constants.BUNDLE_ACTIVATOR));
-		String host = (String) manifest.get(Constants.FRAGMENT_HOST);
-		if (host != null) {
-			bundleType |= BundleData.TYPE_FRAGMENT;
-			ManifestElement[] hostElement = ManifestElement.parseHeader(Constants.FRAGMENT_HOST, host);
-			if (Constants.getInternalSymbolicName().equals(hostElement[0].getValue()) || Constants.SYSTEM_BUNDLE_SYMBOLICNAME.equals(hostElement[0].getValue())) {
-				String extensionType = hostElement[0].getDirective("extension"); //$NON-NLS-1$
-				if (extensionType == null || extensionType.equals("framework")) //$NON-NLS-1$
-					bundleType |= BundleData.TYPE_FRAMEWORK_EXTENSION;
-				else if (extensionType.equals("bootclasspath")) //$NON-NLS-1$
-					bundleType |= BundleData.TYPE_BOOTCLASSPATH_EXTENSION;
-				else if (extensionType.equals("extclasspath")) //$NON-NLS-1$
-					bundleType |= BundleData.TYPE_EXTCLASSPATH_EXTENSION;
-			}
-		} else {
-			String composite = (String) manifest.get(COMPOSITE_HEADER);
-			if (composite != null) {
-				if (COMPOSITE_BUNDLE.equals(composite))
-					bundleType |= BundleData.TYPE_COMPOSITEBUNDLE;
-				else
-					bundleType |= BundleData.TYPE_SURROGATEBUNDLE;
-			}
-		}
-		target.setType(bundleType);
-		target.setExecutionEnvironment((String) manifest.get(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT));
-		target.setDynamicImports((String) manifest.get(Constants.DYNAMICIMPORT_PACKAGE));
-	}
-
-	public StorageHook load(BaseData target, DataInputStream in) throws IOException {
-		target.setLocation(AdaptorUtil.readString(in, false));
-		target.setSymbolicName(AdaptorUtil.readString(in, false));
-		target.setVersion(AdaptorUtil.loadVersion(in));
-		target.setActivator(AdaptorUtil.readString(in, false));
-		target.setClassPathString(AdaptorUtil.readString(in, false));
-		target.setExecutionEnvironment(AdaptorUtil.readString(in, false));
-		target.setDynamicImports(AdaptorUtil.readString(in, false));
-		target.setStartLevel(in.readInt());
-		target.setStatus(in.readInt());
-		target.setType(in.readInt());
-		target.setLastModified(in.readLong());
-		target.setDirty(false); // make sure to reset the dirty bit;
-
-		BaseStorageHook storageHook = new BaseStorageHook(storage);
-		storageHook.bundleData = target;
-		storageHook.generation = in.readInt();
-		storageHook.reference = in.readBoolean();
-		storageHook.setFileName(getAbsolute(storageHook.reference, AdaptorUtil.readString(in, false)));
-		int nativePathCount = in.readInt();
-		storageHook.nativePaths = nativePathCount > 0 ? new String[nativePathCount] : null;
-		for (int i = 0; i < nativePathCount; i++)
-			storageHook.nativePaths[i] = in.readUTF();
-		return storageHook;
-	}
-
-	private String getAbsolute(boolean isReference, String path) {
-		if (!isReference)
-			return path;
-		// fileName for bundles installed with reference URLs is stored relative to the install location
-		File storedPath = new File(path);
-		if (!storedPath.isAbsolute())
-			// make sure it has the absolute location instead
-			return new FilePath(storage.getInstallPath() + path).toString();
-		return path;
-	}
-
-	public void save(DataOutputStream out) throws IOException {
-		if (bundleData == null)
-			throw new IllegalStateException();
-		AdaptorUtil.writeStringOrNull(out, bundleData.getLocation());
-		AdaptorUtil.writeStringOrNull(out, bundleData.getSymbolicName());
-		AdaptorUtil.writeStringOrNull(out, bundleData.getVersion().toString());
-		AdaptorUtil.writeStringOrNull(out, bundleData.getActivator());
-		AdaptorUtil.writeStringOrNull(out, bundleData.getClassPathString());
-		AdaptorUtil.writeStringOrNull(out, bundleData.getExecutionEnvironment());
-		AdaptorUtil.writeStringOrNull(out, bundleData.getDynamicImports());
-		StorageHook[] hooks = bundleData.getStorageHooks();
-		boolean forgetStartLevel = false;
-		for (int i = 0; i < hooks.length && !forgetStartLevel; i++)
-			forgetStartLevel = hooks[i].forgetStartLevelChange(bundleData.getStartLevel());
-		out.writeInt(!forgetStartLevel ? bundleData.getStartLevel() : 1);
-		boolean forgetStatus = false;
-		// see if we should forget the persistently started flag
-		for (int i = 0; i < hooks.length && !forgetStatus; i++)
-			forgetStatus = hooks[i].forgetStatusChange(bundleData.getStatus());
-		out.writeInt(!forgetStatus ? bundleData.getStatus() : (~Constants.BUNDLE_STARTED) & bundleData.getStatus());
-		out.writeInt(bundleData.getType());
-		out.writeLong(bundleData.getLastModified());
-
-		out.writeInt(getGeneration());
-		out.writeBoolean(isReference());
-		String storedFileName = isReference() ? new FilePath(storage.getInstallPath()).makeRelative(new FilePath(getFileName())) : getFileName();
-		AdaptorUtil.writeStringOrNull(out, storedFileName);
-		if (nativePaths == null)
-			out.writeInt(0);
-		else {
-			out.writeInt(nativePaths.length);
-			for (int i = 0; i < nativePaths.length; i++)
-				out.writeUTF(nativePaths[i]);
-		}
-
-	}
-
-	public int getKeyHashCode() {
-		return HASHCODE;
-	}
-
-	public boolean compare(KeyedElement other) {
-		return other.getKey() == KEY;
-	}
-
-	public Object getKey() {
-		return KEY;
-	}
-
-	public String getFileName() {
-		return fileName;
-	}
-
-	public int getGeneration() {
-		return generation;
-	}
-
-	public String[] getNativePaths() {
-		return nativePaths;
-	}
-
-	public void installNativePaths(String[] installPaths) throws BundleException {
-		validateNativePaths(installPaths);
-		this.nativePaths = installPaths;
-	}
-
-	public void validateNativePaths(String[] nativePaths) throws BundleException {
-		for (int i = 0; i < nativePaths.length; i++) {
-			if (nativePaths[i].startsWith(EXTERNAL_LIB_PREFIX)) {
-				String path = substituteVars(nativePaths[i].substring(EXTERNAL_LIB_PREFIX.length()));
-				File nativeFile = new File(path);
-				if (!nativeFile.exists())
-					throw new BundleException(NLS.bind(AdaptorMsg.BUNDLE_NATIVECODE_EXCEPTION, nativeFile.getAbsolutePath()), BundleException.NATIVECODE_ERROR);
-				continue; // continue to next path
-			}
-			// ensure the file exists in the bundle; it will get extracted later on demand
-			BundleEntry nativeEntry = bundleData.getBundleFile().getEntry(nativePaths[i]);
-			if (nativeEntry == null)
-				throw new BundleException(NLS.bind(AdaptorMsg.BUNDLE_NATIVECODE_EXCEPTION, nativePaths[i]), BundleException.NATIVECODE_ERROR);
-		}
-	}
-
-	public boolean isReference() {
-		return reference;
-	}
-
-	public File getBundleStore() {
-		if (bundleStore == null)
-			bundleStore = new File(storage.getBundleStoreRoot(), String.valueOf(bundleData.getBundleID()));
-		return bundleStore;
-	}
-
-	public File getDataFile(String path) {
-		// lazily initialize dirData to prevent early access to configuration location
-		if (dataStore == null)
-			dataStore = new File(getBundleStore(), BaseStorage.DATA_DIR_NAME);
-		if (path != null && !dataStore.exists() && (storage.isReadOnly() || !dataStore.mkdirs()))
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-				Debug.println("Unable to create bundle data directory: " + dataStore.getPath()); //$NON-NLS-1$
-		return path == null ? dataStore : new File(dataStore, path);
-	}
-
-	void delete(boolean postpone, int type) throws IOException {
-		File delete = null;
-		switch (type) {
-			case DEL_GENERATION :
-				delete = getGenerationDir();
-				break;
-			case DEL_BUNDLE_STORE :
-				delete = getBundleStore();
-				break;
-		}
-		if (delete != null && delete.exists() && (postpone || !AdaptorUtil.rm(delete))) {
-			/* create .delete */
-			FileOutputStream out = new FileOutputStream(new File(delete, BaseStorage.DELETE_FLAG));
-			out.close();
-		}
-	}
-
-	File getGenerationDir() {
-		return new File(getBundleStore(), String.valueOf(getGeneration()));
-	}
-
-	File getParentGenerationDir() {
-		Location parentConfiguration = null;
-		Location currentConfiguration = LocationManager.getConfigurationLocation();
-		if (currentConfiguration != null && (parentConfiguration = currentConfiguration.getParentLocation()) != null)
-			return new File(parentConfiguration.getURL().getFile(), FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME + '/' + LocationManager.BUNDLES_DIR + '/' + bundleData.getBundleID() + '/' + getGeneration());
-		return null;
-	}
-
-	File createGenerationDir() {
-		File generationDir = getGenerationDir();
-		if (!generationDir.exists() && (storage.isReadOnly() || !generationDir.mkdirs()))
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-				Debug.println("Unable to create bundle generation directory: " + generationDir.getPath()); //$NON-NLS-1$
-		return generationDir;
-	}
-
-	public void setReference(boolean reference) {
-		this.reference = reference;
-	}
-
-	public void setFileName(String fileName) {
-		this.fileName = fileName;
-		// This is only done for PDE source lookup (bug 126517)
-		this.bundleData.setFileName(fileName);
-	}
-
-	public void copy(StorageHook storageHook) {
-		if (!(storageHook instanceof BaseStorageHook))
-			throw new IllegalArgumentException();
-		BaseStorageHook hook = (BaseStorageHook) storageHook;
-		bundleStore = hook.bundleStore;
-		dataStore = hook.dataStore;
-		generation = hook.generation + 1;
-		// fileName and reference will be set by update
-	}
-
-	public void validate() throws IllegalArgumentException {
-		// do nothing
-	}
-
-	public Dictionary getManifest(boolean firstLoad) throws BundleException {
-		// do nothing
-		return null;
-	}
-
-	public boolean forgetStatusChange(int status) {
-		// do nothing
-		return false;
-	}
-
-	public boolean forgetStartLevelChange(int startlevel) {
-		// do nothing
-		return false;
-	}
-
-	public void initialize(BaseAdaptor adaptor) {
-		// do nothing
-	}
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		// do nothing
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		// do nothing
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		// do nothing
-	}
-
-	public void addProperties(Properties properties) {
-		// do nothing
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		// take into account that initial@ is special (bug 268563)
-		if (location.startsWith("initial@")) { //$NON-NLS-1$
-			location = location.substring(8);
-			return new URL(location).openConnection();
-		}
-		// see if this is an existing location
-		Bundle[] bundles = storage.getAdaptor().getContext().getBundles();
-		AbstractBundle bundle = null;
-		for (int i = 0; i < bundles.length && bundle == null; i++)
-			if (location.equals(bundles[i].getLocation()))
-				bundle = (AbstractBundle) bundles[i];
-		if (bundle == null)
-			return null;
-		BaseData data = (BaseData) bundle.getBundleData();
-		BaseStorageHook hook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-		return hook.isReference() ? new URL("reference:file:" + hook.getFileName()).openConnection() : null; //$NON-NLS-1$
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// do nothing
-	}
-
-	public FrameworkLog createFrameworkLog() {
-		// do nothing
-		return null;
-	}
-
-	public BaseStorage getStorage() {
-		return storage;
-	}
-
-	public static String substituteVars(String path) {
-		StringBuffer buf = new StringBuffer(path.length());
-		StringTokenizer st = new StringTokenizer(path, VARIABLE_DELIM_STRING, true);
-		boolean varStarted = false; // indicates we are processing a var subtitute
-		String var = null; // the current var key
-		while (st.hasMoreElements()) {
-			String tok = st.nextToken();
-			if (VARIABLE_DELIM_STRING.equals(tok)) {
-				if (!varStarted) {
-					varStarted = true; // we found the start of a var
-					var = ""; //$NON-NLS-1$
-				} else {
-					// we have found the end of a var
-					String prop = null;
-					// get the value of the var from system properties
-					if (var != null && var.length() > 0)
-						prop = FrameworkProperties.getProperty(var);
-					if (prop == null) {
-						try {
-							// try using the System.getenv method if it exists (bug 126921)
-							Method getenv = System.class.getMethod("getenv", new Class[] {String.class}); //$NON-NLS-1$
-							prop = (String) getenv.invoke(null, new Object[] {var});
-						} catch (Throwable t) {
-							// do nothing; 
-							// on 1.4 VMs this throws an error
-							// on J2ME this method does not exist
-						}
-					}
-					if (prop != null)
-						// found a value; use it
-						buf.append(prop);
-					else
-						// could not find a value append the var name w/o delims 
-						buf.append(var == null ? "" : var); //$NON-NLS-1$
-					varStarted = false;
-					var = null;
-				}
-			} else {
-				if (!varStarted)
-					buf.append(tok); // the token is not part of a var
-				else
-					var = tok; // the token is the var key; save the key to process when we find the end token
-			}
-		}
-		if (var != null)
-			// found a case of $var at the end of the path with no trailing $; just append it as is.
-			buf.append(VARIABLE_DELIM_CHAR).append(var);
-		return buf.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleInstall.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleInstall.java
deleted file mode 100644
index 6b52f01..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleInstall.java
+++ /dev/null
@@ -1,131 +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.osgi.internal.baseadaptor;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Dictionary;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.BundleOperation;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.ReferenceInputStream;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class BundleInstall implements BundleOperation {
-	private BaseData data;
-	private URLConnection source;
-	private BaseStorage storage;
-
-	public BundleInstall(BaseData data, URLConnection source, BaseStorage storage) {
-		this.data = data;
-		this.source = source;
-		this.storage = storage;
-	}
-
-	/**
-	 * Begin the operation on the bundle (install, update, uninstall).
-	 *
-	 * @return BundleData object for the target bundle.
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public BundleData begin() throws BundleException {
-		try {
-			InputStream in = null;
-			try {
-				data.setLastModified(System.currentTimeMillis());
-				data.setStartLevel(storage.getInitialBundleStartLevel());
-				StorageHook[] storageHooks = data.getAdaptor().getHookRegistry().getStorageHooks();
-				StorageHook[] instanceHooks = new StorageHook[storageHooks.length];
-				for (int i = 0; i < storageHooks.length; i++)
-					instanceHooks[i] = storageHooks[i].create(data);
-				data.setStorageHooks(instanceHooks);
-				BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-				in = source.getInputStream();
-				URL sourceURL = source.getURL();
-				String protocol = sourceURL == null ? null : sourceURL.getProtocol();
-				if (in instanceof ReferenceInputStream) {
-					URL reference = ((ReferenceInputStream) in).getReference();
-					if (!"file".equals(reference.getProtocol())) //$NON-NLS-1$
-						throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_URL_CREATE_EXCEPTION, reference));
-					storageHook.setReference(true);
-					storageHook.setFileName(reference.getPath());
-				} else {
-					File genDir = storageHook.createGenerationDir();
-					if (!genDir.exists())
-						throw new IOException(NLS.bind(AdaptorMsg.ADAPTOR_DIRECTORY_CREATE_EXCEPTION, genDir.getPath()));
-					storageHook.setReference(false);
-					storageHook.setFileName(BaseStorage.BUNDLEFILE_NAME);
-					File outFile = new File(genDir, storageHook.getFileName());
-					if ("file".equals(protocol)) { //$NON-NLS-1$
-						File inFile = new File(source.getURL().getPath());
-						if (inFile.isDirectory())
-							AdaptorUtil.copyDir(inFile, outFile);
-						else
-							AdaptorUtil.readFile(in, outFile);
-					} else {
-						AdaptorUtil.readFile(in, outFile);
-					}
-				}
-				Dictionary manifest = storage.loadManifest(data, true);
-				for (int i = 0; i < instanceHooks.length; i++)
-					instanceHooks[i].initialize(manifest);
-			} finally {
-				try {
-					if (in != null)
-						in.close();
-				} catch (IOException e) {
-					// do nothing
-				}
-			}
-		} catch (IOException ioe) {
-			throw new BundleException(AdaptorMsg.BUNDLE_READ_EXCEPTION, ioe);
-		}
-
-		return (data);
-	}
-
-	public void undo() {
-		if (data != null) {
-			try {
-				data.close();
-			} catch (IOException e) {
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-					Debug.println("Unable to close " + data + ": " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-
-		if (data != null) {
-			BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-			try {
-				if (storageHook != null)
-					storageHook.delete(false, BaseStorageHook.DEL_BUNDLE_STORE);
-			} catch (IOException e) {
-				data.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, data.getBundle(), e);
-			}
-		}
-	}
-
-	public void commit(boolean postpone) throws BundleException {
-		storage.processExtension(data, BaseStorage.EXTENSION_INSTALLED);
-		try {
-			data.save();
-		} catch (IOException e) {
-			throw new BundleException(AdaptorMsg.ADAPTOR_STORAGE_EXCEPTION, e);
-		}
-		storage.updateState(data, BundleEvent.INSTALLED);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUninstall.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUninstall.java
deleted file mode 100644
index 05d1fda..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUninstall.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.osgi.internal.baseadaptor;
-
-import java.io.*;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.BundleOperation;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.BundleException;
-
-public class BundleUninstall implements BundleOperation {
-	private BaseData data;
-	private BaseStorage storage;
-
-	public BundleUninstall(BaseData data, BaseStorage storage) {
-		this.data = data;
-		this.storage = storage;
-	}
-
-	/**
-	 * Perform the change to persistent storage.
-	 *
-	 * @return Bundle object for the target bundle.
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public BundleData begin() throws BundleException {
-		return data;
-	}
-
-	/**
-	 * Commit the change to persistent storage.
-	 *
-	 * @param postpone If true, the bundle's persistent
-	 * storage cannot be immediately reclaimed.
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public void commit(boolean postpone) throws BundleException {
-		BaseStorageHook storageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-		try {
-			storageHook.delete(postpone, BaseStorageHook.DEL_BUNDLE_STORE);
-		} catch (IOException e) {
-			// nothing we can do
-		}
-		storage.processExtension(data, BaseStorage.EXTENSION_UNINSTALLED);
-		data.setLastModified(System.currentTimeMillis());
-		storage.updateState(data, BundleEvent.UNINSTALLED);
-	}
-
-	/**
-	 * Undo the change to persistent storage.
-	 *
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public void undo() throws BundleException {
-		// do nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUpdate.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUpdate.java
deleted file mode 100644
index 49470a4..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BundleUpdate.java
+++ /dev/null
@@ -1,151 +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.osgi.internal.baseadaptor;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Dictionary;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.BundleOperation;
-import org.eclipse.osgi.framework.internal.core.ReferenceInputStream;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class BundleUpdate implements BundleOperation {
-	private BaseData data;
-	private BaseData newData;
-	private URLConnection source;
-	private BaseStorage storage;
-
-	public BundleUpdate(BaseData data, URLConnection source, BaseStorage storage) {
-		this.data = data;
-		this.source = source;
-		this.storage = storage;
-	}
-
-	/**
-	 * Perform the change to persistent storage.
-	 *
-	 * @return Bundle object for the target bundle.
-	 * @throws BundleException if an error occurs
-	 */
-	public BundleData begin() throws BundleException {
-		try {
-			newData = storage.createBaseData(data.getBundleID(), data.getLocation());
-			newData.setLastModified(System.currentTimeMillis());
-			newData.setStartLevel(data.getStartLevel());
-			newData.setStatus(data.getStatus());
-			// load the storage hooks into the new data
-			StorageHook[] storageHooks = data.getAdaptor().getHookRegistry().getStorageHooks();
-			StorageHook[] instanceHooks = new StorageHook[storageHooks.length];
-			for (int i = 0; i < storageHooks.length; i++) {
-				instanceHooks[i] = storageHooks[i].create(newData);
-				instanceHooks[i].copy(data.getStorageHook((String) instanceHooks[i].getKey()));
-			}
-			newData.setStorageHooks(instanceHooks);
-			// get the new eclipse storage hooks
-			BaseStorageHook newStorageHook = (BaseStorageHook) newData.getStorageHook(BaseStorageHook.KEY);
-			InputStream in = source.getInputStream();
-			URL sourceURL = source.getURL();
-			String protocol = sourceURL == null ? null : sourceURL.getProtocol();
-			try {
-				if (in instanceof ReferenceInputStream) {
-					URL reference = ((ReferenceInputStream) in).getReference();
-					if (!"file".equals(reference.getProtocol())) //$NON-NLS-1$
-						throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_URL_CREATE_EXCEPTION, reference));
-					// check to make sure we are not just trying to update to the same
-					// directory reference.  This would be a no-op.
-					String path = reference.getPath();
-					newStorageHook.setReference(true);
-					newStorageHook.setFileName(path);
-				} else {
-					File genDir = newStorageHook.createGenerationDir();
-					if (!genDir.exists())
-						throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_DIRECTORY_CREATE_EXCEPTION, genDir.getPath()));
-					newStorageHook.setReference(false);
-					newStorageHook.setFileName(BaseStorage.BUNDLEFILE_NAME);
-					File outFile = new File(genDir, newStorageHook.getFileName());
-					if ("file".equals(protocol)) { //$NON-NLS-1$
-						File inFile = new File(source.getURL().getPath());
-						if (inFile.isDirectory()) {
-							AdaptorUtil.copyDir(inFile, outFile);
-						} else {
-							AdaptorUtil.readFile(in, outFile);
-						}
-					} else {
-						AdaptorUtil.readFile(in, outFile);
-					}
-				}
-				Dictionary manifest = storage.loadManifest(newData, true);
-				for (int i = 0; i < instanceHooks.length; i++)
-					instanceHooks[i].initialize(manifest);
-			} finally {
-				try {
-					if (in != null)
-						in.close();
-				} catch (IOException ee) {
-					// nothing to do here
-				}
-			}
-		} catch (IOException e) {
-			throw new BundleException(AdaptorMsg.BUNDLE_READ_EXCEPTION, e);
-		}
-
-		return (newData);
-	}
-
-	/**
-	 * Commit the change to persistent storage.
-	 *
-	 * @param postpone If true, the bundle's persistent
-	 * storage cannot be immediately reclaimed.
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-
-	public void commit(boolean postpone) throws BundleException {
-		storage.processExtension(data, BaseStorage.EXTENSION_UNINSTALLED); // remove the old extension
-		storage.processExtension(newData, BaseStorage.EXTENSION_UPDATED); // update to the new one
-		try {
-			newData.setLastModified(System.currentTimeMillis());
-			newData.save();
-		} catch (IOException e) {
-			throw new BundleException(AdaptorMsg.ADAPTOR_STORAGE_EXCEPTION, e);
-		}
-		storage.updateState(newData, BundleEvent.UPDATED);
-		BaseStorageHook oldStorageHook = (BaseStorageHook) data.getStorageHook(BaseStorageHook.KEY);
-		try {
-			oldStorageHook.delete(postpone, BaseStorageHook.DEL_GENERATION);
-		} catch (IOException e) {
-			data.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, data.getBundle(), e);
-		}
-	}
-
-	/**
-	 * Undo the change to persistent storage.
-	 *
-	 * @throws BundleException If a failure occured modifiying peristent storage.
-	 */
-	public void undo() throws BundleException {
-		if (newData != null) {
-			BaseStorageHook newStorageHook = (BaseStorageHook) newData.getStorageHook(BaseStorageHook.KEY);
-			try {
-				if (newStorageHook != null)
-					newStorageHook.delete(false, BaseStorageHook.DEL_GENERATION);
-			} catch (IOException e) {
-				data.getAdaptor().getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, data.getBundle(), e);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader.java
deleted file mode 100644
index 327b7bc..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader.java
+++ /dev/null
@@ -1,279 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.*;
-import java.security.cert.Certificate;
-import java.util.Collections;
-import java.util.Enumeration;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.*;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-import org.osgi.framework.Bundle;
-
-/**
- * The default implementation of <code>BaseClassLoader</code>.  This implementation extends
- * <code>ClassLoader</code>.
- * @see BaseClassLoader
- * @see ClasspathManager
- */
-public class DefaultClassLoader extends ClassLoader implements ParallelClassLoader {
-	/**
-	 * A PermissionCollection for AllPermissions; shared across all ProtectionDomains when security is disabled
-	 */
-	protected static final PermissionCollection ALLPERMISSIONS;
-	private final static String CLASS_CERTIFICATE_SUPPORT = "osgi.support.class.certificate"; //$NON-NLS-1$
-	private final static String CLASS_LOADER_TYPE = "osgi.classloader.type"; //$NON-NLS-1$
-	private final static String CLASS_LOADER_TYPE_PARALLEL = "parallel"; //$NON-NLS-1$
-	private static final boolean CLASS_CERTIFICATE;
-	private static final boolean PARALLEL_CAPABLE;
-	private static final Enumeration EMPTY_ENUMERATION = Collections.enumeration(Collections.EMPTY_LIST);
-
-	static {
-		CLASS_CERTIFICATE = Boolean.valueOf(FrameworkProperties.getProperty(CLASS_CERTIFICATE_SUPPORT, "true")).booleanValue(); //$NON-NLS-1$
-		AllPermission allPerm = new AllPermission();
-		ALLPERMISSIONS = allPerm.newPermissionCollection();
-		if (ALLPERMISSIONS != null)
-			ALLPERMISSIONS.add(allPerm);
-		boolean typeParallel = CLASS_LOADER_TYPE_PARALLEL.equals(FrameworkProperties.getProperty(CLASS_LOADER_TYPE, CLASS_LOADER_TYPE_PARALLEL));
-		boolean parallelCapable = false;
-		try {
-			if (typeParallel) {
-				Method parallelCapableMetod = ClassLoader.class.getDeclaredMethod("registerAsParallelCapable", null); //$NON-NLS-1$
-				parallelCapableMetod.setAccessible(true);
-				parallelCapable = ((Boolean) parallelCapableMetod.invoke(null, null)).booleanValue();
-			}
-		} catch (Throwable e) {
-			// must do everything to avoid failing in clinit
-			parallelCapable = false;
-		}
-		PARALLEL_CAPABLE = parallelCapable;
-	}
-
-	protected ClassLoaderDelegate delegate;
-	protected ProtectionDomain domain;
-	// Note that PDE has internal dependency on this field type/name (bug 267238)
-	protected ClasspathManager manager;
-
-	/**
-	 * Constructs a new DefaultClassLoader.
-	 * @param parent the parent classloader
-	 * @param delegate the delegate for this classloader
-	 * @param domain the domain for this classloader
-	 * @param bundledata the bundledata for this classloader
-	 * @param classpath the classpath for this classloader
-	 */
-	public DefaultClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, ProtectionDomain domain, BaseData bundledata, String[] classpath) {
-		super(parent);
-		this.delegate = delegate;
-		this.domain = domain;
-		this.manager = new ClasspathManager(bundledata, classpath, this);
-	}
-
-	/**
-	 * Loads a class for the bundle.  First delegate.findClass(name) is called.
-	 * The delegate will query the system class loader, bundle imports, bundle
-	 * local classes, bundle hosts and fragments.  The delegate will call 
-	 * BundleClassLoader.findLocalClass(name) to find a class local to this 
-	 * bundle.  
-	 * @param name the name of the class to load.
-	 * @param resolve indicates whether to resolve the loaded class or not.
-	 * @return The Class object.
-	 * @throws ClassNotFoundException if the class is not found.
-	 */
-	protected Class loadClass(String name, boolean resolve) throws ClassNotFoundException {
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("BundleClassLoader[" + delegate + "].loadClass(" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
-		try {
-			// Just ask the delegate.  This could result in findLocalClass(name) being called.
-			Class clazz = delegate.findClass(name);
-			// resolve the class if asked to.
-			if (resolve)
-				resolveClass(clazz);
-			return (clazz);
-		} catch (Error e) {
-			if (Debug.DEBUG && Debug.DEBUG_LOADER) {
-				Debug.println("BundleClassLoader[" + delegate + "].loadClass(" + name + ") failed."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				Debug.printStackTrace(e);
-			}
-			throw e;
-		} catch (ClassNotFoundException e) {
-			// If the class is not found do not try to look for it locally.
-			// The delegate would have already done that for us.
-			if (Debug.DEBUG && Debug.DEBUG_LOADER) {
-				Debug.println("BundleClassLoader[" + delegate + "].loadClass(" + name + ") failed."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				Debug.printStackTrace(e);
-			}
-			throw e;
-		}
-	}
-
-	/**
-	 * Gets a resource for the bundle.  First delegate.findResource(name) is 
-	 * called. The delegate will query the system class loader, bundle imports,
-	 * bundle local resources, bundle hosts and fragments.  The delegate will 
-	 * call BundleClassLoader.findLocalResource(name) to find a resource local 
-	 * to this bundle.  
-	 * @param name The resource path to get.
-	 * @return The URL of the resource or null if it does not exist.
-	 */
-	public URL getResource(String name) {
-		if (Debug.DEBUG && Debug.DEBUG_LOADER) {
-			Debug.println("BundleClassLoader[" + delegate + "].getResource(" + name + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		URL url = delegate.findResource(name);
-		if (url != null)
-			return (url);
-
-		if (Debug.DEBUG && Debug.DEBUG_LOADER) {
-			Debug.println("BundleClassLoader[" + delegate + "].getResource(" + name + ") failed."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		return (null);
-	}
-
-	/**
-	 * Finds all resources with the specified name.  This method must call
-	 * delegate.findResources(name) to find all the resources.
-	 * @param name The resource path to find.
-	 * @return An Enumeration of all resources found or null if the resource.
-	 * @throws IOException 
-	 */
-	protected Enumeration findResources(String name) throws IOException {
-		Enumeration result = delegate.findResources(name);
-		if (result == null)
-			return EMPTY_ENUMERATION;
-		return result;
-	}
-
-	/**
-	 * Finds a library for this bundle.  Simply calls 
-	 * delegate.findLibrary(libname) to find the library.
-	 * @param libname The library to find.
-	 * @return The URL of the resource or null if it does not exist.
-	 */
-	protected String findLibrary(String libname) {
-		// let the manager find the library for us
-		return manager.findLibrary(libname);
-	}
-
-	public ProtectionDomain getDomain() {
-		return domain;
-	}
-
-	public ClasspathEntry createClassPathEntry(BundleFile bundlefile, ProtectionDomain cpDomain) {
-		return new ClasspathEntry(bundlefile, createProtectionDomain(bundlefile, cpDomain));
-	}
-
-	public Class defineClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry) {
-		return defineClass(name, classbytes, 0, classbytes.length, classpathEntry.getDomain());
-	}
-
-	public Class publicFindLoaded(String classname) {
-		return findLoadedClass(classname);
-	}
-
-	public Object publicGetPackage(String pkgname) {
-		return getPackage(pkgname);
-	}
-
-	public Object publicDefinePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) {
-		return definePackage(name, specTitle, specVersion, specVendor, implTitle, implVersion, implVendor, sealBase);
-	}
-
-	public void initialize() {
-		manager.initialize();
-	}
-
-	public URL findLocalResource(String resource) {
-		return manager.findLocalResource(resource);
-	}
-
-	public Enumeration findLocalResources(String resource) {
-		return manager.findLocalResources(resource);
-	}
-
-	public Class findLocalClass(String classname) throws ClassNotFoundException {
-		return manager.findLocalClass(classname);
-	}
-
-	public void close() {
-		manager.close();
-	}
-
-	public void attachFragment(BundleData sourcedata, ProtectionDomain sourcedomain, String[] sourceclasspath) {
-		manager.attachFragment(sourcedata, sourcedomain, sourceclasspath);
-	}
-
-	public ClassLoaderDelegate getDelegate() {
-		return delegate;
-	}
-
-	/**
-	 * Creates a ProtectionDomain which uses specified BundleFile and the permissions of the baseDomain
-	 * @param bundlefile The source bundlefile the domain is for.
-	 * @param baseDomain The source domain.
-	 * @return a ProtectionDomain which uses specified BundleFile and the permissions of the baseDomain 
-	 */
-	public static ProtectionDomain createProtectionDomain(BundleFile bundlefile, ProtectionDomain baseDomain) {
-		// create a protection domain which knows about the codesource for this classpath entry (bug 89904)
-		try {
-			// use the permissions supplied by the domain passed in from the framework
-			PermissionCollection permissions;
-			if (baseDomain != null)
-				permissions = baseDomain.getPermissions();
-			else
-				// no domain specified.  Better use a collection that has all permissions
-				// this is done just incase someone sets the security manager later
-				permissions = ALLPERMISSIONS;
-			Certificate[] certs = null;
-			SignedContent signedContent = null;
-			if (bundlefile instanceof BundleFileWrapperChain) {
-				BundleFileWrapperChain wrapper = (BundleFileWrapperChain) bundlefile;
-				while (wrapper != null && (!(wrapper.getWrapped() instanceof SignedContent)))
-					wrapper = wrapper.getNext();
-				signedContent = wrapper == null ? null : (SignedContent) wrapper.getWrapped();
-			}
-			if (CLASS_CERTIFICATE && signedContent != null && signedContent.isSigned()) {
-				SignerInfo[] signers = signedContent.getSignerInfos();
-				if (signers.length > 0)
-					certs = signers[0].getCertificateChain();
-			}
-			return new BundleProtectionDomain(permissions, new CodeSource(bundlefile.getBaseFile().toURL(), certs), null);
-		} catch (MalformedURLException e) {
-			// Failed to create our own domain; just return the baseDomain
-			return baseDomain;
-		}
-	}
-
-	public ClasspathManager getClasspathManager() {
-		return manager;
-	}
-
-	public Bundle getBundle() {
-		return manager.getBaseData().getBundle();
-	}
-
-	public boolean isParallelCapable() {
-		return PARALLEL_CAPABLE;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassLoadingHook.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassLoadingHook.java
deleted file mode 100644
index e008b5a..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassLoadingHook.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.File;
-import java.security.ProtectionDomain;
-import java.util.ArrayList;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.adaptor.BundleProtectionDomain;
-import org.eclipse.osgi.framework.adaptor.ClassLoaderDelegate;
-import org.eclipse.osgi.framework.util.KeyedElement;
-
-public class DevClassLoadingHook implements ClassLoadingHook, HookConfigurator, KeyedElement {
-	public static final String KEY = DevClassLoadingHook.class.getName();
-	public static final int HASHCODE = KEY.hashCode();
-	private static final String FRAGMENT = "@fragment@"; //$NON-NLS-1$
-
-	public byte[] processClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager) {
-		// Do nothing
-		return null;
-	}
-
-	public boolean addClassPathEntry(ArrayList cpEntries, String cp, ClasspathManager hostmanager, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		// first check that we are in devmode for this sourcedata
-		String[] devClassPath = !DevClassPathHelper.inDevelopmentMode() ? null : DevClassPathHelper.getDevClassPath(sourcedata.getSymbolicName());
-		if (devClassPath == null || devClassPath.length == 0)
-			return false; // not in dev mode return
-		// check that dev classpath entries have not already been added; we mark this in the first entry below
-		if (cpEntries.size() > 0 && ((ClasspathEntry) cpEntries.get(0)).getUserObject(KEY) != null)
-			return false; // this source has already had its dev classpath entries added.
-		boolean result = false;
-		for (int i = 0; i < devClassPath.length; i++) {
-			if (ClasspathManager.addClassPathEntry(cpEntries, devClassPath[i], hostmanager, sourcedata, sourcedomain))
-				result = true;
-			else {
-				// if in dev mode, try using the cp as an absolute path
-				// we assume absolute entries come from fragments.  Find the source
-				String devCP = devClassPath[i];
-				boolean fromFragment = devCP.endsWith(FRAGMENT);
-				if (fromFragment)
-					devCP = devCP.substring(0, devCP.length() - FRAGMENT.length());
-				BaseData fragData = findFragmentSource(sourcedata, devCP, hostmanager, fromFragment);
-				if (fragData != null) {
-					ClasspathEntry entry = hostmanager.getExternalClassPath(devCP, fragData, sourcedomain);
-					if (entry != null) {
-						cpEntries.add(entry);
-						result = true;
-					}
-				}
-			}
-		}
-		// mark the first entry of the list.  
-		// This way we can quickly tell that dev classpath entries have been added to the list
-		if (result && cpEntries.size() > 0)
-			((ClasspathEntry) cpEntries.get(0)).addUserObject(this);
-		return result;
-	}
-
-	private BaseData findFragmentSource(BaseData hostData, String cp, ClasspathManager manager, boolean fromFragment) {
-		if (hostData != manager.getBaseData())
-			return hostData;
-
-		File file = new File(cp);
-		if (!file.isAbsolute())
-			return hostData;
-		FragmentClasspath[] fragCP = manager.getFragmentClasspaths();
-		for (int i = 0; i < fragCP.length; i++) {
-			BundleFile fragBase = fragCP[i].getBundleData().getBundleFile();
-			File fragFile = fragBase.getBaseFile();
-			if (fragFile != null && file.getPath().startsWith(fragFile.getPath()))
-				return fragCP[i].getBundleData();
-		}
-		return fromFragment ? null : hostData;
-	}
-
-	public String findLibrary(BaseData data, String libName) {
-		// Do nothing
-		return null;
-	}
-
-	public ClassLoader getBundleClassLoaderParent() {
-		// Do nothing
-		return null;
-	}
-
-	public BaseClassLoader createClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, BundleProtectionDomain domain, BaseData data, String[] bundleclasspath) {
-		// do nothing
-		return null;
-	}
-
-	public void initializedClassLoader(BaseClassLoader baseClassLoader, BaseData data) {
-		// do nothing
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		if (DevClassPathHelper.inDevelopmentMode())
-			// only add dev classpath manager if in dev mode
-			hookRegistry.addClassLoadingHook(new DevClassLoadingHook());
-
-	}
-
-	public boolean compare(KeyedElement other) {
-		return other.getKey() == KEY;
-	}
-
-	public Object getKey() {
-		return KEY;
-	}
-
-	public int getKeyHashCode() {
-		return HASHCODE;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassPathHelper.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassPathHelper.java
deleted file mode 100644
index de565ab..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassPathHelper.java
+++ /dev/null
@@ -1,117 +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.osgi.internal.baseadaptor;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.util.ManifestElement;
-
-/**
- * This class provides helper methods to support developement classpaths.
- * @since 3.1
- */
-public final class DevClassPathHelper {
-	static private boolean inDevelopmentMode = false;
-	static private String[] devDefaultClasspath;
-	static private Dictionary devProperties = null;
-
-	static {
-		// Check the osgi.dev property to see if dev classpath entries have been defined.
-		String osgiDev = FrameworkProperties.getProperty("osgi.dev"); //$NON-NLS-1$
-		if (osgiDev != null) {
-			try {
-				inDevelopmentMode = true;
-				URL location = new URL(osgiDev);
-				devProperties = load(location);
-				if (devProperties != null)
-					devDefaultClasspath = getArrayFromList((String) devProperties.get("*")); //$NON-NLS-1$
-			} catch (MalformedURLException e) {
-				devDefaultClasspath = getArrayFromList(osgiDev);
-			}
-		}
-	}
-
-	private static String[] getDevClassPath(String id, Dictionary properties, String[] defaultClasspath) {
-		String[] result = null;
-		if (id != null && properties != null) {
-			String entry = (String) properties.get(id);
-			if (entry != null)
-				result = getArrayFromList(entry);
-		}
-		if (result == null)
-			result = defaultClasspath;
-		return result;
-	}
-
-	/**
-	 * Returns a list of classpath elements for the specified bundle symbolic name.
-	 * @param id a bundle symbolic name to get the development classpath for
-	 * @param properties a Dictionary of properties to use or <code>null</code> if
-	 * the default develoment classpath properties should be used
-	 * @return a list of development classpath elements
-	 */
-	public static String[] getDevClassPath(String id, Dictionary properties) {
-		if (properties == null)
-			return getDevClassPath(id, devProperties, devDefaultClasspath);
-		return getDevClassPath(id, properties, getArrayFromList((String) properties.get("*"))); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns a list of classpath elements for the specified bundle symbolic name.
-	 * @param id a bundle symbolic name to get the development classpath for
-	 * @return a list of development classpath elements
-	 */
-	public static String[] getDevClassPath(String id) {
-		return getDevClassPath(id, null);
-	}
-
-	/**
-	 * 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) {
-		return ManifestElement.getArrayFromList(prop, ","); //$NON-NLS-1$
-	}
-
-	/**
-	 * Indicates the development mode.
-	 * @return true if in development mode; false otherwise
-	 */
-	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.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/ExternalMessages.properties b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/ExternalMessages.properties
deleted file mode 100644
index d83e889..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/ExternalMessages.properties
+++ /dev/null
@@ -1,39 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2010 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-#External Messages for EN locale
-
-ADAPTOR_STORAGE_EXCEPTION=The FrameworkAdaptor object could not perform the operation
-ADAPTOR_STORAGE_INIT_FAILED_MSG=Locking is not possible in the directory \"{0}\". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking passing \"-Dosgi.locking=none\" as a VM argument. 
-ADAPTOR_STORAGE_INIT_FAILED_TITLE =Invalid Configuration Location
-ADAPTOR_URL_CREATE_EXCEPTION=\"{0}\" is an invalid URL
-ADAPTOR_DIRECTORY_CREATE_EXCEPTION=The directory \"{0}\" could not be created
-ADAPTOR_DIRECTORY_EXCEPTION=The file \"{0}\" is not a directory
-ADAPTOR_DIRECTORY_REMOVE_EXCEPTION=The directory \"{0}\" could not be removed
-ADAPTER_FILEEXIST_EXCEPTION=The file \"{0}\" does not exist
-ADAPTOR_ERROR_GETTING_MANIFEST=An error occurred trying to read the manifest in bundle {0}
-ADAPTOR_DATA_AREA_NOT_SET=Instance data location not set yet
-ADAPTOR_EXTENSION_NATIVECODE_ERROR=Extension bundle fragments cannot specify a Bundle-NativeCode header: {0}
-ADAPTOR_EXTENSION_REQUIRE_ERROR=Extension bundle fragments cannot specify a Require-Bundle header: {0}
-ADAPTOR_EXTENSION_IMPORT_ERROR=Extension bundle fragments cannot specify an Import-Package header: {0}
-
-SYSTEMBUNDLE_MISSING_MANIFEST = Unable to find system bundle manifest file.
-SYSTEMBUNDLE_NOTRESOLVED = The System Bundle could not be resolved: {0}
-BUNDLE_READ_EXCEPTION=An error occurred trying to read the bundle
-BUNDLE_NATIVECODE_EXCEPTION=The Bundle-NativeCode file {0} could not be found
-BUNDLE_CLASSPATH_PROPERTIES_ERROR=An error occurred while reading the classpath properties file: {0}
-BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION=The bundle class path entry \"{0}\" could not be found for the bundle \"{1}\"
-MANIFEST_NOT_FOUND_EXCEPTION=The manifest file {0} could not be found in the bundle {1}
-
-RESOURCE_NOT_FOUND_EXCEPTION=The resource {0} could not be found
-URL_NO_BUNDLE_ID=No bundle ID specified: {0}
-URL_INVALID_BUNDLE_ID=Invalid Bundle ID specified: {0}
-URL_NO_BUNDLE_FOUND=No bundle found for URL: {0}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/InvalidVersion.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/InvalidVersion.java
deleted file mode 100644
index 1dea537..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/InvalidVersion.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import org.osgi.framework.Version;
-
-/**
- * This class is used to hold invalid version strings.  This is used to support 
- * OSGi R3 bundles which could have an invalid Bundle-Version header.  An 
- * InvalidVersion always has a value of 0.0.0.
- */
-public class InvalidVersion extends Version {
-	private String invalidVersion;
-
-	/**
-	 * Constructs a BadVersion using the specified invalid version string.
-	 * @param badVersion an invalid version string.
-	 */
-	public InvalidVersion(String badVersion) {
-		super(0, 0, 0, null);
-		this.invalidVersion = badVersion;
-	}
-
-	/**
-	 * Returns the invalid version string.
-	 * @return the invalid version string.
-	 */
-	public String getInvalidVersion() {
-		return invalidVersion;
-	}
-
-	public String toString() {
-		return invalidVersion;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/StateManager.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/StateManager.java
deleted file mode 100644
index c61c6c5..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/StateManager.java
+++ /dev/null
@@ -1,342 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.File;
-import java.io.IOException;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.internal.loader.BundleLoader;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
-import org.eclipse.osgi.internal.resolver.*;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-/**
- * The StateManager manages the system state for the framework.  It also provides the implementation
- * to the PlatformAdmin service.
- * <p>
- * Clients may extend this class.
- * </p>
- * @since 3.1
- */
-public class StateManager implements PlatformAdmin, Runnable {
-	/**
-	 * General debug flag
-	 */
-	public static boolean DEBUG = false;
-	/**
-	 * Reader debug flag
-	 */
-	public static boolean DEBUG_READER = false;
-	/**
-	 * PlatformAdmin debug flag
-	 */
-	public static boolean DEBUG_PLATFORM_ADMIN = false;
-	/**
-	 * PlatformAdmin resolver debug flag
-	 */
-	public static boolean DEBUG_PLATFORM_ADMIN_RESOLVER = false;
-	/**
-	 * Monitor PlatformAdmin debug flag
-	 */
-	public static boolean MONITOR_PLATFORM_ADMIN = false;
-	/**
-	 * System property used to disable lazy state loading
-	 */
-	public static String PROP_NO_LAZY_LOADING = "osgi.noLazyStateLoading"; //$NON-NLS-1$
-	/**
-	 * System property used to specify to amount time before lazy data can be flushed from memory
-	 */
-	public static String PROP_LAZY_UNLOADING_TIME = "osgi.lazyStateUnloadingTime"; //$NON-NLS-1$
-	private long expireTime = 300000; // default to five minutes
-	private long readStartupTime;
-	private StateImpl systemState;
-	private StateObjectFactoryImpl factory;
-	private long lastTimeStamp;
-	private boolean cachedState = false;
-	private File stateFile;
-	private File lazyFile;
-	private long expectedTimeStamp;
-	private BundleContext context;
-	private Thread dataManagerThread;
-
-	/**
-	 * Constructs a StateManager using the specified files and context
-	 * @param stateFile a file with the data required to persist in memory
-	 * @param lazyFile a file with the data that may be lazy loaded and can be flushed from memory
-	 * @param context the bundle context of the system bundle
-	 */
-	public StateManager(File stateFile, File lazyFile, BundleContext context) {
-		// a negative timestamp means no timestamp checking
-		this(stateFile, lazyFile, context, -1);
-	}
-
-	/**
-	 * Constructs a StateManager using the specified files and context
-	 * @param stateFile a file with the data required to persist in memory
-	 * @param lazyFile a file with the data that may be lazy loaded and can be flushed from memory
-	 * @param context the bundle context of the system bundle
-	 * @param expectedTimeStamp the expected timestamp of the persisted system state.  A negative
-	 * value indicates that no timestamp checking is done
-	 */
-	public StateManager(File stateFile, File lazyFile, BundleContext context, long expectedTimeStamp) {
-		this.stateFile = stateFile;
-		this.lazyFile = lazyFile;
-		this.context = context;
-		this.expectedTimeStamp = expectedTimeStamp;
-		factory = new StateObjectFactoryImpl();
-	}
-
-	/**
-	 * Shutsdown the state manager.  If the timestamp of the system state has changed
-	 * @param stateFile
-	 * @param lazyFile
-	 * @throws IOException
-	 */
-	public void shutdown(File stateFile, File lazyFile) throws IOException {
-		BundleDescription[] removalPendings = systemState.getRemovalPendings();
-		cleanRemovalPendings(removalPendings);
-		writeState(systemState, stateFile, lazyFile);
-		stopDataManager();
-	}
-
-	private void cleanRemovalPendings(BundleDescription[] removalPendings) {
-		if (removalPendings.length == 0)
-			return;
-		systemState.resolve(removalPendings);
-		for (int i = 0; i < removalPendings.length; i++) {
-			Object userObject = removalPendings[i].getUserObject();
-			if (userObject instanceof BundleLoaderProxy)
-				BundleLoader.closeBundleLoader((BundleLoaderProxy) userObject);
-		}
-	}
-
-	/**
-	 * Update the given target files with the state data in memory.
-	 * @param stateFile
-	 * @param lazyFile
-	 * @throws IOException
-	 */
-	public void update(File stateFile, File lazyFile) throws IOException {
-		BundleDescription[] removalPendings = systemState.getRemovalPendings();
-		StateImpl state = systemState;
-		if (removalPendings.length > 0) {
-			state = (StateImpl) state.getFactory().createState(systemState);
-			state.setResolver(createResolver(System.getSecurityManager() != null));
-			state.setPlatformProperties(FrameworkProperties.getProperties());
-			state.resolve(false);
-		}
-		writeState(state, stateFile, lazyFile);
-		// Need to use the timestamp of the original state here
-		lastTimeStamp = systemState.getTimeStamp();
-		// TODO consider updating the state files for lazy loading
-	}
-
-	private void readSystemState(File stateFile, File lazyFile, long expectedTimeStamp) {
-		if (stateFile == null || !stateFile.isFile())
-			return;
-		if (DEBUG_READER)
-			readStartupTime = System.currentTimeMillis();
-		try {
-			boolean lazyLoad = !Boolean.valueOf(FrameworkProperties.getProperty(PROP_NO_LAZY_LOADING)).booleanValue();
-			systemState = factory.readSystemState(stateFile, lazyFile, lazyLoad, expectedTimeStamp);
-			// problems in the cache (corrupted/stale), don't create a state object
-			if (systemState == null || !initializeSystemState()) {
-				systemState = null;
-				return;
-			}
-			cachedState = true;
-			try {
-				expireTime = Long.parseLong(FrameworkProperties.getProperty(PROP_LAZY_UNLOADING_TIME, Long.toString(expireTime)));
-			} catch (NumberFormatException nfe) {
-				// default to not expire
-				expireTime = 0;
-			}
-			if (lazyLoad && expireTime > 0)
-				startDataManager();
-		} catch (IOException ioe) {
-			// TODO: how do we log this?
-			ioe.printStackTrace();
-		} finally {
-			if (DEBUG_READER)
-				System.out.println("Time to read state: " + (System.currentTimeMillis() - readStartupTime)); //$NON-NLS-1$
-		}
-	}
-
-	private synchronized void startDataManager() {
-		if (dataManagerThread != null)
-			return;
-		dataManagerThread = new Thread(this, "State Data Manager"); //$NON-NLS-1$
-		dataManagerThread.setDaemon(true);
-		dataManagerThread.start();
-	}
-
-	/**
-	 * Stops the active data manager thread which is used to unload unused
-	 * state objects from memory.
-	 */
-	public synchronized void stopDataManager() {
-		if (dataManagerThread == null)
-			return;
-		dataManagerThread.interrupt();
-		dataManagerThread = null;
-	}
-
-	private void writeState(StateImpl state, File stateFile, File lazyFile) throws IOException {
-		if (state == null)
-			return;
-		if (cachedState && !saveNeeded())
-			return;
-		state.fullyLoad(); // make sure we are fully loaded before saving
-		factory.writeState(state, stateFile, lazyFile);
-	}
-
-	private boolean initializeSystemState() {
-		systemState.setResolver(createResolver(System.getSecurityManager() != null));
-		lastTimeStamp = systemState.getTimeStamp();
-		return !systemState.setPlatformProperties(FrameworkProperties.getProperties());
-	}
-
-	/**
-	 * Creates a new State used by the system.  If the system State already 
-	 * exists then a new system State is not created.
-	 * @return the State used by the system.
-	 */
-	public synchronized State createSystemState() {
-		if (systemState == null) {
-			systemState = factory.createSystemState();
-			initializeSystemState();
-		}
-		return systemState;
-	}
-
-	/**
-	 * Reads the State used by the system.  If the system State already
-	 * exists then the system State is not read from a cache.  If the State could 
-	 * not be read from a cache then <code>null</code> is returned.
-	 * @return the State used by the system or <code>null</code> if the State
-	 * could not be read from a cache.
-	 */
-	public synchronized State readSystemState() {
-		if (systemState == null)
-			readSystemState(stateFile, lazyFile, expectedTimeStamp);
-		return systemState;
-	}
-
-	/**
-	 * Returns the State used by the system.  If the system State does 
-	 * not exist then <code>null</code> is returned.
-	 * @return the State used by the system or <code>null</code> if one
-	 * does not exist.
-	 */
-	public State getSystemState() {
-		return systemState;
-	}
-
-	/**
-	 * Returns the cached time stamp of the system State.  This value is the 
-	 * original time stamp of the system state when it was created or read from
-	 * a cache.
-	 * @see State#getTimeStamp()
-	 * @return the cached time stamp of the system State
-	 */
-	public long getCachedTimeStamp() {
-		return lastTimeStamp;
-	}
-
-	public boolean saveNeeded() {
-		return systemState.getTimeStamp() != lastTimeStamp || systemState.dynamicCacheChanged();
-	}
-
-	/**
-	 * @see PlatformAdmin#getState(boolean)
-	 */
-	public State getState(boolean mutable) {
-		return mutable ? factory.createState(systemState) : new ReadOnlyState(systemState);
-	}
-
-	/**
-	 * @see PlatformAdmin#getState()
-	 */
-	public State getState() {
-		return getState(true);
-	}
-
-	/**
-	 * @see PlatformAdmin#getFactory()
-	 */
-	public StateObjectFactory getFactory() {
-		return factory;
-	}
-
-	/**
-	 * @see PlatformAdmin#commit(State)
-	 */
-	public synchronized void commit(State state) throws BundleException {
-		throw new IllegalArgumentException("PlatformAdmin.commit() not supported"); //$NON-NLS-1$
-	}
-
-	/**
-	 * @see PlatformAdmin#getResolver()
-	 * @deprecated
-	 */
-	public Resolver getResolver() {
-		return createResolver(false);
-	}
-
-	/**
-	 * @see PlatformAdmin#createResolver()
-	 */
-	public Resolver createResolver() {
-		return createResolver(false);
-	}
-
-	private Resolver createResolver(boolean checkPermissions) {
-		return new org.eclipse.osgi.internal.module.ResolverImpl(context, checkPermissions);
-	}
-
-	/**
-	 * @see PlatformAdmin#getStateHelper()
-	 */
-	public StateHelper getStateHelper() {
-		return StateHelperImpl.getInstance();
-	}
-
-	public void run() {
-		long timeStamp = lastTimeStamp; // cache the original timestamp incase of updates
-		while (true) {
-			try {
-				Thread.sleep(expireTime);
-			} catch (InterruptedException e) {
-				return;
-			}
-			if (systemState != null)
-				synchronized (systemState) {
-					if (timeStamp == systemState.getTimeStamp() && !systemState.dynamicCacheChanged())
-						systemState.unloadLazyData();
-				}
-		}
-	}
-
-	public void addDisabledInfo(DisabledInfo disabledInfo) {
-		if (systemState == null)
-			throw new IllegalStateException(); // should never happen
-		systemState.addDisabledInfo(disabledInfo);
-	}
-
-	public void removeDisabledInfo(DisabledInfo disabledInfo) {
-		if (systemState == null)
-			throw new IllegalStateException(); // should never happen
-		systemState.removeDisabledInfo(disabledInfo);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/SystemBundleData.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/SystemBundleData.java
deleted file mode 100644
index 7148b0b..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/SystemBundleData.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.baseadaptor;
-
-import java.io.*;
-import java.net.URL;
-import java.util.Enumeration;
-import org.eclipse.osgi.baseadaptor.BaseAdaptor;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.util.Headers;
-import org.osgi.framework.BundleException;
-
-public class SystemBundleData extends BaseData {
-	private static final String OSGI_FRAMEWORK = "osgi.framework"; //$NON-NLS-1$
-
-	public SystemBundleData(BaseAdaptor adaptor) throws BundleException {
-		super(0, adaptor);
-		File osgiBase = getOsgiBase();
-		createBundleFile(osgiBase);
-		manifest = createManifest(osgiBase);
-		setMetaData();
-		setLastModified(System.currentTimeMillis()); // just set the lastModified to the current time
-		StorageHook[] hooks = adaptor.getHookRegistry().getStorageHooks();
-		StorageHook[] instanceHooks = new StorageHook[hooks.length];
-		for (int i = 0; i < hooks.length; i++)
-			instanceHooks[i] = hooks[i].create(this);
-		setStorageHooks(instanceHooks);
-	}
-
-	private File getOsgiBase() {
-		String frameworkLocation = FrameworkProperties.getProperty(SystemBundleData.OSGI_FRAMEWORK);
-		if (frameworkLocation != null)
-			// TODO assumes the location is a file URL
-			return new File(frameworkLocation.substring(5));
-		try {
-			URL url = getClass().getProtectionDomain().getCodeSource().getLocation();
-			// assumes file URL
-			return new File(url.getPath());
-		} catch (Throwable e) {
-			// do nothing
-		}
-		frameworkLocation = FrameworkProperties.getProperty("user.dir"); //$NON-NLS-1$
-		if (frameworkLocation != null)
-			return new File(frameworkLocation);
-		return null;
-	}
-
-	private Headers createManifest(File osgiBase) throws BundleException {
-		InputStream in = null;
-
-		if (osgiBase != null && osgiBase.exists())
-			try {
-				BundleEntry entry = getBundleFile().getEntry(Constants.OSGI_BUNDLE_MANIFEST);
-				if (entry != null)
-					in = entry.getInputStream();
-			} catch (IOException e) {
-				// do nothing here.  in == null
-			}
-
-		// If we cannot find the Manifest file from the baseBundleFile then
-		// search for the manifest as a classloader resource
-		// This allows an adaptor to package the SYSTEMBUNDLE.MF file in a jar.
-		if (in == null)
-			in = getManifestAsResource();
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL)
-			if (in == null)
-				Debug.println("Unable to find system bundle manifest " + Constants.OSGI_BUNDLE_MANIFEST); //$NON-NLS-1$
-
-		if (in == null)
-			throw new BundleException(AdaptorMsg.SYSTEMBUNDLE_MISSING_MANIFEST, BundleException.MANIFEST_ERROR);
-		return Headers.parseManifest(in);
-	}
-
-	private InputStream getManifestAsResource() {
-		ClassLoader cl = getClass().getClassLoader();
-		try {
-			// get all manifests in your classloader delegation
-			Enumeration manifests = cl != null ? cl.getResources(Constants.OSGI_BUNDLE_MANIFEST) : ClassLoader.getSystemResources(Constants.OSGI_BUNDLE_MANIFEST);
-			while (manifests.hasMoreElements()) {
-				URL url = (URL) manifests.nextElement();
-				try {
-					// check each manifest until we find one with the Eclipse-SystemBundle: true header
-					Headers headers = Headers.parseManifest(url.openStream());
-					if ("true".equals(headers.get(Constants.ECLIPSE_SYSTEMBUNDLE))) //$NON-NLS-1$
-						return url.openStream();
-				} catch (BundleException e) {
-					// ignore and continue to next URL
-				}
-			}
-		} catch (IOException e) {
-			// ignore and return null
-		}
-		return null;
-	}
-
-	private void createBundleFile(File osgiBase) {
-		if (osgiBase != null)
-			try {
-				bundleFile = getAdaptor().createBundleFile(osgiBase, this);
-			} catch (IOException e) {
-				// should not happen
-			}
-		else
-			bundleFile = new BundleFile(osgiBase) {
-				public File getFile(String path, boolean nativeCode) {
-					return null;
-				}
-
-				public BundleEntry getEntry(String path) {
-					return null;
-				}
-
-				public Enumeration getEntryPaths(String path) {
-					return null;
-				}
-
-				public void close() {
-					// do nothing
-				}
-
-				public void open() {
-					// do nothing
-				}
-
-				public boolean containsDir(String dir) {
-					return false;
-				}
-			};
-	}
-
-	private void setMetaData() throws BundleException {
-		setLocation(Constants.SYSTEM_BUNDLE_LOCATION);
-		BaseStorageHook.loadManifest(this, manifest);
-	}
-
-	public BundleClassLoader createClassLoader(ClassLoaderDelegate delegate, BundleProtectionDomain domain, String[] bundleclasspath) {
-		return null;
-	}
-
-	public File createGenerationDir() {
-		return null;
-	}
-
-	public String findLibrary(String libname) {
-		return null;
-	}
-
-	public void installNativeCode(String[] nativepaths) throws BundleException {
-		// do nothing
-	}
-
-	public int getStartLevel() {
-		return 0;
-	}
-
-	public int getStatus() {
-		return Constants.BUNDLE_STARTED;
-	}
-
-	public void save() {
-		// do nothing
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseLog.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseLog.java
deleted file mode 100644
index 65e8f76..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseLog.java
+++ /dev/null
@@ -1,690 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.adaptor;
-
-import java.io.*;
-import java.lang.reflect.InvocationTargetException;
-import java.security.AccessController;
-import java.util.Calendar;
-import java.util.Date;
-import org.eclipse.core.runtime.internal.adaptor.EclipseEnvironmentInfo;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.osgi.framework.*;
-
-/**
- * The FrameworkLog implementation for Eclipse.
- * <p>
- * Clients may extend this class.
- * </p>
- * @since 3.1
- */
-public class EclipseLog implements FrameworkLog {
-	private static final String PASSWORD = "-password"; //$NON-NLS-1$	
-	/** The session tag */
-	protected static final String SESSION = "!SESSION"; //$NON-NLS-1$
-	/** The entry tag */
-	protected static final String ENTRY = "!ENTRY"; //$NON-NLS-1$
-	/** The sub-entry tag */
-	protected static final String SUBENTRY = "!SUBENTRY"; //$NON-NLS-1$
-	/** The message tag */
-	protected static final String MESSAGE = "!MESSAGE"; //$NON-NLS-1$
-	/** The stacktrace tag */
-	protected static final String STACK = "!STACK"; //$NON-NLS-1$
-
-	/** The line separator used in the log output */
-	protected static final String LINE_SEPARATOR;
-	/** The tab character used in the log output */
-	protected static final String TAB_STRING = "\t"; //$NON-NLS-1$
-
-	//Constants for rotating log file
-	/** The default size a log file can grow before it is rotated */
-	public static final int DEFAULT_LOG_SIZE = 1000;
-	/** The default number of backup log files */
-	public static final int DEFAULT_LOG_FILES = 10;
-	/** The minimum size limit for log rotation */
-	public static final int LOG_SIZE_MIN = 10;
-
-	/** The system property used to specify the log level */
-	public static final String PROP_LOG_LEVEL = "eclipse.log.level"; //$NON-NLS-1$
-	/** The system property used to specify size a log file can grow before it is rotated */
-	public static final String PROP_LOG_SIZE_MAX = "eclipse.log.size.max"; //$NON-NLS-1$
-	/** The system property used to specify the maximim number of backup log files to use */
-	public static final String PROP_LOG_FILE_MAX = "eclipse.log.backup.max"; //$NON-NLS-1$
-	/** The extension used for log files */
-	public static final String LOG_EXT = ".log"; //$NON-NLS-1$
-	/** The extension markup to use for backup log files*/
-	public static final String BACKUP_MARK = ".bak_"; //$NON-NLS-1$
-
-	static {
-		String s = System.getProperty("line.separator"); //$NON-NLS-1$
-		LINE_SEPARATOR = s == null ? "\n" : s; //$NON-NLS-1$
-	}
-	private static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-
-	/** Indicates if the console messages should be printed to the console (System.out) */
-	protected boolean consoleLog = false;
-	/** Indicates if the next log message is part of a new session */
-	protected boolean newSession = true;
-	/**
-	 * The File object to store messages.  This value may be null.
-	 */
-	protected File outFile;
-
-	/**
-	 * The Writer to log messages to.
-	 */
-	protected Writer writer;
-
-	int maxLogSize = DEFAULT_LOG_SIZE; // The value is in KB.
-	int maxLogFiles = DEFAULT_LOG_FILES;
-	int backupIdx = 0;
-
-	private int logLevel = FrameworkLogEntry.OK;
-
-	/**
-	 * Constructs an EclipseLog which uses the specified File to log messages to
-	 * @param outFile a file to log messages to
-	 */
-	public EclipseLog(File outFile) {
-		this.outFile = outFile;
-		this.writer = null;
-		readLogProperties();
-	}
-
-	/**
-	 * Constructs an EclipseLog which uses the specified Writer to log messages to
-	 * @param writer a writer to log messages to
-	 */
-	public EclipseLog(Writer writer) {
-		if (writer == null)
-			// log to System.err by default
-			this.writer = logForStream(System.err);
-		else
-			this.writer = writer;
-	}
-
-	/**
-	 * Constructs an EclipseLog which uses System.err to write log messages to
-	 *
-	 */
-	public EclipseLog() {
-		this((Writer) null);
-	}
-
-	private Throwable getRoot(Throwable t) {
-		Throwable root = null;
-		if (t instanceof BundleException)
-			root = ((BundleException) t).getNestedException();
-		if (t instanceof InvocationTargetException)
-			root = ((InvocationTargetException) t).getTargetException();
-		// skip inner InvocationTargetExceptions and BundleExceptions
-		if (root instanceof InvocationTargetException || root instanceof BundleException) {
-			Throwable deeplyNested = getRoot(root);
-			if (deeplyNested != null)
-				// if we have something more specific, use it, otherwise keep what we have
-				root = deeplyNested;
-		}
-		return root;
-	}
-
-	/**
-	 * Helper method for writing out argument arrays.
-	 * @param header the header
-	 * @param args the list of arguments
-	 */
-	protected void writeArgs(String header, String[] args) throws IOException {
-		if (args == null || args.length == 0)
-			return;
-		write(header);
-		for (int i = 0; i < args.length; i++) {
-			//mask out the password argument for security
-			if (i > 0 && PASSWORD.equals(args[i - 1]))
-				write(" (omitted)"); //$NON-NLS-1$
-			else
-				write(" " + args[i]); //$NON-NLS-1$
-		}
-		writeln();
-	}
-
-	/**
-	 * Returns the session timestamp.  This is the time the platform was started
-	 * @return the session timestamp
-	 */
-	protected String getSessionTimestamp() {
-		// Main should have set the session start-up timestamp so return that. 
-		// Return the "now" time if not available.
-		String ts = FrameworkProperties.getProperty("eclipse.startTime"); //$NON-NLS-1$
-		if (ts != null) {
-			try {
-				return getDate(new Date(Long.parseLong(ts)));
-			} catch (NumberFormatException e) {
-				// fall through and use the timestamp from right now
-			}
-		}
-		return getDate(new Date());
-	}
-
-	/**
-	 * Writes the session
-	 * @throws IOException if an error occurs writing to the log
-	 */
-	protected void writeSession() throws IOException {
-		write(SESSION);
-		writeSpace();
-		String date = getSessionTimestamp();
-		write(date);
-		writeSpace();
-		for (int i = SESSION.length() + date.length(); i < 78; i++) {
-			write("-"); //$NON-NLS-1$
-		}
-		writeln();
-		// Write out certain values found in System.getProperties()
-		try {
-			String key = "eclipse.buildId"; //$NON-NLS-1$
-			String value = FrameworkProperties.getProperty(key, "unknown"); //$NON-NLS-1$
-			writeln(key + "=" + value); //$NON-NLS-1$
-
-			key = "java.fullversion"; //$NON-NLS-1$
-			value = System.getProperty(key);
-			if (value == null) {
-				key = "java.version"; //$NON-NLS-1$
-				value = System.getProperty(key);
-				writeln(key + "=" + value); //$NON-NLS-1$
-				key = "java.vendor"; //$NON-NLS-1$
-				value = System.getProperty(key);
-				writeln(key + "=" + value); //$NON-NLS-1$
-			} else {
-				writeln(key + "=" + value); //$NON-NLS-1$
-			}
-		} catch (Exception e) {
-			// If we're not allowed to get the values of these properties
-			// then just skip over them.
-		}
-		// The Bootloader has some information that we might be interested in.
-		write("BootLoader constants: OS=" + EclipseEnvironmentInfo.getDefault().getOS()); //$NON-NLS-1$
-		write(", ARCH=" + EclipseEnvironmentInfo.getDefault().getOSArch()); //$NON-NLS-1$
-		write(", WS=" + EclipseEnvironmentInfo.getDefault().getWS()); //$NON-NLS-1$
-		writeln(", NL=" + EclipseEnvironmentInfo.getDefault().getNL()); //$NON-NLS-1$
-		// Add the command-line arguments used to invoke the platform 
-		// XXX: this includes runtime-private arguments - should we do that?
-		writeArgs("Framework arguments: ", EclipseEnvironmentInfo.getDefault().getNonFrameworkArgs()); //$NON-NLS-1$
-		writeArgs("Command-line arguments: ", EclipseEnvironmentInfo.getDefault().getCommandLineArgs()); //$NON-NLS-1$
-	}
-
-	public void close() {
-		try {
-			if (writer != null) {
-				Writer tmpWriter = writer;
-				writer = null;
-				tmpWriter.close();
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * If a File is used to log messages to then the File opened and a Writer is created
-	 * to log messages to.
-	 */
-	protected void openFile() {
-		if (writer == null) {
-			if (outFile != null) {
-				try {
-					writer = logForStream(secureAction.getFileOutputStream(outFile, true));
-				} catch (IOException e) {
-					writer = logForStream(System.err);
-				}
-			} else {
-				writer = logForStream(System.err);
-			}
-		}
-	}
-
-	/**
-	 * If a File is used to log messages to then the writer is closed.
-	 */
-	protected void closeFile() {
-		if (outFile != null) {
-			if (writer != null) {
-				try {
-					writer.close();
-				} catch (IOException e) {
-					// we cannot log here; just print the stacktrace.
-					e.printStackTrace();
-				}
-				writer = null;
-			}
-		}
-	}
-
-	public void log(FrameworkEvent frameworkEvent) {
-		Bundle b = frameworkEvent.getBundle();
-		Throwable t = frameworkEvent.getThrowable();
-		String entry = b.getSymbolicName() == null ? b.getLocation() : b.getSymbolicName();
-		int severity;
-		switch (frameworkEvent.getType()) {
-			case FrameworkEvent.INFO :
-				severity = FrameworkLogEntry.INFO;
-				break;
-			case FrameworkEvent.ERROR :
-				severity = FrameworkLogEntry.ERROR;
-				break;
-			case FrameworkEvent.WARNING :
-				severity = FrameworkLogEntry.WARNING;
-				break;
-			default :
-				severity = FrameworkLogEntry.OK;
-		}
-		FrameworkLogEntry logEntry = new FrameworkLogEntry(entry, severity, 0, "", 0, t, null); //$NON-NLS-1$
-		log(logEntry);
-	}
-
-	public synchronized void log(FrameworkLogEntry logEntry) {
-		if (logEntry == null)
-			return;
-		if (!isLoggable(logEntry))
-			return;
-		try {
-			checkLogFileSize();
-			openFile();
-			if (newSession) {
-				writeSession();
-				newSession = false;
-			}
-			writeLog(0, logEntry);
-			writer.flush();
-		} catch (Exception e) {
-			// any exceptions during logging should be caught 
-			System.err.println("An exception occurred while writing to the platform log:");//$NON-NLS-1$
-			e.printStackTrace(System.err);
-			System.err.println("Logging to the console instead.");//$NON-NLS-1$
-			//we failed to write, so dump log entry to console instead
-			try {
-				writer = logForStream(System.err);
-				writeLog(0, logEntry);
-				writer.flush();
-			} catch (Exception e2) {
-				System.err.println("An exception occurred while logging to the console:");//$NON-NLS-1$
-				e2.printStackTrace(System.err);
-			}
-		} finally {
-			closeFile();
-		}
-	}
-
-	public synchronized void setWriter(Writer newWriter, boolean append) {
-		setOutput(null, newWriter, append);
-	}
-
-	public synchronized void setFile(File newFile, boolean append) throws IOException {
-		if (newFile != null && !newFile.equals(this.outFile)) {
-			// If it's a new file, then reset.
-			readLogProperties();
-			backupIdx = 0;
-		}
-		setOutput(newFile, null, append);
-		FrameworkProperties.setProperty(EclipseStarter.PROP_LOGFILE, newFile == null ? "" : newFile.getAbsolutePath()); //$NON-NLS-1$
-	}
-
-	public synchronized File getFile() {
-		return outFile;
-	}
-
-	public void setConsoleLog(boolean consoleLog) {
-		this.consoleLog = consoleLog;
-	}
-
-	private void setOutput(File newOutFile, Writer newWriter, boolean append) {
-		if (newOutFile == null || !newOutFile.equals(this.outFile)) {
-			if (this.writer != null) {
-				try {
-					this.writer.close();
-				} catch (IOException e) {
-					e.printStackTrace();
-				}
-				this.writer = null;
-			}
-			// Append old outFile to newWriter. We only attempt to do this
-			// if the current Writer is backed by a File and this is not
-			// a new session.
-			File oldOutFile = this.outFile;
-			this.outFile = newOutFile;
-			this.writer = newWriter;
-			boolean copyFailed = false;
-			if (append && oldOutFile != null && oldOutFile.isFile()) {
-				Reader fileIn = null;
-				try {
-					openFile();
-					fileIn = new InputStreamReader(secureAction.getFileInputStream(oldOutFile), "UTF-8"); //$NON-NLS-1$
-					copyReader(fileIn, this.writer);
-				} catch (IOException e) {
-					copyFailed = true;
-					e.printStackTrace();
-				} finally {
-					if (fileIn != null) {
-						try {
-							fileIn.close();
-						} catch (IOException e) {
-							e.printStackTrace();
-						}
-						// delete the old file if copying didn't fail
-						if (!copyFailed)
-							oldOutFile.delete();
-					}
-					closeFile();
-				}
-			}
-		}
-	}
-
-	private void copyReader(Reader reader, Writer aWriter) throws IOException {
-		char buffer[] = new char[1024];
-		int count;
-		while ((count = reader.read(buffer, 0, buffer.length)) > 0) {
-			aWriter.write(buffer, 0, count);
-		}
-	}
-
-	/**
-	 * Returns a date string using the correct format for the log.
-	 * @param date the Date to format
-	 * @return a date string.
-	 */
-	protected String getDate(Date date) {
-		Calendar c = Calendar.getInstance();
-		c.setTime(date);
-		StringBuffer sb = new StringBuffer();
-		appendPaddedInt(c.get(Calendar.YEAR), 4, sb).append('-');
-		appendPaddedInt(c.get(Calendar.MONTH) + 1, 2, sb).append('-');
-		appendPaddedInt(c.get(Calendar.DAY_OF_MONTH), 2, sb).append(' ');
-		appendPaddedInt(c.get(Calendar.HOUR_OF_DAY), 2, sb).append(':');
-		appendPaddedInt(c.get(Calendar.MINUTE), 2, sb).append(':');
-		appendPaddedInt(c.get(Calendar.SECOND), 2, sb).append('.');
-		appendPaddedInt(c.get(Calendar.MILLISECOND), 3, sb);
-		return sb.toString();
-	}
-
-	private StringBuffer appendPaddedInt(int value, int pad, StringBuffer buffer) {
-		pad = pad - 1;
-		if (pad == 0)
-			return buffer.append(Integer.toString(value));
-		int padding = (int) Math.pow(10, pad);
-		if (value >= padding)
-			return buffer.append(Integer.toString(value));
-		while (padding > value && padding > 1) {
-			buffer.append('0');
-			padding = padding / 10;
-		}
-		buffer.append(value);
-		return buffer;
-	}
-
-	/**
-	 * Returns a stacktrace string using the correct format for the log
-	 * @param t the Throwable to get the stacktrace for
-	 * @return a stacktrace string
-	 */
-	protected String getStackTrace(Throwable t) {
-		if (t == null)
-			return null;
-
-		StringWriter sw = new StringWriter();
-		PrintWriter pw = new PrintWriter(sw);
-
-		t.printStackTrace(pw);
-		// ensure the root exception is fully logged
-		Throwable root = getRoot(t);
-		if (root != null) {
-			pw.println("Root exception:"); //$NON-NLS-1$
-			root.printStackTrace(pw);
-		}
-		return sw.toString();
-	}
-
-	/**
-	 * Returns a Writer for the given OutputStream
-	 * @param output an OutputStream to use for the Writer
-	 * @return a Writer for the given OutputStream
-	 */
-	protected Writer logForStream(OutputStream output) {
-		try {
-			return new BufferedWriter(new OutputStreamWriter(output, "UTF-8")); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			return new BufferedWriter(new OutputStreamWriter(output));
-		}
-	}
-
-	/**
-	 * Writes the log entry to the log using the specified depth.  A depth value of 0
-	 * idicates that the log entry is the root entry.  Any value greater than 0 indicates
-	 * a sub-entry.
-	 * @param depth the depth of th entry
-	 * @param entry the entry to log
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void writeLog(int depth, FrameworkLogEntry entry) throws IOException {
-		writeEntry(depth, entry);
-		writeMessage(entry);
-		writeStack(entry);
-
-		FrameworkLogEntry[] children = entry.getChildren();
-		if (children != null) {
-			for (int i = 0; i < children.length; i++) {
-				writeLog(depth + 1, children[i]);
-			}
-		}
-	}
-
-	/**
-	 * Writes the ENTRY or SUBENTRY header for an entry.  A depth value of 0
-	 * indicates that the log entry is the root entry.  Any value greater than 0 indicates
-	 * a sub-entry.
-	 * @param depth the depth of th entry
-	 * @param entry the entry to write the header for
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void writeEntry(int depth, FrameworkLogEntry entry) throws IOException {
-		if (depth == 0) {
-			writeln(); // write a blank line before all !ENTRY tags bug #64406
-			write(ENTRY);
-		} else {
-			write(SUBENTRY);
-			writeSpace();
-			write(Integer.toString(depth));
-		}
-		writeSpace();
-		write(entry.getEntry());
-		writeSpace();
-		write(Integer.toString(entry.getSeverity()));
-		writeSpace();
-		write(Integer.toString(entry.getBundleCode()));
-		writeSpace();
-		write(getDate(new Date()));
-		writeln();
-	}
-
-	/**
-	 * Writes the MESSAGE header to the log for the given entry.
-	 * @param entry the entry to write the message for
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void writeMessage(FrameworkLogEntry entry) throws IOException {
-		write(MESSAGE);
-		writeSpace();
-		writeln(entry.getMessage());
-	}
-
-	/**
-	 * Writes the STACK header to the log for the given entry.
-	 * @param entry the entry to write the stacktrace for
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void writeStack(FrameworkLogEntry entry) throws IOException {
-		Throwable t = entry.getThrowable();
-		if (t != null) {
-			String stack = getStackTrace(t);
-			write(STACK);
-			writeSpace();
-			write(Integer.toString(entry.getStackCode()));
-			writeln();
-			write(stack);
-		}
-	}
-
-	/**
-	 * Writes the given message to the log.
-	 * @param message the message
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void write(String message) throws IOException {
-		if (message != null) {
-			writer.write(message);
-			if (consoleLog)
-				System.out.print(message);
-		}
-	}
-
-	/**
-	 * Writes the given message to the log and a newline.
-	 * @param s the message
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void writeln(String s) throws IOException {
-		write(s);
-		writeln();
-	}
-
-	/**
-	 * Writes a newline log.
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void writeln() throws IOException {
-		write(LINE_SEPARATOR);
-	}
-
-	/**
-	 * Writes a space to the log.
-	 * @throws IOException if any error occurs writing to the log
-	 */
-	protected void writeSpace() throws IOException {
-		write(" "); //$NON-NLS-1$
-	}
-
-	/**
-	 * Checks the log file size.  If the log file size reaches the limit then the log 
-	 * is rotated
-	 * @return false if an error occured trying to rotate the log
-	 */
-	protected boolean checkLogFileSize() {
-		if (maxLogSize == 0)
-			return true; // no size limitation.
-
-		boolean isBackupOK = true;
-		if (outFile != null) {
-			if ((secureAction.length(outFile) >> 10) > maxLogSize) { // Use KB as file size unit.
-				String logFilename = outFile.getAbsolutePath();
-
-				// Delete old backup file that will be replaced.
-				String backupFilename = ""; //$NON-NLS-1$
-				if (logFilename.toLowerCase().endsWith(LOG_EXT)) {
-					backupFilename = logFilename.substring(0, logFilename.length() - LOG_EXT.length()) + BACKUP_MARK + backupIdx + LOG_EXT;
-				} else {
-					backupFilename = logFilename + BACKUP_MARK + backupIdx;
-				}
-				File backupFile = new File(backupFilename);
-				if (backupFile.exists()) {
-					if (!backupFile.delete()) {
-						System.err.println("Error when trying to delete old log file: " + backupFile.getName());//$NON-NLS-1$ 
-						if (backupFile.renameTo(new File(backupFile.getAbsolutePath() + System.currentTimeMillis()))) {
-							System.err.println("So we rename it to filename: " + backupFile.getName()); //$NON-NLS-1$
-						} else {
-							System.err.println("And we also cannot rename it!"); //$NON-NLS-1$
-							isBackupOK = false;
-						}
-					}
-				}
-
-				// Rename current log file to backup one.
-				boolean isRenameOK = outFile.renameTo(backupFile);
-				if (!isRenameOK) {
-					System.err.println("Error when trying to rename log file to backup one."); //$NON-NLS-1$
-					isBackupOK = false;
-				}
-				File newFile = new File(logFilename);
-				setOutput(newFile, null, false);
-
-				// Write a new SESSION header to new log file.
-				openFile();
-				try {
-					writeSession();
-					writeln();
-					writeln("This is a continuation of log file " + backupFile.getAbsolutePath());//$NON-NLS-1$
-					writeln("Created Time: " + getDate(new Date(System.currentTimeMillis()))); //$NON-NLS-1$
-					writer.flush();
-				} catch (IOException ioe) {
-					ioe.printStackTrace(System.err);
-				}
-				closeFile();
-				backupIdx = (++backupIdx) % maxLogFiles;
-			}
-		}
-		return isBackupOK;
-	}
-
-	/**
-	 * Reads the PROP_LOG_SIZE_MAX and PROP_LOG_FILE_MAX properties.
-	 */
-	protected void readLogProperties() {
-		String newMaxLogSize = secureAction.getProperty(PROP_LOG_SIZE_MAX);
-		if (newMaxLogSize != null) {
-			maxLogSize = Integer.parseInt(newMaxLogSize);
-			if (maxLogSize != 0 && maxLogSize < LOG_SIZE_MIN) {
-				// If the value is '0', then it means no size limitation.
-				// Also, make sure no inappropriate(too small) assigned value.
-				maxLogSize = LOG_SIZE_MIN;
-			}
-		}
-
-		String newMaxLogFiles = secureAction.getProperty(PROP_LOG_FILE_MAX);
-		if (newMaxLogFiles != null) {
-			maxLogFiles = Integer.parseInt(newMaxLogFiles);
-			if (maxLogFiles < 1) {
-				// Make sure no invalid assigned value. (at least >= 1)
-				maxLogFiles = DEFAULT_LOG_FILES;
-			}
-		}
-
-		String newLogLevel = secureAction.getProperty(PROP_LOG_LEVEL);
-		if (newLogLevel != null) {
-			if (newLogLevel.equals("ERROR")) //$NON-NLS-1$
-				logLevel = FrameworkLogEntry.ERROR;
-			else if (newLogLevel.equals("WARNING")) //$NON-NLS-1$
-				logLevel = FrameworkLogEntry.ERROR | FrameworkLogEntry.WARNING;
-			else if (newLogLevel.equals("INFO")) //$NON-NLS-1$
-				logLevel = FrameworkLogEntry.INFO | FrameworkLogEntry.ERROR | FrameworkLogEntry.WARNING | FrameworkLogEntry.CANCEL;
-			else
-				logLevel = FrameworkLogEntry.OK; // OK (0) means log everything
-		}
-	}
-
-	/**
-	 * Determines if the log entry should be logged based on log level.
-	 */
-	private boolean isLoggable(FrameworkLogEntry entry) {
-		if (logLevel == 0)
-			return true;
-		return (entry.getSeverity() & logLevel) != 0;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
deleted file mode 100644
index 4a4a7e0..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
+++ /dev/null
@@ -1,1516 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Alex Blewitt (bug 172969)
- *******************************************************************************/
-package org.eclipse.core.runtime.adaptor;
-
-import java.io.*;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.net.*;
-import java.security.CodeSource;
-import java.security.ProtectionDomain;
-import java.util.*;
-import org.eclipse.core.runtime.internal.adaptor.*;
-import org.eclipse.osgi.framework.adaptor.*;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.profile.Profile;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.service.runnable.ApplicationLauncher;
-import org.eclipse.osgi.service.runnable.StartupMonitor;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.startlevel.StartLevel;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Special startup class for the Eclipse Platform. This class cannot be 
- * instantiated; all functionality is provided by static methods. 
- * <p>
- * The Eclipse Platform makes heavy use of Java class loaders for loading 
- * plug-ins. Even the Eclipse Runtime itself and the OSGi framework need
- * to be loaded by special class loaders. The upshot is that a 
- * client program (such as a Java main program, a servlet) cannot  
- * reference any part of Eclipse directly. Instead, a client must use this 
- * loader class to start the platform, invoking functionality defined 
- * in plug-ins, and shutting down the platform when done. 
- * </p>
- * <p>Note that the fields on this class are not API. </p>
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class EclipseStarter {
-	private static FrameworkAdaptor adaptor;
-	private static BundleContext context;
-	private static boolean initialize = false;
-	public static boolean debug = false;
-	private static boolean running = false;
-	private static Framework framework = null;
-	private static ServiceRegistration defaultMonitorRegistration = null;
-	private static ServiceRegistration appLauncherRegistration = null;
-	private static ServiceRegistration splashStreamRegistration = null;
-
-	// command line arguments
-	private static final String CLEAN = "-clean"; //$NON-NLS-1$
-	private static final String CONSOLE = "-console"; //$NON-NLS-1$
-	private static final String CONSOLE_LOG = "-consoleLog"; //$NON-NLS-1$
-	private static final String DEBUG = "-debug"; //$NON-NLS-1$
-	private static final String INITIALIZE = "-initialize"; //$NON-NLS-1$
-	private static final String DEV = "-dev"; //$NON-NLS-1$
-	private static final String WS = "-ws"; //$NON-NLS-1$
-	private static final String OS = "-os"; //$NON-NLS-1$
-	private static final String ARCH = "-arch"; //$NON-NLS-1$
-	private static final String NL = "-nl"; //$NON-NLS-1$
-	private static final String NL_EXTENSIONS = "-nlExtensions"; //$NON-NLS-1$
-	private static final String CONFIGURATION = "-configuration"; //$NON-NLS-1$	
-	private static final String USER = "-user"; //$NON-NLS-1$
-	private static final String NOEXIT = "-noExit"; //$NON-NLS-1$
-	private static final String LAUNCHER = "-launcher"; //$NON-NLS-1$
-
-	// this is more of an Eclipse argument but this OSGi implementation stores its 
-	// metadata alongside Eclipse's.
-	private static final String DATA = "-data"; //$NON-NLS-1$
-
-	// System properties
-	public static final String PROP_BUNDLES = "osgi.bundles"; //$NON-NLS-1$
-	public static final String PROP_BUNDLES_STARTLEVEL = "osgi.bundles.defaultStartLevel"; //$NON-NLS-1$ //The start level used to install the bundles
-	public static final String PROP_EXTENSIONS = "osgi.framework.extensions"; //$NON-NLS-1$
-	public static final String PROP_INITIAL_STARTLEVEL = "osgi.startLevel"; //$NON-NLS-1$ //The start level when the fwl start
-	public static final String PROP_DEBUG = "osgi.debug"; //$NON-NLS-1$
-	public static final String PROP_DEV = "osgi.dev"; //$NON-NLS-1$
-	public static final String PROP_CLEAN = "osgi.clean"; //$NON-NLS-1$
-	public static final String PROP_CONSOLE = "osgi.console"; //$NON-NLS-1$
-	public static final String PROP_CONSOLE_CLASS = "osgi.consoleClass"; //$NON-NLS-1$
-	public static final String PROP_CHECK_CONFIG = "osgi.checkConfiguration"; //$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_NL = "osgi.nl"; //$NON-NLS-1$
-	private static final String PROP_NL_EXTENSIONS = "osgi.nl.extensions"; //$NON-NLS-1$
-	public static final String PROP_ARCH = "osgi.arch"; //$NON-NLS-1$
-	public static final String PROP_ADAPTOR = "osgi.adaptor"; //$NON-NLS-1$
-	public static final String PROP_SYSPATH = "osgi.syspath"; //$NON-NLS-1$
-	public static final String PROP_LOGFILE = "osgi.logfile"; //$NON-NLS-1$
-	public static final String PROP_FRAMEWORK = "osgi.framework"; //$NON-NLS-1$
-	public static final String PROP_INSTALL_AREA = "osgi.install.area"; //$NON-NLS-1$
-	public static final String PROP_FRAMEWORK_SHAPE = "osgi.framework.shape"; //$NON-NLS-1$ //the shape of the fwk (jar, or folder)
-	public static final String PROP_NOSHUTDOWN = "osgi.noShutdown"; //$NON-NLS-1$
-	private static final String PROP_FORCED_RESTART = "osgi.forcedRestart"; //$NON-NLS-1$
-
-	public static final String PROP_EXITCODE = "eclipse.exitcode"; //$NON-NLS-1$
-	public static final String PROP_EXITDATA = "eclipse.exitdata"; //$NON-NLS-1$
-	public static final String PROP_CONSOLE_LOG = "eclipse.consoleLog"; //$NON-NLS-1$
-	public static final String PROP_IGNOREAPP = "eclipse.ignoreApp"; //$NON-NLS-1$
-	public static final String PROP_REFRESH_BUNDLES = "eclipse.refreshBundles"; //$NON-NLS-1$
-	private static final String PROP_ALLOW_APPRELAUNCH = "eclipse.allowAppRelaunch"; //$NON-NLS-1$
-	private static final String PROP_APPLICATION_LAUNCHDEFAULT = "eclipse.application.launchDefault"; //$NON-NLS-1$
-
-	private static final String FILE_SCHEME = "file:"; //$NON-NLS-1$
-	private static final String REFERENCE_SCHEME = "reference:"; //$NON-NLS-1$
-	private static final String REFERENCE_PROTOCOL = "reference"; //$NON-NLS-1$
-	private static final String INITIAL_LOCATION = "initial@"; //$NON-NLS-1$
-	/** string containing the classname of the adaptor to be used in this framework instance */
-	protected static final String DEFAULT_ADAPTOR_CLASS = "org.eclipse.osgi.baseadaptor.BaseAdaptor"; //$NON-NLS-1$
-
-	private static final int DEFAULT_INITIAL_STARTLEVEL = 6; // default value for legacy purposes
-	private static final String DEFAULT_BUNDLES_STARTLEVEL = "4"; //$NON-NLS-1$
-
-	private static FrameworkLog log;
-	// directory of serch candidates keyed by directory abs path -> directory listing (bug 122024)
-	private static HashMap searchCandidates = new HashMap(4);
-	private static EclipseAppLauncher appLauncher;
-	private static List shutdownHandlers;
-
-	private static ConsoleManager consoleMgr = null;
-
-	/**
-	 * This is the main to start osgi.
-	 * It only works when the framework is being jared as a single jar
-	 */
-	public static void main(String[] args) throws Exception {
-		if (FrameworkProperties.getProperty("eclipse.startTime") == null) //$NON-NLS-1$
-			FrameworkProperties.setProperty("eclipse.startTime", Long.toString(System.currentTimeMillis())); //$NON-NLS-1$
-		if (FrameworkProperties.getProperty(PROP_NOSHUTDOWN) == null)
-			FrameworkProperties.setProperty(PROP_NOSHUTDOWN, "true"); //$NON-NLS-1$
-		// set the compatibility boot delegation flag to false to get "standard" OSGi behavior WRT boot delegation (bug 178477)
-		if (FrameworkProperties.getProperty(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION) == null)
-			FrameworkProperties.setProperty(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION, "false"); //$NON-NLS-1$
-		Object result = run(args, null);
-		if (result instanceof Integer && !Boolean.valueOf(FrameworkProperties.getProperty(PROP_NOSHUTDOWN)).booleanValue())
-			System.exit(((Integer) result).intValue());
-	}
-
-	/**
-	 * Launches the platform and runs a single application. The application is either identified
-	 * in the given arguments (e.g., -application &lt;app id&gt;) or in the <code>eclipse.application</code> 
-	 * System property.  This convenience method starts 
-	 * up the platform, runs the indicated application, and then shuts down the 
-	 * platform. The platform must not be running already. 
-	 * 
-	 * @param args the command line-style arguments used to configure the platform
-	 * @param endSplashHandler the block of code to run to tear down the splash 
-	 * 	screen or <code>null</code> if no tear down is required
-	 * @return the result of running the application
-	 * @throws Exception if anything goes wrong
-	 */
-	public static Object run(String[] args, Runnable endSplashHandler) throws Exception {
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logEnter("EclipseStarter.run()", null); //$NON-NLS-1$
-		if (running)
-			throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_ALREADY_RUNNING);
-		boolean startupFailed = true;
-		try {
-			startup(args, endSplashHandler);
-			startupFailed = false;
-			if (Boolean.valueOf(FrameworkProperties.getProperty(PROP_IGNOREAPP)).booleanValue() || isForcedRestart())
-				return null;
-			return run(null);
-		} catch (Throwable e) {
-			// ensure the splash screen is down
-			if (endSplashHandler != null)
-				endSplashHandler.run();
-			// may use startupFailed to understand where the error happened
-			FrameworkLogEntry logEntry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, startupFailed ? EclipseAdaptorMsg.ECLIPSE_STARTUP_STARTUP_ERROR : EclipseAdaptorMsg.ECLIPSE_STARTUP_APP_ERROR, 1, e, null);
-			if (log != null)
-				log.log(logEntry);
-			else
-				// TODO desperate measure - ideally, we should write this to disk (a la Main.log)
-				e.printStackTrace();
-		} finally {
-			try {
-				// The application typically sets the exit code however the framework can request that
-				// it be re-started. We need to check for this and potentially override the exit code.
-				if (isForcedRestart())
-					FrameworkProperties.setProperty(PROP_EXITCODE, "23"); //$NON-NLS-1$
-				if (!Boolean.valueOf(FrameworkProperties.getProperty(PROP_NOSHUTDOWN)).booleanValue())
-					shutdown();
-			} catch (Throwable e) {
-				FrameworkLogEntry logEntry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, EclipseAdaptorMsg.ECLIPSE_STARTUP_SHUTDOWN_ERROR, 1, e, null);
-				if (log != null)
-					log.log(logEntry);
-				else
-					// TODO desperate measure - ideally, we should write this to disk (a la Main.log)
-					e.printStackTrace();
-			}
-			if (Profile.PROFILE && Profile.STARTUP)
-				Profile.logExit("EclipseStarter.run()"); //$NON-NLS-1$
-			if (Profile.PROFILE) {
-				String report = Profile.getProfileLog();
-				// avoiding writing to the console if there is nothing to print
-				if (report != null && report.length() > 0)
-					System.out.println(report);
-			}
-		}
-		// we only get here if an error happened
-		if (FrameworkProperties.getProperty(PROP_EXITCODE) == null) {
-			FrameworkProperties.setProperty(PROP_EXITCODE, "13"); //$NON-NLS-1$
-			FrameworkProperties.setProperty(PROP_EXITDATA, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_CHECK_LOG, log == null ? null : log.getFile().getPath()));
-		}
-		return null;
-	}
-
-	/**
-	 * Returns true if the platform is already running, false otherwise.
-	 * @return whether or not the platform is already running
-	 */
-	public static boolean isRunning() {
-		return running;
-	}
-
-	protected static FrameworkLog createFrameworkLog() {
-		FrameworkLog frameworkLog;
-		String logFileProp = FrameworkProperties.getProperty(EclipseStarter.PROP_LOGFILE);
-		if (logFileProp != null) {
-			frameworkLog = new EclipseLog(new File(logFileProp));
-		} else {
-			Location location = LocationManager.getConfigurationLocation();
-			File configAreaDirectory = null;
-			if (location != null)
-				// TODO assumes the URL is a file: url
-				configAreaDirectory = new File(location.getURL().getFile());
-
-			if (configAreaDirectory != null) {
-				String logFileName = Long.toString(System.currentTimeMillis()) + ".log"; //$NON-NLS-1$
-				File logFile = new File(configAreaDirectory, logFileName);
-				FrameworkProperties.setProperty(EclipseStarter.PROP_LOGFILE, logFile.getAbsolutePath());
-				frameworkLog = new EclipseLog(logFile);
-			} else
-				frameworkLog = new EclipseLog();
-		}
-		if ("true".equals(FrameworkProperties.getProperty(EclipseStarter.PROP_CONSOLE_LOG))) //$NON-NLS-1$
-			frameworkLog.setConsoleLog(true);
-		return frameworkLog;
-	}
-
-	/**
-	 * Starts the platform and sets it up to run a single application. The application is either identified
-	 * in the given arguments (e.g., -application &lt;app id&gt;) or in the <code>eclipse.application</code>
-	 * System property.  The platform must not be running already. 
-	 * <p>
-	 * The given runnable (if not <code>null</code>) is used to tear down the splash screen if required.
-	 * </p>
-	 * @param args the arguments passed to the application
-	 * @return BundleContext the context of the system bundle
-	 * @throws Exception if anything goes wrong
-	 */
-	public static BundleContext startup(String[] args, Runnable endSplashHandler) throws Exception {
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logEnter("EclipseStarter.startup()", null); //$NON-NLS-1$
-		if (running)
-			throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_ALREADY_RUNNING);
-		FrameworkProperties.initializeProperties();
-		processCommandLine(args);
-		LocationManager.initializeLocations();
-		loadConfigurationInfo();
-		finalizeProperties();
-		if (Profile.PROFILE)
-			Profile.initProps(); // catch any Profile properties set in eclipse.properties...
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "props inited"); //$NON-NLS-1$ //$NON-NLS-2$
-		adaptor = createAdaptor();
-		log = adaptor.getFrameworkLog();
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "adapter created"); //$NON-NLS-1$ //$NON-NLS-2$
-		framework = new Framework(adaptor);
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "OSGi created"); //$NON-NLS-1$ //$NON-NLS-2$
-		context = framework.getBundle(0).getBundleContext();
-		registerFrameworkShutdownHandlers();
-		publishSplashScreen(endSplashHandler);
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "osgi launched"); //$NON-NLS-1$ //$NON-NLS-2$
-		consoleMgr = ConsoleManager.startConsole(framework);
-		if (consoleMgr != null && Profile.PROFILE && Profile.STARTUP) {
-			Profile.logTime("EclipseStarter.startup()", "console started"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		framework.launch();
-		// save the cached timestamp before loading basic bundles; this is needed so we can do a proper timestamp check when logging resolver errors
-		long stateStamp = adaptor.getState().getTimeStamp();
-		Bundle[] startBundles = loadBasicBundles();
-
-		if (startBundles == null || ("true".equals(FrameworkProperties.getProperty(PROP_REFRESH_BUNDLES)) && refreshPackages(getCurrentBundles(false)))) { //$NON-NLS-1$
-			waitForShutdown();
-			return context; // cannot continue; loadBasicBundles caused refreshPackages to shutdown the framework
-		}
-
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "loading basic bundles"); //$NON-NLS-1$ //$NON-NLS-2$
-
-		// set the framework start level to the ultimate value.  This will actually start things
-		// running if they are persistently active.
-		setStartLevel(getStartLevel());
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "StartLevel set"); //$NON-NLS-1$ //$NON-NLS-2$
-		// they should all be active by this time
-		ensureBundlesActive(startBundles);
-		if (debug || FrameworkProperties.getProperty(PROP_DEV) != null)
-			// only spend time showing unresolved bundles in dev/debug mode and the state has changed
-			if (stateStamp != adaptor.getState().getTimeStamp())
-				logUnresolvedBundles(context.getBundles());
-		running = true;
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logExit("EclipseStarter.startup()"); //$NON-NLS-1$
-		return context;
-	}
-
-	private static int getStartLevel() {
-		String level = FrameworkProperties.getProperty(PROP_INITIAL_STARTLEVEL);
-		if (level != null)
-			try {
-				return Integer.parseInt(level);
-			} catch (NumberFormatException e) {
-				if (debug)
-					System.out.println("Start level = " + level + "  parsed. Using hardcoded default: 6"); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		return DEFAULT_INITIAL_STARTLEVEL;
-	}
-
-	/**
-	 * Runs the application for which the platform was started. The platform 
-	 * must be running. 
-	 * <p>
-	 * The given argument is passed to the application being run.  If it is <code>null</code>
-	 * then the command line arguments used in starting the platform, and not consumed
-	 * by the platform code, are passed to the application as a <code>String[]</code>.
-	 * </p>
-	 * @param argument the argument passed to the application. May be <code>null</code>
-	 * @return the result of running the application
-	 * @throws Exception if anything goes wrong
-	 */
-	public static Object run(Object argument) throws Exception {
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logEnter("EclipseStarter.run(Object)()", null); //$NON-NLS-1$
-		if (!running)
-			throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_NOT_RUNNING);
-		// if we are just initializing, do not run the application just return.
-		if (initialize)
-			return new Integer(0);
-		try {
-			if (appLauncher == null) {
-				boolean launchDefault = Boolean.valueOf(FrameworkProperties.getProperty(PROP_APPLICATION_LAUNCHDEFAULT, "true")).booleanValue(); //$NON-NLS-1$
-				// create the ApplicationLauncher and register it as a service
-				appLauncher = new EclipseAppLauncher(context, Boolean.valueOf(FrameworkProperties.getProperty(PROP_ALLOW_APPRELAUNCH)).booleanValue(), launchDefault, log);
-				appLauncherRegistration = context.registerService(ApplicationLauncher.class.getName(), appLauncher, null);
-				// must start the launcher AFTER service restration because this method 
-				// blocks and runs the application on the current thread.  This method 
-				// will return only after the application has stopped.
-				return appLauncher.start(argument);
-			}
-			return appLauncher.reStart(argument);
-		} catch (Exception e) {
-			if (log != null && context != null) // context can be null if OSGi failed to launch (bug 151413)
-				logUnresolvedBundles(context.getBundles());
-			throw e;
-		}
-	}
-
-	/**
-	 * Shuts down the Platform. The state of the Platform is not automatically 
-	 * saved before shutting down. 
-	 * <p>
-	 * On return, the Platform will no longer be running (but could be re-launched 
-	 * with another call to startup). If relaunching, care must be taken to reinitialize
-	 * any System properties which the platform uses (e.g., osgi.instance.area) as
-	 * some policies in the platform do not allow resetting of such properties on 
-	 * subsequent runs.
-	 * </p><p>
-	 * Any objects handed out by running Platform, 
-	 * including Platform runnables obtained via getRunnable, will be 
-	 * permanently invalid. The effects of attempting to invoke methods 
-	 * on invalid objects is undefined. 
-	 * </p>
-	 * @throws Exception if anything goes wrong
-	 */
-	public static void shutdown() throws Exception {
-		if (!running || framework == null)
-			return;
-		if (appLauncherRegistration != null)
-			appLauncherRegistration.unregister();
-		if (splashStreamRegistration != null)
-			splashStreamRegistration.unregister();
-		if (defaultMonitorRegistration != null)
-			defaultMonitorRegistration.unregister();
-		if (appLauncher != null)
-			appLauncher.shutdown();
-		appLauncherRegistration = null;
-		appLauncher = null;
-		splashStreamRegistration = null;
-		defaultMonitorRegistration = null;
-		if (consoleMgr != null) {
-			consoleMgr.stopConsole();
-			consoleMgr = null;
-		}
-		framework.close();
-		framework = null;
-		context = null;
-		running = false;
-	}
-
-	private static void ensureBundlesActive(Bundle[] bundles) {
-		ServiceTracker tracker = null;
-		try {
-			for (int i = 0; i < bundles.length; i++) {
-				if (bundles[i].getState() != Bundle.ACTIVE) {
-					if (bundles[i].getState() == Bundle.INSTALLED) {
-						// Log that the bundle is not resolved
-						log.log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_RESOLVED, bundles[i].getLocation()), 0, null, null));
-						continue;
-					}
-					// check that the startlevel allows the bundle to be active (111550)
-					if (tracker == null) {
-						tracker = new ServiceTracker(context, StartLevel.class.getName(), null);
-						tracker.open();
-					}
-					StartLevel sl = (StartLevel) tracker.getService();
-					if (sl != null && (sl.getBundleStartLevel(bundles[i]) <= sl.getStartLevel())) {
-						log.log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_ACTIVE, bundles[i]), 0, null, null));
-					}
-				}
-			}
-		} finally {
-			if (tracker != null)
-				tracker.close();
-		}
-	}
-
-	private static void logUnresolvedBundles(Bundle[] bundles) {
-		State state = adaptor.getState();
-		FrameworkLog logService = adaptor.getFrameworkLog();
-		StateHelper stateHelper = adaptor.getPlatformAdmin().getStateHelper();
-
-		// first lets look for missing leaf constraints (bug 114120)
-		VersionConstraint[] leafConstraints = stateHelper.getUnsatisfiedLeaves(state.getBundles());
-		// hash the missing leaf constraints by the declaring bundles
-		Map missing = new HashMap();
-		for (int i = 0; i < leafConstraints.length; i++) {
-			// only include non-optional and non-dynamic constraint leafs
-			if (leafConstraints[i] instanceof BundleSpecification && ((BundleSpecification) leafConstraints[i]).isOptional())
-				continue;
-			if (leafConstraints[i] instanceof ImportPackageSpecification) {
-				if (ImportPackageSpecification.RESOLUTION_OPTIONAL.equals(((ImportPackageSpecification) leafConstraints[i]).getDirective(Constants.RESOLUTION_DIRECTIVE)))
-					continue;
-				if (ImportPackageSpecification.RESOLUTION_DYNAMIC.equals(((ImportPackageSpecification) leafConstraints[i]).getDirective(Constants.RESOLUTION_DIRECTIVE)))
-					continue;
-			}
-			BundleDescription bundle = leafConstraints[i].getBundle();
-			ArrayList constraints = (ArrayList) missing.get(bundle);
-			if (constraints == null) {
-				constraints = new ArrayList();
-				missing.put(bundle, constraints);
-			}
-			constraints.add(leafConstraints[i]);
-		}
-
-		// found some bundles with missing leaf constraints; log them first 
-		if (missing.size() > 0) {
-			FrameworkLogEntry[] rootChildren = new FrameworkLogEntry[missing.size()];
-			int rootIndex = 0;
-			for (Iterator iter = missing.keySet().iterator(); iter.hasNext(); rootIndex++) {
-				BundleDescription description = (BundleDescription) iter.next();
-				String symbolicName = description.getSymbolicName() == null ? FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME : description.getSymbolicName();
-				String generalMessage = NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_RESOLVED, description.getLocation());
-				ArrayList constraints = (ArrayList) missing.get(description);
-				FrameworkLogEntry[] logChildren = new FrameworkLogEntry[constraints.size()];
-				for (int i = 0; i < logChildren.length; i++)
-					logChildren[i] = new FrameworkLogEntry(symbolicName, FrameworkLogEntry.WARNING, 0, MessageHelper.getResolutionFailureMessage((VersionConstraint) constraints.get(i)), 0, null, null);
-				rootChildren[rootIndex] = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, generalMessage, 0, null, logChildren);
-			}
-			logService.log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, EclipseAdaptorMsg.ECLIPSE_STARTUP_ROOTS_NOT_RESOLVED, 0, null, rootChildren));
-		}
-
-		// There may be some bundles unresolved for other reasons, causing the system to be unresolved
-		// log all unresolved constraints now
-		ArrayList allChildren = new ArrayList();
-		for (int i = 0; i < bundles.length; i++)
-			if (bundles[i].getState() == Bundle.INSTALLED) {
-				String symbolicName = bundles[i].getSymbolicName() == null ? FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME : bundles[i].getSymbolicName();
-				String generalMessage = NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_RESOLVED, bundles[i]);
-				BundleDescription description = state.getBundle(bundles[i].getBundleId());
-				// for some reason, the state does not know about that bundle
-				if (description == null)
-					continue;
-				FrameworkLogEntry[] logChildren = null;
-				VersionConstraint[] unsatisfied = stateHelper.getUnsatisfiedConstraints(description);
-				if (unsatisfied.length > 0) {
-					// the bundle wasn't resolved due to some of its constraints were unsatisfiable
-					logChildren = new FrameworkLogEntry[unsatisfied.length];
-					for (int j = 0; j < unsatisfied.length; j++)
-						logChildren[j] = new FrameworkLogEntry(symbolicName, FrameworkLogEntry.WARNING, 0, MessageHelper.getResolutionFailureMessage(unsatisfied[j]), 0, null, null);
-				} else {
-					ResolverError[] resolverErrors = state.getResolverErrors(description);
-					if (resolverErrors.length > 0) {
-						logChildren = new FrameworkLogEntry[resolverErrors.length];
-						for (int j = 0; j < resolverErrors.length; j++)
-							logChildren[j] = new FrameworkLogEntry(symbolicName, FrameworkLogEntry.WARNING, 0, resolverErrors[j].toString(), 0, null, null);
-					}
-				}
-
-				allChildren.add(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, generalMessage, 0, null, logChildren));
-			}
-		if (allChildren.size() > 0)
-			logService.log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, EclipseAdaptorMsg.ECLIPSE_STARTUP_ALL_NOT_RESOLVED, 0, null, (FrameworkLogEntry[]) allChildren.toArray(new FrameworkLogEntry[allChildren.size()])));
-	}
-
-	private static void publishSplashScreen(final Runnable endSplashHandler) {
-		if (endSplashHandler == null)
-			return;
-		// register the output stream to the launcher if it exists
-		try {
-			Method method = endSplashHandler.getClass().getMethod("getOutputStream", new Class[0]); //$NON-NLS-1$
-			Object outputStream = method.invoke(endSplashHandler, new Object[0]);
-			if (outputStream instanceof OutputStream) {
-				Dictionary osProperties = new Hashtable();
-				osProperties.put("name", "splashstream"); //$NON-NLS-1$//$NON-NLS-2$
-				splashStreamRegistration = context.registerService(OutputStream.class.getName(), outputStream, osProperties);
-			}
-		} catch (Exception ex) {
-			// ignore
-		}
-		// keep this splash handler as the default startup monitor
-		try {
-			Dictionary monitorProps = new Hashtable();
-			monitorProps.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-			defaultMonitorRegistration = context.registerService(StartupMonitor.class.getName(), new DefaultStartupMonitor(endSplashHandler), monitorProps);
-		} catch (IllegalStateException e) {
-			//splash handler did not provide the necessary methods, ignore it
-		}
-	}
-
-	private static URL searchForBundle(String name, String parent) throws MalformedURLException {
-		URL url = null;
-		File fileLocation = null;
-		boolean reference = false;
-		try {
-			new URL(name); // quick check to see if the name is a valid URL
-			url = new URL(new File(parent).toURL(), name);
-		} catch (MalformedURLException e) {
-			// TODO this is legacy support for non-URL names.  It should be removed eventually.
-			// if name was not a URL then construct one.  
-			// Assume it should be a reference and that it is relative.  This support need not 
-			// be robust as it is temporary..
-			File child = new File(name);
-			fileLocation = child.isAbsolute() ? child : new File(parent, name);
-			url = new URL(REFERENCE_PROTOCOL, null, fileLocation.toURL().toExternalForm());
-			reference = true;
-		}
-		// if the name was a URL then see if it is relative.  If so, insert syspath.
-		if (!reference) {
-			URL baseURL = url;
-			// if it is a reference URL then strip off the reference: and set base to the file:...
-			if (url.getProtocol().equals(REFERENCE_PROTOCOL)) {
-				reference = true;
-				String baseSpec = url.getFile();
-				if (baseSpec.startsWith(FILE_SCHEME)) {
-					File child = new File(baseSpec.substring(5));
-					baseURL = child.isAbsolute() ? child.toURL() : new File(parent, child.getPath()).toURL();
-				} else
-					baseURL = new URL(baseSpec);
-			}
-
-			fileLocation = new File(baseURL.getFile());
-			// if the location is relative, prefix it with the parent
-			if (!fileLocation.isAbsolute())
-				fileLocation = new File(parent, fileLocation.toString());
-		}
-		// If the result is a reference then search for the real result and 
-		// reconstruct the answer.
-		if (reference) {
-			String result = searchFor(fileLocation.getName(), new File(fileLocation.getParent()).getAbsolutePath());
-			if (result != null)
-				url = new URL(REFERENCE_PROTOCOL, null, FILE_SCHEME + result);
-			else
-				return null;
-		}
-
-		// finally we have something worth trying	
-		try {
-			URLConnection result = url.openConnection();
-			result.connect();
-			return url;
-		} catch (IOException e) {
-			//			int i = location.lastIndexOf('_');
-			//			return i == -1? location : location.substring(0, i);
-			return null;
-		}
-	}
-
-	/*
-	 * Ensure all basic bundles are installed, resolved and scheduled to start. Returns an array containing
-	 * all basic bundles that are marked to start. 
-	 * Returns null if the framework has been shutdown as a result of refreshPackages
-	 */
-	private static Bundle[] loadBasicBundles() {
-		long startTime = System.currentTimeMillis();
-		String osgiBundles = FrameworkProperties.getProperty(PROP_BUNDLES);
-		String osgiExtensions = FrameworkProperties.getProperty(PROP_EXTENSIONS);
-		if (osgiExtensions != null && osgiExtensions.length() > 0) {
-			osgiBundles = osgiExtensions + ',' + osgiBundles;
-			FrameworkProperties.setProperty(PROP_BUNDLES, osgiBundles);
-		}
-		String[] installEntries = getArrayFromList(osgiBundles, ","); //$NON-NLS-1$
-		// get the initial bundle list from the installEntries
-		InitialBundle[] initialBundles = getInitialBundles(installEntries);
-		// get the list of currently installed initial bundles from the framework
-		Bundle[] curInitBundles = getCurrentBundles(true);
-
-		// list of bundles to be refreshed
-		List toRefresh = new ArrayList(curInitBundles.length);
-		// uninstall any of the currently installed bundles that do not exist in the 
-		// initial bundle list from installEntries.
-		uninstallBundles(curInitBundles, initialBundles, toRefresh);
-
-		// install the initialBundles that are not already installed.
-		ArrayList startBundles = new ArrayList(installEntries.length);
-		ArrayList lazyActivationBundles = new ArrayList(installEntries.length);
-		installBundles(initialBundles, curInitBundles, startBundles, lazyActivationBundles, toRefresh);
-
-		// If we installed/uninstalled something, force a refresh of all installed/uninstalled bundles
-		if (!toRefresh.isEmpty() && refreshPackages((Bundle[]) toRefresh.toArray(new Bundle[toRefresh.size()])))
-			return null; // cannot continue; refreshPackages shutdown the framework
-
-		// schedule all basic bundles to be started
-		Bundle[] startInitBundles = (Bundle[]) startBundles.toArray(new Bundle[startBundles.size()]);
-		Bundle[] lazyInitBundles = (Bundle[]) lazyActivationBundles.toArray(new Bundle[lazyActivationBundles.size()]);
-		startBundles(startInitBundles, lazyInitBundles);
-
-		if (debug)
-			System.out.println("Time to load bundles: " + (System.currentTimeMillis() - startTime)); //$NON-NLS-1$
-		return startInitBundles;
-	}
-
-	private static InitialBundle[] getInitialBundles(String[] installEntries) {
-		searchCandidates.clear();
-		ArrayList result = new ArrayList(installEntries.length);
-		int defaultStartLevel = Integer.parseInt(FrameworkProperties.getProperty(PROP_BUNDLES_STARTLEVEL, DEFAULT_BUNDLES_STARTLEVEL));
-		String syspath = getSysPath();
-		// should canonicalize the syspath.
-		try {
-			syspath = new File(syspath).getCanonicalPath();
-		} catch (IOException ioe) {
-			// do nothing
-		}
-		for (int i = 0; i < installEntries.length; i++) {
-			String name = installEntries[i];
-			int level = defaultStartLevel;
-			boolean start = false;
-			int index = name.lastIndexOf('@');
-			if (index >= 0) {
-				String[] attributes = getArrayFromList(name.substring(index + 1, name.length()), ":"); //$NON-NLS-1$
-				for (int j = 0; j < attributes.length; j++) {
-					String attribute = attributes[j];
-					if (attribute.equals("start")) //$NON-NLS-1$
-						start = true;
-					else {
-						try {
-							level = Integer.parseInt(attribute);
-						} catch (NumberFormatException e) { // bug 188089
-							index = name.length();
-							continue;
-						}
-					}
-				}
-				name = name.substring(0, index);
-			}
-			try {
-				URL location = searchForBundle(name, syspath);
-				if (location == null) {
-					FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_BUNDLE_NOT_FOUND, installEntries[i]), 0, null, null);
-					log.log(entry);
-					// skip this entry
-					continue;
-				}
-				location = makeRelative(LocationManager.getInstallLocation().getURL(), location);
-				String locationString = INITIAL_LOCATION + location.toExternalForm();
-				result.add(new InitialBundle(locationString, location, level, start));
-			} catch (IOException e) {
-				log.log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, e.getMessage(), 0, e, null));
-			}
-		}
-		return (InitialBundle[]) result.toArray(new InitialBundle[result.size()]);
-	}
-
-	// returns true if the refreshPackages operation caused the framework to shutdown
-	private static boolean refreshPackages(Bundle[] bundles) {
-		ServiceReference packageAdminRef = context.getServiceReference(PackageAdmin.class.getName());
-		PackageAdmin packageAdmin = null;
-		if (packageAdminRef != null)
-			packageAdmin = (PackageAdmin) context.getService(packageAdminRef);
-		if (packageAdmin == null)
-			return false;
-		// TODO this is such a hack it is silly.  There are still cases for race conditions etc
-		// but this should allow for some progress...
-		final Semaphore semaphore = new Semaphore(0);
-		StartupEventListener listener = new StartupEventListener(semaphore, FrameworkEvent.PACKAGES_REFRESHED);
-		context.addFrameworkListener(listener);
-		context.addBundleListener(listener);
-		packageAdmin.refreshPackages(bundles);
-		context.ungetService(packageAdminRef);
-		updateSplash(semaphore, listener);
-		if (isForcedRestart())
-			return true;
-		return false;
-	}
-
-	private static void waitForShutdown() {
-		if (!isForcedRestart())
-			return;
-		// wait for the system bundle to stop
-		Bundle systemBundle = context.getBundle(0);
-		int i = 0;
-		while (i < 5000 && (systemBundle.getState() & (Bundle.STARTING | Bundle.ACTIVE | Bundle.STOPPING)) != 0) {
-			i += 200;
-			try {
-				Thread.sleep(200);
-			} catch (InterruptedException e) {
-				break;
-			}
-		}
-	}
-
-	/**
-	 *  Creates and returns the adaptor
-	 *
-	 *  @return a FrameworkAdaptor object
-	 */
-	private static FrameworkAdaptor createAdaptor() throws Exception {
-		String adaptorClassName = FrameworkProperties.getProperty(PROP_ADAPTOR, DEFAULT_ADAPTOR_CLASS);
-		Class adaptorClass = Class.forName(adaptorClassName);
-		Class[] constructorArgs = new Class[] {String[].class};
-		Constructor constructor = adaptorClass.getConstructor(constructorArgs);
-		return (FrameworkAdaptor) constructor.newInstance(new Object[] {new String[0]});
-	}
-
-	private static String[] processCommandLine(String[] args) throws Exception {
-		EclipseEnvironmentInfo.setAllArgs(args);
-		if (args.length == 0) {
-			EclipseEnvironmentInfo.setFrameworkArgs(args);
-			EclipseEnvironmentInfo.setAllArgs(args);
-			return args;
-		}
-		int[] configArgs = new int[args.length];
-		configArgs[0] = -1; // need to initialize the first element to something that could not be an index.
-		int configArgIndex = 0;
-		for (int i = 0; i < args.length; i++) {
-			boolean found = false;
-			// check for args without parameters (i.e., a flag arg)
-
-			// check if debug should be enabled for the entire platform
-			// If this is the last arg or there is a following arg (i.e., arg+1 has a leading -), 
-			// simply enable debug.  Otherwise, assume that that the following arg is
-			// actually the filename of an options file.  This will be processed below.
-			if (args[i].equalsIgnoreCase(DEBUG) && ((i + 1 == args.length) || ((i + 1 < args.length) && (args[i + 1].startsWith("-"))))) { //$NON-NLS-1$
-				FrameworkProperties.setProperty(PROP_DEBUG, ""); //$NON-NLS-1$
-				debug = true;
-				found = true;
-			}
-
-			// check if development mode should be enabled for the entire platform
-			// If this is the last arg or there is a following arg (i.e., arg+1 has a leading -), 
-			// simply enable development mode.  Otherwise, assume that that the following arg is
-			// actually some additional development time class path entries.  This will be processed below.
-			if (args[i].equalsIgnoreCase(DEV) && ((i + 1 == args.length) || ((i + 1 < args.length) && (args[i + 1].startsWith("-"))))) { //$NON-NLS-1$
-				FrameworkProperties.setProperty(PROP_DEV, ""); //$NON-NLS-1$
-				found = true;
-			}
-
-			// look for the initialization arg
-			if (args[i].equalsIgnoreCase(INITIALIZE)) {
-				initialize = true;
-				found = true;
-			}
-
-			// look for the clean flag.
-			if (args[i].equalsIgnoreCase(CLEAN)) {
-				FrameworkProperties.setProperty(PROP_CLEAN, "true"); //$NON-NLS-1$
-				found = true;
-			}
-
-			// look for the consoleLog flag
-			if (args[i].equalsIgnoreCase(CONSOLE_LOG)) {
-				FrameworkProperties.setProperty(PROP_CONSOLE_LOG, "true"); //$NON-NLS-1$
-				found = true;
-			}
-
-			// look for the console with no port.  
-			if (args[i].equalsIgnoreCase(CONSOLE) && ((i + 1 == args.length) || ((i + 1 < args.length) && (args[i + 1].startsWith("-"))))) { //$NON-NLS-1$
-				FrameworkProperties.setProperty(PROP_CONSOLE, ""); //$NON-NLS-1$
-				found = true;
-			}
-
-			if (args[i].equalsIgnoreCase(NOEXIT)) {
-				FrameworkProperties.setProperty(PROP_NOSHUTDOWN, "true"); //$NON-NLS-1$
-				found = true;
-			}
-
-			if (found) {
-				configArgs[configArgIndex++] = i;
-				continue;
-			}
-			// check for args with parameters. If we are at the last argument or if the next one
-			// has a '-' as the first character, then we can't have an arg with a parm so continue.
-			if (i == args.length - 1 || args[i + 1].startsWith("-")) { //$NON-NLS-1$
-				continue;
-			}
-			String arg = args[++i];
-
-			// look for the console and port.  
-			if (args[i - 1].equalsIgnoreCase(CONSOLE)) {
-				FrameworkProperties.setProperty(PROP_CONSOLE, arg);
-				found = true;
-			}
-
-			// look for the configuration location .  
-			if (args[i - 1].equalsIgnoreCase(CONFIGURATION)) {
-				FrameworkProperties.setProperty(LocationManager.PROP_CONFIG_AREA, arg);
-				found = true;
-			}
-
-			// look for the data location for this instance.  
-			if (args[i - 1].equalsIgnoreCase(DATA)) {
-				FrameworkProperties.setProperty(LocationManager.PROP_INSTANCE_AREA, arg);
-				found = true;
-			}
-
-			// look for the user location for this instance.  
-			if (args[i - 1].equalsIgnoreCase(USER)) {
-				FrameworkProperties.setProperty(LocationManager.PROP_USER_AREA, arg);
-				found = true;
-			}
-
-			// look for the launcher location
-			if (args[i - 1].equalsIgnoreCase(LAUNCHER)) {
-				FrameworkProperties.setProperty(LocationManager.PROP_LAUNCHER, arg);
-				found = true;
-			}
-			// look for the development mode and class path entries.  
-			if (args[i - 1].equalsIgnoreCase(DEV)) {
-				FrameworkProperties.setProperty(PROP_DEV, arg);
-				found = true;
-			}
-
-			// look for the debug mode and option file location.  
-			if (args[i - 1].equalsIgnoreCase(DEBUG)) {
-				FrameworkProperties.setProperty(PROP_DEBUG, arg);
-				debug = true;
-				found = true;
-			}
-
-			// look for the window system.  
-			if (args[i - 1].equalsIgnoreCase(WS)) {
-				FrameworkProperties.setProperty(PROP_WS, arg);
-				found = true;
-			}
-
-			// look for the operating system
-			if (args[i - 1].equalsIgnoreCase(OS)) {
-				FrameworkProperties.setProperty(PROP_OS, arg);
-				found = true;
-			}
-
-			// look for the system architecture
-			if (args[i - 1].equalsIgnoreCase(ARCH)) {
-				FrameworkProperties.setProperty(PROP_ARCH, arg);
-				found = true;
-			}
-
-			// look for the nationality/language
-			if (args[i - 1].equalsIgnoreCase(NL)) {
-				FrameworkProperties.setProperty(PROP_NL, arg);
-				found = true;
-			}
-
-			// look for the locale extensions
-			if (args[i - 1].equalsIgnoreCase(NL_EXTENSIONS)) {
-				FrameworkProperties.setProperty(PROP_NL_EXTENSIONS, 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) {
-			EclipseEnvironmentInfo.setFrameworkArgs(new String[0]);
-			EclipseEnvironmentInfo.setAppArgs(args);
-			return args;
-		}
-		String[] appArgs = new String[args.length - configArgIndex];
-		String[] frameworkArgs = new String[configArgIndex];
-		configArgIndex = 0;
-		int j = 0;
-		int k = 0;
-		for (int i = 0; i < args.length; i++) {
-			if (i == configArgs[configArgIndex]) {
-				frameworkArgs[k++] = args[i];
-				configArgIndex++;
-			} else
-				appArgs[j++] = args[i];
-		}
-		EclipseEnvironmentInfo.setFrameworkArgs(frameworkArgs);
-		EclipseEnvironmentInfo.setAppArgs(appArgs);
-		return appArgs;
-	}
-
-	/**
-	 * 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
-	 */
-	private static String[] getArrayFromList(String prop, String separator) {
-		return ManifestElement.getArrayFromList(prop, separator);
-	}
-
-	protected static String getSysPath() {
-		String result = FrameworkProperties.getProperty(PROP_SYSPATH);
-		if (result != null)
-			return result;
-		result = getSysPathFromURL(FrameworkProperties.getProperty(PROP_FRAMEWORK));
-		if (result == null)
-			result = getSysPathFromCodeSource();
-		if (result == null)
-			throw new IllegalStateException("Can not find the system path."); //$NON-NLS-1$
-		if (Character.isUpperCase(result.charAt(0))) {
-			char[] chars = result.toCharArray();
-			chars[0] = Character.toLowerCase(chars[0]);
-			result = new String(chars);
-		}
-		FrameworkProperties.setProperty(PROP_SYSPATH, result);
-		return result;
-	}
-
-	private static String getSysPathFromURL(String urlSpec) {
-		if (urlSpec == null)
-			return null;
-		URL url = LocationHelper.buildURL(urlSpec, false);
-		if (url == null)
-			return null;
-		File fwkFile = new File(url.getFile());
-		fwkFile = new File(fwkFile.getAbsolutePath());
-		fwkFile = new File(fwkFile.getParent());
-		return fwkFile.getAbsolutePath();
-	}
-
-	private static String getSysPathFromCodeSource() {
-		ProtectionDomain pd = EclipseStarter.class.getProtectionDomain();
-		if (pd == null)
-			return null;
-		CodeSource cs = pd.getCodeSource();
-		if (cs == null)
-			return null;
-		URL url = cs.getLocation();
-		if (url == null)
-			return null;
-		String result = url.getFile();
-		if (result.endsWith(".jar")) { //$NON-NLS-1$
-			result = result.substring(0, result.lastIndexOf('/'));
-			if ("folder".equals(FrameworkProperties.getProperty(PROP_FRAMEWORK_SHAPE))) //$NON-NLS-1$
-				result = result.substring(0, result.lastIndexOf('/'));
-		} else {
-			if (result.endsWith("/")) //$NON-NLS-1$
-				result = result.substring(0, result.length() - 1);
-			result = result.substring(0, result.lastIndexOf('/'));
-			result = result.substring(0, result.lastIndexOf('/'));
-		}
-		return result;
-	}
-
-	private static Bundle[] getCurrentBundles(boolean includeInitial) {
-		Bundle[] installed = context.getBundles();
-		ArrayList initial = new ArrayList();
-		for (int i = 0; i < installed.length; i++) {
-			Bundle bundle = installed[i];
-			if (bundle.getLocation().startsWith(INITIAL_LOCATION)) {
-				if (includeInitial)
-					initial.add(bundle);
-			} else if (!includeInitial && bundle.getBundleId() != 0)
-				initial.add(bundle);
-		}
-		return (Bundle[]) initial.toArray(new Bundle[initial.size()]);
-	}
-
-	private static Bundle getBundleByLocation(String location, Bundle[] bundles) {
-		for (int i = 0; i < bundles.length; i++) {
-			Bundle bundle = bundles[i];
-			if (location.equalsIgnoreCase(bundle.getLocation()))
-				return bundle;
-		}
-		return null;
-	}
-
-	private static void uninstallBundles(Bundle[] curInitBundles, InitialBundle[] newInitBundles, List toRefresh) {
-		for (int i = 0; i < curInitBundles.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < newInitBundles.length; j++) {
-				if (curInitBundles[i].getLocation().equalsIgnoreCase(newInitBundles[j].locationString)) {
-					found = true;
-					break;
-				}
-			}
-			if (!found)
-				try {
-					curInitBundles[i].uninstall();
-					toRefresh.add(curInitBundles[i]);
-				} catch (BundleException e) {
-					FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_FAILED_UNINSTALL, curInitBundles[i].getLocation()), 0, e, null);
-					log.log(entry);
-				}
-		}
-	}
-
-	private static void installBundles(InitialBundle[] initialBundles, Bundle[] curInitBundles, ArrayList startBundles, ArrayList lazyActivationBundles, List toRefresh) {
-		ServiceReference reference = context.getServiceReference(StartLevel.class.getName());
-		StartLevel startService = null;
-		if (reference != null)
-			startService = (StartLevel) context.getService(reference);
-		try {
-			for (int i = 0; i < initialBundles.length; i++) {
-				Bundle osgiBundle = getBundleByLocation(initialBundles[i].locationString, curInitBundles);
-				try {
-					// don't need to install if it is already installed
-					if (osgiBundle == null) {
-						InputStream in = initialBundles[i].location.openStream();
-						try {
-							osgiBundle = context.installBundle(initialBundles[i].locationString, in);
-						} catch (BundleException e) {
-							StatusException status = e instanceof StatusException ? (StatusException) e : null;
-							if (status != null && status.getStatusCode() == StatusException.CODE_OK && status.getStatus() instanceof Bundle) {
-								osgiBundle = (Bundle) status.getStatus();
-							} else
-								throw e;
-						}
-						// only check for lazy activation header if this is a newly installed bundle and is not marked for persistent start
-						if (!initialBundles[i].start && hasLazyActivationPolicy(osgiBundle))
-							lazyActivationBundles.add(osgiBundle);
-					}
-					// always set the startlevel incase it has changed (bug 111549)
-					// this is a no-op if the level is the same as previous launch.
-					if ((osgiBundle.getState() & Bundle.UNINSTALLED) == 0 && initialBundles[i].level >= 0 && startService != null)
-						startService.setBundleStartLevel(osgiBundle, initialBundles[i].level);
-					// if this bundle is supposed to be started then add it to the start list
-					if (initialBundles[i].start)
-						startBundles.add(osgiBundle);
-					// include basic bundles in case they were not resolved before
-					if ((osgiBundle.getState() & Bundle.INSTALLED) != 0)
-						toRefresh.add(osgiBundle);
-				} catch (BundleException e) {
-					FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_FAILED_INSTALL, initialBundles[i].location), 0, e, null);
-					log.log(entry);
-				} catch (IOException e) {
-					FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_FAILED_INSTALL, initialBundles[i].location), 0, e, null);
-					log.log(entry);
-				}
-			}
-		} finally {
-			if (reference != null)
-				context.ungetService(reference);
-		}
-	}
-
-	private static boolean hasLazyActivationPolicy(Bundle target) {
-		// check the bundle manifest to see if it defines a lazy activation policy
-		Dictionary headers = target.getHeaders(""); //$NON-NLS-1$
-		// first check to see if this is a fragment bundle
-		String fragmentHost = (String) headers.get(Constants.FRAGMENT_HOST);
-		if (fragmentHost != null)
-			return false; // do not activate fragment bundles
-		// look for the OSGi defined Bundle-ActivationPolicy header
-		String activationPolicy = (String) headers.get(Constants.BUNDLE_ACTIVATIONPOLICY);
-		try {
-			if (activationPolicy != null) {
-				ManifestElement[] elements = ManifestElement.parseHeader(Constants.BUNDLE_ACTIVATIONPOLICY, activationPolicy);
-				if (elements != null && elements.length > 0) {
-					// if the value is "lazy" then it has a lazy activation poliyc
-					if (Constants.ACTIVATION_LAZY.equals(elements[0].getValue()))
-						return true;
-				}
-			} else {
-				// check for Eclipse specific lazy start headers "Eclipse-LazyStart" and "Eclipse-AutoStart"
-				String eclipseLazyStart = (String) headers.get(Constants.ECLIPSE_LAZYSTART);
-				if (eclipseLazyStart == null)
-					eclipseLazyStart = (String) headers.get(Constants.ECLIPSE_AUTOSTART);
-				ManifestElement[] elements = ManifestElement.parseHeader(Constants.ECLIPSE_LAZYSTART, eclipseLazyStart);
-				if (elements != null && elements.length > 0) {
-					// if the value is true then it is lazy activated
-					if ("true".equals(elements[0].getValue())) //$NON-NLS-1$
-						return true;
-					// otherwise it is only lazy activated if it defines an exceptions directive.
-					else if (elements[0].getDirective("exceptions") != null) //$NON-NLS-1$
-						return true;
-				}
-			}
-		} catch (BundleException be) {
-			// ignore this
-		}
-		return false;
-	}
-
-	private static void startBundles(Bundle[] startBundles, Bundle[] lazyBundles) {
-		for (int i = 0; i < startBundles.length; i++)
-			startBundle(startBundles[i], 0);
-		for (int i = 0; i < lazyBundles.length; i++)
-			startBundle(lazyBundles[i], Bundle.START_ACTIVATION_POLICY);
-	}
-
-	private static void startBundle(Bundle bundle, int options) {
-		try {
-			bundle.start(options);
-		} catch (BundleException e) {
-			if ((bundle.getState() & Bundle.RESOLVED) != 0) {
-				// only log errors if the bundle is resolved
-				FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_FAILED_START, bundle.getLocation()), 0, e, null);
-				log.log(entry);
-			}
-		}
-	}
-
-	private static void loadConfigurationInfo() {
-		Location configArea = LocationManager.getConfigurationLocation();
-		if (configArea == null)
-			return;
-
-		URL location = null;
-		try {
-			location = new URL(configArea.getURL().toExternalForm() + LocationManager.CONFIG_FILE);
-		} catch (MalformedURLException e) {
-			// its ok.  This should never happen
-		}
-		mergeProperties(FrameworkProperties.getProperties(), loadProperties(location));
-	}
-
-	private static Properties loadProperties(URL location) {
-		Properties result = new Properties();
-		if (location == null)
-			return result;
-		try {
-			InputStream in = location.openStream();
-			try {
-				result.load(in);
-			} finally {
-				in.close();
-			}
-		} catch (IOException e) {
-			// its ok if there is no file.  We'll just use the defaults for everything
-			// TODO but it might be nice to log something with gentle wording (i.e., it is not an error)
-		}
-		return result;
-	}
-
-	/**
-	 * Returns a URL which is equivalent to the given URL relative to the
-	 * specified base URL. Works only for file: URLs
-	 * @throws MalformedURLException 
-	 */
-	private static URL makeRelative(URL base, URL location) throws MalformedURLException {
-		if (base == null)
-			return location;
-		if (!"file".equals(base.getProtocol())) //$NON-NLS-1$
-			return location;
-		if (!location.getProtocol().equals(REFERENCE_PROTOCOL))
-			return location; // we can only make reference urls relative
-		URL nonReferenceLocation = new URL(location.getPath());
-		// if some URL component does not match, return the original location
-		if (!base.getProtocol().equals(nonReferenceLocation.getProtocol()))
-			return location;
-		File locationPath = new File(nonReferenceLocation.getPath());
-		// if location is not absolute, return original location 
-		if (!locationPath.isAbsolute())
-			return location;
-		File relativePath = makeRelative(new File(base.getPath()), locationPath);
-		String urlPath = relativePath.getPath();
-		if (File.separatorChar != '/')
-			urlPath = urlPath.replace(File.separatorChar, '/');
-		if (nonReferenceLocation.getPath().endsWith("/")) //$NON-NLS-1$
-			// restore original trailing slash 
-			urlPath += '/';
-		// couldn't use File to create URL here because it prepends the path with user.dir 
-		URL relativeURL = new URL(base.getProtocol(), base.getHost(), base.getPort(), urlPath);
-		// now make it back to a reference URL
-		relativeURL = new URL(REFERENCE_SCHEME + relativeURL.toExternalForm());
-		return relativeURL;
-	}
-
-	private static File makeRelative(File base, File location) {
-		if (!location.isAbsolute())
-			return location;
-		File relative = new File(new FilePath(base).makeRelative(new FilePath(location)));
-		return relative;
-	}
-
-	private static void mergeProperties(Properties destination, Properties source) {
-		for (Enumeration e = source.keys(); e.hasMoreElements();) {
-			String key = (String) e.nextElement();
-			String value = source.getProperty(key);
-			if (destination.getProperty(key) == null)
-				destination.put(key, value);
-		}
-	}
-
-	private static void setStartLevel(final int value) {
-		ServiceReference reference = context.getServiceReference(StartLevel.class.getName());
-		final StartLevel startLevel = reference != null ? (StartLevel) context.getService(reference) : null;
-		if (startLevel == null)
-			return;
-		final Semaphore semaphore = new Semaphore(0);
-		StartupEventListener listener = new StartupEventListener(semaphore, FrameworkEvent.STARTLEVEL_CHANGED);
-		context.addFrameworkListener(listener);
-		context.addBundleListener(listener);
-		startLevel.setStartLevel(value);
-		context.ungetService(reference);
-		updateSplash(semaphore, listener);
-	}
-
-	static class StartupEventListener implements SynchronousBundleListener, FrameworkListener {
-		private final Semaphore semaphore;
-		private final int frameworkEventType;
-
-		public StartupEventListener(Semaphore semaphore, int frameworkEventType) {
-			this.semaphore = semaphore;
-			this.frameworkEventType = frameworkEventType;
-		}
-
-		public void bundleChanged(BundleEvent event) {
-			if (event.getBundle().getBundleId() == 0 && event.getType() == BundleEvent.STOPPING)
-				semaphore.release();
-		}
-
-		public void frameworkEvent(FrameworkEvent event) {
-			if (event.getType() == frameworkEventType)
-				semaphore.release();
-		}
-
-	}
-
-	private static void updateSplash(Semaphore semaphore, StartupEventListener listener) {
-		ServiceTracker monitorTracker = new ServiceTracker(context, StartupMonitor.class.getName(), null);
-		monitorTracker.open();
-		try {
-			while (true) {
-				StartupMonitor monitor = (StartupMonitor) monitorTracker.getService();
-				if (monitor != null) {
-					try {
-						monitor.update();
-					} catch (Throwable e) {
-						// ignore exceptions thrown by the monitor
-					}
-				}
-				// can we acquire the semaphore yet?
-				if (semaphore.acquire(50))
-					break; //done
-				//else still working, spin another update
-			}
-		} finally {
-			if (listener != null) {
-				context.removeFrameworkListener(listener);
-				context.removeBundleListener(listener);
-			}
-			monitorTracker.close();
-		}
-	}
-
-	/**
-	 * Searches for the given target directory immediately under
-	 * the given start location.  If one is found then this location is returned; 
-	 * otherwise an exception is thrown.
-	 * 
-	 * @return the location where target directory was found
-	 * @param start the location to begin searching
-	 */
-	private static String searchFor(final String target, String start) {
-		String[] candidates = (String[]) searchCandidates.get(start);
-		if (candidates == null) {
-			candidates = new File(start).list();
-			if (candidates != null)
-				searchCandidates.put(start, candidates);
-		}
-		if (candidates == null)
-			return null;
-		String result = null;
-		Object[] maxVersion = null;
-		for (int i = 0; i < candidates.length; i++) {
-			String candidateName = candidates[i];
-			if (!candidateName.startsWith(target))
-				continue;
-			boolean simpleJar = false;
-			final char versionSep = candidateName.length() > target.length() ? candidateName.charAt(target.length()) : 0;
-			if (candidateName.length() > target.length() && versionSep != '_' && versionSep != '-') {
-				// make sure this is not just a jar with no (_|-)version tacked on the end
-				if (candidateName.length() == 4 + target.length() && candidateName.endsWith(".jar")) //$NON-NLS-1$
-					simpleJar = true;
-				else
-					// name does not match the target properly with an (_|-) version at the end
-					continue;
-			}
-			// Note: directory with version suffix is always > than directory without version suffix
-			String version = candidateName.length() > target.length() + 1 && (versionSep == '_' || versionSep == '-') ? candidateName.substring(target.length() + 1) : ""; //$NON-NLS-1$ 
-			Object[] currentVersion = getVersionElements(version);
-			if (currentVersion != null && compareVersion(maxVersion, currentVersion) < 0) {
-				File candidate = new File(start, candidateName);
-				// if simple jar; make sure it is really a file before accepting it
-				if (!simpleJar || candidate.isFile()) {
-					result = candidate.getAbsolutePath();
-					maxVersion = currentVersion;
-				}
-			}
-		}
-		if (result == null)
-			return null;
-		return result.replace(File.separatorChar, '/') + "/"; //$NON-NLS-1$
-	}
-
-	/**
-	 * Do a quick parse of version identifier so its elements can be correctly compared.
-	 * If we are unable to parse the full version, remaining elements are initialized
-	 * with suitable defaults.
-	 * @return an array of size 4; first three elements are of type Integer (representing
-	 * major, minor and service) and the fourth element is of type String (representing
-	 * qualifier).  A value of null is returned if there are no valid Integers.  Note, that 
-	 * returning anything else will cause exceptions in the caller.
-	 */
-	private static Object[] getVersionElements(String version) {
-		Object[] result = {new Integer(-1), new Integer(-1), new Integer(-1), ""}; //$NON-NLS-1$
-		StringTokenizer t = new StringTokenizer(version, "."); //$NON-NLS-1$
-		String token;
-		for (int i = 0; t.hasMoreTokens() && i < 4; i++) {
-			token = t.nextToken();
-			if (i < 3) {
-				// major, minor or service ... numeric values
-				try {
-					result[i] = new Integer(token);
-				} catch (Exception e) {
-					if (i == 0)
-						return null; // return null if no valid numbers are present
-					// invalid number format - use default numbers (-1) for the rest
-					break;
-				}
-			} else {
-				// qualifier ... string value
-				result[i] = token;
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Compares version strings. 
-	 * @return result of comparison, as integer;
-	 * <code><0</code> if left < right;
-	 * <code>0</code> if left == right;
-	 * <code>>0</code> if left > right;
-	 */
-	private static int compareVersion(Object[] left, Object[] right) {
-		if (left == null)
-			return -1;
-		int result = ((Integer) left[0]).compareTo((Integer) right[0]); // compare major
-		if (result != 0)
-			return result;
-
-		result = ((Integer) left[1]).compareTo((Integer) right[1]); // compare minor
-		if (result != 0)
-			return result;
-
-		result = ((Integer) left[2]).compareTo((Integer) right[2]); // compare service
-		if (result != 0)
-			return result;
-
-		return ((String) left[3]).compareTo((String) right[3]); // compare qualifier
-	}
-
-	private static void finalizeProperties() {
-		// if check config is unknown and we are in dev mode, 
-		if (FrameworkProperties.getProperty(PROP_DEV) != null && FrameworkProperties.getProperty(PROP_CHECK_CONFIG) == null)
-			FrameworkProperties.setProperty(PROP_CHECK_CONFIG, "true"); //$NON-NLS-1$
-	}
-
-	private static class InitialBundle {
-		public final String locationString;
-		public final URL location;
-		public final int level;
-		public final boolean start;
-
-		InitialBundle(String locationString, URL location, int level, boolean start) {
-			this.locationString = locationString;
-			this.location = location;
-			this.level = level;
-			this.start = start;
-		}
-	}
-
-	/**
-	 * Sets the initial properties for the platform.  
-	 * This method must be called before calling the {@link  #run(String[], Runnable)} or 
-	 * {@link #startup(String[], Runnable)} methods for the properties to be used in 
-	 * a launched instance of the platform.  
-	 * <p>
-	 * If the specified properties contains a null value then the key for that value 
-	 * will be cleared from the properties of the platform.
-	 * </p>
-	 * @param initialProperties the initial properties to set for the platform.
-	 * @since 3.2
-	 */
-	public static void setInitialProperties(Map initialProperties) {
-		if (initialProperties == null || initialProperties.isEmpty())
-			return;
-		for (Iterator it = initialProperties.entrySet().iterator(); it.hasNext();) {
-			Map.Entry entry = (Map.Entry) it.next();
-			if (entry.getValue() != null)
-				FrameworkProperties.setProperty((String) entry.getKey(), (String) entry.getValue());
-			else
-				FrameworkProperties.clearProperty((String) entry.getKey());
-		}
-	}
-
-	/**
-	 * Returns the context of the system bundle.  A value of 
-	 * <code>null</code> is returned if the platform is not running.
-	 * @return the context of the system bundle
-	 * @throws java.lang.SecurityException If the caller does not have the
-	 *         appropriate <code>AdminPermission[system.bundle,CONTEXT]</code>, and
-	 *         the Java Runtime Environment supports permissions.
-	 */
-	public static BundleContext getSystemBundleContext() {
-		if (context == null || !running)
-			return null;
-		return context.getBundle().getBundleContext();
-	}
-
-	private static boolean isForcedRestart() {
-		return Boolean.valueOf(FrameworkProperties.getProperty(PROP_FORCED_RESTART)).booleanValue();
-	}
-
-	/*
-	 * NOTE: This is an internal/experimental method used by launchers that need to react when the framework
-	 * is shutdown internally.
-	 * 
-	 * Adds a framework shutdown handler. <p>
-	 * A handler implements the {@link Runnable} interface.  When the framework is shutdown
-	 * the {@link Runnable#run()} method is called for each registered handler.  Handlers should 
-	 * make no assumptions on the thread it is being called from.  If a handler object is 
-	 * registered multiple times it will be called once for each registration.
-	 * <p>
-	 * At the time a handler is called the framework is shutdown.  Handlers must not depend on 
-	 * a running framework to execute or attempt to load additional classes from bundles 
-	 * installed in the framework.
-	 * @param handler the framework shutdown handler
-	 * @throws IllegalStateException if the platform is already running
-	 */
-	static void internalAddFrameworkShutdownHandler(Runnable handler) {
-		if (running)
-			throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_ALREADY_RUNNING);
-
-		if (shutdownHandlers == null)
-			shutdownHandlers = new ArrayList();
-
-		shutdownHandlers.add(handler);
-	}
-
-	/*
-	 * NOTE: This is an internal/experimental method used by launchers that need to react when the framework
-	 * is shutdown internally.
-	 * 
-	 * Removes a framework shutdown handler. <p>
-	 * @param handler the framework shutdown handler
-	 * @throws IllegalStateException if the platform is already running
-	 */
-	static void internalRemoveFrameworkShutdownHandler(Runnable handler) {
-		if (running)
-			throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_ALREADY_RUNNING);
-
-		if (shutdownHandlers != null)
-			shutdownHandlers.remove(handler);
-	}
-
-	private static void registerFrameworkShutdownHandlers() {
-		if (shutdownHandlers == null)
-			return;
-
-		final Bundle systemBundle = context.getBundle();
-		for (Iterator it = shutdownHandlers.iterator(); it.hasNext();) {
-			final Runnable handler = (Runnable) it.next();
-			BundleListener listener = new BundleListener() {
-				public void bundleChanged(BundleEvent event) {
-					if (event.getBundle() == systemBundle && event.getType() == BundleEvent.STOPPED) {
-						handler.run();
-					}
-				}
-			};
-			context.addBundleListener(listener);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java
deleted file mode 100644
index 354863e..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.adaptor;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import org.eclipse.core.runtime.internal.adaptor.*;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorUtil;
-import org.eclipse.osgi.service.datalocation.Location;
-
-/**
- * This class is used to manage the various Locations for Eclipse.
- * <p>
- * Clients may not extend this class.
- * </p>
- * @since 3.1
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class LocationManager {
-	private static Location installLocation = null;
-	private static Location configurationLocation = null;
-	private static Location userLocation = null;
-	private static Location instanceLocation = null;
-	private static Location eclipseHomeLocation = null;
-
-	public static final String READ_ONLY_AREA_SUFFIX = ".readOnly"; //$NON-NLS-1$
-	public static final String PROP_INSTALL_AREA = "osgi.install.area"; //$NON-NLS-1$
-	public static final String PROP_CONFIG_AREA = "osgi.configuration.area"; //$NON-NLS-1$
-	public static final String PROP_CONFIG_AREA_DEFAULT = "osgi.configuration.area.default"; //$NON-NLS-1$
-	public static final String PROP_SHARED_CONFIG_AREA = "osgi.sharedConfiguration.area"; //$NON-NLS-1$
-	public static final String PROP_INSTANCE_AREA = "osgi.instance.area"; //$NON-NLS-1$
-	public static final String PROP_INSTANCE_AREA_DEFAULT = "osgi.instance.area.default"; //$NON-NLS-1$
-	public static final String PROP_USER_AREA = "osgi.user.area"; //$NON-NLS-1$
-	public static final String PROP_USER_AREA_DEFAULT = "osgi.user.area.default"; //$NON-NLS-1$
-	public static final String PROP_MANIFEST_CACHE = "osgi.manifest.cache"; //$NON-NLS-1$
-	public static final String PROP_USER_HOME = "user.home"; //$NON-NLS-1$
-	public static final String PROP_USER_DIR = "user.dir"; //$NON-NLS-1$
-	public static final String PROP_HOME_LOCATION_AREA = "eclipse.home.location"; //$NON-NLS-1$
-	static final String PROP_LAUNCHER = "eclipse.launcher"; //$NON-NLS-1$
-
-	// configuration area file/dir names
-	public static final String BUNDLES_DIR = "bundles"; //$NON-NLS-1$
-	public static final String STATE_FILE = ".state"; //$NON-NLS-1$
-	public static final String LAZY_FILE = ".lazy"; //$NON-NLS-1$
-	public static final String BUNDLE_DATA_FILE = ".bundledata"; //$NON-NLS-1$
-	public static final String MANIFESTS_DIR = "manifests"; //$NON-NLS-1$
-	public static final String CONFIG_FILE = "config.ini"; //$NON-NLS-1$
-	public static final String ECLIPSE_PROPERTIES = "eclipse.properties"; //$NON-NLS-1$
-
-	// Constants for configuration location discovery
-	private static final String ECLIPSE = "eclipse"; //$NON-NLS-1$
-	private static final String PRODUCT_SITE_MARKER = ".eclipseproduct"; //$NON-NLS-1$
-	private static final String PRODUCT_SITE_ID = "id"; //$NON-NLS-1$
-	private static final String PRODUCT_SITE_VERSION = "version"; //$NON-NLS-1$
-
-	private static final String CONFIG_DIR = "configuration"; //$NON-NLS-1$
-
-	// Data mode constants for user, configuration and data locations.
-	private static final String NONE = "@none"; //$NON-NLS-1$
-	private static final String NO_DEFAULT = "@noDefault"; //$NON-NLS-1$
-	private static final String USER_HOME = "@user.home"; //$NON-NLS-1$
-	private static final String USER_DIR = "@user.dir"; //$NON-NLS-1$
-
-	private static final String INSTANCE_DATA_AREA_PREFIX = ".metadata/.plugins/"; //$NON-NLS-1$
-
-	/**
-	 * Builds a URL with the given specification
-	 * @param spec the URL specification
-	 * @param trailingSlash flag to indicate a trailing slash on the spec
-	 * @return a URL
-	 */
-	public static URL buildURL(String spec, boolean trailingSlash) {
-		return LocationHelper.buildURL(spec, trailingSlash);
-	}
-
-	private static void mungeConfigurationLocation() {
-		// if the config property was set, munge it for backwards compatibility.
-		String location = FrameworkProperties.getProperty(PROP_CONFIG_AREA);
-		if (location != null) {
-			if (location.endsWith(".cfg")) { //$NON-NLS-1$
-				int index = location.lastIndexOf('/');
-				if (index < 0)
-					index = location.lastIndexOf('\\');
-				location = location.substring(0, index + 1);
-				FrameworkProperties.setProperty(PROP_CONFIG_AREA, location);
-			}
-		}
-	}
-
-	/**
-	 * Initializes the Location objects for the LocationManager.
-	 */
-	public static void initializeLocations() {
-		// do install location initialization first since others may depend on it
-		// assumes that the property is already set
-		installLocation = buildLocation(PROP_INSTALL_AREA, null, "", true, false, null); //$NON-NLS-1$
-
-		// TODO not sure what the data area prefix should be here for the user area
-		Location temp = buildLocation(PROP_USER_AREA_DEFAULT, null, "", false, false, null); //$NON-NLS-1$
-		URL defaultLocation = temp == null ? null : temp.getURL();
-		if (defaultLocation == null)
-			defaultLocation = buildURL(new File(FrameworkProperties.getProperty(PROP_USER_HOME), "user").getAbsolutePath(), true); //$NON-NLS-1$
-		userLocation = buildLocation(PROP_USER_AREA, defaultLocation, "", false, false, null); //$NON-NLS-1$
-
-		temp = buildLocation(PROP_INSTANCE_AREA_DEFAULT, null, "", false, false, INSTANCE_DATA_AREA_PREFIX); //$NON-NLS-1$
-		defaultLocation = temp == null ? null : temp.getURL();
-		if (defaultLocation == null)
-			defaultLocation = buildURL(new File(FrameworkProperties.getProperty(PROP_USER_DIR), "workspace").getAbsolutePath(), true); //$NON-NLS-1$
-		instanceLocation = buildLocation(PROP_INSTANCE_AREA, defaultLocation, "", false, false, INSTANCE_DATA_AREA_PREFIX); //$NON-NLS-1$
-
-		mungeConfigurationLocation();
-		// compute a default but it is very unlikely to be used since main will have computed everything
-		temp = buildLocation(PROP_CONFIG_AREA_DEFAULT, null, "", false, false, null); //$NON-NLS-1$
-		defaultLocation = temp == null ? null : temp.getURL();
-		if (defaultLocation == null && FrameworkProperties.getProperty(PROP_CONFIG_AREA) == null)
-			// only compute the default if the configuration area property is not set
-			defaultLocation = buildURL(computeDefaultConfigurationLocation(), true);
-		configurationLocation = buildLocation(PROP_CONFIG_AREA, defaultLocation, "", false, false, null); //$NON-NLS-1$
-		// get the parent location based on the system property. This will have been set on the 
-		// way in either by the caller/user or by main.  There will be no parent location if we are not 
-		// cascaded.
-		URL parentLocation = computeSharedConfigurationLocation();
-		if (parentLocation != null && !parentLocation.equals(configurationLocation.getURL())) {
-			Location parent = new BasicLocation(null, parentLocation, true, null);
-			((BasicLocation) configurationLocation).setParent(parent);
-		}
-		initializeDerivedConfigurationLocations();
-
-		if (FrameworkProperties.getProperty(PROP_HOME_LOCATION_AREA) == null) {
-			String eclipseLauncher = FrameworkProperties.getProperty(PROP_LAUNCHER);
-			String eclipseHomeLocationPath = getEclipseHomeLocation(eclipseLauncher);
-			if (eclipseHomeLocationPath != null)
-				FrameworkProperties.setProperty(PROP_HOME_LOCATION_AREA, eclipseHomeLocationPath);
-		}
-		// if eclipse.home.location is not set then default to osgi.install.area
-		if (FrameworkProperties.getProperty(PROP_HOME_LOCATION_AREA) == null && FrameworkProperties.getProperty(PROP_INSTALL_AREA) != null)
-			FrameworkProperties.setProperty(PROP_HOME_LOCATION_AREA, FrameworkProperties.getProperty(PROP_INSTALL_AREA));
-		eclipseHomeLocation = buildLocation(PROP_HOME_LOCATION_AREA, null, "", true, true, null); //$NON-NLS-1$
-	}
-
-	private static String getEclipseHomeLocation(String launcher) {
-		if (launcher == null)
-			return null;
-		File launcherFile = new File(launcher);
-		if (launcherFile.getParent() == null)
-			return null;
-		File launcherDir = new File(launcherFile.getParent());
-		// check for mac os; the os check is copied from EclipseEnvironmentInfo.
-		String macosx = org.eclipse.osgi.service.environment.Constants.OS_MACOSX;
-		if (macosx.equals(EclipseEnvironmentInfo.getDefault().getOS()))
-			launcherDir = getMacOSEclipsoeHomeLocation(launcherDir);
-		return (launcherDir.exists() && launcherDir.isDirectory()) ? launcherDir.getAbsolutePath() : null;
-	}
-
-	private static File getMacOSEclipsoeHomeLocation(File launcherDir) {
-		// TODO for now we go up three directories from the launcher dir as long as the parent dir is named MacOS; is this always the case?
-		// TODO not sure if case is important
-		if (!launcherDir.getName().equalsIgnoreCase("macos")) //$NON-NLS-1$
-			return launcherDir; // don't do the up three stuff if not in macos directory
-		String launcherParent = launcherDir.getParent();
-		if (launcherParent != null)
-			launcherParent = new File(launcherParent).getParent();
-		if (launcherParent != null)
-			launcherParent = new File(launcherParent).getParent();
-		return launcherParent == null ? null : new File(launcherParent);
-	}
-
-	private static Location buildLocation(String property, URL defaultLocation, String userDefaultAppendage, boolean readOnlyDefault, boolean computeReadOnly, String dataAreaPrefix) {
-		String location = FrameworkProperties.clearProperty(property);
-		// the user/product may specify a non-default readOnly setting   
-		String userReadOnlySetting = FrameworkProperties.getProperty(property + READ_ONLY_AREA_SUFFIX);
-		boolean readOnly = (userReadOnlySetting == null ? readOnlyDefault : Boolean.valueOf(userReadOnlySetting).booleanValue());
-		// if the instance location is not set, predict where the workspace will be and 
-		// put the instance area inside the workspace meta area.
-		if (location == null)
-			return new BasicLocation(property, defaultLocation, userReadOnlySetting != null || !computeReadOnly ? readOnly : !canWrite(defaultLocation), dataAreaPrefix);
-		String trimmedLocation = location.trim();
-		if (trimmedLocation.equalsIgnoreCase(NONE))
-			return null;
-		if (trimmedLocation.equalsIgnoreCase(NO_DEFAULT))
-			return new BasicLocation(property, null, readOnly, dataAreaPrefix);
-		if (trimmedLocation.startsWith(USER_HOME)) {
-			String base = substituteVar(location, USER_HOME, PROP_USER_HOME);
-			location = new File(base, userDefaultAppendage).getAbsolutePath();
-		} else if (trimmedLocation.startsWith(USER_DIR)) {
-			String base = substituteVar(location, USER_DIR, PROP_USER_DIR);
-			location = new File(base, userDefaultAppendage).getAbsolutePath();
-		}
-		URL url = buildURL(location, true);
-		BasicLocation result = null;
-		if (url != null) {
-			result = new BasicLocation(property, null, userReadOnlySetting != null || !computeReadOnly ? readOnly : !canWrite(url), dataAreaPrefix);
-			result.setURL(url, false);
-		}
-		return result;
-	}
-
-	private static String substituteVar(String source, String var, String prop) {
-		String value = FrameworkProperties.getProperty(prop, ""); //$NON-NLS-1$
-		return value + source.substring(var.length());
-	}
-
-	private static void initializeDerivedConfigurationLocations() {
-		if (FrameworkProperties.getProperty(PROP_MANIFEST_CACHE) == null)
-			FrameworkProperties.setProperty(PROP_MANIFEST_CACHE, getConfigurationFile(MANIFESTS_DIR).getAbsolutePath());
-	}
-
-	private static URL computeInstallConfigurationLocation() {
-		String property = FrameworkProperties.getProperty(PROP_INSTALL_AREA);
-		if (property != null)
-			return LocationHelper.buildURL(property, true);
-		return null;
-	}
-
-	private static URL computeSharedConfigurationLocation() {
-		String property = FrameworkProperties.getProperty(PROP_SHARED_CONFIG_AREA);
-		if (property == null)
-			return null;
-		try {
-			URL sharedConfigurationURL = LocationHelper.buildURL(property, true);
-			if (sharedConfigurationURL == null)
-				return null;
-			if (sharedConfigurationURL.getPath().startsWith("/")) //$NON-NLS-1$
-				// absolute
-				return sharedConfigurationURL;
-			URL installURL = installLocation.getURL();
-			if (!sharedConfigurationURL.getProtocol().equals(installURL.getProtocol()))
-				// different protocol
-				return sharedConfigurationURL;
-			sharedConfigurationURL = new URL(installURL, sharedConfigurationURL.getPath());
-			FrameworkProperties.setProperty(PROP_SHARED_CONFIG_AREA, sharedConfigurationURL.toExternalForm());
-		} catch (MalformedURLException e) {
-			// do nothing here since it is basically impossible to get a bogus url 
-		}
-		return null;
-	}
-
-	private static String computeDefaultConfigurationLocation() {
-		// 1) We store the config state relative to the 'eclipse' directory if possible
-		// 2) If this directory is read-only 
-		//    we store the state in <user.home>/.eclipse/<application-id>_<version> where <user.home> 
-		//    is unique for each local user, and <application-id> is the one 
-		//    defined in .eclipseproduct marker file. If .eclipseproduct does not
-		//    exist, use "eclipse" as the application-id.
-
-		URL installURL = computeInstallConfigurationLocation();
-		if (installURL != null && "file".equals(installURL.getProtocol())) { //$NON-NLS-1$
-			File installDir = new File(installURL.getFile());
-			File defaultConfigDir = new File(installDir, CONFIG_DIR);
-			if (!defaultConfigDir.exists())
-				defaultConfigDir.mkdirs();
-			if (defaultConfigDir.exists() && AdaptorUtil.canWrite(defaultConfigDir))
-				return defaultConfigDir.getAbsolutePath();
-		}
-		// We can't write in the eclipse install dir so try for some place in the user's home dir
-		return computeDefaultUserAreaLocation(CONFIG_DIR);
-	}
-
-	private static boolean canWrite(URL location) {
-		if (location != null && "file".equals(location.getProtocol())) { //$NON-NLS-1$
-			File locationDir = new File(location.getFile());
-			if (!locationDir.exists())
-				locationDir.mkdirs();
-			if (locationDir.exists() && AdaptorUtil.canWrite(locationDir))
-				return true;
-		}
-		return false;
-	}
-
-	private static String computeDefaultUserAreaLocation(String pathAppendage) {
-		//    we store the state in <user.home>/.eclipse/<application-id>_<version> where <user.home> 
-		//    is unique for each local user, and <application-id> is the one 
-		//    defined in .eclipseproduct marker file. If .eclipseproduct does not
-		//    exist, use "eclipse" as the application-id.
-		String installProperty = FrameworkProperties.getProperty(PROP_INSTALL_AREA);
-		URL installURL = buildURL(installProperty, true);
-		if (installURL == null)
-			return null;
-		File installDir = new File(installURL.getFile());
-		// compute an install dir hash to prevent configuration area collisions with other eclipse installs
-		int hashCode;
-		try {
-			hashCode = installDir.getCanonicalPath().hashCode();
-		} catch (IOException ioe) {
-			// fall back to absolute path
-			hashCode = installDir.getAbsolutePath().hashCode();
-		}
-		if (hashCode < 0)
-			hashCode = -(hashCode);
-		String installDirHash = String.valueOf(hashCode);
-
-		String appName = "." + ECLIPSE; //$NON-NLS-1$
-		File eclipseProduct = new File(installDir, PRODUCT_SITE_MARKER);
-		if (eclipseProduct.exists()) {
-			Properties props = new Properties();
-			try {
-				props.load(new FileInputStream(eclipseProduct));
-				String appId = props.getProperty(PRODUCT_SITE_ID);
-				if (appId == null || appId.trim().length() == 0)
-					appId = ECLIPSE;
-				String appVersion = props.getProperty(PRODUCT_SITE_VERSION);
-				if (appVersion == null || appVersion.trim().length() == 0)
-					appVersion = ""; //$NON-NLS-1$
-				appName += File.separator + appId + "_" + appVersion + "_" + installDirHash; //$NON-NLS-1$ //$NON-NLS-2$
-			} catch (IOException e) {
-				// Do nothing if we get an exception.  We will default to a standard location 
-				// in the user's home dir.
-				// add the hash to help prevent collisions
-				appName += File.separator + installDirHash;
-			}
-		} else {
-			// add the hash to help prevent collisions
-			appName += File.separator + installDirHash;
-		}
-		String userHome = FrameworkProperties.getProperty(PROP_USER_HOME);
-		return new File(userHome, appName + "/" + pathAppendage).getAbsolutePath(); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns the user Location object
-	 * @return the user Location object
-	 */
-	public static Location getUserLocation() {
-		return userLocation;
-	}
-
-	/**
-	 * Returns the configuration Location object
-	 * @return the configuration Location object
-	 */
-	public static Location getConfigurationLocation() {
-		return configurationLocation;
-	}
-
-	/**
-	 * Returns the install Location object
-	 * @return the install Location object
-	 */
-	public static Location getInstallLocation() {
-		return installLocation;
-	}
-
-	/**
-	 * Returns the instance Location object
-	 * @return the instance Location object
-	 */
-	public static Location getInstanceLocation() {
-		return instanceLocation;
-	}
-
-	public static Location getEclipseHomeLocation() {
-		return eclipseHomeLocation;
-	}
-
-	/**
-	 * Returns the File object under the configuration location used for the OSGi configuration
-	 * @return the OSGi configuration directory
-	 */
-	public static File getOSGiConfigurationDir() {
-		// TODO assumes the URL is a file: url
-		return new File(configurationLocation.getURL().getFile(), FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME);
-	}
-
-	/**
-	 * Returns a file from the configuration area that can be used by the framework
-	 * @param filename the filename
-	 * @return a file from the configuration area
-	 */
-	public static File getConfigurationFile(String filename) {
-		File dir = getOSGiConfigurationDir();
-		if (!dir.exists())
-			dir.mkdirs();
-		return new File(dir, filename);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/package.html b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/package.html
deleted file mode 100644
index 65b4819..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/package.html
+++ /dev/null
@@ -1,17 +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 API to start the platform.
-<h2>
-Package Specification</h2>
-This package specifies API to start the platform.
-<p>
-Clients may use the <tt>EclipseStarter</tt> loader class to start the platform.  The
-<tt>EclipseStarter</tt> class is the only defined API in this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/BundleLocalizationImpl.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/BundleLocalizationImpl.java
deleted file mode 100644
index e2eb1d8..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/BundleLocalizationImpl.java
+++ /dev/null
@@ -1,35 +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.internal.adaptor;
-
-import java.util.ResourceBundle;
-import org.eclipse.osgi.service.localization.BundleLocalization;
-import org.osgi.framework.Bundle;
-
-/**
- * The implementation of the service that gets ResourceBundle objects from a given 
- * bundle with a given locale. 
- * 
- * <p>Internal class.</p>
- */
-
-public class BundleLocalizationImpl implements BundleLocalization {
-	/**
-	 * The getLocalization method gets a ResourceBundle object for the given
-	 * locale and bundle.
-	 * 
-	 * @return A <code>ResourceBundle</code> object for the given bundle and locale.
-	 * If null is passed for the locale parameter, the default locale is used.
-	 */
-	public ResourceBundle getLocalization(Bundle bundle, String locale) {
-		return ((org.eclipse.osgi.framework.internal.core.AbstractBundle) (bundle)).getResourceBundle(locale);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/CachedManifest.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/CachedManifest.java
deleted file mode 100644
index 3d4fbd8..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/CachedManifest.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.util.Dictionary;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.framework.util.Headers;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Version;
-
-/**
- * Internal class.
- */
-public class CachedManifest extends Dictionary {
-	static final String SERVICE_COMPONENT = "Service-Component"; //$NON-NLS-1$
-	static boolean DEBUG = false;
-	private Dictionary manifest = null;
-	private EclipseStorageHook storageHook;
-
-	public CachedManifest(EclipseStorageHook storageHook) {
-		this.storageHook = storageHook;
-	}
-
-	public Dictionary getManifest() {
-		if (manifest == null)
-			try {
-				if (DEBUG)
-					System.out.println("Reading manifest for: " + storageHook.getBaseData()); //$NON-NLS-1$
-				manifest = storageHook.createCachedManifest(true);
-			} catch (BundleException e) {
-				final String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CACHEDMANIFEST_UNEXPECTED_EXCEPTION, storageHook.getBaseData().getLocation());
-				FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null);
-				storageHook.getAdaptor().getFrameworkLog().log(entry);
-				return null;
-			}
-		if (manifest == null) {
-			Headers empty = new Headers(0);
-			empty.setReadOnly();
-			manifest = empty;
-			return empty;
-		}
-		return manifest;
-	}
-
-	public int size() {
-		return getManifest().size();
-	}
-
-	public boolean isEmpty() {
-		return size() == 0;
-	}
-
-	public Enumeration elements() {
-		return getManifest().elements();
-	}
-
-	public Enumeration keys() {
-		return getManifest().keys();
-	}
-
-	public Object get(Object key) {
-		if (manifest != null)
-			return manifest.get(key);
-		String keyString = (String) key;
-		if (Constants.BUNDLE_VERSION.equalsIgnoreCase(keyString)) {
-			Version result = storageHook.getBaseData().getVersion();
-			return result == null ? null : result.toString();
-		}
-		if (Constants.PLUGIN_CLASS.equalsIgnoreCase(keyString))
-			return storageHook.getPluginClass();
-		if (Constants.BUNDLE_SYMBOLICNAME.equalsIgnoreCase(keyString)) {
-			if ((storageHook.getBaseData().getType() & BundleData.TYPE_SINGLETON) == 0)
-				return storageHook.getBaseData().getSymbolicName();
-			return storageHook.getBaseData().getSymbolicName() + ';' + Constants.SINGLETON_DIRECTIVE + ":=true"; //$NON-NLS-1$
-		}
-		if (Constants.BUDDY_LOADER.equalsIgnoreCase(keyString))
-			return storageHook.getBuddyList();
-		if (Constants.REGISTERED_POLICY.equalsIgnoreCase(keyString))
-			return storageHook.getRegisteredBuddyList();
-		if (Constants.BUNDLE_ACTIVATOR.equalsIgnoreCase(keyString))
-			return storageHook.getBaseData().getActivator();
-		if (Constants.BUNDLE_ACTIVATIONPOLICY.equals(keyString)) {
-			if (!storageHook.isAutoStartable())
-				return null;
-			String[] excludes = storageHook.getLazyStartExcludes();
-			String[] includes = storageHook.getLazyStartIncludes();
-			if (excludes == null && includes == null)
-				return Constants.ACTIVATION_LAZY;
-			StringBuffer result = new StringBuffer(Constants.ACTIVATION_LAZY);
-			if (excludes != null) {
-				result.append(';').append(Constants.EXCLUDE_DIRECTIVE).append(":=\""); //$NON-NLS-1$
-				for (int i = 0; i < excludes.length; i++) {
-					if (i > 0)
-						result.append(',');
-					result.append(excludes[i]);
-				}
-				result.append("\""); //$NON-NLS-1$
-			}
-			if (includes != null) {
-				result.append(';').append(Constants.INCLUDE_DIRECTIVE).append(":=\""); //$NON-NLS-1$
-				for (int i = 0; i < includes.length; i++) {
-					if (i > 0)
-						result.append(',');
-					result.append(includes[i]);
-				}
-				result.append("\""); //$NON-NLS-1$
-			}
-		}
-		if (Constants.ECLIPSE_LAZYSTART.equals(keyString) || Constants.ECLIPSE_AUTOSTART.equals(keyString)) {
-			if (!storageHook.isAutoStartable())
-				return null;
-			if (storageHook.getLazyStartExcludes() == null)
-				return Boolean.TRUE.toString();
-			StringBuffer result = new StringBuffer(storageHook.isLazyStart() ? Boolean.TRUE.toString() : Boolean.FALSE.toString());
-			result.append(";").append(Constants.ECLIPSE_LAZYSTART_EXCEPTIONS).append("=\""); //$NON-NLS-1$ //$NON-NLS-2$
-			String[] exceptions = storageHook.getLazyStartExcludes();
-			for (int i = 0; i < exceptions.length; i++) {
-				if (i > 0)
-					result.append(","); //$NON-NLS-1$
-				result.append(exceptions[i]);
-			}
-			result.append("\""); //$NON-NLS-1$
-			return result.toString();
-		}
-		if (Constants.BUNDLE_MANIFESTVERSION.equals(keyString))
-			return storageHook.getBundleManifestVersion() == 0 ? null : Integer.toString(storageHook.getBundleManifestVersion());
-		if (SERVICE_COMPONENT.equals(keyString))
-			return storageHook.getServiceComponent();
-		Dictionary result = getManifest();
-		if (DEBUG)
-			System.out.println("Manifest read because of header: " + key); //$NON-NLS-1$
-		return result == null ? null : result.get(key);
-	}
-
-	public Object remove(Object key) {
-		return getManifest().remove(key);
-	}
-
-	public Object put(Object key, Object value) {
-		return getManifest().put(key, value);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ClasspathManifest.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ClasspathManifest.java
deleted file mode 100644
index 80e3c28..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ClasspathManifest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.jar.Manifest;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.util.KeyedElement;
-
-public class ClasspathManifest implements KeyedElement {
-	public static final Object KEY = new Object();
-	public static final int HASHCODE = KEY.hashCode();
-
-	private Manifest manifest;
-	private boolean initialized = false;
-
-	public int getKeyHashCode() {
-		return HASHCODE;
-	}
-
-	public boolean compare(KeyedElement other) {
-		return other.getKey() == KEY;
-	}
-
-	public Object getKey() {
-		return KEY;
-	}
-
-	public synchronized Manifest getManifest(ClasspathEntry cpEntry, ClasspathManager loader) {
-		if (initialized)
-			return manifest;
-		if (!hasPackageInfo(cpEntry, loader)) {
-			initialized = true;
-			manifest = null;
-			return manifest;
-		}
-		BundleEntry mfEntry = cpEntry.getBundleFile().getEntry(org.eclipse.osgi.framework.internal.core.Constants.OSGI_BUNDLE_MANIFEST);
-		if (mfEntry != null) {
-			InputStream manIn = null;
-			try {
-				try {
-					manIn = mfEntry.getInputStream();
-					manifest = new Manifest(manIn);
-				} finally {
-					if (manIn != null)
-						manIn.close();
-				}
-			} catch (IOException e) {
-				// do nothing
-			}
-		}
-		initialized = true;
-		return manifest;
-	}
-
-	private boolean hasPackageInfo(ClasspathEntry cpEntry, ClasspathManager loader) {
-		BaseData bundledata = null;
-		if (cpEntry.getBundleFile() == loader.getBaseData().getBundleFile())
-			bundledata = loader.getBaseData();
-		if (bundledata == null) {
-			FragmentClasspath[] fragCPs = loader.getFragmentClasspaths();
-			if (fragCPs != null)
-				for (int i = 0; i < fragCPs.length; i++)
-					if (cpEntry.getBundleFile() == fragCPs[i].getBundleData().getBundleFile()) {
-						bundledata = fragCPs[i].getBundleData();
-						break;
-					}
-		}
-		if (bundledata == null)
-			return true;
-		EclipseStorageHook storageHook = (EclipseStorageHook) bundledata.getStorageHook(EclipseStorageHook.KEY);
-		return storageHook == null ? true : storageHook.hasPackageInfo();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ContextFinder.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ContextFinder.java
deleted file mode 100644
index ae2a38d..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ContextFinder.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.BundleClassLoader;
-
-public class ContextFinder extends ClassLoader implements PrivilegedAction {
-	static final class Finder extends SecurityManager {
-		public Class[] getClassContext() {
-			return super.getClassContext();
-		}
-	}
-
-	//This is used to detect cycle that could be caused while delegating the loading to other classloaders
-	//It keeps track on a thread basis of the set of requested classes and resources
-	private static ThreadLocal cycleDetector = new ThreadLocal();
-	static ClassLoader finderClassLoader;
-	static Finder contextFinder;
-	static {
-		AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				finderClassLoader = ContextFinder.class.getClassLoader();
-				contextFinder = new Finder();
-				return null;
-			}
-		});
-	}
-
-	private final ClassLoader parentContextClassLoader;
-
-	public ContextFinder(ClassLoader contextClassLoader) {
-		super(contextClassLoader);
-		this.parentContextClassLoader = contextClassLoader != null ? contextClassLoader : new ClassLoader(Object.class.getClassLoader()) {/*boot classloader*/};
-	}
-
-	// Return a list of all classloaders on the stack that are neither the 
-	// ContextFinder classloader nor the boot classloader.  The last classloader
-	// in the list is either a bundle classloader or the framework's classloader
-	// We assume that the bootclassloader never uses the context classloader to find classes in itself.
-	ArrayList basicFindClassLoaders() {
-		Class[] stack = contextFinder.getClassContext();
-		ArrayList result = new ArrayList(1);
-		ClassLoader previousLoader = null;
-		for (int i = 1; i < stack.length; i++) {
-			ClassLoader tmp = stack[i].getClassLoader();
-			if (stack[i] != ContextFinder.class && tmp != null && tmp != this) {
-				if (checkClassLoader(tmp)) {
-					if (previousLoader != tmp) {
-						result.add(tmp);
-						previousLoader = tmp;
-					}
-				}
-				// stop at the framework classloader or the first bundle classloader
-				if (tmp == finderClassLoader || tmp instanceof BundleClassLoader)
-					break;
-			}
-		}
-		return result;
-	}
-
-	// ensures that a classloader does not have the ContextFinder as part of the 
-	// parent hierachy.  A classloader which has the ContextFinder as a parent must
-	// not be used as a delegate, otherwise we endup in endless recursion.
-	private boolean checkClassLoader(ClassLoader classloader) {
-		if (classloader == null || classloader == getParent())
-			return false;
-		for (ClassLoader parent = classloader.getParent(); parent != null; parent = parent.getParent())
-			if (parent == this)
-				return false;
-		return true;
-	}
-
-	private ArrayList findClassLoaders() {
-		if (System.getSecurityManager() == null)
-			return basicFindClassLoaders();
-		return (ArrayList) AccessController.doPrivileged(this);
-	}
-
-	public Object run() {
-		return basicFindClassLoaders();
-	}
-
-	//Return whether the request for loading "name" should proceed.
-	//False is returned when a cycle is being detected 
-	private boolean startLoading(String name) {
-		Set classesAndResources = (Set) cycleDetector.get();
-		if (classesAndResources != null && classesAndResources.contains(name))
-			return false;
-
-		if (classesAndResources == null) {
-			classesAndResources = new HashSet(3);
-			cycleDetector.set(classesAndResources);
-		}
-		classesAndResources.add(name);
-		return true;
-	}
-
-	private void stopLoading(String name) {
-		((Set) cycleDetector.get()).remove(name);
-	}
-
-	protected Class loadClass(String arg0, boolean arg1) throws ClassNotFoundException {
-		//Shortcut cycle
-		if (startLoading(arg0) == false)
-			throw new ClassNotFoundException(arg0);
-
-		try {
-			ArrayList toConsult = findClassLoaders();
-			for (Iterator loaders = toConsult.iterator(); loaders.hasNext();)
-				try {
-					return ((ClassLoader) loaders.next()).loadClass(arg0);
-				} catch (ClassNotFoundException e) {
-					// go to the next class loader
-				}
-			// avoid calling super.loadClass here because it checks the local cache (bug 127963)
-			return parentContextClassLoader.loadClass(arg0);
-		} finally {
-			stopLoading(arg0);
-		}
-	}
-
-	public URL getResource(String arg0) {
-		//Shortcut cycle
-		if (startLoading(arg0) == false)
-			return null;
-		try {
-			ArrayList toConsult = findClassLoaders();
-			for (Iterator loaders = toConsult.iterator(); loaders.hasNext();) {
-				URL result = ((ClassLoader) loaders.next()).getResource(arg0);
-				if (result != null)
-					return result;
-				// go to the next class loader
-			}
-			return super.getResource(arg0);
-		} finally {
-			stopLoading(arg0);
-		}
-	}
-
-	protected Enumeration findResources(String arg0) throws IOException {
-		//Shortcut cycle
-		if (startLoading(arg0) == false)
-			return Collections.enumeration(Collections.EMPTY_LIST);
-		try {
-			ArrayList toConsult = findClassLoaders();
-			for (Iterator loaders = toConsult.iterator(); loaders.hasNext();) {
-				Enumeration result = ((ClassLoader) loaders.next()).getResources(arg0);
-				if (result != null && result.hasMoreElements())
-					return result;
-				// go to the next class loader
-			}
-			return super.findResources(arg0);
-		} finally {
-			stopLoading(arg0);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java
deleted file mode 100644
index 51ecaec..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/DefaultStartupMonitor.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Andrew Niefer - IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.internal.adaptor;
-
-import java.lang.reflect.Method;
-import org.eclipse.core.runtime.adaptor.EclipseStarter;
-import org.eclipse.core.runtime.internal.stats.StatsManager;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.service.runnable.StartupMonitor;
-
-public class DefaultStartupMonitor implements StartupMonitor {
-
-	private Method updateMethod = null;
-	private Runnable splashHandler = null;
-
-	/**
-	 * Create a new startup monitor using the given splash handler.  The splash handle must
-	 * have an updateSplash method.
-	 * 
-	 * @param splashHandler
-	 * @throws IllegalStateException
-	 */
-	public DefaultStartupMonitor(Runnable splashHandler) throws IllegalStateException {
-		this.splashHandler = splashHandler;
-
-		try {
-			updateMethod = splashHandler.getClass().getMethod("updateSplash", null); //$NON-NLS-1$
-		} catch (SecurityException e) {
-			throw (IllegalStateException) new IllegalStateException(e.getMessage()).initCause(e);
-		} catch (NoSuchMethodException e) {
-			//TODO maybe we could do something else in the update method in this case, like print something to the console?
-			throw (IllegalStateException) new IllegalStateException(e.getMessage()).initCause(e);
-		}
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.core.runtime.adaptor.StartupMonitor#update()
-	 */
-	public void update() {
-		if (updateMethod != null) {
-			try {
-				updateMethod.invoke(splashHandler, null);
-			} catch (Throwable e) {
-				// ignore, this is best effort
-			}
-		} else {
-			//TODO maybe we could print something interesting to the console?
-		}
-	}
-
-	public void applicationRunning() {
-		if (EclipseStarter.debug) {
-			String timeString = FrameworkProperties.getProperty("eclipse.startTime"); //$NON-NLS-1$ 
-			long time = timeString == null ? 0L : Long.parseLong(timeString);
-			System.out.println("Application Started: " + (System.currentTimeMillis() - time)); //$NON-NLS-1$
-		}
-		StatsManager.doneBooting();
-		splashHandler.run();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorHook.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorHook.java
deleted file mode 100644
index cb29c6f..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorHook.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.IOException;
-import java.net.URLConnection;
-import java.util.*;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.SAXParserFactory;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.hooks.AdaptorHook;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.framework.internal.core.BundleHost;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorUtil;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.pluginconversion.PluginConverter;
-import org.eclipse.osgi.service.resolver.PlatformAdmin;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
-import org.osgi.framework.*;
-
-public class EclipseAdaptorHook implements AdaptorHook, HookConfigurator {
-	/** The SAX factory name */
-	public static final String SAXFACTORYNAME = "javax.xml.parsers.SAXParserFactory"; //$NON-NLS-1$
-	/** The DOM factory name */
-	public static final String DOMFACTORYNAME = "javax.xml.parsers.DocumentBuilderFactory"; //$NON-NLS-1$
-	private static final String RUNTIME_ADAPTOR = FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME + "/eclipseadaptor"; //$NON-NLS-1$
-	private static final String OPTION_CONVERTER = RUNTIME_ADAPTOR + "/converter/debug"; //$NON-NLS-1$
-	private static final String OPTION_LOCATION = RUNTIME_ADAPTOR + "/debug/location"; //$NON-NLS-1$
-	private static final String OPTION_CACHEDMANIFEST = RUNTIME_ADAPTOR + "/debug/cachedmanifest"; //$NON-NLS-1$
-	static final boolean SET_TCCL_XMLFACTORY = "true".equals(FrameworkProperties.getProperty("eclipse.parsers.setTCCL", "true"));//$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-
-	private BaseAdaptor adaptor;
-	private boolean noXML = false;
-	private ArrayList registrations = new ArrayList(10);
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		registrations.clear();
-		registerEndorsedXMLParser(context);
-		Hashtable locationProperties = new Hashtable(1);
-		Location location = LocationManager.getUserLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_USER_AREA); //$NON-NLS-1$
-			registrations.add(context.registerService(Location.class.getName(), location, locationProperties));
-		}
-		location = LocationManager.getInstanceLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_INSTANCE_AREA); //$NON-NLS-1$
-			registrations.add(context.registerService(Location.class.getName(), location, locationProperties));
-		}
-		location = LocationManager.getConfigurationLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_CONFIG_AREA); //$NON-NLS-1$
-			registrations.add(context.registerService(Location.class.getName(), location, locationProperties));
-		}
-		location = LocationManager.getInstallLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_INSTALL_AREA); //$NON-NLS-1$
-			registrations.add(context.registerService(Location.class.getName(), location, locationProperties));
-		}
-
-		location = LocationManager.getEclipseHomeLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_HOME_LOCATION_AREA); //$NON-NLS-1$
-			registrations.add(context.registerService(Location.class.getName(), location, locationProperties));
-		}
-
-		Dictionary urlProperties = new Hashtable();
-		urlProperties.put("protocol", new String[] {"bundleentry", "bundleresource"}); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		registrations.add(context.registerService(URLConverter.class.getName(), new URLConverterImpl(), urlProperties));
-
-		registrations.add(AdaptorUtil.register(org.eclipse.osgi.service.environment.EnvironmentInfo.class.getName(), EclipseEnvironmentInfo.getDefault(), context));
-		registrations.add(AdaptorUtil.register(PlatformAdmin.class.getName(), adaptor.getPlatformAdmin(), context));
-		PluginConverter converter = PluginConverterImpl.getDefault();
-		if (converter == null)
-			converter = new PluginConverterImpl(adaptor, context);
-		registrations.add(AdaptorUtil.register(PluginConverter.class.getName(), converter, context));
-		registrations.add(AdaptorUtil.register(CommandProvider.class.getName(), new EclipseCommandProvider(context), context));
-		registrations.add(AdaptorUtil.register(org.eclipse.osgi.service.localization.BundleLocalization.class.getName(), new BundleLocalizationImpl(), context));
-	}
-
-	private void registerEndorsedXMLParser(BundleContext bc) {
-		try {
-			Class.forName(SAXFACTORYNAME);
-			registrations.add(bc.registerService(SAXFACTORYNAME, new ParsingService(true), null));
-			Class.forName(DOMFACTORYNAME);
-			registrations.add(bc.registerService(DOMFACTORYNAME, new ParsingService(false), null));
-		} catch (ClassNotFoundException e) {
-			noXML = true;
-			if (Debug.DEBUG && Debug.DEBUG_ENABLED) {
-				String message = EclipseAdaptorMsg.ECLIPSE_ADAPTOR_ERROR_XML_SERVICE;
-				adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null));
-			}
-		}
-	}
-
-	private static class ParsingService implements ServiceFactory {
-		private final boolean isSax;
-
-		public ParsingService(boolean isSax) {
-			this.isSax = isSax;
-		}
-
-		public Object getService(Bundle bundle, ServiceRegistration registration) {
-			BundleHost host = (bundle instanceof BundleHost) ? (BundleHost) bundle : null;
-			if (!SET_TCCL_XMLFACTORY || bundle == null)
-				return createService();
-			/*
-			 * Set the TCCL while creating jaxp factory instances to the
-			 * requesting bundles class loader.  This is needed to 
-			 * work around bug 285505.  There are issues if multiple 
-			 * xerces implementations are available on the bundles class path
-			 * 
-			 * The real issue is that the ContextFinder will only delegate
-			 * to the framework class loader in this case.  This class
-			 * loader forces the requesting bundle to be delegated to for
-			 * TCCL loads.
-			 */
-			final ClassLoader savedClassLoader = Thread.currentThread().getContextClassLoader();
-			try {
-				ClassLoader cl = host.getClassLoader();
-				if (cl != null)
-					Thread.currentThread().setContextClassLoader(cl);
-				return createService();
-			} finally {
-				Thread.currentThread().setContextClassLoader(savedClassLoader);
-			}
-		}
-
-		private Object createService() {
-			if (isSax)
-				return SAXParserFactory.newInstance();
-			return DocumentBuilderFactory.newInstance();
-		}
-
-		public void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
-			// Do nothing.
-		}
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		printStats();
-		if (!noXML)
-			PluginParser.releaseXMLParsing();
-		// unregister services
-		for (Iterator iRegistrations = registrations.iterator(); iRegistrations.hasNext();)
-			((ServiceRegistration) iRegistrations.next()).unregister();
-		registrations.clear();
-	}
-
-	private void printStats() {
-		FrameworkDebugOptions debugOptions = FrameworkDebugOptions.getDefault();
-		if (debugOptions == null)
-			return;
-		String registryParsing = debugOptions.getOption("org.eclipse.core.runtime/registry/parsing/timing/value"); //$NON-NLS-1$
-		if (registryParsing != null)
-			MessageHelper.debug("Time spent in registry parsing: " + registryParsing); //$NON-NLS-1$
-		String packageAdminResolution = debugOptions.getOption("debug.packageadmin/timing/value"); //$NON-NLS-1$
-		if (packageAdminResolution != null)
-			System.out.println("Time spent in package admin resolve: " + packageAdminResolution); //$NON-NLS-1$			
-		String constraintResolution = debugOptions.getOption("org.eclipse.core.runtime.adaptor/resolver/timing/value"); //$NON-NLS-1$
-		if (constraintResolution != null)
-			System.out.println("Time spent resolving the dependency system: " + constraintResolution); //$NON-NLS-1$ 
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		// do nothing
-	}
-
-	public void addProperties(Properties properties) {
-		// do nothing
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		// do nothing
-		return null;
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// do nothing
-	}
-
-	public FrameworkLog createFrameworkLog() {
-		// do nothing
-		return null;
-	}
-
-	public void initialize(BaseAdaptor adaptor) {
-		this.adaptor = adaptor;
-		// EnvironmentInfo has to be initialized first to compute defaults for system context (see bug 88925)
-		EclipseEnvironmentInfo.getDefault();
-		setDebugOptions();
-	}
-
-	private void setDebugOptions() {
-		FrameworkDebugOptions options = FrameworkDebugOptions.getDefault();
-		// may be null if debugging is not enabled
-		if (options == null)
-			return;
-		PluginConverterImpl.DEBUG = options.getBooleanOption(OPTION_CONVERTER, false);
-		BasicLocation.DEBUG = options.getBooleanOption(OPTION_LOCATION, false);
-		CachedManifest.DEBUG = options.getBooleanOption(OPTION_CACHEDMANIFEST, false);
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addAdaptorHook(this);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java
deleted file mode 100644
index fd545a0..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.lang.reflect.Method;
-import java.util.Map;
-import org.eclipse.core.runtime.adaptor.EclipseStarter;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.profile.Profile;
-import org.eclipse.osgi.service.runnable.*;
-import org.osgi.framework.*;
-
-public class EclipseAppLauncher implements ApplicationLauncher {
-	volatile private ParameterizedRunnable runnable = null;
-	private Object appContext = null;
-	private Semaphore runningLock = new Semaphore(1);
-	private Semaphore waitForAppLock = new Semaphore(0);
-	private BundleContext context;
-	private boolean relaunch = false;
-	private boolean failOnNoDefault = false;
-	private FrameworkLog log;
-
-	public EclipseAppLauncher(BundleContext context, boolean relaunch, boolean failOnNoDefault, FrameworkLog log) {
-		this.context = context;
-		this.relaunch = relaunch;
-		this.failOnNoDefault = failOnNoDefault;
-		this.log = log;
-		findRunnableService();
-	}
-
-	/*
-	 * Used for backwards compatibility with < 3.2 runtime
-	 */
-	private void findRunnableService() {
-		// look for a ParameterizedRunnable registered as a service by runtimes (3.0, 3.1)
-		String appClass = ParameterizedRunnable.class.getName();
-		ServiceReference[] runRefs = null;
-		try {
-			runRefs = context.getServiceReferences(ParameterizedRunnable.class.getName(), "(&(objectClass=" + appClass + ")(eclipse.application=*))"); //$NON-NLS-1$//$NON-NLS-2$
-		} catch (InvalidSyntaxException e) {
-			// ignore this.  It should never happen as we have tested the above format.
-		}
-		if (runRefs != null && runRefs.length > 0) {
-			// found the service use it as the application.
-			runnable = (ParameterizedRunnable) context.getService(runRefs[0]);
-			// we will never be able to relaunch with a pre 3.2 runtime
-			relaunch = false;
-			waitForAppLock.release();
-		}
-	}
-
-	/*
-	 * Starts this application launcher on the current thread.  This method
-	 * should be called by the main thread to ensure that applications are 
-	 * launched in the main thread.
-	 */
-	public Object start(Object defaultContext) throws Exception {
-		// here we assume that launch has been called by runtime before we started
-		// TODO this may be a bad assumption but it works for now because we register the app launcher as a service and runtime synchronously calls launch on the service
-		if (failOnNoDefault && runnable == null)
-			throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_NO_APPLICATION);
-		Object result = null;
-		boolean doRelaunch;
-		do {
-			try {
-				result = runApplication(defaultContext);
-			} catch (Exception e) {
-				if (!relaunch || (context.getBundle().getState() & Bundle.ACTIVE) == 0)
-					throw e;
-				if (log != null)
-					log.log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, EclipseAdaptorMsg.ECLIPSE_STARTUP_APP_ERROR, 1, e, null));
-			}
-			doRelaunch = (relaunch && (context.getBundle().getState() & Bundle.ACTIVE) != 0) || FrameworkProperties.getProperty(Constants.PROP_OSGI_RELAUNCH) != null;
-		} while (doRelaunch);
-		return result;
-	}
-
-	/*
-	 * Waits for an application to be launched and the runs the application on the
-	 * current thread (main).
-	 */
-	private Object runApplication(Object defaultContext) throws Exception {
-		// wait for an application to be launched.
-		waitForAppLock.acquire();
-		// an application is ready; acquire the running lock.
-		// this must happen after we have acquired an application (by acquiring waitForAppLock above).
-		runningLock.acquire();
-		if (EclipseStarter.debug) {
-			String timeString = FrameworkProperties.getProperty("eclipse.startTime"); //$NON-NLS-1$ 
-			long time = timeString == null ? 0L : Long.parseLong(timeString);
-			System.out.println("Starting application: " + (System.currentTimeMillis() - time)); //$NON-NLS-1$ 
-		}
-		if (Profile.PROFILE && (Profile.STARTUP || Profile.BENCHMARK))
-			Profile.logTime("EclipseStarter.run(Object)()", "framework initialized! starting application..."); //$NON-NLS-1$ //$NON-NLS-2$
-		try {
-			// run the actual application on the current thread (main).
-			return runnable.run(appContext != null ? appContext : defaultContext);
-		} finally {
-			if (Profile.PROFILE && Profile.STARTUP)
-				Profile.logExit("EclipseStarter.run(Object)()"); //$NON-NLS-1$
-			// free the runnable application and release the lock to allow another app to be launched.
-			runnable = null;
-			appContext = null;
-			runningLock.release();
-		}
-	}
-
-	public void launch(ParameterizedRunnable app, Object appContext) {
-		waitForAppLock.acquire(-1); // clear out any pending apps notifications
-		if (!runningLock.acquire(-1)) // check to see if an application is currently running
-			throw new IllegalStateException("An application is aready running."); //$NON-NLS-1$
-		this.runnable = app;
-		this.appContext = appContext;
-		waitForAppLock.release(); // notify the main thread to launch an application.
-		runningLock.release(); // release the running lock
-	}
-
-	public void shutdown() {
-		// this method will aquire and keep the runningLock to prevent
-		// all future application launches.
-		if (runningLock.acquire(-1))
-			return; // no application is currently running.
-		ParameterizedRunnable currentRunnable = runnable;
-		if (currentRunnable instanceof ApplicationRunnable) {
-			((ApplicationRunnable) currentRunnable).stop();
-			runningLock.acquire(60000); // timeout after 1 minute.
-		}
-	}
-
-	/*
-	 * Similar to the start method this method will restart the default method on current thread.
-	 * This method assumes that the default application was launched at least once and that an ApplicationDescriptor 
-	 * exists that can be used to relaunch the default application.
-	 */
-	public Object reStart(Object argument) throws Exception {
-		ServiceReference ref[] = null;
-		ref = context.getServiceReferences("org.osgi.service.application.ApplicationDescriptor", "(eclipse.application.default=true)"); //$NON-NLS-1$//$NON-NLS-2$
-		if (ref != null && ref.length > 0) {
-			Object defaultApp = context.getService(ref[0]);
-			Method launch = defaultApp.getClass().getMethod("launch", new Class[] {Map.class}); //$NON-NLS-1$
-			launch.invoke(defaultApp, new Object[] {null});
-			return start(argument);
-		}
-		throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_STARTUP_ERROR_NO_APPLICATION);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseClassLoadingHook.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseClassLoadingHook.java
deleted file mode 100644
index 87c862d..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseClassLoadingHook.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.File;
-import java.security.ProtectionDomain;
-import java.util.ArrayList;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingHook;
-import org.eclipse.osgi.baseadaptor.loader.*;
-import org.eclipse.osgi.framework.adaptor.BundleProtectionDomain;
-import org.eclipse.osgi.framework.adaptor.ClassLoaderDelegate;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.internal.baseadaptor.BaseClassLoadingHook;
-import org.eclipse.osgi.internal.baseadaptor.BaseStorageHook;
-
-public class EclipseClassLoadingHook implements ClassLoadingHook, HookConfigurator {
-	private static String[] NL_JAR_VARIANTS = buildNLJarVariants(EclipseEnvironmentInfo.getDefault().getNL());
-	private static boolean DEFINE_PACKAGES;
-	private final static boolean DEFINE_PACKAGE_ATTRIBUTES = !"noattributes".equals(FrameworkProperties.getProperty("osgi.classloader.define.packages")); //$NON-NLS-1$ //$NON-NLS-2$
-	private static String[] LIB_VARIANTS = buildLibraryVariants();
-	private Object pkgLock = new Object();
-
-	static {
-		try {
-			Class.forName("java.lang.Package"); //$NON-NLS-1$
-			DEFINE_PACKAGES = true;
-		} catch (ClassNotFoundException e) {
-			DEFINE_PACKAGES = false;
-		}
-	}
-
-	private static String[] buildLibraryVariants() {
-		ArrayList result = new ArrayList();
-		EclipseEnvironmentInfo info = EclipseEnvironmentInfo.getDefault();
-		result.add("ws/" + info.getWS() + "/"); //$NON-NLS-1$ //$NON-NLS-2$
-		result.add("os/" + info.getOS() + "/" + info.getOSArch() + "/"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		result.add("os/" + info.getOS() + "/"); //$NON-NLS-1$ //$NON-NLS-2$
-		String nl = info.getNL();
-		nl = nl.replace('_', '/');
-		while (nl.length() > 0) {
-			result.add("nl/" + nl + "/"); //$NON-NLS-1$ //$NON-NLS-2$
-			int i = nl.lastIndexOf('/');
-			nl = (i < 0) ? "" : nl.substring(0, i); //$NON-NLS-1$
-		}
-		result.add(""); //$NON-NLS-1$
-		return (String[]) result.toArray(new String[result.size()]);
-	}
-
-	public byte[] processClass(String name, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager) {
-		if (!DEFINE_PACKAGES)
-			return null;
-		// Define the package if it is not the default package.
-		int lastIndex = name.lastIndexOf('.');
-		if (lastIndex < 0)
-			return null;
-		String packageName = name.substring(0, lastIndex);
-		Object pkg;
-		synchronized (pkgLock) {
-			pkg = manager.getBaseClassLoader().publicGetPackage(packageName);
-			if (pkg != null)
-				return null;
-		}
-
-		// get info about the package from the classpath entry's manifest.
-		String specTitle = null, specVersion = null, specVendor = null, implTitle = null, implVersion = null, implVendor = null;
-
-		if (DEFINE_PACKAGE_ATTRIBUTES) {
-			ClasspathManifest cpm = (ClasspathManifest) classpathEntry.getUserObject(ClasspathManifest.KEY);
-			if (cpm == null) {
-				cpm = new ClasspathManifest();
-				classpathEntry.addUserObject(cpm);
-			}
-			Manifest mf = cpm.getManifest(classpathEntry, manager);
-			if (mf != null) {
-				Attributes mainAttributes = mf.getMainAttributes();
-				String dirName = packageName.replace('.', '/') + '/';
-				Attributes packageAttributes = mf.getAttributes(dirName);
-				boolean noEntry = false;
-				if (packageAttributes == null) {
-					noEntry = true;
-					packageAttributes = mainAttributes;
-				}
-				specTitle = packageAttributes.getValue(Attributes.Name.SPECIFICATION_TITLE);
-				if (specTitle == null && !noEntry)
-					specTitle = mainAttributes.getValue(Attributes.Name.SPECIFICATION_TITLE);
-				specVersion = packageAttributes.getValue(Attributes.Name.SPECIFICATION_VERSION);
-				if (specVersion == null && !noEntry)
-					specVersion = mainAttributes.getValue(Attributes.Name.SPECIFICATION_VERSION);
-				specVendor = packageAttributes.getValue(Attributes.Name.SPECIFICATION_VENDOR);
-				if (specVendor == null && !noEntry)
-					specVendor = mainAttributes.getValue(Attributes.Name.SPECIFICATION_VENDOR);
-				implTitle = packageAttributes.getValue(Attributes.Name.IMPLEMENTATION_TITLE);
-				if (implTitle == null && !noEntry)
-					implTitle = mainAttributes.getValue(Attributes.Name.IMPLEMENTATION_TITLE);
-				implVersion = packageAttributes.getValue(Attributes.Name.IMPLEMENTATION_VERSION);
-				if (implVersion == null && !noEntry)
-					implVersion = mainAttributes.getValue(Attributes.Name.IMPLEMENTATION_VERSION);
-				implVendor = packageAttributes.getValue(Attributes.Name.IMPLEMENTATION_VENDOR);
-				if (implVendor == null && !noEntry)
-					implVendor = mainAttributes.getValue(Attributes.Name.IMPLEMENTATION_VENDOR);
-			}
-		}
-
-		// The package is not defined yet define it before we define the class.
-		// TODO still need to seal packages.
-		synchronized (pkgLock) {
-			pkg = manager.getBaseClassLoader().publicGetPackage(packageName);
-			if (pkg != null)
-				return null;
-			manager.getBaseClassLoader().publicDefinePackage(packageName, specTitle, specVersion, specVendor, implTitle, implVersion, implVendor, null);
-		}
-		// not doing any byte processing
-		return null;
-	}
-
-	public boolean addClassPathEntry(ArrayList cpEntries, String cp, ClasspathManager hostmanager, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		String var = hasPrefix(cp);
-		if (var != null)
-			// find internal library using eclipse predefined vars
-			return addInternalClassPath(var, cpEntries, cp, hostmanager, sourcedata, sourcedomain);
-		if (cp.startsWith(BaseStorageHook.EXTERNAL_LIB_PREFIX)) {
-			cp = cp.substring(BaseStorageHook.EXTERNAL_LIB_PREFIX.length());
-			// find external library using system property substitution
-			ClasspathEntry cpEntry = hostmanager.getExternalClassPath(BaseStorageHook.substituteVars(cp), sourcedata, sourcedomain);
-			if (cpEntry != null) {
-				cpEntries.add(cpEntry);
-				return true;
-			}
-		}
-		return false;
-	}
-
-	private boolean addInternalClassPath(String var, ArrayList cpEntries, String cp, ClasspathManager hostloader, BaseData sourcedata, ProtectionDomain sourcedomain) {
-		if (var.equals("ws")) //$NON-NLS-1$
-			return ClasspathManager.addClassPathEntry(cpEntries, "ws/" + EclipseEnvironmentInfo.getDefault().getWS() + cp.substring(4), hostloader, sourcedata, sourcedomain); //$NON-NLS-1$
-		if (var.equals("os")) //$NON-NLS-1$
-			return ClasspathManager.addClassPathEntry(cpEntries, "os/" + EclipseEnvironmentInfo.getDefault().getOS() + cp.substring(4), hostloader, sourcedata, sourcedomain); //$NON-NLS-1$ 
-		if (var.equals("nl")) { //$NON-NLS-1$
-			cp = cp.substring(4);
-			for (int i = 0; i < NL_JAR_VARIANTS.length; i++)
-				if (ClasspathManager.addClassPathEntry(cpEntries, "nl/" + NL_JAR_VARIANTS[i] + cp, hostloader, sourcedata, sourcedomain)) //$NON-NLS-1$ 
-					return true;
-		}
-		return false;
-	}
-
-	//return a String representing the string found between the $s
-	private static String hasPrefix(String libPath) {
-		if (libPath.startsWith("$ws$")) //$NON-NLS-1$
-			return "ws"; //$NON-NLS-1$
-		if (libPath.startsWith("$os$")) //$NON-NLS-1$
-			return "os"; //$NON-NLS-1$
-		if (libPath.startsWith("$nl$")) //$NON-NLS-1$
-			return "nl"; //$NON-NLS-1$
-		return null;
-	}
-
-	private static String[] buildNLJarVariants(String nl) {
-		ArrayList result = new ArrayList();
-		nl = nl.replace('_', '/');
-		while (nl.length() > 0) {
-			result.add("nl/" + nl + "/"); //$NON-NLS-1$ //$NON-NLS-2$
-			int i = nl.lastIndexOf('/');
-			nl = (i < 0) ? "" : nl.substring(0, i); //$NON-NLS-1$
-		}
-		result.add(""); //$NON-NLS-1$
-		return (String[]) result.toArray(new String[result.size()]);
-	}
-
-	public void recordClassDefine(String name, Class clazz, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager) {
-		// do nothing
-	}
-
-	public String findLibrary(BaseData data, String libName) {
-		if (libName.length() == 0)
-			return null;
-		if (libName.charAt(0) == '/' || libName.charAt(0) == '\\')
-			libName = libName.substring(1);
-		String mappedLibName = System.mapLibraryName(libName);
-		String result = searchVariants(data, mappedLibName);
-		if (result != null)
-			return result;
-		String[] mappedLibNames = BaseClassLoadingHook.mapLibraryNames(mappedLibName);
-		for (int i = 0; i < mappedLibNames.length && result == null; i++)
-			result = searchVariants(data, mappedLibNames[i]);
-		return result;
-	}
-
-	private String searchVariants(BaseData bundledata, String path) {
-		for (int i = 0; i < LIB_VARIANTS.length; i++) {
-			BundleFile baseBundleFile = bundledata.getBundleFile();
-			BundleEntry libEntry = baseBundleFile.getEntry(LIB_VARIANTS[i] + path);
-			if (libEntry != null) {
-				File libFile = baseBundleFile.getFile(LIB_VARIANTS[i] + path, true);
-				if (libFile == null)
-					return null;
-				// see bug 88697 - HP requires libraries to have executable permissions
-				if (org.eclipse.osgi.service.environment.Constants.OS_HPUX.equals(EclipseEnvironmentInfo.getDefault().getOS())) {
-					try {
-						// use the string array method in case there is a space in the path
-						Runtime.getRuntime().exec(new String[] {"chmod", "755", libFile.getAbsolutePath()}).waitFor(); //$NON-NLS-1$ //$NON-NLS-2$
-					} catch (Exception e) {
-						e.printStackTrace();
-					}
-				}
-				return libFile.getAbsolutePath();
-			}
-		}
-		return null;
-	}
-
-	public ClassLoader getBundleClassLoaderParent() {
-		return null; // do nothing
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addClassLoadingHook(this);
-	}
-
-	public BaseClassLoader createClassLoader(ClassLoader parent, ClassLoaderDelegate delegate, BundleProtectionDomain domain, BaseData data, String[] bundleclasspath) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public void initializedClassLoader(BaseClassLoader baseClassLoader, BaseData data) {
-		// TODO Auto-generated method stub
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseCommandProvider.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseCommandProvider.java
deleted file mode 100644
index 747af00..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseCommandProvider.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.ServiceReference;
-
-/**
- * Internal class.
- */
-public class EclipseCommandProvider implements CommandProvider {
-
-	private static final String POLICY_CONSOLE = "org.eclipse.osgi.framework.console"; //$NON-NLS-1$
-	private PlatformAdmin platformAdmin;
-	private BundleContext context;
-
-	public EclipseCommandProvider(BundleContext context) {
-		this.context = context;
-	}
-
-	public String getHelp() {
-		StringBuffer help = new StringBuffer(512);
-		help.append("---"); //$NON-NLS-1$
-		help.append(EclipseAdaptorMsg.ECLIPSE_CONSOLE_COMMANDS_HEADER);
-		help.append("---"); //$NON-NLS-1$
-		help.append(EclipseAdaptorMsg.NEW_LINE);
-		help.append("\tdiag - " + EclipseAdaptorMsg.ECLIPSE_CONSOLE_HELP_DIAG_COMMAND_DESCRIPTION);//$NON-NLS-1$
-		help.append(EclipseAdaptorMsg.NEW_LINE);
-		help.append("\tenableBundle - " + EclipseAdaptorMsg.ECLIPSE_CONSOLE_HELP_ENABLE_COMMAND_DESCRIPTION);//$NON-NLS-1$
-		help.append(EclipseAdaptorMsg.NEW_LINE);
-		help.append("\tdisableBundle - " + EclipseAdaptorMsg.ECLIPSE_CONSOLE_HELP_DISABLE_COMMAND_DESCRIPTION);//$NON-NLS-1$
-		help.append(EclipseAdaptorMsg.NEW_LINE);
-		help.append("\tdisabledBundles - " + EclipseAdaptorMsg.ECLIPSE_CONSOLE_HELP_LD_COMMAND_DESCRIPTION);//$NON-NLS-1$
-		help.append(EclipseAdaptorMsg.NEW_LINE);
-		return help.toString();
-	}
-
-	private BundleDescription getBundleDescriptionFromToken(State state, String token) {
-		try {
-			long id = Long.parseLong(token);
-			return state.getBundle(id);
-		} catch (NumberFormatException nfe) {
-			BundleDescription[] allBundles = state.getBundles(token);
-			if (allBundles.length > 0)
-				return allBundles[0];
-		}
-		return null;
-	}
-
-	private PlatformAdmin getPlatformAdmin(CommandInterpreter ci) {
-		if (platformAdmin == null) {
-			ServiceReference platformAdminRef = context.getServiceReference(PlatformAdmin.class.getName());
-			if (platformAdminRef == null) {
-				ci.print("  "); //$NON-NLS-1$
-				ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_NO_CONSTRAINTS_NO_PLATFORM_ADMIN_MESSAGE);
-				return null;
-			}
-			platformAdmin = (PlatformAdmin) context.getService(platformAdminRef);
-		}
-		return platformAdmin;
-	}
-
-	private void ungetPlatformAdmin() {
-		ServiceReference platformAdminRef = context.getServiceReference(PlatformAdmin.class.getName());
-		context.ungetService(platformAdminRef);
-	}
-
-	public void _diag(CommandInterpreter ci) throws Exception {
-		String nextArg = ci.nextArgument();
-		if (nextArg == null) {
-			ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-			return;
-		}
-		try {
-			State systemState = getPlatformAdmin(ci).getState(false);
-			while (nextArg != null) {
-				BundleDescription bundle = getBundleDescriptionFromToken(systemState, nextArg);
-				if (bundle == null) {
-					ci.println(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONSOLE_CANNOT_FIND_BUNDLE_ERROR, nextArg));
-					nextArg = ci.nextArgument();
-					continue;
-				}
-				ci.println(bundle.getLocation() + " [" + bundle.getBundleId() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-				VersionConstraint[] unsatisfied = platformAdmin.getStateHelper().getUnsatisfiedConstraints(bundle);
-				ResolverError[] resolverErrors = platformAdmin.getState(false).getResolverErrors(bundle);
-				for (int i = 0; i < resolverErrors.length; i++) {
-					if ((resolverErrors[i].getType() & (ResolverError.MISSING_FRAGMENT_HOST | ResolverError.MISSING_GENERIC_CAPABILITY | ResolverError.MISSING_IMPORT_PACKAGE | ResolverError.MISSING_REQUIRE_BUNDLE)) != 0)
-						continue;
-					ci.print("  "); //$NON-NLS-1$
-					ci.println(resolverErrors[i].toString());
-				}
-
-				if (unsatisfied.length == 0 && resolverErrors.length == 0) {
-					ci.print("  "); //$NON-NLS-1$
-					ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_NO_CONSTRAINTS);
-				}
-				if (unsatisfied.length > 0) {
-					ci.print("  "); //$NON-NLS-1$
-					ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_DIRECT_CONSTRAINTS);
-				}
-				for (int i = 0; i < unsatisfied.length; i++) {
-					ci.print("    "); //$NON-NLS-1$
-					ci.println(MessageHelper.getResolutionFailureMessage(unsatisfied[i]));
-				}
-				VersionConstraint[] unsatisfiedLeaves = platformAdmin.getStateHelper().getUnsatisfiedLeaves(new BundleDescription[] {bundle});
-				boolean foundLeaf = false;
-				for (int i = 0; i < unsatisfiedLeaves.length; i++) {
-					if (unsatisfiedLeaves[i].getBundle() == bundle)
-						continue;
-					if (!foundLeaf) {
-						foundLeaf = true;
-						ci.print("  "); //$NON-NLS-1$
-						ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_LEAF_CONSTRAINTS);
-					}
-					ci.print("    "); //$NON-NLS-1$
-					ci.println(unsatisfiedLeaves[i].getBundle().getLocation() + " [" + unsatisfiedLeaves[i].getBundle().getBundleId() + "]"); //$NON-NLS-1$ //$NON-NLS-2$
-					ci.print("      "); //$NON-NLS-1$
-					ci.println(MessageHelper.getResolutionFailureMessage(unsatisfiedLeaves[i]));
-				}
-				nextArg = ci.nextArgument();
-			}
-		} finally {
-			ungetPlatformAdmin();
-		}
-	}
-
-	public void _enableBundle(CommandInterpreter ci) throws Exception {
-		String nextArg = ci.nextArgument();
-		if (nextArg == null) {
-			ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-			return;
-		}
-		try {
-			State systemState = getPlatformAdmin(ci).getState(false);
-			while (nextArg != null) {
-				BundleDescription bundleDesc = getBundleDescriptionFromToken(systemState, nextArg);
-				if (bundleDesc == null) {
-					ci.println(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONSOLE_CANNOT_FIND_BUNDLE_ERROR, nextArg));
-					nextArg = ci.nextArgument();
-					continue;
-				}
-				DisabledInfo[] infos = systemState.getDisabledInfos(bundleDesc);
-				for (int i = 0; i < infos.length; i++) {
-					getPlatformAdmin(ci).removeDisabledInfo(infos[i]);
-				}
-				nextArg = ci.nextArgument();
-			}
-		} finally {
-			ungetPlatformAdmin();
-		}
-	}
-
-	public void _disableBundle(CommandInterpreter ci) throws Exception {
-		String nextArg = ci.nextArgument();
-		if (nextArg == null) {
-			ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-			return;
-		}
-		try {
-			State systemState = getPlatformAdmin(ci).getState(false);
-			while (nextArg != null) {
-				BundleDescription bundleDesc = getBundleDescriptionFromToken(systemState, nextArg);
-				if (bundleDesc == null) {
-					ci.println(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONSOLE_CANNOT_FIND_BUNDLE_ERROR, nextArg));
-					nextArg = ci.nextArgument();
-					continue;
-				}
-				DisabledInfo info = new DisabledInfo(POLICY_CONSOLE, EclipseAdaptorMsg.ECLIPSE_CONSOLE_BUNDLE_DISABLED_MESSAGE, bundleDesc);
-				getPlatformAdmin(ci).addDisabledInfo(info);
-				nextArg = ci.nextArgument();
-			}
-		} finally {
-			ungetPlatformAdmin();
-		}
-	}
-
-	public void _disabledBundles(CommandInterpreter ci) throws Exception {
-
-		try {
-			State systemState = getPlatformAdmin(ci).getState(false);
-			BundleDescription[] disabledBundles = systemState.getDisabledBundles();
-
-			ci.println(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONSOLE_DISABLED_COUNT_MESSAGE, String.valueOf(disabledBundles.length)));
-
-			if (disabledBundles.length > 0) {
-				ci.println();
-			}
-			for (int i = 0; i < disabledBundles.length; i++) {
-				DisabledInfo[] disabledInfos = systemState.getDisabledInfos(disabledBundles[i]);
-
-				ci.println(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONSOLE_DISABLED_BUNDLE_HEADER, formatBundleName(disabledBundles[i]), String.valueOf(disabledBundles[i].getBundleId())));
-				ci.print(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONSOLE_DISABLED_BUNDLE_REASON1, disabledInfos[0].getMessage(), disabledInfos[0].getPolicyName()));
-
-				for (int j = 1; j < disabledInfos.length; j++) {
-					ci.print(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONSOLE_DISABLED_BUNDLE_REASON1, disabledInfos[j].getMessage(), String.valueOf(disabledInfos[j].getPolicyName())));
-				}
-
-				ci.println();
-			}
-		} finally {
-			ungetPlatformAdmin();
-		}
-	}
-
-	private String formatBundleName(BundleDescription b) {
-		String label = b.getSymbolicName();
-		if (label == null || label.length() == 0)
-			label = b.toString();
-		else
-			label = label + "_" + b.getVersion(); //$NON-NLS-1$
-
-		return label;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java
deleted file mode 100644
index 90a5371..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.service.environment.Constants;
-import org.eclipse.osgi.service.environment.EnvironmentInfo;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Internal class.
- */
-public class EclipseEnvironmentInfo implements EnvironmentInfo {
-	private static EclipseEnvironmentInfo singleton;
-	private static String nl;
-	private static String os;
-	private static String ws;
-	private static String arch;
-	private volatile static String[] allArgs;
-	private volatile static String[] frameworkArgs;
-	private volatile static String[] appArgs;
-
-	// While we recognize the SunOS operating system, we change
-	// this internally to be Solaris.
-	private static final String INTERNAL_OS_SUNOS = "SunOS"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_LINUX = "Linux"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_MACOSX = "Mac OS"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_AIX = "AIX"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_HPUX = "HP-UX"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_QNX = "QNX"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_OS400 = "OS/400"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_OS390 = "OS/390"; //$NON-NLS-1$
-	private static final String INTERNAL_OS_ZOS = "z/OS"; //$NON-NLS-1$
-
-	// While we recognize the i386 architecture, we change
-	// this internally to be x86.
-	private static final String INTERNAL_ARCH_I386 = "i386"; //$NON-NLS-1$
-	// While we recognize the amd64 architecture, we change
-	// this internally to be x86_64.
-	private static final String INTERNAL_AMD64 = "amd64"; //$NON-NLS-1$
-
-	private EclipseEnvironmentInfo() {
-		super();
-		setupSystemContext();
-	}
-
-	public static EclipseEnvironmentInfo getDefault() {
-		if (singleton == null)
-			singleton = new EclipseEnvironmentInfo();
-		return singleton;
-	}
-
-	public boolean inDevelopmentMode() {
-		return FrameworkProperties.getProperty("osgi.dev") != null; //$NON-NLS-1$
-	}
-
-	public boolean inDebugMode() {
-		return FrameworkProperties.getProperty("osgi.debug") != null; //$NON-NLS-1$
-	}
-
-	public String[] getCommandLineArgs() {
-		return allArgs;
-	}
-
-	public String[] getFrameworkArgs() {
-		return frameworkArgs;
-	}
-
-	public String[] getNonFrameworkArgs() {
-		return appArgs;
-	}
-
-	public String getOSArch() {
-		return arch;
-	}
-
-	public String getNL() {
-		return nl;
-	}
-
-	public String getOS() {
-		return os;
-	}
-
-	public String getWS() {
-		return ws;
-	}
-
-	/**
-	 * Initializes the execution context for this run of the platform.  The context
-	 * includes information about the locale, operating system and window system.
-	 * 
-	 * NOTE: The OS, WS, and ARCH values should never be null. The executable should
-	 * be setting these values and therefore this code path is obsolete for Eclipse
-	 * when run from the executable.
-	 */
-	private static void setupSystemContext() {
-		// if the user didn't set the locale with a command line argument then use the default.
-		nl = FrameworkProperties.getProperty("osgi.nl"); //$NON-NLS-1$
-		if (nl != null) {
-			StringTokenizer tokenizer = new StringTokenizer(nl, "_"); //$NON-NLS-1$
-			int segments = tokenizer.countTokens();
-			try {
-				Locale userLocale = null;
-				switch (segments) {
-					case 1 :
-						// use the 2 arg constructor to maintain compatibility with 1.3.1
-						userLocale = new Locale(tokenizer.nextToken(), ""); //$NON-NLS-1$
-						break;
-					case 2 :
-						userLocale = new Locale(tokenizer.nextToken(), tokenizer.nextToken());
-						break;
-					case 3 :
-						userLocale = new Locale(tokenizer.nextToken(), tokenizer.nextToken(), tokenizer.nextToken());
-						break;
-					default :
-						// if the user passed us in a bogus value then log a message and use the default
-						System.err.println(NLS.bind(EclipseAdaptorMsg.error_badNL, nl));
-						userLocale = Locale.getDefault();
-						break;
-				}
-				Locale.setDefault(userLocale);
-				// TODO what the heck is this for?? why not just use osgi.nl
-				FrameworkProperties.setProperty("osgi.nl.user", nl); //$NON-NLS-1$
-			} catch (NoSuchElementException e) {
-				// fall through and use the default
-			}
-		}
-		nl = Locale.getDefault().toString();
-		FrameworkProperties.setProperty("osgi.nl", nl); //$NON-NLS-1$
-
-		// if the user didn't set the operating system with a command line 
-		// argument then use the default.
-		os = FrameworkProperties.getProperty("osgi.os"); //$NON-NLS-1$
-		if (os == null) {
-			os = guessOS(FrameworkProperties.getProperty("os.name"));//$NON-NLS-1$);
-			FrameworkProperties.setProperty("osgi.os", os); //$NON-NLS-1$
-		}
-
-		// if the user didn't set the window system with a command line 
-		// argument then use the default.
-		ws = FrameworkProperties.getProperty("osgi.ws"); //$NON-NLS-1$
-		if (ws == null) {
-			ws = guessWS(os);
-			FrameworkProperties.setProperty("osgi.ws", ws); //$NON-NLS-1$
-		}
-
-		// if the user didn't set the system architecture with a command line 
-		// argument then use the default.
-		arch = FrameworkProperties.getProperty("osgi.arch"); //$NON-NLS-1$
-		if (arch == null) {
-			String name = FrameworkProperties.getProperty("os.arch");//$NON-NLS-1$
-			// Map i386 architecture to x86
-			if (name.equalsIgnoreCase(INTERNAL_ARCH_I386))
-				arch = Constants.ARCH_X86;
-			// Map amd64 architecture to x86_64
-			else if (name.equalsIgnoreCase(INTERNAL_AMD64))
-				arch = Constants.ARCH_X86_64;
-			else
-				arch = name;
-			FrameworkProperties.setProperty("osgi.arch", arch); //$NON-NLS-1$			
-		}
-	}
-
-	public static void setAllArgs(String[] allArgs) {
-		// do not check if this is set already to allow arguments to change when multiple applications are launched
-		EclipseEnvironmentInfo.allArgs = allArgs;
-	}
-
-	public static void setAppArgs(String[] appArgs) {
-		// do not check if this is set already to allow arguments to change when multiple applications are launched
-		EclipseEnvironmentInfo.appArgs = appArgs;
-	}
-
-	public static void setFrameworkArgs(String[] frameworkArgs) {
-		// do not check if this is set already to allow arguments to change when multiple applications are launched
-		EclipseEnvironmentInfo.frameworkArgs = frameworkArgs;
-	}
-
-	public static String guessWS(String os) {
-		// setup default values for known OSes if nothing was specified
-		if (os.equals(Constants.OS_WIN32))
-			return Constants.WS_WIN32;
-		if (os.equals(Constants.OS_LINUX))
-			return Constants.WS_GTK;
-		if (os.equals(Constants.OS_MACOSX))
-			return Constants.WS_COCOA;
-		if (os.equals(Constants.OS_HPUX))
-			return Constants.WS_MOTIF;
-		if (os.equals(Constants.OS_AIX))
-			return Constants.WS_MOTIF;
-		if (os.equals(Constants.OS_SOLARIS))
-			return Constants.WS_GTK;
-		if (os.equals(Constants.OS_QNX))
-			return Constants.WS_PHOTON;
-		return Constants.WS_UNKNOWN;
-	}
-
-	public static String guessOS(String osName) {
-		// check to see if the OS name is "Windows 98" or some other
-		// flavour which should be converted to win32.
-		if (osName.regionMatches(true, 0, Constants.OS_WIN32, 0, 3))
-			return Constants.OS_WIN32;
-		// EXCEPTION: All mappings of SunOS convert to Solaris
-		if (osName.equalsIgnoreCase(INTERNAL_OS_SUNOS))
-			return Constants.OS_SOLARIS;
-		if (osName.equalsIgnoreCase(INTERNAL_OS_LINUX))
-			return Constants.OS_LINUX;
-		if (osName.equalsIgnoreCase(INTERNAL_OS_QNX))
-			return Constants.OS_QNX;
-		if (osName.equalsIgnoreCase(INTERNAL_OS_AIX))
-			return Constants.OS_AIX;
-		if (osName.equalsIgnoreCase(INTERNAL_OS_HPUX))
-			return Constants.OS_HPUX;
-		if (osName.equalsIgnoreCase(INTERNAL_OS_OS400))
-			return Constants.OS_OS400;
-		if (osName.equalsIgnoreCase(INTERNAL_OS_OS390))
-			return Constants.OS_OS390;
-		if (osName.equalsIgnoreCase(INTERNAL_OS_ZOS))
-			return Constants.OS_ZOS;
-		// os.name on Mac OS can be either Mac OS or Mac OS X
-		if (osName.regionMatches(true, 0, INTERNAL_OS_MACOSX, 0, INTERNAL_OS_MACOSX.length()))
-			return Constants.OS_MACOSX;
-		return Constants.OS_UNKNOWN;
-	}
-
-	public String getProperty(String key) {
-		return FrameworkProperties.getProperty(key);
-	}
-
-	public String setProperty(String key, String value) {
-		return FrameworkProperties.setProperty(key, value);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseErrorHandler.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseErrorHandler.java
deleted file mode 100644
index c25c5f5..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseErrorHandler.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.IOException;
-import java.net.URLConnection;
-import java.util.Properties;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.hooks.AdaptorHook;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-public class EclipseErrorHandler implements AdaptorHook, HookConfigurator {
-	// System property used to prevent VM exit when unexpected errors occur
-	private static final String PROP_EXITONERROR = "eclipse.exitOnError"; //$NON-NLS-1$
-	private BaseAdaptor adaptor;
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		// do nothing
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		// do nothing
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		// do nothing
-	}
-
-	public void addProperties(Properties properties) {
-		// do nothing
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		// do nothing
-		return null;
-	}
-
-	private boolean isFatalException(Throwable error) {
-		if (error instanceof VirtualMachineError) {
-			return true;
-		}
-		if (error instanceof ThreadDeath) {
-			return true;
-		}
-		return false;
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// this is the important method to handle errors
-		boolean exitOnError = false;
-		try {
-			// check the prop each time this happens (should NEVER happen!)
-			exitOnError = Boolean.valueOf(FrameworkProperties.getProperty(EclipseErrorHandler.PROP_EXITONERROR, "true")).booleanValue(); //$NON-NLS-1$
-			String message = EclipseAdaptorMsg.ECLIPSE_ADAPTOR_RUNTIME_ERROR;
-			if (exitOnError && isFatalException(error))
-				message += ' ' + EclipseAdaptorMsg.ECLIPSE_ADAPTOR_EXITING;
-			FrameworkLogEntry logEntry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, error, null);
-			adaptor.getFrameworkLog().log(logEntry);
-		} catch (Throwable t) {
-			// we may be in a currupted state and must be able to handle any
-			// errors (ie OutOfMemoryError)
-			// that may occur when handling the first error; this is REALLY the
-			// last resort.
-			try {
-				error.printStackTrace();
-				t.printStackTrace();
-			} catch (Throwable t1) {
-				// if we fail that then we are beyond help.
-			}
-		} finally {
-			// do the exit outside the try block just incase another runtime
-			// error was thrown while logging
-			if (exitOnError && isFatalException(error))
-				System.exit(13);
-		}
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addAdaptorHook(this);
-	}
-
-	public FrameworkLog createFrameworkLog() {
-		// do nothing
-		return null;
-	}
-
-	public void initialize(BaseAdaptor adaptor) {
-		this.adaptor = adaptor;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLazyStarter.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLazyStarter.java
deleted file mode 100644
index d9a4df6..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLazyStarter.java
+++ /dev/null
@@ -1,271 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.hooks.AdaptorHook;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingStatsHook;
-import org.eclipse.osgi.baseadaptor.loader.ClasspathEntry;
-import org.eclipse.osgi.baseadaptor.loader.ClasspathManager;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.adaptor.StatusException;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.StateHelper;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class EclipseLazyStarter implements ClassLoadingStatsHook, AdaptorHook, HookConfigurator {
-	private static final boolean throwErrorOnFailedStart = "true".equals(FrameworkProperties.getProperty("osgi.compatibility.errorOnFailedStart", "true")); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-	private BaseAdaptor adaptor;
-	// holds the current activation trigger class and the ClasspathManagers that need to be activated
-	private ThreadLocal activationStack = new ThreadLocal();
-	// used to store exceptions that occurred while activating a bundle
-	// keyed by ClasspathManager->Exception
-	// WeakHashMap is used to prevent pinning the ClasspathManager objects.
-	private final Map errors = Collections.synchronizedMap(new WeakHashMap());
-
-	public void preFindLocalClass(String name, ClasspathManager manager) throws ClassNotFoundException {
-		AbstractBundle bundle = (AbstractBundle) manager.getBaseData().getBundle();
-		// If the bundle is active, uninstalled or stopping then the bundle has already
-		// been initialized (though it may have been destroyed) so just return the class.
-		if ((bundle.getState() & (Bundle.ACTIVE | Bundle.UNINSTALLED | Bundle.STOPPING)) != 0)
-			return;
-		EclipseStorageHook storageHook = (EclipseStorageHook) manager.getBaseData().getStorageHook(EclipseStorageHook.KEY);
-		// The bundle is not active and does not require activation, just return the class
-		if (!shouldActivateFor(name, manager.getBaseData(), storageHook, manager))
-			return;
-		ArrayList stack = (ArrayList) activationStack.get();
-		if (stack == null) {
-			stack = new ArrayList(6);
-			activationStack.set(stack);
-		}
-		// the first element in the stack is the name of the trigger class, 
-		// each element after the trigger class is a classpath manager 
-		// that must be activated after the trigger class has been defined (see postFindLocalClass)
-		int size = stack.size();
-		if (size > 1) {
-			for (int i = size - 1; i >= 1; i--)
-				if (manager == stack.get(i))
-					// the manager is already on the stack in which case we are already in the process of loading the trigger class
-					return;
-		}
-		Thread threadChangingState = bundle.getStateChanging();
-		if (bundle.getState() == Bundle.STARTING && threadChangingState == Thread.currentThread())
-			return; // this thread is starting the bundle already
-		if (size == 0)
-			stack.add(name);
-		stack.add(manager);
-	}
-
-	public void postFindLocalClass(String name, Class clazz, ClasspathManager manager) throws ClassNotFoundException {
-		ArrayList stack = (ArrayList) activationStack.get();
-		if (stack == null)
-			return;
-		int size = stack.size();
-		if (size <= 1 || stack.get(0) != name)
-			return;
-		// if we have a stack we must clear it even if (clazz == null)
-		ClasspathManager[] managers = null;
-		managers = new ClasspathManager[size - 1];
-		for (int i = 1; i < size; i++)
-			managers[i - 1] = (ClasspathManager) stack.get(i);
-		stack.clear();
-		if (clazz == null)
-			return;
-		for (int i = managers.length - 1; i >= 0; i--) {
-			if (errors.get(managers[i]) != null) {
-				if (throwErrorOnFailedStart)
-					throw (TerminatingClassNotFoundException) errors.get(managers[i]);
-				continue;
-			}
-
-			// The bundle must be started.
-			// Note that another thread may already be starting this bundle;
-			// In this case we will timeout after 5 seconds and record the BundleException
-			try {
-				// do not persist the start of this bundle
-				managers[i].getBaseClassLoader().getDelegate().setLazyTrigger();
-			} catch (BundleException e) {
-				Bundle bundle = managers[i].getBaseData().getBundle();
-				Throwable cause = e.getCause();
-				if (cause != null && cause instanceof StatusException) {
-					StatusException status = (StatusException) cause;
-					if ((status.getStatusCode() & StatusException.CODE_ERROR) == 0) {
-						if (status.getStatus() instanceof Thread) {
-							String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CLASSLOADER_CONCURRENT_STARTUP, new Object[] {Thread.currentThread(), name, status.getStatus(), bundle, new Integer(5000)});
-							adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, message, 0, e, null));
-						}
-						continue;
-					}
-				}
-				String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CLASSLOADER_ACTIVATION, bundle.getSymbolicName(), Long.toString(bundle.getBundleId()));
-				TerminatingClassNotFoundException error = new TerminatingClassNotFoundException(message, e);
-				errors.put(managers[i], error);
-				if (throwErrorOnFailedStart) {
-					adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null));
-					throw error;
-				}
-				adaptor.getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, bundle, new BundleException(message, e));
-			}
-		}
-	}
-
-	public void preFindLocalResource(String name, ClasspathManager manager) {
-		// do nothing
-	}
-
-	public void postFindLocalResource(String name, URL resource, ClasspathManager manager) {
-		// do nothing
-	}
-
-	public void recordClassDefine(String name, Class clazz, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager) {
-		// do nothing
-	}
-
-	private boolean shouldActivateFor(String className, BaseData bundledata, EclipseStorageHook storageHook, ClasspathManager manager) throws ClassNotFoundException {
-		if (!isLazyStartable(className, bundledata, storageHook))
-			return false;
-		//if (manager.getBaseClassLoader().getDelegate().isLazyTriggerSet())
-		//	return false;
-		// Don't activate non-starting bundles
-		if (bundledata.getBundle().getState() == Bundle.RESOLVED) {
-			if (throwErrorOnFailedStart) {
-				TerminatingClassNotFoundException error = (TerminatingClassNotFoundException) errors.get(manager);
-				if (error != null)
-					throw error;
-			}
-			return (bundledata.getStatus() & Constants.BUNDLE_STARTED) != 0;
-		}
-		return true;
-	}
-
-	private boolean isLazyStartable(String className, BaseData bundledata, EclipseStorageHook storageHook) {
-		if (storageHook == null)
-			return false;
-		boolean lazyStart = storageHook.isLazyStart();
-		String[] excludes = storageHook.getLazyStartExcludes();
-		String[] includes = storageHook.getLazyStartIncludes();
-		// no exceptions, it is easy to figure it out
-		if (excludes == null && includes == null)
-			return lazyStart;
-		// otherwise, we need to check if the package is in the exceptions list
-		int dotPosition = className.lastIndexOf('.');
-		// the class has no package name... no exceptions apply
-		if (dotPosition == -1)
-			return lazyStart;
-		String packageName = className.substring(0, dotPosition);
-		if (lazyStart)
-			return ((includes == null || contains(includes, packageName)) && (excludes == null || !contains(excludes, packageName)));
-		return (excludes != null && contains(excludes, packageName));
-	}
-
-	private boolean contains(String[] array, String element) {
-		for (int i = 0; i < array.length; i++)
-			if (array[i].equals(element))
-				return true;
-		return false;
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addClassLoadingStatsHook(this);
-		hookRegistry.addAdaptorHook(this);
-	}
-
-	public void addProperties(Properties properties) {
-		// do nothing
-	}
-
-	public FrameworkLog createFrameworkLog() {
-		// do nothing
-		return null;
-	}
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		// nothing
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		// nothing
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		if (!Debug.DEBUG || !Debug.DEBUG_ENABLED)
-			return;
-
-		BundleDescription[] allBundles = adaptor.getState().getResolvedBundles();
-		StateHelper stateHelper = adaptor.getPlatformAdmin().getStateHelper();
-		Object[][] cycles = stateHelper.sortBundles(allBundles);
-		logCycles(cycles);
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// do nothing
-
-	}
-
-	public void initialize(BaseAdaptor baseAdaptor) {
-		this.adaptor = baseAdaptor;
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		// do nothing
-		return null;
-	}
-
-	private void logCycles(Object[][] cycles) {
-		// log cycles
-		if (cycles.length > 0) {
-			StringBuffer cycleText = new StringBuffer("["); //$NON-NLS-1$			
-			for (int i = 0; i < cycles.length; i++) {
-				cycleText.append('[');
-				for (int j = 0; j < cycles[i].length; j++) {
-					cycleText.append(((BundleDescription) cycles[i][j]).getSymbolicName());
-					cycleText.append(',');
-				}
-				cycleText.insert(cycleText.length() - 1, ']');
-			}
-			cycleText.setCharAt(cycleText.length() - 1, ']');
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_BUNDLESTOPPER_CYCLES_FOUND, cycleText);
-			FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.WARNING, 0, message, 0, null, null);
-			adaptor.getFrameworkLog().log(entry);
-		}
-	}
-
-	private static class TerminatingClassNotFoundException extends ClassNotFoundException implements StatusException {
-		private static final long serialVersionUID = -6730732895632169173L;
-		private Object cause;
-
-		public TerminatingClassNotFoundException(String message, Throwable cause) {
-			super(message, cause);
-			this.cause = cause;
-		}
-
-		public Object getStatus() {
-			return cause;
-		}
-
-		public int getStatusCode() {
-			return StatusException.CODE_ERROR;
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLogHook.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLogHook.java
deleted file mode 100644
index fbe4dc7..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLogHook.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.*;
-import java.net.URLConnection;
-import java.util.*;
-import org.eclipse.core.runtime.adaptor.*;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.hooks.AdaptorHook;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorUtil;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-public class EclipseLogHook implements HookConfigurator, AdaptorHook {
-	// The eclipse log file extension */
-	private static final String LOG_EXT = ".log"; //$NON-NLS-1$
-	BaseAdaptor adaptor;
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addAdaptorHook(this);
-	}
-
-	public void initialize(BaseAdaptor adaptor) {
-		this.adaptor = adaptor;
-	}
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		AdaptorUtil.register(FrameworkLog.class.getName(), adaptor.getFrameworkLog(), context);
-		registerPerformanceLog(context);
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		// TODO should unregister service registered a frameworkStart
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		// do nothing
-
-	}
-
-	public void addProperties(Properties properties) {
-		// do nothing
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		// do nothing
-		return null;
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// TODO Auto-generated method stub
-
-	}
-
-	public FrameworkLog createFrameworkLog() {
-		FrameworkLog frameworkLog;
-		String logFileProp = FrameworkProperties.getProperty(EclipseStarter.PROP_LOGFILE);
-		if (logFileProp != null) {
-			frameworkLog = new EclipseLog(new File(logFileProp));
-		} else {
-			Location location = LocationManager.getConfigurationLocation();
-			File configAreaDirectory = null;
-			if (location != null)
-				// TODO assumes the URL is a file: url
-				configAreaDirectory = new File(location.getURL().getFile());
-
-			if (configAreaDirectory != null) {
-				String logFileName = Long.toString(System.currentTimeMillis()) + EclipseLogHook.LOG_EXT;
-				File logFile = new File(configAreaDirectory, logFileName);
-				FrameworkProperties.setProperty(EclipseStarter.PROP_LOGFILE, logFile.getAbsolutePath());
-				frameworkLog = new EclipseLog(logFile);
-			} else
-				frameworkLog = new EclipseLog();
-		}
-		if ("true".equals(FrameworkProperties.getProperty(EclipseStarter.PROP_CONSOLE_LOG))) //$NON-NLS-1$
-			frameworkLog.setConsoleLog(true);
-		return frameworkLog;
-	}
-
-	private void registerPerformanceLog(BundleContext context) {
-		Object service = createPerformanceLog();
-		String serviceName = FrameworkLog.class.getName();
-		Hashtable serviceProperties = new Hashtable(7);
-		Dictionary headers = context.getBundle().getHeaders();
-
-		serviceProperties.put(Constants.SERVICE_VENDOR, headers.get(Constants.BUNDLE_VENDOR));
-		serviceProperties.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-		serviceProperties.put(Constants.SERVICE_PID, context.getBundle().getBundleId() + '.' + service.getClass().getName());
-		serviceProperties.put(FrameworkLog.SERVICE_PERFORMANCE, Boolean.TRUE.toString());
-
-		context.registerService(serviceName, service, serviceProperties);
-	}
-
-	private FrameworkLog createPerformanceLog() {
-		String logFileProp = FrameworkProperties.getProperty(EclipseStarter.PROP_LOGFILE);
-		if (logFileProp != null) {
-			int lastSlash = logFileProp.lastIndexOf(File.separatorChar);
-			if (lastSlash > 0) {
-				String logFile = logFileProp.substring(0, lastSlash + 1) + "performance.log"; //$NON-NLS-1$
-				return new EclipseLog(new File(logFile));
-			}
-		}
-		//if all else fails, write to std err
-		return new EclipseLog(new PrintWriter(System.err));
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseStorageHook.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseStorageHook.java
deleted file mode 100644
index 9a7de53..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseStorageHook.java
+++ /dev/null
@@ -1,517 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.*;
-import java.net.URL;
-import java.security.*;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.framework.util.Headers;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorUtil;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.service.pluginconversion.PluginConversionException;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Version;
-
-public final class EclipseStorageHook implements StorageHook, HookConfigurator {
-	// System property used to check timestamps of the bundles in the configuration
-	private static final String PROP_CHECK_CONFIG = "osgi.checkConfiguration"; //$NON-NLS-1$
-	private static final String PROP_COMPATIBILITY_LAZYSTART = "osgi.compatibility.eagerStart.LazyActivation"; //$NON-NLS-1$
-	private static final boolean COMPATIBILITY_LAZYSTART = Boolean.valueOf(FrameworkProperties.getProperty(PROP_COMPATIBILITY_LAZYSTART, "true")).booleanValue(); //$NON-NLS-1$
-	private static final int STORAGE_VERION = 4;
-
-	public static final String KEY = EclipseStorageHook.class.getName();
-	public static final int HASHCODE = KEY.hashCode();
-
-	private static final byte FLAG_LAZY_START = 0x01;
-	private static final byte FLAG_HAS_PACKAGE_INFO = 0x02;
-	// Note that the 0x04 was used in previous versions, if a new flag is needed then do not reuse this one
-	//private static final byte FLAG_ACTIVATE_ON_CLASSLOAD = 0x04;
-	// Flag to indicate that an include directive is present on the lazy activation policy
-	private static final byte FLAG_HAS_LAZY_INCLUDE = 0x08;
-
-	/** data to detect modification made in the manifest */
-	private long manifestTimeStamp = 0;
-	private byte manifestType = PluginConverterImpl.MANIFEST_TYPE_UNKNOWN;
-
-	private BaseData bundledata;
-
-	/** the Plugin-Class header */
-	private String pluginClass = null;
-	/**  Eclipse-LazyStart header */
-	private String[] lazyStartExcludes;
-	private String[] lazyStartIncludes;
-	private int bundleManfestVersion;
-	/** shortcut to know if a bundle has a buddy */
-	private String buddyList;
-	/** shortcut to know if a bundle is a registrant to a registered policy */
-	private String registeredBuddyList;
-	/** DS Service Component header */
-	private String serviceComponent;
-	private byte flags = 0;
-
-	public int getStorageVersion() {
-		return STORAGE_VERION;
-	}
-
-	public StorageHook create(BaseData bundledata) throws BundleException {
-		EclipseStorageHook storageHook = new EclipseStorageHook();
-		storageHook.bundledata = bundledata;
-		return storageHook;
-	}
-
-	public void initialize(Dictionary manifest) throws BundleException {
-		String activationPolicy = (String) manifest.get(Constants.BUNDLE_ACTIVATIONPOLICY);
-		if (activationPolicy != null) {
-			parseActivationPolicy(this, activationPolicy);
-		} else {
-			String lazyStart = (String) manifest.get(Constants.ECLIPSE_LAZYSTART);
-			if (lazyStart == null)
-				lazyStart = (String) manifest.get(Constants.ECLIPSE_AUTOSTART);
-			parseLazyStart(this, lazyStart);
-		}
-		try {
-			String versionString = (String) manifest.get(Constants.BUNDLE_MANIFESTVERSION);
-			bundleManfestVersion = versionString == null ? 0 : Integer.parseInt(versionString);
-		} catch (NumberFormatException nfe) {
-			bundleManfestVersion = 0;
-		}
-		pluginClass = (String) manifest.get(Constants.PLUGIN_CLASS);
-		buddyList = (String) manifest.get(Constants.BUDDY_LOADER);
-		registeredBuddyList = (String) manifest.get(Constants.REGISTERED_POLICY);
-		if (hasPackageInfo(bundledata.getEntry(Constants.OSGI_BUNDLE_MANIFEST)))
-			flags |= FLAG_HAS_PACKAGE_INFO;
-		String genFrom = (String) manifest.get(PluginConverterImpl.GENERATED_FROM);
-		if (genFrom != null) {
-			ManifestElement generatedFrom = ManifestElement.parseHeader(PluginConverterImpl.GENERATED_FROM, genFrom)[0];
-			if (generatedFrom != null) {
-				manifestTimeStamp = Long.parseLong(generatedFrom.getValue());
-				manifestType = Byte.parseByte(generatedFrom.getAttribute(PluginConverterImpl.MANIFEST_TYPE_ATTRIBUTE));
-			}
-		}
-		if (isAutoStartable()) {
-			bundledata.setStatus(bundledata.getStatus() | Constants.BUNDLE_LAZY_START);
-			if (COMPATIBILITY_LAZYSTART)
-				bundledata.setStatus(bundledata.getStatus() | Constants.BUNDLE_STARTED | Constants.BUNDLE_ACTIVATION_POLICY);
-		}
-		serviceComponent = (String) manifest.get(CachedManifest.SERVICE_COMPONENT);
-	}
-
-	public StorageHook load(BaseData target, DataInputStream in) throws IOException {
-		EclipseStorageHook storageHook = new EclipseStorageHook();
-		storageHook.bundledata = target;
-		storageHook.flags = in.readByte();
-		int pkgCount = in.readInt();
-		String[] packageList = pkgCount > 0 ? new String[pkgCount] : null;
-		for (int i = 0; i < pkgCount; i++)
-			packageList[i] = in.readUTF();
-		storageHook.lazyStartExcludes = packageList;
-		if ((storageHook.flags & FLAG_HAS_LAZY_INCLUDE) != 0) {
-			pkgCount = in.readInt();
-			packageList = pkgCount > 0 ? new String[pkgCount] : null;
-			for (int i = 0; i < pkgCount; i++)
-				packageList[i] = in.readUTF();
-			storageHook.lazyStartIncludes = packageList;
-		}
-		storageHook.buddyList = AdaptorUtil.readString(in, false);
-		storageHook.registeredBuddyList = AdaptorUtil.readString(in, false);
-		storageHook.pluginClass = AdaptorUtil.readString(in, false);
-		storageHook.manifestTimeStamp = in.readLong();
-		storageHook.manifestType = in.readByte();
-		storageHook.bundleManfestVersion = in.readInt();
-		if (storageHook.isAutoStartable()) {
-			if ((target.getStatus() & Constants.BUNDLE_LAZY_START) == 0)
-				target.setStatus(target.getStatus() | Constants.BUNDLE_LAZY_START);
-			// if the compatibility flag is set then we must make sure the persistent start bit is set and the activation policy bit;
-			// if the persistent start bit was already set then we should not set the activation policy bit because this is an "eager" started bundle.
-			if (COMPATIBILITY_LAZYSTART && (target.getStatus() & Constants.BUNDLE_STARTED) == 0)
-				target.setStatus(target.getStatus() | Constants.BUNDLE_STARTED | Constants.BUNDLE_ACTIVATION_POLICY);
-		}
-		storageHook.serviceComponent = AdaptorUtil.readString(in, false);
-		return storageHook;
-	}
-
-	public void save(DataOutputStream out) throws IOException {
-		if (bundledata == null)
-			throw new IllegalStateException();
-		// when this is stored back we always use the has include/exclude flag
-		out.writeByte(flags);
-		String[] excludes = getLazyStartExcludes();
-		if (excludes == null)
-			out.writeInt(0);
-		else {
-			out.writeInt(excludes.length);
-			for (int i = 0; i < excludes.length; i++)
-				out.writeUTF(excludes[i]);
-		}
-		if ((flags & FLAG_HAS_LAZY_INCLUDE) != 0) {
-			String[] includes = getLazyStartIncludes();
-			if (includes == null)
-				out.writeInt(0);
-			else {
-				out.writeInt(includes.length);
-				for (int i = 0; i < includes.length; i++)
-					out.writeUTF(includes[i]);
-			}
-		}
-		AdaptorUtil.writeStringOrNull(out, getBuddyList());
-		AdaptorUtil.writeStringOrNull(out, getRegisteredBuddyList());
-		AdaptorUtil.writeStringOrNull(out, getPluginClass());
-		out.writeLong(getManifestTimeStamp());
-		out.writeByte(getManifestType());
-		out.writeInt(getBundleManifestVersion());
-		AdaptorUtil.writeStringOrNull(out, serviceComponent);
-	}
-
-	public int getKeyHashCode() {
-		return HASHCODE;
-	}
-
-	public boolean compare(KeyedElement other) {
-		return other.getKey() == KEY;
-	}
-
-	public Object getKey() {
-		return KEY;
-	}
-
-	public boolean isLazyStart() {
-		return (flags & FLAG_LAZY_START) == FLAG_LAZY_START;
-	}
-
-	public String[] getLazyStartExcludes() {
-		return lazyStartExcludes;
-	}
-
-	public String[] getLazyStartIncludes() {
-		return lazyStartIncludes;
-	}
-
-	public String getBuddyList() {
-		return buddyList;
-	}
-
-	public boolean hasPackageInfo() {
-		return (flags & FLAG_HAS_PACKAGE_INFO) == FLAG_HAS_PACKAGE_INFO;
-	}
-
-	public String getPluginClass() {
-		return pluginClass;
-	}
-
-	public String getRegisteredBuddyList() {
-		return registeredBuddyList;
-	}
-
-	public long getManifestTimeStamp() {
-		return manifestTimeStamp;
-	}
-
-	public byte getManifestType() {
-		return manifestType;
-	}
-
-	public int getBundleManifestVersion() {
-		return bundleManfestVersion;
-	}
-
-	public String getServiceComponent() {
-		return serviceComponent;
-	}
-
-	/**
-	 * Checks whether this bundle is auto started for all resource/class loads or only for a
-	 * subset of resource/classloads 
-	 * @return true if the bundle is auto started; false otherwise
-	 */
-	public boolean isAutoStartable() {
-		return isLazyStart() || (lazyStartExcludes != null && lazyStartExcludes.length > 0);
-	}
-
-	private void parseLazyStart(EclipseStorageHook storageHook, String headerValue) {
-		storageHook.lazyStartExcludes = null;
-		ManifestElement[] allElements = null;
-		try {
-			allElements = ManifestElement.parseHeader(Constants.ECLIPSE_LAZYSTART, headerValue);
-		} catch (BundleException e) {
-			// just use the default settings (no auto activation)
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CLASSLOADER_CANNOT_GET_HEADERS, storageHook.bundledata.getLocation());
-			bundledata.getAdaptor().getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null));
-		}
-		//Eclipse-AutoStart not found... 
-		if (allElements == null)
-			return;
-		// the single value for this element should be true|false
-		if ("true".equalsIgnoreCase(allElements[0].getValue())) //$NON-NLS-1$
-			storageHook.flags |= FLAG_LAZY_START;
-		// look for any exceptions (the attribute) to the autoActivate setting
-		String[] exceptions = ManifestElement.getArrayFromList(allElements[0].getAttribute(Constants.ECLIPSE_LAZYSTART_EXCEPTIONS));
-		storageHook.lazyStartExcludes = exceptions;
-	}
-
-	private void parseActivationPolicy(EclipseStorageHook storageHook, String headerValue) {
-		storageHook.lazyStartExcludes = null;
-		ManifestElement[] allElements = null;
-		try {
-			allElements = ManifestElement.parseHeader(Constants.BUNDLE_ACTIVATIONPOLICY, headerValue);
-		} catch (BundleException e) {
-			// just use the default settings (no auto activation)
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CLASSLOADER_CANNOT_GET_HEADERS, storageHook.bundledata.getLocation());
-			bundledata.getAdaptor().getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null));
-		}
-		//Bundle-ActivationPolicy not found. 
-		if (allElements == null)
-			return;
-		// the single value for this type is lazy
-		if (!Constants.ACTIVATION_LAZY.equalsIgnoreCase(allElements[0].getValue()))
-			return;
-		storageHook.flags |= FLAG_LAZY_START;
-		// look for any include or exclude attrs
-		storageHook.lazyStartExcludes = ManifestElement.getArrayFromList(allElements[0].getDirective(Constants.EXCLUDE_DIRECTIVE));
-		storageHook.lazyStartIncludes = ManifestElement.getArrayFromList(allElements[0].getDirective(Constants.INCLUDE_DIRECTIVE));
-		if (storageHook.lazyStartIncludes != null)
-			storageHook.flags |= FLAG_HAS_LAZY_INCLUDE;
-	}
-
-	// Used to check the bundle manifest file for any package information.
-	// This is used when '.' is on the Bundle-ClassPath to prevent reading
-	// the bundle manifest for pacakge information when loading classes.
-	private static boolean hasPackageInfo(URL url) {
-		if (url == null)
-			return false;
-		BufferedReader br = null;
-		try {
-			br = new BufferedReader(new InputStreamReader(url.openStream()));
-			String line;
-			while ((line = br.readLine()) != null) {
-				if (line.length() < 20)
-					continue;
-				switch (line.charAt(0)) {
-					case 'S' :
-						if (line.charAt(1) == 'p')
-							if (line.startsWith("Specification-Title: ") || line.startsWith("Specification-Version: ") || line.startsWith("Specification-Vendor: ")) //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$
-								return true;
-						break;
-					case 'I' :
-						if (line.startsWith("Implementation-Title: ") || line.startsWith("Implementation-Version: ") || line.startsWith("Implementation-Vendor: ")) //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$ 
-							return true;
-						break;
-				}
-			}
-		} catch (IOException ioe) {
-			// do nothing
-		} finally {
-			if (br != null)
-				try {
-					br.close();
-				} catch (IOException e) {
-					// do nothing
-				}
-		}
-		return false;
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addStorageHook(this);
-	}
-
-	private void checkTimeStamp() throws IllegalArgumentException {
-		if (!checkManifestTimeStamp())
-			throw new IllegalArgumentException();
-	}
-
-	private boolean checkManifestTimeStamp() {
-		if (!"true".equalsIgnoreCase(FrameworkProperties.getProperty(EclipseStorageHook.PROP_CHECK_CONFIG))) //$NON-NLS-1$
-			return true;
-		if (PluginConverterImpl.getTimeStamp(bundledata.getBundleFile().getBaseFile(), getManifestType()) == getManifestTimeStamp()) {
-			if ((getManifestType() & (PluginConverterImpl.MANIFEST_TYPE_JAR | PluginConverterImpl.MANIFEST_TYPE_BUNDLE)) != 0)
-				return true;
-			String cacheLocation = FrameworkProperties.getProperty(LocationManager.PROP_MANIFEST_CACHE);
-			Location parentConfiguration = LocationManager.getConfigurationLocation().getParentLocation();
-			if (parentConfiguration != null) {
-				try {
-					return checkManifestAndParent(cacheLocation, bundledata.getSymbolicName(), bundledata.getVersion().toString(), getManifestType()) != null;
-				} catch (BundleException e) {
-					return false;
-				}
-			}
-			File cacheFile = new File(cacheLocation, bundledata.getSymbolicName() + '_' + bundledata.getVersion() + ".MF"); //$NON-NLS-1$
-			if (cacheFile.isFile())
-				return true;
-		}
-		return false;
-	}
-
-	private Headers checkManifestAndParent(String cacheLocation, String symbolicName, String version, byte inputType) throws BundleException {
-		Headers result = basicCheckManifest(cacheLocation, symbolicName, version, inputType);
-		if (result != null)
-			return result;
-		Location parentConfiguration = null;
-		if ((parentConfiguration = LocationManager.getConfigurationLocation().getParentLocation()) != null)
-			result = basicCheckManifest(new File(parentConfiguration.getURL().getFile(), FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME + '/' + LocationManager.MANIFESTS_DIR).toString(), symbolicName, version, inputType);
-		return result;
-	}
-
-	private Headers basicCheckManifest(String cacheLocation, String symbolicName, String version, byte inputType) throws BundleException {
-		File currentFile = new File(cacheLocation, symbolicName + '_' + version + ".MF"); //$NON-NLS-1$
-		if (PluginConverterImpl.upToDate(currentFile, bundledata.getBundleFile().getBaseFile(), inputType)) {
-			try {
-				return Headers.parseManifest(new FileInputStream(currentFile));
-			} catch (FileNotFoundException e) {
-				// do nothing.
-			}
-		}
-		return null;
-	}
-
-	Dictionary createCachedManifest(boolean firstTime) throws BundleException {
-		return firstTime ? getGeneratedManifest() : new CachedManifest(this);
-	}
-
-	public Dictionary getGeneratedManifest() throws BundleException {
-		if (System.getSecurityManager() == null)
-			return getGeneratedManifest0();
-		try {
-			return (Dictionary) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws BundleException {
-					return getGeneratedManifest0();
-				}
-			});
-		} catch (PrivilegedActionException e) {
-			throw (BundleException) e.getException();
-		}
-	}
-
-	final Dictionary getGeneratedManifest0() throws BundleException {
-		Dictionary builtIn = AdaptorUtil.loadManifestFrom(bundledata);
-		if (builtIn != null) {
-			// the bundle has a built-in manifest - we may not have to generate one
-			if (!isComplete(builtIn)) {
-				Dictionary generatedManifest = generateManifest(builtIn);
-				if (generatedManifest != null)
-					return generatedManifest;
-			}
-			// the manifest is complete or we could not complete it - take it as it is
-			manifestType = PluginConverterImpl.MANIFEST_TYPE_BUNDLE;
-			if (bundledata.getBundleFile().getBaseFile().isFile()) {
-				manifestTimeStamp = bundledata.getBundleFile().getBaseFile().lastModified();
-				manifestType |= PluginConverterImpl.MANIFEST_TYPE_JAR;
-			} else
-				manifestTimeStamp = bundledata.getBundleFile().getEntry(Constants.OSGI_BUNDLE_MANIFEST).getTime();
-			return builtIn;
-		}
-		Dictionary result = generateManifest(null);
-		if (result == null)
-			throw new BundleException(NLS.bind(EclipseAdaptorMsg.ECLIPSE_DATA_MANIFEST_NOT_FOUND, bundledata.getLocation()));
-		return result;
-	}
-
-	private Dictionary generateManifest(Dictionary builtIn) throws BundleException {
-		String cacheLocation = FrameworkProperties.getProperty(LocationManager.PROP_MANIFEST_CACHE);
-		if (bundledata.getSymbolicName() != null) {
-			Headers existingHeaders = checkManifestAndParent(cacheLocation, bundledata.getSymbolicName(), bundledata.getVersion().toString(), manifestType);
-			if (existingHeaders != null)
-				return existingHeaders;
-		}
-
-		PluginConverterImpl converter = PluginConverterImpl.getDefault();
-		if (converter == null)
-			converter = new PluginConverterImpl(bundledata.getAdaptor(), bundledata.getAdaptor().getContext());
-
-		Dictionary generatedManifest;
-		try {
-			generatedManifest = converter.convertManifest(bundledata.getBundleFile().getBaseFile(), true, null, true, null);
-		} catch (PluginConversionException pce) {
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_ERROR_CONVERTING, bundledata.getBundleFile().getBaseFile());
-			throw new BundleException(message, BundleException.MANIFEST_ERROR, pce);
-		}
-
-		//Now we know the symbolicId and the version of the bundle, we check to see if don't have a manifest for it already
-		Version version = Version.parseVersion((String) generatedManifest.get(Constants.BUNDLE_VERSION));
-		String symbolicName = ManifestElement.parseHeader(org.osgi.framework.Constants.BUNDLE_SYMBOLICNAME, (String) generatedManifest.get(org.osgi.framework.Constants.BUNDLE_SYMBOLICNAME))[0].getValue();
-		ManifestElement generatedFrom = ManifestElement.parseHeader(PluginConverterImpl.GENERATED_FROM, (String) generatedManifest.get(PluginConverterImpl.GENERATED_FROM))[0];
-		Headers existingHeaders = checkManifestAndParent(cacheLocation, symbolicName, version.toString(), Byte.parseByte(generatedFrom.getAttribute(PluginConverterImpl.MANIFEST_TYPE_ATTRIBUTE)));
-		//We don't have a manifest.
-		manifestTimeStamp = Long.parseLong(generatedFrom.getValue());
-		manifestType = Byte.parseByte(generatedFrom.getAttribute(PluginConverterImpl.MANIFEST_TYPE_ATTRIBUTE));
-		if (bundledata.getAdaptor().isReadOnly() || existingHeaders != null)
-			return existingHeaders;
-
-		//merge the original manifest with the generated one
-		if (builtIn != null) {
-			Enumeration keysEnum = builtIn.keys();
-			while (keysEnum.hasMoreElements()) {
-				Object key = keysEnum.nextElement();
-				generatedManifest.put(key, builtIn.get(key));
-			}
-		}
-
-		//write the generated manifest
-		File bundleManifestLocation = new File(cacheLocation, symbolicName + '_' + version.toString() + ".MF"); //$NON-NLS-1$
-		try {
-			converter.writeManifest(bundleManifestLocation, generatedManifest, true);
-		} catch (Exception e) {
-			//TODO Need to log
-		}
-		return generatedManifest;
-
-	}
-
-	private boolean isComplete(Dictionary manifest) {
-		// a manifest is complete if it has a Bundle-SymbolicName entry...
-		if (manifest.get(org.osgi.framework.Constants.BUNDLE_SYMBOLICNAME) != null)
-			return true;
-		// ...or it does not have a plugin/fragment manifest where to get the other entries from  
-		return bundledata.getEntry(PluginConverterImpl.PLUGIN_MANIFEST) == null && bundledata.getEntry(PluginConverterImpl.FRAGMENT_MANIFEST) == null;
-	}
-
-	public BaseData getBaseData() {
-		return bundledata;
-	}
-
-	public void copy(StorageHook storageHook) {
-		// copy nothing all must be re-read from a manifest
-	}
-
-	public void validate() throws IllegalArgumentException {
-		checkTimeStamp();
-	}
-
-	public FrameworkAdaptor getAdaptor() {
-		if (bundledata != null)
-			return bundledata.getAdaptor();
-		return null;
-	}
-
-	public Dictionary getManifest(boolean firstLoad) throws BundleException {
-		return createCachedManifest(firstLoad);
-	}
-
-	public boolean forgetStatusChange(int status) {
-		return false;
-	}
-
-	public boolean forgetStartLevelChange(int startlevel) {
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IModel.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IModel.java
deleted file mode 100644
index 1a870c8..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IModel.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.runtime.internal.adaptor;
-
-/**
- * Internal class.
- */
-public interface IModel {
-	public static final int INDENT = 2;
-	public static final int RADIX = 36;
-
-	public static final String TRUE = "true"; //$NON-NLS-1$
-	public static final String FALSE = "false"; //$NON-NLS-1$
-
-	public static final String REGISTRY = "plugin-registry"; //$NON-NLS-1$
-	public static final String REGISTRY_PATH = "path"; //$NON-NLS-1$
-
-	public static final String FRAGMENT = "fragment"; //$NON-NLS-1$
-	public static final String FRAGMENT_ID = "id"; //$NON-NLS-1$
-	public static final String FRAGMENT_NAME = "name"; //$NON-NLS-1$
-	public static final String FRAGMENT_PROVIDER = "provider-name"; //$NON-NLS-1$
-	public static final String FRAGMENT_VERSION = "version"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_ID = "plugin-id"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_VERSION = "plugin-version"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH = "match"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_PERFECT = "perfect"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_EQUIVALENT = "equivalent"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_COMPATIBLE = "compatible"; //$NON-NLS-1$
-	public static final String FRAGMENT_PLUGIN_MATCH_GREATER_OR_EQUAL = "greaterOrEqual"; //$NON-NLS-1$
-
-	public static final String PLUGIN = "plugin"; //$NON-NLS-1$
-	public static final String PLUGIN_ID = "id"; //$NON-NLS-1$
-	public static final String PLUGIN_NAME = "name"; //$NON-NLS-1$
-	public static final String PLUGIN_VENDOR = "vendor-name"; //$NON-NLS-1$
-	public static final String PLUGIN_PROVIDER = "provider-name"; //$NON-NLS-1$
-	public static final String PLUGIN_VERSION = "version"; //$NON-NLS-1$
-	public static final String PLUGIN_CLASS = "class"; //$NON-NLS-1$
-
-	public static final String PLUGIN_REQUIRES = "requires"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_PLATFORM = "platform-version"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_PLUGIN = "plugin"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_PLUGIN_VERSION = "version"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_OPTIONAL = "optional"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_IMPORT = "import"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_EXPORT = "export"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH = "match"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_EXACT = "exact"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_PERFECT = "perfect"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_EQUIVALENT = "equivalent"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_COMPATIBLE = "compatible"; //$NON-NLS-1$
-	public static final String PLUGIN_REQUIRES_MATCH_GREATER_OR_EQUAL = "greaterOrEqual"; //$NON-NLS-1$
-
-	public static final String PLUGIN_KEY_VERSION_SEPARATOR = "_"; //$NON-NLS-1$
-
-	public static final String RUNTIME = "runtime"; //$NON-NLS-1$
-
-	public static final String LIBRARY = "library"; //$NON-NLS-1$
-	public static final String LIBRARY_NAME = "name"; //$NON-NLS-1$
-	public static final String LIBRARY_SOURCE = "source"; //$NON-NLS-1$
-	public static final String LIBRARY_TYPE = "type"; //$NON-NLS-1$
-	public static final String LIBRARY_EXPORT = "export"; //$NON-NLS-1$
-	public static final String LIBRARY_EXPORT_MASK = "name"; //$NON-NLS-1$
-	public static final String LIBRARY_PACKAGES = "packages"; //$NON-NLS-1$
-	public static final String LIBRARY_PACKAGES_PREFIXES = "prefixes"; //$NON-NLS-1$
-
-	public static final String EXTENSION_POINT = "extension-point"; //$NON-NLS-1$
-	public static final String EXTENSION_POINT_NAME = "name"; //$NON-NLS-1$
-	public static final String EXTENSION_POINT_ID = "id"; //$NON-NLS-1$
-	public static final String EXTENSION_POINT_SCHEMA = "schema"; //$NON-NLS-1$
-
-	public static final String EXTENSION = "extension"; //$NON-NLS-1$
-	public static final String EXTENSION_NAME = "name"; //$NON-NLS-1$
-	public static final String EXTENSION_ID = "id"; //$NON-NLS-1$
-	public static final String EXTENSION_TARGET = "point"; //$NON-NLS-1$
-
-	public static final String ELEMENT = "element"; //$NON-NLS-1$
-	public static final String ELEMENT_NAME = "name"; //$NON-NLS-1$
-	public static final String ELEMENT_VALUE = "value"; //$NON-NLS-1$
-
-	public static final String PROPERTY = "property"; //$NON-NLS-1$
-	public static final String PROPERTY_NAME = "name"; //$NON-NLS-1$
-	public static final String PROPERTY_VALUE = "value"; //$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IPluginInfo.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IPluginInfo.java
deleted file mode 100644
index 0c37d82..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/IPluginInfo.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.util.*;
-
-/**
- * Interface used as an entry to the IPluginConverter    
- * 
- * <p>Internal class.</p>
- */
-public interface IPluginInfo {
-	public Map getLibraries();
-
-	public String[] getLibrariesName();
-
-	public ArrayList getRequires();
-
-	public String getMasterId();
-
-	public String getMasterVersion();
-
-	public String getMasterMatch();
-
-	public String getPluginClass();
-
-	public String getUniqueId();
-
-	public String getVersion();
-
-	public boolean isFragment();
-
-	public Set getPackageFilters();
-
-	public String getPluginName();
-
-	public String getProviderName();
-
-	public boolean isSingleton();
-
-	public boolean hasExtensionExtensionPoints();
-
-	String validateForm();
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/MessageHelper.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/MessageHelper.java
deleted file mode 100644
index f09b4ef..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/MessageHelper.java
+++ /dev/null
@@ -1,61 +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.internal.adaptor;
-
-import java.util.Date;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Constants;
-
-/**
- * @since 3.3
- */
-public class MessageHelper {
-	public static String getResolutionFailureMessage(VersionConstraint unsatisfied) {
-		if (unsatisfied.isResolved())
-			throw new IllegalArgumentException();
-		if (unsatisfied instanceof ImportPackageSpecification) {
-			if (ImportPackageSpecification.RESOLUTION_OPTIONAL.equals(((ImportPackageSpecification) unsatisfied).getDirective(Constants.RESOLUTION_DIRECTIVE)))
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_OPTIONAL_IMPORTED_PACKAGE, toString(unsatisfied));
-			if (ImportPackageSpecification.RESOLUTION_DYNAMIC.equals(((ImportPackageSpecification) unsatisfied).getDirective(Constants.RESOLUTION_DIRECTIVE)))
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_DYNAMIC_IMPORTED_PACKAGE, toString(unsatisfied));
-			return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_IMPORTED_PACKAGE, toString(unsatisfied));
-		}
-		if (unsatisfied instanceof BundleSpecification) {
-			if (((BundleSpecification) unsatisfied).isOptional())
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_OPTIONAL_REQUIRED_BUNDLE, toString(unsatisfied));
-			return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_REQUIRED_BUNDLE, toString(unsatisfied));
-		}
-		return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_HOST, toString(unsatisfied));
-	}
-
-	/**
-	 * 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 debug(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 static String toString(VersionConstraint constraint) {
-		org.eclipse.osgi.service.resolver.VersionRange versionRange = constraint.getVersionRange();
-		if (versionRange == null)
-			return constraint.getName();
-		return constraint.getName() + '_' + versionRange;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java
deleted file mode 100644
index 531766a..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java
+++ /dev/null
@@ -1,758 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.*;
-import java.util.*;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.baseadaptor.DevClassPathHelper;
-import org.eclipse.osgi.service.pluginconversion.PluginConversionException;
-import org.eclipse.osgi.service.pluginconversion.PluginConverter;
-import org.eclipse.osgi.service.resolver.VersionRange;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * Internal class.
- */
-public class PluginConverterImpl implements PluginConverter {
-	public static boolean DEBUG = false;
-	/** bundle manifest type unknown */
-	static public final byte MANIFEST_TYPE_UNKNOWN = 0x00;
-	/** bundle manifest type bundle (META-INF/MANIFEST.MF) */
-	static public final byte MANIFEST_TYPE_BUNDLE = 0x01;
-	/** bundle manifest type plugin (plugin.xml) */
-	static public final byte MANIFEST_TYPE_PLUGIN = 0x02;
-	/** bundle manifest type fragment (fragment.xml) */
-	static public final byte MANIFEST_TYPE_FRAGMENT = 0x04;
-	/** bundle manifest type jared bundle */
-	static public final byte MANIFEST_TYPE_JAR = 0x08;
-	private static final String SEMICOLON = "; "; //$NON-NLS-1$
-	private static final String UTF_8 = "UTF-8"; //$NON-NLS-1$
-	private static final String LIST_SEPARATOR = ",\n "; //$NON-NLS-1$
-	private static final String LINE_SEPARATOR = "\n "; //$NON-NLS-1$
-	private static final String DOT = "."; //$NON-NLS-1$
-	private static int MAXLINE = 511;
-	private BundleContext context;
-	private FrameworkAdaptor adaptor;
-	private BufferedWriter out;
-	private IPluginInfo pluginInfo;
-	private File pluginManifestLocation;
-	private ZipFile pluginZip;
-	private Dictionary generatedManifest;
-	private byte manifestType;
-	private Version target;
-	private Dictionary devProperties;
-	static final Version TARGET31 = new Version(3, 1, 0);
-	static final Version TARGET32 = new Version(3, 2, 0);
-	private static final String MANIFEST_VERSION = "Manifest-Version"; //$NON-NLS-1$
-	private static final String PLUGIN_PROPERTIES_FILENAME = "plugin"; //$NON-NLS-1$
-	private static PluginConverterImpl instance;
-	private static final String[] ARCH_LIST = {org.eclipse.osgi.service.environment.Constants.ARCH_PA_RISC, org.eclipse.osgi.service.environment.Constants.ARCH_PPC, org.eclipse.osgi.service.environment.Constants.ARCH_SPARC, org.eclipse.osgi.service.environment.Constants.ARCH_X86, org.eclipse.osgi.service.environment.Constants.ARCH_AMD64, org.eclipse.osgi.service.environment.Constants.ARCH_IA64};
-	static public final String FRAGMENT_MANIFEST = "fragment.xml"; //$NON-NLS-1$
-	static public final String GENERATED_FROM = "Generated-from"; //$NON-NLS-1$
-	static public final String MANIFEST_TYPE_ATTRIBUTE = "type"; //$NON-NLS-1$
-	private static final String[] OS_LIST = {org.eclipse.osgi.service.environment.Constants.OS_AIX, org.eclipse.osgi.service.environment.Constants.OS_HPUX, org.eclipse.osgi.service.environment.Constants.OS_LINUX, org.eclipse.osgi.service.environment.Constants.OS_MACOSX, org.eclipse.osgi.service.environment.Constants.OS_QNX, org.eclipse.osgi.service.environment.Constants.OS_SOLARIS, org.eclipse.osgi.service.environment.Constants.OS_WIN32};
-	protected static final String PI_RUNTIME = "org.eclipse.core.runtime"; //$NON-NLS-1$
-	protected static final String PI_BOOT = "org.eclipse.core.boot"; //$NON-NLS-1$
-	protected static final String PI_RUNTIME_COMPATIBILITY = "org.eclipse.core.runtime.compatibility"; //$NON-NLS-1$
-	static public final String PLUGIN_MANIFEST = "plugin.xml"; //$NON-NLS-1$
-	private static final String COMPATIBILITY_ACTIVATOR = "org.eclipse.core.internal.compatibility.PluginActivator"; //$NON-NLS-1$
-	private static final String[] WS_LIST = {org.eclipse.osgi.service.environment.Constants.WS_CARBON, org.eclipse.osgi.service.environment.Constants.WS_GTK, org.eclipse.osgi.service.environment.Constants.WS_MOTIF, org.eclipse.osgi.service.environment.Constants.WS_PHOTON, org.eclipse.osgi.service.environment.Constants.WS_WIN32};
-	private static final String IGNORE_DOT = "@ignoredot@"; //$NON-NLS-1$
-
-	public static PluginConverterImpl getDefault() {
-		return instance;
-	}
-
-	public PluginConverterImpl(FrameworkAdaptor adaptor, BundleContext context) {
-		this.context = context;
-		this.adaptor = adaptor;
-		instance = this;
-	}
-
-	private void init() {
-		// need to make sure these fields are cleared out for each conversion.
-		out = null;
-		pluginInfo = null;
-		pluginManifestLocation = null;
-		pluginZip = null;
-		generatedManifest = new Hashtable(10);
-		manifestType = MANIFEST_TYPE_UNKNOWN;
-		target = null;
-		devProperties = null;
-	}
-
-	private void fillPluginInfo(File pluginBaseLocation) throws PluginConversionException {
-		pluginManifestLocation = pluginBaseLocation;
-		if (pluginManifestLocation == null)
-			throw new IllegalArgumentException();
-		InputStream pluginFile = null;
-		try {
-			try {
-				pluginFile = findPluginManifest(pluginBaseLocation);
-			} catch (IOException e) {
-				throw new PluginConversionException(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_FILENOTFOUND, pluginBaseLocation.getAbsolutePath()), e);
-			}
-			if (pluginFile == null)
-				throw new PluginConversionException(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_FILENOTFOUND, pluginBaseLocation.getAbsolutePath()));
-			pluginInfo = parsePluginInfo(pluginFile);
-		} finally {
-			if (pluginZip != null)
-				try {
-					pluginZip.close();
-					pluginZip = null;
-				} catch (IOException e) {
-					// ignore
-				}
-		}
-		String validation = pluginInfo.validateForm();
-		if (validation != null)
-			throw new PluginConversionException(validation);
-	}
-
-	private Set filterExport(Collection exportToFilter, Collection filter) {
-		if (filter == null || filter.contains("*")) //$NON-NLS-1$
-			return (Set) exportToFilter;
-		Set filteredExport = new HashSet(exportToFilter.size());
-		for (Iterator iter = exportToFilter.iterator(); iter.hasNext();) {
-			String anExport = (String) iter.next();
-			for (Iterator iter2 = filter.iterator(); iter2.hasNext();) {
-				String aFilter = (String) iter2.next();
-				int dotStar = aFilter.indexOf(".*"); //$NON-NLS-1$
-				if (dotStar != -1)
-					aFilter = aFilter.substring(0, dotStar);
-				if (anExport.equals(aFilter)) {
-					filteredExport.add(anExport);
-					break;
-				}
-			}
-		}
-		return filteredExport;
-	}
-
-	private ArrayList findOSJars(File pluginRoot, String path, boolean filter) {
-		path = path.substring(4);
-		ArrayList found = new ArrayList(0);
-		for (int i = 0; i < OS_LIST.length; i++) {
-			//look for os/osname/path
-			String searchedPath = "os/" + OS_LIST[i] + "/" + path; //$NON-NLS-1$ //$NON-NLS-2$
-			if (new File(pluginRoot, searchedPath).exists())
-				found.add(searchedPath + (filter ? ";(os=" + WS_LIST[i] + ")" : "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			//look for os/osname/archname/path
-			for (int j = 0; j < ARCH_LIST.length; j++) {
-				searchedPath = "os/" + OS_LIST[i] + "/" + ARCH_LIST[j] + "/" + path; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				if (new File(pluginRoot, searchedPath).exists()) {
-					found.add(searchedPath + (filter ? ";(& (os=" + WS_LIST[i] + ") (arch=" + ARCH_LIST[j] + ")" : "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-				}
-			}
-		}
-		return found;
-	}
-
-	private InputStream findPluginManifest(File baseLocation) throws IOException {
-		//Here, we can not use the bundlefile because it may explode the jar and returns a location from which we will not be able to derive the jars location 
-		if (pluginZip != null)
-			try {
-				pluginZip.close();
-			} catch (IOException e) {
-				// ignore
-			}
-		pluginZip = null;
-		if (!baseLocation.isDirectory()) {
-			manifestType |= MANIFEST_TYPE_JAR;
-			pluginZip = new ZipFile(baseLocation);
-		}
-
-		if (pluginZip != null) {
-			ZipEntry manifestEntry = pluginZip.getEntry(PLUGIN_MANIFEST);
-			if (manifestEntry != null) {
-				manifestType |= MANIFEST_TYPE_PLUGIN;
-				return pluginZip.getInputStream(manifestEntry);
-			}
-		} else {
-			File manifestFile = new File(baseLocation, PLUGIN_MANIFEST);
-			if (manifestFile.exists()) {
-				manifestType |= MANIFEST_TYPE_PLUGIN;
-				return new FileInputStream(manifestFile);
-			}
-		}
-
-		if (pluginZip != null) {
-			ZipEntry manifestEntry = pluginZip.getEntry(FRAGMENT_MANIFEST);
-			if (manifestEntry != null) {
-				manifestType |= MANIFEST_TYPE_PLUGIN;
-				return pluginZip.getInputStream(manifestEntry);
-			}
-		} else {
-			File manifestFile = new File(baseLocation, FRAGMENT_MANIFEST);
-			if (manifestFile.exists()) {
-				manifestType |= MANIFEST_TYPE_FRAGMENT;
-				return new FileInputStream(manifestFile);
-			}
-		}
-
-		return null;
-	}
-
-	private ArrayList findWSJars(File pluginRoot, String path, boolean filter) {
-		path = path.substring(4);
-		ArrayList found = new ArrayList(0);
-		for (int i = 0; i < WS_LIST.length; i++) {
-			String searchedPath = "ws/" + WS_LIST[i] + path; //$NON-NLS-1$
-			if (new File(pluginRoot, searchedPath).exists()) {
-				found.add(searchedPath + (filter ? ";(ws=" + WS_LIST[i] + ")" : "")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-		}
-		return found;
-	}
-
-	protected void fillManifest(boolean compatibilityManifest, boolean analyseJars) {
-		generateManifestVersion();
-		generateHeaders();
-		generateClasspath();
-		generateActivator();
-		generatePluginClass();
-		if (analyseJars)
-			generateProvidePackage();
-		generateRequireBundle();
-		generateLocalizationEntry();
-		generateEclipseHeaders();
-		if (compatibilityManifest) {
-			generateTimestamp();
-		}
-	}
-
-	public void writeManifest(File generationLocation, Dictionary manifestToWrite, boolean compatibilityManifest) throws PluginConversionException {
-		long start = System.currentTimeMillis();
-		try {
-			File parentFile = new File(generationLocation.getParent());
-			parentFile.mkdirs();
-			generationLocation.createNewFile();
-			if (!generationLocation.isFile()) {
-				String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_ERROR_CREATING_BUNDLE_MANIFEST, this.pluginInfo.getUniqueId(), generationLocation);
-				throw new PluginConversionException(message);
-			}
-			// replaces any eventual existing file
-			manifestToWrite = new Hashtable((Map) manifestToWrite);
-			// MANIFEST.MF files must be written using UTF-8
-			out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(generationLocation), UTF_8));
-			writeEntry(MANIFEST_VERSION, (String) manifestToWrite.remove(MANIFEST_VERSION));
-			writeEntry(GENERATED_FROM, (String) manifestToWrite.remove(GENERATED_FROM)); //Need to do this first uptoDate check expect the generated-from tag to be in the first line
-			// always attempt to write the Bundle-ManifestVersion header if it exists (bug 109863)
-			writeEntry(Constants.BUNDLE_MANIFESTVERSION, (String) manifestToWrite.remove(Constants.BUNDLE_MANIFESTVERSION));
-			writeEntry(Constants.BUNDLE_NAME, (String) manifestToWrite.remove(Constants.BUNDLE_NAME));
-			writeEntry(Constants.BUNDLE_SYMBOLICNAME, (String) manifestToWrite.remove(Constants.BUNDLE_SYMBOLICNAME));
-			writeEntry(Constants.BUNDLE_VERSION, (String) manifestToWrite.remove(Constants.BUNDLE_VERSION));
-			writeEntry(Constants.BUNDLE_CLASSPATH, (String) manifestToWrite.remove(Constants.BUNDLE_CLASSPATH));
-			writeEntry(Constants.BUNDLE_ACTIVATOR, (String) manifestToWrite.remove(Constants.BUNDLE_ACTIVATOR));
-			writeEntry(Constants.BUNDLE_VENDOR, (String) manifestToWrite.remove(Constants.BUNDLE_VENDOR));
-			writeEntry(Constants.FRAGMENT_HOST, (String) manifestToWrite.remove(Constants.FRAGMENT_HOST));
-			writeEntry(Constants.BUNDLE_LOCALIZATION, (String) manifestToWrite.remove(Constants.BUNDLE_LOCALIZATION));
-			// always attempt to write the Export-Package header if it exists (bug 109863)
-			writeEntry(Constants.EXPORT_PACKAGE, (String) manifestToWrite.remove(Constants.EXPORT_PACKAGE));
-			// always attempt to write the Provide-Package header if it exists (bug 109863)
-			writeEntry(Constants.PROVIDE_PACKAGE, (String) manifestToWrite.remove(Constants.PROVIDE_PACKAGE));
-			writeEntry(Constants.REQUIRE_BUNDLE, (String) manifestToWrite.remove(Constants.REQUIRE_BUNDLE));
-			Enumeration keys = manifestToWrite.keys();
-			while (keys.hasMoreElements()) {
-				String key = (String) keys.nextElement();
-				writeEntry(key, (String) manifestToWrite.get(key));
-			}
-			out.flush();
-		} catch (IOException e) {
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_ERROR_CREATING_BUNDLE_MANIFEST, this.pluginInfo.getUniqueId(), generationLocation);
-			throw new PluginConversionException(message, e);
-		} finally {
-			if (out != null)
-				try {
-					out.close();
-				} catch (IOException e) {
-					// only report problems writing to/flushing the file
-				}
-		}
-		if (DEBUG)
-			System.out.println("Time to write out converted manifest to: " + generationLocation + ": " + (System.currentTimeMillis() - start) + "ms."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	private void generateLocalizationEntry() {
-		generatedManifest.put(Constants.BUNDLE_LOCALIZATION, PLUGIN_PROPERTIES_FILENAME);
-	}
-
-	private void generateManifestVersion() {
-		generatedManifest.put(MANIFEST_VERSION, "1.0"); //$NON-NLS-1$ 
-	}
-
-	private boolean requireRuntimeCompatibility() {
-		ArrayList requireList = pluginInfo.getRequires();
-		for (Iterator iter = requireList.iterator(); iter.hasNext();) {
-			if (((PluginParser.Prerequisite) iter.next()).getName().equalsIgnoreCase(PI_RUNTIME_COMPATIBILITY))
-				return true;
-		}
-		return false;
-	}
-
-	private void generateActivator() {
-		if (!pluginInfo.isFragment())
-			if (!requireRuntimeCompatibility()) {
-				String pluginClass = pluginInfo.getPluginClass();
-				if (pluginClass != null && !pluginClass.trim().equals("")) //$NON-NLS-1$
-					generatedManifest.put(Constants.BUNDLE_ACTIVATOR, pluginClass);
-			} else {
-				generatedManifest.put(Constants.BUNDLE_ACTIVATOR, COMPATIBILITY_ACTIVATOR);
-			}
-	}
-
-	private void generateClasspath() {
-		String[] classpath = pluginInfo.getLibrariesName();
-		if (classpath.length != 0)
-			generatedManifest.put(Constants.BUNDLE_CLASSPATH, getStringFromArray(classpath, LIST_SEPARATOR));
-	}
-
-	private void generateHeaders() {
-		if (TARGET31.compareTo(target) <= 0)
-			generatedManifest.put(Constants.BUNDLE_MANIFESTVERSION, "2"); //$NON-NLS-1$
-		generatedManifest.put(Constants.BUNDLE_NAME, pluginInfo.getPluginName());
-		generatedManifest.put(Constants.BUNDLE_VERSION, pluginInfo.getVersion());
-		generatedManifest.put(Constants.BUNDLE_SYMBOLICNAME, getSymbolicNameEntry());
-		String provider = pluginInfo.getProviderName();
-		if (provider != null)
-			generatedManifest.put(Constants.BUNDLE_VENDOR, provider);
-		if (pluginInfo.isFragment()) {
-			StringBuffer hostBundle = new StringBuffer();
-			hostBundle.append(pluginInfo.getMasterId());
-			String versionRange = getVersionRange(pluginInfo.getMasterVersion(), pluginInfo.getMasterMatch()); // TODO need to get match rule here!
-			if (versionRange != null)
-				hostBundle.append(versionRange);
-			generatedManifest.put(Constants.FRAGMENT_HOST, hostBundle.toString());
-		}
-	}
-
-	/*
-	 * Generates an entry in the form: 
-	 * 	<symbolic-name>[; singleton=true]
-	 */
-	private String getSymbolicNameEntry() {
-		// false is the default, so don't bother adding anything 
-		if (!pluginInfo.isSingleton())
-			return pluginInfo.getUniqueId();
-		StringBuffer result = new StringBuffer(pluginInfo.getUniqueId());
-		result.append(SEMICOLON);
-		result.append(Constants.SINGLETON_DIRECTIVE);
-		String assignment = TARGET31.compareTo(target) <= 0 ? ":=" : "="; //$NON-NLS-1$ //$NON-NLS-2$
-		result.append(assignment).append("true"); //$NON-NLS-1$
-		return result.toString();
-	}
-
-	private void generatePluginClass() {
-		if (requireRuntimeCompatibility()) {
-			String pluginClass = pluginInfo.getPluginClass();
-			if (pluginClass != null)
-				generatedManifest.put(Constants.PLUGIN_CLASS, pluginClass);
-		}
-	}
-
-	private void generateProvidePackage() {
-		Set exports = getExports();
-		if (exports != null && exports.size() != 0) {
-			generatedManifest.put(TARGET31.compareTo(target) <= 0 ? Constants.EXPORT_PACKAGE : Constants.PROVIDE_PACKAGE, getStringFromCollection(exports, LIST_SEPARATOR));
-		}
-	}
-
-	private void generateRequireBundle() {
-		ArrayList requiredBundles = pluginInfo.getRequires();
-		if (requiredBundles.size() == 0)
-			return;
-		StringBuffer bundleRequire = new StringBuffer();
-		for (Iterator iter = requiredBundles.iterator(); iter.hasNext();) {
-			PluginParser.Prerequisite element = (PluginParser.Prerequisite) iter.next();
-			StringBuffer modImport = new StringBuffer(element.getName());
-			String versionRange = getVersionRange(element.getVersion(), element.getMatch());
-			if (versionRange != null)
-				modImport.append(versionRange);
-			if (element.isExported()) {
-				if (TARGET31.compareTo(target) <= 0)
-					modImport.append(';').append(Constants.VISIBILITY_DIRECTIVE).append(":=").append(Constants.VISIBILITY_REEXPORT);//$NON-NLS-1$
-				else
-					modImport.append(';').append(Constants.REPROVIDE_ATTRIBUTE).append("=true");//$NON-NLS-1$
-			}
-			if (element.isOptional()) {
-				if (TARGET31.compareTo(target) <= 0)
-					modImport.append(';').append(Constants.RESOLUTION_DIRECTIVE).append(":=").append(Constants.RESOLUTION_OPTIONAL);//$NON-NLS-1$
-				else
-					modImport.append(';').append(Constants.OPTIONAL_ATTRIBUTE).append("=true");//$NON-NLS-1$
-			}
-			bundleRequire.append(modImport.toString());
-			if (iter.hasNext())
-				bundleRequire.append(LIST_SEPARATOR);
-		}
-		generatedManifest.put(Constants.REQUIRE_BUNDLE, bundleRequire.toString());
-	}
-
-	private void generateTimestamp() {
-		// so it is easy to tell which ones are generated
-		generatedManifest.put(GENERATED_FROM, Long.toString(getTimeStamp(pluginManifestLocation, manifestType)) + ";" + MANIFEST_TYPE_ATTRIBUTE + "=" + manifestType); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	private void generateEclipseHeaders() {
-		if (pluginInfo.isFragment())
-			return;
-
-		String pluginClass = pluginInfo.getPluginClass();
-		if (pluginInfo.hasExtensionExtensionPoints() || (pluginClass != null && !pluginClass.trim().equals(""))) //$NON-NLS-1$
-			generatedManifest.put(TARGET32.compareTo(target) <= 0 ? Constants.ECLIPSE_LAZYSTART : Constants.ECLIPSE_AUTOSTART, "true"); //$NON-NLS-1$
-	}
-
-	private Set getExports() {
-		Map libs = pluginInfo.getLibraries();
-		if (libs == null)
-			return null;
-
-		//If we are in dev mode, then add the binary folders on the list libs with the export clause set to be the cumulation of the export clause of the real libs   
-		if (devProperties != null || DevClassPathHelper.inDevelopmentMode()) {
-			String[] devClassPath = DevClassPathHelper.getDevClassPath(pluginInfo.getUniqueId(), devProperties);
-			// collect export clauses
-			List allExportClauses = new ArrayList(libs.size());
-			Set libEntries = libs.entrySet();
-			for (Iterator iter = libEntries.iterator(); iter.hasNext();) {
-				Map.Entry element = (Map.Entry) iter.next();
-				allExportClauses.addAll((List) element.getValue());
-			}
-			if (devClassPath != null) {
-				// bug 88498
-				// if there is a devClassPath defined for this plugin and the @ignoredot@ flag is true
-				// then we will ignore the '.' library specified in the plugin.xml
-				String[] ignoreDotProp = DevClassPathHelper.getDevClassPath(IGNORE_DOT, devProperties);
-				if (devClassPath.length > 0 && ignoreDotProp != null && ignoreDotProp.length > 0 && "true".equals(ignoreDotProp[0])) //$NON-NLS-1$
-					libs.remove(DOT);
-				for (int i = 0; i < devClassPath.length; i++)
-					libs.put(devClassPath[i], allExportClauses);
-			}
-		}
-
-		Set result = new TreeSet();
-		Set libEntries = libs.entrySet();
-		for (Iterator iter = libEntries.iterator(); iter.hasNext();) {
-			Map.Entry element = (Map.Entry) iter.next();
-			List filter = (List) element.getValue();
-			if (filter.size() == 0) //If the library is not exported, then ignore it
-				continue;
-			String libEntryText = ((String) element.getKey()).trim();
-			File libraryLocation;
-			if (libEntryText.equals(DOT))
-				libraryLocation = pluginManifestLocation;
-			else {
-				// in development time, libEntries may contain absolute locations (linked folders)				
-				File libEntryAsPath = new File(libEntryText);
-				libraryLocation = libEntryAsPath.isAbsolute() ? libEntryAsPath : new File(pluginManifestLocation, libEntryText);
-			}
-			Set exports = null;
-			if (libraryLocation.exists()) {
-				if (libraryLocation.isFile())
-					exports = filterExport(getExportsFromJAR(libraryLocation), filter); //TODO Need to handle $xx$ variables
-				else if (libraryLocation.isDirectory())
-					exports = filterExport(getExportsFromDir(libraryLocation), filter);
-			} else {
-				ArrayList expandedLibs = getLibrariesExpandingVariables((String) element.getKey(), false);
-				exports = new HashSet();
-				for (Iterator iterator = expandedLibs.iterator(); iterator.hasNext();) {
-					String libName = (String) iterator.next();
-					File libFile = new File(pluginManifestLocation, libName);
-					if (libFile.isFile()) {
-						exports.addAll(filterExport(getExportsFromJAR(libFile), filter));
-					}
-				}
-			}
-			if (exports != null)
-				result.addAll(exports);
-		}
-		return result;
-	}
-
-	private Set getExportsFromDir(File location) {
-		return getExportsFromDir(location, ""); //$NON-NLS-1$
-	}
-
-	private Set getExportsFromDir(File location, String packageName) {
-		String prefix = (packageName.length() > 0) ? (packageName + '.') : ""; //$NON-NLS-1$
-		String[] files = location.list();
-		Set exportedPaths = new HashSet();
-		boolean containsFile = false;
-		if (files != null)
-			for (int i = 0; i < files.length; i++) {
-				if (!isValidPackageName(files[i]))
-					continue;
-				File pkgFile = new File(location, files[i]);
-				if (pkgFile.isDirectory())
-					exportedPaths.addAll(getExportsFromDir(pkgFile, prefix + files[i]));
-				else
-					containsFile = true;
-			}
-		if (containsFile)
-			// Allow the default package to be provided.  If the default package
-			// contains a File then use "." as the package name to provide for default.
-			if (packageName.length() > 0)
-				exportedPaths.add(packageName);
-			else
-				exportedPaths.add(DOT);
-		return exportedPaths;
-	}
-
-	private Set getExportsFromJAR(File jarFile) {
-		Set names = new HashSet();
-		ZipFile file = null;
-		try {
-			file = new ZipFile(jarFile);
-		} catch (IOException e) {
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_PLUGIN_LIBRARY_IGNORED, jarFile, pluginInfo.getUniqueId());
-			adaptor.getFrameworkLog().log(new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, message, 0, e, null));
-			return names;
-		}
-		//Run through the entries
-		for (Enumeration entriesEnum = file.entries(); entriesEnum.hasMoreElements();) {
-			ZipEntry entry = (ZipEntry) entriesEnum.nextElement();
-			String name = entry.getName();
-			if (!isValidPackageName(name))
-				continue;
-			int lastSlash = name.lastIndexOf("/"); //$NON-NLS-1$
-			//Ignore folders that do not contain files
-			if (lastSlash != -1) {
-				if (lastSlash != name.length() - 1 && name.lastIndexOf(' ') == -1)
-					names.add(name.substring(0, lastSlash).replace('/', '.'));
-			} else {
-				// Allow the default package to be provided.  If the default package
-				// contains a File then use "." as the package name to provide for default.
-				names.add(DOT);
-			}
-		}
-		try {
-			file.close();
-		} catch (IOException e) {
-			// Nothing to do
-		}
-		return names;
-	}
-
-	private ArrayList getLibrariesExpandingVariables(String libraryPath, boolean filter) {
-		String var = hasPrefix(libraryPath);
-		if (var == null) {
-			ArrayList returnValue = new ArrayList(1);
-			returnValue.add(libraryPath);
-			return returnValue;
-		}
-		if (var.equals("ws")) { //$NON-NLS-1$
-			return findWSJars(pluginManifestLocation, libraryPath, filter);
-		}
-		if (var.equals("os")) { //$NON-NLS-1$
-			return findOSJars(pluginManifestLocation, libraryPath, filter);
-		}
-		return new ArrayList(0);
-	}
-
-	//return a String representing the string found between the $s
-	private String hasPrefix(String libPath) {
-		if (libPath.startsWith("$ws$")) //$NON-NLS-1$
-			return "ws"; //$NON-NLS-1$
-		if (libPath.startsWith("$os$")) //$NON-NLS-1$
-			return "os"; //$NON-NLS-1$
-		if (libPath.startsWith("$nl$")) //$NON-NLS-1$
-			return "nl"; //$NON-NLS-1$
-		return null;
-	}
-
-	private boolean isValidPackageName(String name) {
-		if (name.indexOf(' ') > 0 || name.equalsIgnoreCase("META-INF") || name.startsWith("META-INF/")) //$NON-NLS-1$ //$NON-NLS-2$
-			return false;
-		return true;
-	}
-
-	/**
-	 * Parses the plugin manifest to find out: - the plug-in unique identifier -
-	 * the plug-in version - runtime/libraries entries - the plug-in class -
-	 * the master plugin (for a fragment)
-	 */
-	private IPluginInfo parsePluginInfo(InputStream pluginLocation) throws PluginConversionException {
-		InputStream input = null;
-		try {
-			input = new BufferedInputStream(pluginLocation);
-			return new PluginParser(adaptor, context, target).parsePlugin(input);
-		} catch (Exception e) {
-			String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_ERROR_PARSING_PLUGIN_MANIFEST, pluginManifestLocation);
-			throw new PluginConversionException(message, e);
-		} finally {
-			if (input != null)
-				try {
-					input.close();
-				} catch (IOException e) {
-					//ignore exception
-				}
-		}
-	}
-
-	public static boolean upToDate(File generationLocation, File pluginLocation, byte manifestType) {
-		if (!generationLocation.isFile())
-			return false;
-		String secondLine = null;
-		BufferedReader reader = null;
-		try {
-			reader = new BufferedReader(new InputStreamReader(new FileInputStream(generationLocation)));
-			reader.readLine();
-			secondLine = reader.readLine();
-		} catch (IOException e) {
-			// not a big deal - we could not read an existing manifest
-			return false;
-		} finally {
-			if (reader != null)
-				try {
-					reader.close();
-				} catch (IOException e) {
-					// ignore
-				}
-		}
-		String tag = GENERATED_FROM + ": "; //$NON-NLS-1$
-		if (secondLine == null || !secondLine.startsWith(tag))
-			return false;
-
-		secondLine = secondLine.substring(tag.length());
-		ManifestElement generatedFrom;
-		try {
-			generatedFrom = ManifestElement.parseHeader(PluginConverterImpl.GENERATED_FROM, secondLine)[0];
-		} catch (BundleException be) {
-			return false;
-		}
-		String timestampStr = generatedFrom.getValue();
-		try {
-			return Long.parseLong(timestampStr.trim()) == getTimeStamp(pluginLocation, manifestType);
-		} catch (NumberFormatException nfe) {
-			// not a big deal - just a bogus existing manifest that will be ignored
-		}
-		return false;
-	}
-
-	public static long getTimeStamp(File pluginLocation, byte manifestType) {
-		if ((manifestType & MANIFEST_TYPE_JAR) != 0)
-			return pluginLocation.lastModified();
-		else if ((manifestType & MANIFEST_TYPE_PLUGIN) != 0)
-			return new File(pluginLocation, PLUGIN_MANIFEST).lastModified();
-		else if ((manifestType & MANIFEST_TYPE_FRAGMENT) != 0)
-			return new File(pluginLocation, FRAGMENT_MANIFEST).lastModified();
-		else if ((manifestType & MANIFEST_TYPE_BUNDLE) != 0)
-			return new File(pluginLocation, Constants.OSGI_BUNDLE_MANIFEST).lastModified();
-		return -1;
-	}
-
-	private void writeEntry(String key, String value) throws IOException {
-		if (value != null && value.length() > 0) {
-			out.write(splitOnComma(key + ": " + value)); //$NON-NLS-1$
-			out.write('\n');
-		}
-	}
-
-	private String splitOnComma(String value) {
-		if (value.length() < MAXLINE || value.indexOf(LINE_SEPARATOR) >= 0)
-			return value; // assume the line is already split
-		String[] values = ManifestElement.getArrayFromList(value);
-		if (values == null || values.length == 0)
-			return value;
-		StringBuffer sb = new StringBuffer(value.length() + ((values.length - 1) * LIST_SEPARATOR.length()));
-		for (int i = 0; i < values.length - 1; i++)
-			sb.append(values[i]).append(LIST_SEPARATOR);
-		sb.append(values[values.length - 1]);
-		return sb.toString();
-	}
-
-	private String getStringFromArray(String[] values, String separator) {
-		if (values == null)
-			return ""; //$NON-NLS-1$
-		StringBuffer result = new StringBuffer();
-		for (int i = 0; i < values.length; i++) {
-			if (i > 0)
-				result.append(separator);
-			result.append(values[i]);
-		}
-		return result.toString();
-	}
-
-	private String getStringFromCollection(Collection collection, String separator) {
-		StringBuffer result = new StringBuffer();
-		boolean first = true;
-		for (Iterator i = collection.iterator(); i.hasNext();) {
-			if (first)
-				first = false;
-			else
-				result.append(separator);
-			result.append(i.next());
-		}
-		return result.toString();
-	}
-
-	public synchronized Dictionary convertManifest(File pluginBaseLocation, boolean compatibility, String target, boolean analyseJars, Dictionary devProperties) throws PluginConversionException {
-		long start = System.currentTimeMillis();
-		if (DEBUG)
-			System.out.println("Convert " + pluginBaseLocation); //$NON-NLS-1$
-		init();
-		this.target = target == null ? TARGET32 : new Version(target);
-		this.devProperties = devProperties;
-		fillPluginInfo(pluginBaseLocation);
-		fillManifest(compatibility, analyseJars);
-		if (DEBUG)
-			System.out.println("Time to convert manifest for: " + pluginBaseLocation + ": " + (System.currentTimeMillis() - start) + "ms."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		return generatedManifest;
-	}
-
-	public synchronized File convertManifest(File pluginBaseLocation, File bundleManifestLocation, boolean compatibilityManifest, String target, boolean analyseJars, Dictionary devProperties) throws PluginConversionException {
-		convertManifest(pluginBaseLocation, compatibilityManifest, target, analyseJars, devProperties);
-		if (bundleManifestLocation == null) {
-			String cacheLocation = FrameworkProperties.getProperty(LocationManager.PROP_MANIFEST_CACHE);
-			bundleManifestLocation = new File(cacheLocation, pluginInfo.getUniqueId() + '_' + pluginInfo.getVersion() + ".MF"); //$NON-NLS-1$
-		}
-		if (upToDate(bundleManifestLocation, pluginManifestLocation, manifestType))
-			return bundleManifestLocation;
-		writeManifest(bundleManifestLocation, generatedManifest, compatibilityManifest);
-		return bundleManifestLocation;
-	}
-
-	private String getVersionRange(String reqVersion, String matchRule) {
-		if (reqVersion == null)
-			return null;
-
-		Version minVersion = Version.parseVersion(reqVersion);
-		String versionRange;
-		if (matchRule != null) {
-			if (matchRule.equalsIgnoreCase(IModel.PLUGIN_REQUIRES_MATCH_PERFECT)) {
-				versionRange = new VersionRange(minVersion, true, minVersion, true).toString();
-			} else if (matchRule.equalsIgnoreCase(IModel.PLUGIN_REQUIRES_MATCH_EQUIVALENT)) {
-				versionRange = new VersionRange(minVersion, true, new Version(minVersion.getMajor(), minVersion.getMinor() + 1, 0, ""), false).toString(); //$NON-NLS-1$
-			} else if (matchRule.equalsIgnoreCase(IModel.PLUGIN_REQUIRES_MATCH_COMPATIBLE)) {
-				versionRange = new VersionRange(minVersion, true, new Version(minVersion.getMajor() + 1, 0, 0, ""), false).toString(); //$NON-NLS-1$
-			} else if (matchRule.equalsIgnoreCase(IModel.PLUGIN_REQUIRES_MATCH_GREATER_OR_EQUAL)) {
-				// just return the reqVersion here without any version range
-				versionRange = reqVersion;
-			} else {
-				versionRange = new VersionRange(minVersion, true, new Version(minVersion.getMajor() + 1, 0, 0, ""), false).toString(); //$NON-NLS-1$
-			}
-		} else {
-			versionRange = new VersionRange(minVersion, true, new Version(minVersion.getMajor() + 1, 0, 0, ""), false).toString(); //$NON-NLS-1$
-		}
-
-		StringBuffer result = new StringBuffer();
-		result.append(';').append(Constants.BUNDLE_VERSION_ATTRIBUTE).append('=');
-		result.append('\"').append(versionRange).append('\"');
-		return result.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginParser.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginParser.java
deleted file mode 100644
index 098a7aa..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginParser.java
+++ /dev/null
@@ -1,704 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.InputStream;
-import java.util.*;
-import javax.xml.parsers.SAXParserFactory;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Version;
-import org.osgi.util.tracker.ServiceTracker;
-import org.xml.sax.*;
-import org.xml.sax.helpers.DefaultHandler;
-
-/**
- * Internal class.
- */
-public class PluginParser extends DefaultHandler implements IModel {
-	private static ServiceTracker xmlTracker = null;
-
-	private PluginInfo manifestInfo = new PluginInfo();
-	private BundleContext context;
-	private FrameworkAdaptor adaptor;
-	private Version target; // The targeted platform for the given manifest
-	private static final Version TARGET21 = new Version(2, 1, 0);
-
-	public class PluginInfo implements IPluginInfo {
-		private String schemaVersion;
-		private String pluginId;
-		private String version;
-		private String vendor;
-
-		// an ordered list of library path names.
-		private ArrayList libraryPaths;
-		// TODO Should get rid of the libraries map and just have a
-		// list of library export statements instead.  Library paths must
-		// preserve order.
-		private Map libraries; //represent the libraries and their export statement
-		private ArrayList requires;
-		private boolean requiresExpanded = false; //indicates if the requires have been processed.
-		private boolean compatibilityFound = false; //set to true is the requirement list contain compatilibity 
-		private String pluginClass;
-		private String masterPluginId;
-		private String masterVersion;
-		private String masterMatch;
-		private Set filters;
-		private String pluginName;
-		private boolean singleton;
-		private boolean fragment;
-		private final static String TARGET21_STRING = "2.1"; //$NON-NLS-1$
-		private boolean hasExtensionExtensionPoints = false;
-
-		public boolean isFragment() {
-			return fragment;
-		}
-
-		public String toString() {
-			return "plugin-id: " + pluginId + "  version: " + version + " libraries: " + libraries + " class:" + pluginClass + " master: " + masterPluginId + " master-version: " + masterVersion + " requires: " + requires + " singleton: " + singleton; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$
-		}
-
-		public Map getLibraries() {
-			if (libraries == null)
-				return new HashMap(0);
-			return libraries;
-		}
-
-		public ArrayList getRequires() {
-			if (!TARGET21.equals(target) && schemaVersion == null && !requiresExpanded) {
-				requiresExpanded = true;
-				if (requires == null) {
-					requires = new ArrayList(1);
-					requires.add(new Prerequisite(PluginConverterImpl.PI_RUNTIME, TARGET21_STRING, false, false, IModel.PLUGIN_REQUIRES_MATCH_GREATER_OR_EQUAL));
-					requires.add(new Prerequisite(PluginConverterImpl.PI_RUNTIME_COMPATIBILITY, null, false, false, null));
-				} else {
-					//Add elements on the requirement list of ui and help.
-					for (int i = 0; i < requires.size(); i++) {
-						Prerequisite analyzed = (Prerequisite) requires.get(i);
-						if ("org.eclipse.ui".equals(analyzed.getName())) { //$NON-NLS-1$					
-							requires.add(i + 1, new Prerequisite("org.eclipse.ui.workbench.texteditor", null, true, analyzed.isExported(), null)); //$NON-NLS-1$ 
-							requires.add(i + 1, new Prerequisite("org.eclipse.jface.text", null, true, analyzed.isExported(), null)); //$NON-NLS-1$ 
-							requires.add(i + 1, new Prerequisite("org.eclipse.ui.editors", null, true, analyzed.isExported(), null)); //$NON-NLS-1$ 
-							requires.add(i + 1, new Prerequisite("org.eclipse.ui.views", null, true, analyzed.isExported(), null)); //$NON-NLS-1$ 
-							requires.add(i + 1, new Prerequisite("org.eclipse.ui.ide", null, true, analyzed.isExported(), null)); //$NON-NLS-1$ 
-						} else if ("org.eclipse.help".equals(analyzed.getName())) { //$NON-NLS-1$ 
-							requires.add(i + 1, new Prerequisite("org.eclipse.help.base", null, true, analyzed.isExported(), null)); //$NON-NLS-1$ 
-						} else if (PluginConverterImpl.PI_RUNTIME.equals(analyzed.getName()) && !compatibilityFound) {
-							requires.add(i + 1, new Prerequisite(PluginConverterImpl.PI_RUNTIME_COMPATIBILITY, null, false, analyzed.isExported(), null));
-						}
-					}
-					if (!requires.contains(new Prerequisite(PluginConverterImpl.PI_RUNTIME_COMPATIBILITY, null, false, false, null))) {
-						requires.add(new Prerequisite(PluginConverterImpl.PI_RUNTIME_COMPATIBILITY, null, false, false, null));
-					}
-					//Remove any prereq on runtime and add a prereq on runtime 2.1
-					//This is used to recognize the version for which the given plugin was initially targeted.
-					Prerequisite runtimePrereq = new Prerequisite(PluginConverterImpl.PI_RUNTIME, null, false, false, null);
-					requires.remove(runtimePrereq);
-					requires.add(new Prerequisite(PluginConverterImpl.PI_RUNTIME, TARGET21_STRING, false, false, IModel.PLUGIN_REQUIRES_MATCH_GREATER_OR_EQUAL));
-				}
-			}
-			if (requires == null)
-				return requires = new ArrayList(0);
-
-			return requires;
-		}
-
-		public String getMasterId() {
-			return masterPluginId;
-		}
-
-		public String getMasterVersion() {
-			return masterVersion;
-		}
-
-		public String getMasterMatch() {
-			return masterMatch;
-		}
-
-		public String getPluginClass() {
-			return pluginClass;
-		}
-
-		public String getUniqueId() {
-			return pluginId;
-		}
-
-		public String getVersion() {
-			return version;
-		}
-
-		public Set getPackageFilters() {
-			return filters;
-		}
-
-		public String[] getLibrariesName() {
-			if (libraryPaths == null)
-				return new String[0];
-			return (String[]) libraryPaths.toArray(new String[libraryPaths.size()]);
-		}
-
-		public String getPluginName() {
-			return pluginName;
-		}
-
-		public String getProviderName() {
-			return vendor;
-		}
-
-		public boolean isSingleton() {
-			return singleton;
-		}
-
-		public boolean hasExtensionExtensionPoints() {
-			return hasExtensionExtensionPoints;
-		}
-
-		public String getRoot() {
-			return isFragment() ? FRAGMENT : PLUGIN;
-		}
-
-		/*
-		 * Provides some basic form of validation. Since plugin/fragment is the only mandatory
-		 * attribute, it is the only one we cara about here. 
-		 */
-		public String validateForm() {
-			if (this.pluginId == null)
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_MISSING_ATTRIBUTE, new String[] {getRoot(), PLUGIN_ID, getRoot()});
-			if (this.pluginName == null)
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_MISSING_ATTRIBUTE, new String[] {getRoot(), PLUGIN_NAME, getRoot()});
-			if (this.version == null)
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_MISSING_ATTRIBUTE, new String[] {getRoot(), PLUGIN_VERSION, getRoot()});
-			if (isFragment() && this.masterPluginId == null)
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_MISSING_ATTRIBUTE, new String[] {getRoot(), FRAGMENT_PLUGIN_ID, getRoot()});
-			if (isFragment() && this.masterVersion == null)
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_MISSING_ATTRIBUTE, new String[] {getRoot(), FRAGMENT_PLUGIN_VERSION, getRoot()});
-			return null;
-		}
-	}
-
-	// Current State Information
-	Stack stateStack = new Stack();
-
-	// Current object stack (used to hold the current object we are populating in this plugin info
-	Stack objectStack = new Stack();
-	Locator locator = null;
-
-	// Valid States
-	private static final int IGNORED_ELEMENT_STATE = 0;
-	private static final int INITIAL_STATE = 1;
-	private static final int PLUGIN_STATE = 2;
-	private static final int PLUGIN_RUNTIME_STATE = 3;
-	private static final int PLUGIN_REQUIRES_STATE = 4;
-	private static final int PLUGIN_EXTENSION_POINT_STATE = 5;
-	private static final int PLUGIN_EXTENSION_STATE = 6;
-	private static final int RUNTIME_LIBRARY_STATE = 7;
-	private static final int LIBRARY_EXPORT_STATE = 8;
-	private static final int PLUGIN_REQUIRES_IMPORT_STATE = 9;
-	private static final int FRAGMENT_STATE = 11;
-
-	public PluginParser(FrameworkAdaptor adaptor, BundleContext context, Version target) {
-		super();
-		this.context = context;
-		this.adaptor = adaptor;
-		this.target = target;
-	}
-
-	/**
-	 * Receive a Locator object for document events.
-	 * 
-	 * <p>
-	 * By default, do nothing. Application writers may override this method in
-	 * a subclass if they wish to store the locator for use with other document
-	 * events.
-	 * </p>
-	 * 
-	 * @param locator A locator for all SAX document events.
-	 * @see org.xml.sax.ContentHandler#setDocumentLocator(org.xml.sax.Locator)
-	 * @see org.xml.sax.Locator
-	 */
-	public void setDocumentLocator(Locator locator) {
-		this.locator = locator;
-	}
-
-	public void endDocument() {
-	}
-
-	public void endElement(String uri, String elementName, String qName) {
-		switch (((Integer) stateStack.peek()).intValue()) {
-			case IGNORED_ELEMENT_STATE :
-				stateStack.pop();
-				break;
-			case INITIAL_STATE :
-				// shouldn't get here
-				// internalError(Policy.bind("parse.internalStack", elementName)); //$NON-NLS-1$
-				break;
-			case PLUGIN_STATE :
-			case FRAGMENT_STATE :
-				break;
-			case PLUGIN_RUNTIME_STATE :
-				if (elementName.equals(RUNTIME)) {
-					stateStack.pop();
-				}
-				break;
-			case PLUGIN_REQUIRES_STATE :
-				if (elementName.equals(PLUGIN_REQUIRES)) {
-					stateStack.pop();
-					objectStack.pop();
-				}
-				break;
-			case PLUGIN_EXTENSION_POINT_STATE :
-				if (elementName.equals(EXTENSION_POINT)) {
-					stateStack.pop();
-				}
-				break;
-			case PLUGIN_EXTENSION_STATE :
-				if (elementName.equals(EXTENSION)) {
-					stateStack.pop();
-				}
-				break;
-			case RUNTIME_LIBRARY_STATE :
-				if (elementName.equals(LIBRARY)) {
-					String curLibrary = (String) objectStack.pop();
-					if (!curLibrary.trim().equals("")) { //$NON-NLS-1$
-						Vector exportsVector = (Vector) objectStack.pop();
-						if (manifestInfo.libraries == null) {
-							manifestInfo.libraries = new HashMap(3);
-							manifestInfo.libraryPaths = new ArrayList(3);
-						}
-						manifestInfo.libraries.put(curLibrary, exportsVector);
-						manifestInfo.libraryPaths.add(curLibrary.replace('\\', '/'));
-					}
-					stateStack.pop();
-				}
-				break;
-			case LIBRARY_EXPORT_STATE :
-				if (elementName.equals(LIBRARY_EXPORT)) {
-					stateStack.pop();
-				}
-				break;
-			case PLUGIN_REQUIRES_IMPORT_STATE :
-				if (elementName.equals(PLUGIN_REQUIRES_IMPORT)) {
-					stateStack.pop();
-				}
-				break;
-		}
-	}
-
-	public void error(SAXParseException ex) {
-		logStatus(ex);
-	}
-
-	public void fatalError(SAXParseException ex) throws SAXException {
-		logStatus(ex);
-		throw ex;
-	}
-
-	public void handleExtensionPointState(String elementName, Attributes attributes) {
-		// nothing to do for extension-points' children
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		manifestInfo.hasExtensionExtensionPoints = true;
-	}
-
-	public void handleExtensionState(String elementName, Attributes attributes) {
-		// nothing to do for extensions' children
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		manifestInfo.hasExtensionExtensionPoints = true;
-	}
-
-	public void handleInitialState(String elementName, Attributes attributes) {
-		if (elementName.equals(PLUGIN)) {
-			stateStack.push(new Integer(PLUGIN_STATE));
-			parsePluginAttributes(attributes);
-		} else if (elementName.equals(FRAGMENT)) {
-			manifestInfo.fragment = true;
-			stateStack.push(new Integer(FRAGMENT_STATE));
-			parseFragmentAttributes(attributes);
-		} else {
-			stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-			internalError(elementName);
-		}
-	}
-
-	public void handleLibraryExportState(String elementName, Attributes attributes) {
-		// All elements ignored.
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-	}
-
-	public void handleLibraryState(String elementName, Attributes attributes) {
-		if (elementName.equals(LIBRARY_EXPORT)) {
-			// Change State
-			stateStack.push(new Integer(LIBRARY_EXPORT_STATE));
-			// The top element on the stack much be a library element
-			String currentLib = (String) objectStack.peek();
-			if (attributes == null)
-				return;
-			String maskValue = attributes.getValue("", LIBRARY_EXPORT_MASK); //$NON-NLS-1$
-			// pop off the library - already in currentLib
-			objectStack.pop();
-			Vector exportMask = (Vector) objectStack.peek();
-			// push library back on
-			objectStack.push(currentLib);
-			//Split the export upfront
-			if (maskValue != null) {
-				StringTokenizer tok = new StringTokenizer(maskValue, ","); //$NON-NLS-1$
-				while (tok.hasMoreTokens()) {
-					String value = tok.nextToken();
-					if (!exportMask.contains(maskValue))
-						exportMask.addElement(value.trim());
-				}
-			}
-			return;
-		}
-		if (elementName.equals(LIBRARY_PACKAGES)) {
-			stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-			return;
-		}
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(elementName);
-		return;
-	}
-
-	public void handlePluginState(String elementName, Attributes attributes) {
-		if (elementName.equals(RUNTIME)) {
-			// We should only have one Runtime element in a plugin or fragment
-			Object whatIsIt = objectStack.peek();
-			if ((whatIsIt instanceof PluginInfo) && ((PluginInfo) objectStack.peek()).libraries != null) {
-				// This is at least the 2nd Runtime element we have hit. Ignore it.
-				stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-				return;
-			}
-			stateStack.push(new Integer(PLUGIN_RUNTIME_STATE));
-			// Push a new vector to hold all the library entries objectStack.push(new Vector());
-			return;
-		}
-		if (elementName.equals(PLUGIN_REQUIRES)) {
-			stateStack.push(new Integer(PLUGIN_REQUIRES_STATE));
-			// Push a new vector to hold all the prerequisites
-			objectStack.push(new Vector());
-			parseRequiresAttributes(attributes);
-			return;
-		}
-		if (elementName.equals(EXTENSION_POINT)) {
-			// mark the plugin as singleton and ignore all elements under extension (if there are any)
-			manifestInfo.singleton = true;
-			stateStack.push(new Integer(PLUGIN_EXTENSION_POINT_STATE));
-			return;
-		}
-		if (elementName.equals(EXTENSION)) {
-			// mark the plugin as singleton and ignore all elements under extension (if there are any)
-			manifestInfo.singleton = true;
-			stateStack.push(new Integer(PLUGIN_EXTENSION_STATE));
-			return;
-		}
-		// If we get to this point, the element name is one we don't currently accept.
-		// Set the state to indicate that this element will be ignored
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(elementName);
-	}
-
-	public void handleRequiresImportState(String elementName, Attributes attributes) {
-		// All elements ignored.
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-	}
-
-	public void handleRequiresState(String elementName, Attributes attributes) {
-		if (elementName.equals(PLUGIN_REQUIRES_IMPORT)) {
-			parsePluginRequiresImport(attributes);
-			return;
-		}
-		// If we get to this point, the element name is one we don't currently accept.
-		// Set the state to indicate that this element will be ignored
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(elementName);
-	}
-
-	public void handleRuntimeState(String elementName, Attributes attributes) {
-		if (elementName.equals(LIBRARY)) {
-			// Change State
-			stateStack.push(new Integer(RUNTIME_LIBRARY_STATE));
-			// Process library attributes
-			parseLibraryAttributes(attributes);
-			return;
-		}
-		// If we get to this point, the element name is one we don't currently accept.
-		// Set the state to indicate that this element will be ignored
-		stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		internalError(elementName);
-	}
-
-	private void logStatus(SAXParseException ex) {
-		String name = ex.getSystemId();
-		if (name == null)
-			name = ""; //$NON-NLS-1$ 
-		else
-			name = name.substring(1 + name.lastIndexOf("/")); //$NON-NLS-1$ 
-		String msg;
-		if (name.equals("")) //$NON-NLS-1$ 
-			msg = NLS.bind(EclipseAdaptorMsg.parse_error, ex.getMessage());
-		else
-			msg = NLS.bind(EclipseAdaptorMsg.parse_errorNameLineColumn, new String[] {name, Integer.toString(ex.getLineNumber()), Integer.toString(ex.getColumnNumber()), ex.getMessage()});
-
-		FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, msg, 0, ex, null);
-		adaptor.getFrameworkLog().log(entry);
-	}
-
-	synchronized public PluginInfo parsePlugin(InputStream in) throws Exception {
-		SAXParserFactory factory = acquireXMLParsing(context);
-		if (factory == null) {
-			FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, EclipseAdaptorMsg.ECLIPSE_CONVERTER_NO_SAX_FACTORY, 0, null, null);
-			adaptor.getFrameworkLog().log(entry);
-			return null;
-		}
-
-		factory.setNamespaceAware(true);
-		factory.setNamespaceAware(true);
-		try {
-			factory.setFeature("http://xml.org/sax/features/string-interning", true); //$NON-NLS-1$
-		} catch (SAXException se) {
-			// ignore; we can still operate without string-interning
-		}
-		factory.setValidating(false);
-		factory.newSAXParser().parse(in, this);
-		return manifestInfo;
-	}
-
-	public static SAXParserFactory acquireXMLParsing(BundleContext context) {
-		if (xmlTracker == null) {
-			xmlTracker = new ServiceTracker(context, "javax.xml.parsers.SAXParserFactory", null); //$NON-NLS-1$
-			xmlTracker.open();
-		}
-		SAXParserFactory result = (SAXParserFactory) xmlTracker.getService();
-		if (result != null)
-			return result;
-		// backup to using jaxp to create a new instance
-		return SAXParserFactory.newInstance();
-	}
-
-	public static void releaseXMLParsing() {
-		if (xmlTracker != null)
-			xmlTracker.close();
-	}
-
-	public void parseFragmentAttributes(Attributes attributes) {
-		// process attributes
-		objectStack.push(manifestInfo);
-		int len = attributes.getLength();
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-			if (attrName.equals(FRAGMENT_ID))
-				manifestInfo.pluginId = attrValue;
-			else if (attrName.equals(FRAGMENT_NAME))
-				manifestInfo.pluginName = attrValue;
-			else if (attrName.equals(FRAGMENT_VERSION))
-				manifestInfo.version = attrValue;
-			else if (attrName.equals(FRAGMENT_PROVIDER))
-				manifestInfo.vendor = attrValue;
-			else if (attrName.equals(FRAGMENT_PLUGIN_ID))
-				manifestInfo.masterPluginId = attrValue;
-			else if (attrName.equals(FRAGMENT_PLUGIN_VERSION))
-				manifestInfo.masterVersion = attrValue;
-			else if (attrName.equals(FRAGMENT_PLUGIN_MATCH))
-				manifestInfo.masterMatch = attrValue;
-		}
-	}
-
-	public void parseLibraryAttributes(Attributes attributes) {
-		// Push a vector to hold the export mask
-		objectStack.push(new Vector());
-		String current = attributes.getValue("", LIBRARY_NAME); //$NON-NLS-1$ 
-		objectStack.push(current);
-	}
-
-	public void parsePluginAttributes(Attributes attributes) {
-		// process attributes
-		objectStack.push(manifestInfo);
-		int len = attributes.getLength();
-		for (int i = 0; i < len; i++) {
-			String attrName = attributes.getLocalName(i);
-			String attrValue = attributes.getValue(i).trim();
-			if (attrName.equals(PLUGIN_ID))
-				manifestInfo.pluginId = attrValue;
-			else if (attrName.equals(PLUGIN_NAME))
-				manifestInfo.pluginName = attrValue;
-			else if (attrName.equals(PLUGIN_VERSION))
-				manifestInfo.version = attrValue;
-			else if (attrName.equals(PLUGIN_VENDOR) || (attrName.equals(PLUGIN_PROVIDER)))
-				manifestInfo.vendor = attrValue;
-			else if (attrName.equals(PLUGIN_CLASS))
-				manifestInfo.pluginClass = attrValue;
-		}
-	}
-
-	public class Prerequisite {
-		String name;
-		String version;
-		boolean optional;
-		boolean export;
-		String match;
-
-		public boolean isExported() {
-			return export;
-		}
-
-		public String getMatch() {
-			return match;
-		}
-
-		public String getName() {
-			return name;
-		}
-
-		public boolean isOptional() {
-			return optional;
-		}
-
-		public String getVersion() {
-			return version;
-		}
-
-		public Prerequisite(String preqName, String prereqVersion, boolean isOtional, boolean isExported, String prereqMatch) {
-			name = preqName;
-			version = prereqVersion;
-			optional = isOtional;
-			export = isExported;
-			match = prereqMatch;
-		}
-
-		public String toString() {
-			return name;
-		}
-
-		public boolean equals(Object prereq) {
-			if (!(prereq instanceof Prerequisite))
-				return false;
-			return name.equals(((Prerequisite) prereq).name);
-		}
-
-		public int hashCode() {
-			return name.hashCode();
-		}
-	}
-
-	public void parsePluginRequiresImport(Attributes attributes) {
-		if (manifestInfo.requires == null) {
-			manifestInfo.requires = new ArrayList();
-			// to avoid cycles
-			//			if (!manifestInfo.pluginId.equals(PluginConverterImpl.PI_RUNTIME))  //$NON-NLS-1$
-			//				manifestInfo.requires.add(new Prerequisite(PluginConverterImpl.PI_RUNTIME, null, false, false, null)); //$NON-NLS-1$
-		}
-		// process attributes
-		String plugin = attributes.getValue("", PLUGIN_REQUIRES_PLUGIN); //$NON-NLS-1$ 
-		if (plugin == null)
-			return;
-		if (plugin.equals(PluginConverterImpl.PI_BOOT))
-			return;
-		if (plugin.equals(PluginConverterImpl.PI_RUNTIME_COMPATIBILITY))
-			manifestInfo.compatibilityFound = true;
-		String version = attributes.getValue("", PLUGIN_REQUIRES_PLUGIN_VERSION); //$NON-NLS-1$ 
-		String optional = attributes.getValue("", PLUGIN_REQUIRES_OPTIONAL); //$NON-NLS-1$ 
-		String export = attributes.getValue("", PLUGIN_REQUIRES_EXPORT); //$NON-NLS-1$ 
-		String match = attributes.getValue("", PLUGIN_REQUIRES_MATCH); //$NON-NLS-1$
-		manifestInfo.requires.add(new Prerequisite(plugin, version, "true".equalsIgnoreCase(optional) ? true : false, "true".equalsIgnoreCase(export) ? true : false, match)); //$NON-NLS-1$  //$NON-NLS-2$
-	}
-
-	public void parseRequiresAttributes(Attributes attributes) {
-		//Nothing to do.
-	}
-
-	static String replace(String s, String from, String to) {
-		String str = s;
-		int fromLen = from.length();
-		int toLen = to.length();
-		int ix = str.indexOf(from);
-		while (ix != -1) {
-			str = str.substring(0, ix) + to + str.substring(ix + fromLen);
-			ix = str.indexOf(from, ix + toLen);
-		}
-		return str;
-	}
-
-	public void startDocument() {
-		stateStack.push(new Integer(INITIAL_STATE));
-	}
-
-	public void startElement(String uri, String elementName, String qName, Attributes attributes) {
-		switch (((Integer) stateStack.peek()).intValue()) {
-			case INITIAL_STATE :
-				handleInitialState(elementName, attributes);
-				break;
-			case FRAGMENT_STATE :
-			case PLUGIN_STATE :
-				handlePluginState(elementName, attributes);
-				break;
-			case PLUGIN_RUNTIME_STATE :
-				handleRuntimeState(elementName, attributes);
-				break;
-			case PLUGIN_REQUIRES_STATE :
-				handleRequiresState(elementName, attributes);
-				break;
-			case PLUGIN_EXTENSION_POINT_STATE :
-				handleExtensionPointState(elementName, attributes);
-				break;
-			case PLUGIN_EXTENSION_STATE :
-				handleExtensionState(elementName, attributes);
-				break;
-			case RUNTIME_LIBRARY_STATE :
-				handleLibraryState(elementName, attributes);
-				break;
-			case LIBRARY_EXPORT_STATE :
-				handleLibraryExportState(elementName, attributes);
-				break;
-			case PLUGIN_REQUIRES_IMPORT_STATE :
-				handleRequiresImportState(elementName, attributes);
-				break;
-			default :
-				stateStack.push(new Integer(IGNORED_ELEMENT_STATE));
-		}
-	}
-
-	public void warning(SAXParseException ex) {
-		logStatus(ex);
-	}
-
-	private void internalError(String elementName) {
-		FrameworkLogEntry error;
-		String message = NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_PARSE_UNKNOWNTOP_ELEMENT, elementName);
-		error = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, (manifestInfo.pluginId == null ? message : "Plug-in : " + manifestInfo.pluginId + ", " + message), 0, null, null); //$NON-NLS-1$ //$NON-NLS-2$
-		adaptor.getFrameworkLog().log(error);
-	}
-
-	public void processingInstruction(String target, String data) throws SAXException {
-		// Since 3.0, a processing instruction of the form <?eclipse version="3.0"?> at
-		// the start of the manifest file is used to indicate the plug-in manifest
-		// schema version in effect. Pre-3.0 (i.e., 2.1) plug-in manifest files do not
-		// have one of these, and this is how we can distinguish the manifest of a
-		// pre-3.0 plug-in from a post-3.0 one (for compatibility tranformations).
-		if (target.equalsIgnoreCase("eclipse")) { //$NON-NLS-1$ 
-			// just the presence of this processing instruction indicates that this
-			// plug-in is at least 3.0
-			manifestInfo.schemaVersion = "3.0"; //$NON-NLS-1$ 
-			StringTokenizer tokenizer = new StringTokenizer(data, "=\""); //$NON-NLS-1$ 
-			while (tokenizer.hasMoreTokens()) {
-				String token = tokenizer.nextToken();
-				if (token.equalsIgnoreCase("version")) { //$NON-NLS-1$ 
-					if (!tokenizer.hasMoreTokens()) {
-						break;
-					}
-					manifestInfo.schemaVersion = tokenizer.nextToken();
-					break;
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/Semaphore.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/Semaphore.java
deleted file mode 100644
index 0ef4bff..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/Semaphore.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.internal.adaptor;
-
-/**
- * Internal class.
- */
-public class Semaphore {
-	protected long notifications;
-
-	public Semaphore(int count) {
-		notifications = count;
-	}
-
-	/**
-	 * Attempts to acquire this semaphore.  Returns only when the semaphore has been acquired.
-	 */
-	public synchronized void acquire() {
-		while (true) {
-			if (notifications > 0) {
-				notifications--;
-				return;
-			}
-			try {
-				wait();
-			} catch (InterruptedException e) {
-				//Ignore
-			}
-		}
-	}
-
-	/**
-	 * Attempts to acquire this semaphore.  Returns true if it was successfully acquired,
-	 * and false otherwise.
-	 */
-	public synchronized boolean acquire(long delay) {
-		long start = System.currentTimeMillis();
-		long timeLeft = delay;
-		while (true) {
-			if (notifications > 0) {
-				notifications--;
-				return true;
-			}
-			if (timeLeft <= 0)
-				return false;
-			try {
-				wait(timeLeft);
-			} catch (InterruptedException e) {
-				//Ignore
-			}
-			timeLeft = start + delay - System.currentTimeMillis();
-		}
-	}
-
-	public synchronized void release() {
-		notifications++;
-		notifyAll();
-	}
-
-	// for debug only
-	public String toString() {
-		return "Semaphore(" + notifications + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/URLConverterImpl.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/URLConverterImpl.java
deleted file mode 100644
index c197861..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/URLConverterImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import org.eclipse.osgi.framework.internal.core.BundleURLConnection;
-import org.eclipse.osgi.service.urlconversion.URLConverter;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * The service implementation that allows bundleresource or bundleentry
- * URLs to be converted to native file URLs on the local file system.
- * 
- * <p>Internal class.</p>
- */
-public class URLConverterImpl implements URLConverter {
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.osgi.service.urlconversion.URLConverter#toFileURL(java.net.URL)
-	 */
-	public URL toFileURL(URL url) throws IOException {
-		URLConnection connection = url.openConnection();
-		if (connection instanceof BundleURLConnection) {
-			URL result = ((BundleURLConnection) connection).getFileURL();
-			/* If we got a connection then we know the resource exists in
-			 * the bundle but if connection.getFileURL returned null then there
-			 * was a problem extracting the file to disk. See bug 259241.
-			 **/
-			if (result == null)
-				throw new IOException(NLS.bind(EclipseAdaptorMsg.ECLIPSE_PLUGIN_EXTRACTION_PROBLEM, url));
-			return result;
-		}
-		return url;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.osgi.service.urlconversion.URLConverter#resolve(java.net.URL)
-	 */
-	public URL resolve(URL url) throws IOException {
-		URLConnection connection = url.openConnection();
-		if (connection instanceof BundleURLConnection)
-			return ((BundleURLConnection) connection).getLocalURL();
-		return url;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/BundleStats.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/BundleStats.java
deleted file mode 100644
index ba6c018..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/BundleStats.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.internal.stats;
-
-import java.util.ArrayList;
-
-/**
- * Contains information about activated bundles and acts as the main 
- * entry point for logging bundle activity.
- */
-
-public class BundleStats {
-	public String symbolicName;
-	public long id;
-	public int activationOrder;
-	private long timestamp; //timeStamp at which this bundle has been activated
-	private boolean duringStartup; // indicate if the bundle has been activated during startup
-	private long startupTime; // the time took by the bundle to startup
-	private long startupMethodTime; // the time took to run the startup method
-
-	// Indicate the position of the activation trace in the file
-	private long traceStart = -1;
-	private long traceEnd = -1;
-
-	//To keep bundle parentage
-	private ArrayList bundlesActivated = new ArrayList(3); // TODO create lazily
-	private BundleStats activatedBy = null;
-
-	public BundleStats(String name, long id) {
-		this.symbolicName = name;
-		this.id = id;
-	}
-
-	public long getTimestamp() {
-		return timestamp;
-	}
-
-	public int getActivationOrder() {
-		return activationOrder;
-	}
-
-	protected void activated(BundleStats info) {
-		bundlesActivated.add(info);
-	}
-
-	public BundleStats getActivatedBy() {
-		return activatedBy;
-	}
-
-	public long getId() {
-		return id;
-	}
-
-	public String getSymbolicName() {
-		return symbolicName;
-	}
-
-	public long getStartupTime() {
-		return startupTime;
-	}
-
-	public long getStartupMethodTime() {
-		return startupMethodTime;
-	}
-
-	public boolean isStartupBundle() {
-		return duringStartup;
-	}
-
-	public int getClassLoadCount() {
-		if (!StatsManager.MONITOR_CLASSES)
-			return 0;
-		ClassloaderStats loader = ClassloaderStats.getLoader(symbolicName);
-		return loader == null ? 0 : loader.getClassLoadCount();
-	}
-
-	public long getClassLoadTime() {
-		if (!StatsManager.MONITOR_CLASSES)
-			return 0;
-		ClassloaderStats loader = ClassloaderStats.getLoader(symbolicName);
-		return loader == null ? 0 : loader.getClassLoadTime();
-	}
-
-	public ArrayList getBundlesActivated() {
-		return bundlesActivated;
-	}
-
-	public long getTraceStart() {
-		return traceStart;
-	}
-
-	public long getTraceEnd() {
-		return traceEnd;
-	}
-
-	protected void setTimestamp(long value) {
-		timestamp = value;
-	}
-
-	protected void setActivationOrder(int value) {
-		activationOrder = value;
-	}
-
-	protected void setTraceStart(long time) {
-		traceStart = time;
-	}
-
-	protected void setDuringStartup(boolean value) {
-		duringStartup = value;
-	}
-
-	protected void endActivation() {
-		startupTime = System.currentTimeMillis() - timestamp;
-	}
-
-	protected void setTraceEnd(long position) {
-		traceEnd = position;
-	}
-
-	protected void setActivatedBy(BundleStats value) {
-		activatedBy = value;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassStats.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassStats.java
deleted file mode 100644
index 60a9701..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassStats.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.internal.stats;
-
-import java.util.ArrayList;
-
-/**
- * Maintain statistics about a loaded class.
- */
-public class ClassStats {
-	private String className; // fully qualified name of this class 
-	private ClassloaderStats classloader; // the classloader that loaded this class
-	private int loadOrder = -1;
-
-	private long timestamp; // time at which this class was loaded
-	private long timeLoading; // time to load the class
-	private long timeLoadingOthers = 0; // time spent loading classes which has been triggered by this class  
-
-	// parentage of classes loaded
-	private ClassStats loadedBy = null; // a reference to the class that loaded this class
-	private ArrayList loaded = new ArrayList(2); // a reference to the classes that this class loaded
-
-	private boolean duringStartup; // indicate if the class was loaded during platform startup
-
-	//information to retrieve the stacktrace from the file
-	private long traceStart = -1;
-	private long traceEnd = -1;
-
-	public ClassStats(String name, ClassloaderStats classloader) {
-		className = name;
-		timestamp = System.currentTimeMillis();
-		duringStartup = StatsManager.isBooting();
-		this.classloader = classloader;
-	}
-
-	public void setLoadOrder(int order) {
-		loadOrder = order;
-	}
-
-	public void loadingDone() {
-		timeLoading = System.currentTimeMillis() - timestamp;
-	}
-
-	public long getTimeLoading() {
-		return timeLoading;
-	}
-
-	public long getLocalTimeLoading() {
-		return timeLoading - timeLoadingOthers;
-	}
-
-	public void addTimeLoadingOthers(long time) {
-		timeLoadingOthers = timeLoadingOthers + time;
-	}
-
-	public long getTraceStart() {
-		return traceStart;
-	}
-
-	public long getTraceEnd() {
-		return traceEnd;
-	}
-
-	public void setTraceStart(long position) {
-		traceStart = position;
-	}
-
-	public void setTraceEnd(long position) {
-		traceEnd = position;
-	}
-
-	public void loaded(ClassStats child) {
-		loaded.add(child);
-	}
-
-	public void setLoadedBy(ClassStats parent) {
-		loadedBy = parent;
-	}
-
-	public ClassStats getLoadedBy() {
-		return loadedBy;
-	}
-
-	public ArrayList getLoadedClasses() {
-		return loaded;
-	}
-
-	public String getClassName() {
-		return className;
-	}
-
-	public boolean isStartupClass() {
-		return duringStartup;
-	}
-
-	public ClassloaderStats getClassloader() {
-		return classloader;
-	}
-
-	public int getLoadOrder() {
-		return loadOrder;
-	}
-
-	public long getTimestamp() {
-		return timestamp;
-	}
-
-	public void toBaseClass() {
-		duringStartup = true;
-		loadOrder = -2;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassloaderStats.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassloaderStats.java
deleted file mode 100644
index 0e9f781..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ClassloaderStats.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.stats;
-
-import java.io.*;
-import java.util.*;
-
-/**
- * Contains information about the classes and the bundles loaded by a given classloader. Typically there is one classloader per plugin so at levels above boot, this equates to information about
- * classes and bundles in a plugin.
- */
-public class ClassloaderStats {
-	private String id;
-	private long loadingTime; // time spent loading classes
-	private int failureCount = 0; // number of classes requested but that we fail to provide
-	/**
-	 * classes loaded by the plugin (key: class name, value: ClassStats) 
-	 */
-	private Map classes = Collections.synchronizedMap(new HashMap(20));
-	private ArrayList bundles = new ArrayList(2); // bundles loaded
-
-	private boolean keepTraces = false; // indicate whether or not the traces of classes loaded are kept
-
-	// filters to indicate which classes we want to keep the traces
-	private static ArrayList packageFilters = new ArrayList(4); // filters on a package basis 
-	private static Set pluginFilters = new HashSet(5); // filters on a plugin basis
-
-	private static Hashtable classStacks = new Hashtable(); // represents the classes that are currently being loaded
-	/**
-	 * a dictionary of the classloaderStats (key: pluginId, value: ClassloaderStats) 
-	 */
-	private static Map loaders = Collections.synchronizedMap(new HashMap(20));
-	public static File traceFile;
-
-	static {
-		if (StatsManager.TRACE_CLASSES || StatsManager.TRACE_BUNDLES)
-			initializeTraceOptions();
-	}
-
-	private static void initializeTraceOptions() {
-		// create the trace file
-		String filename = StatsManager.TRACE_FILENAME;
-		traceFile = new File(filename);
-		traceFile.delete();
-
-		//load the filters
-		if (!StatsManager.TRACE_CLASSES)
-			return;
-		filename = StatsManager.TRACE_FILTERS;
-		if (filename == null || filename.length() == 0)
-			return;
-		try {
-			File filterFile = new File(filename);
-			System.out.print("Runtime tracing elements defined in: " + filterFile.getAbsolutePath() + "..."); //$NON-NLS-1$ //$NON-NLS-2$
-			InputStream input = new FileInputStream(filterFile);
-			System.out.println("  Loaded."); //$NON-NLS-1$
-			Properties filters = new Properties() {
-				private static final long serialVersionUID = 3546359543853365296L;
-
-				public synchronized Object put(Object key, Object value) {
-					addFilters((String) key, (String) value);
-					return null;
-				}
-			};
-			try {
-				filters.load(input);
-			} finally {
-				input.close();
-			}
-		} catch (IOException e) {
-			System.out.println("  No trace filters loaded."); //$NON-NLS-1$
-		}
-	}
-
-	protected static void addFilters(String key, String value) {
-		String[] filters = StatsManager.getArrayFromList(value);
-		if ("plugins".equals(key)) //$NON-NLS-1$
-			pluginFilters.addAll(Arrays.asList(filters));
-		if ("packages".equals(key)) //$NON-NLS-1$
-			packageFilters.addAll(Arrays.asList(filters));
-	}
-
-	public static void startLoadingClass(String id, String className) {
-		findLoader(id).startLoadClass(className);
-	}
-
-	// get and create if does not exist
-	private static ClassloaderStats findLoader(String id) {
-		synchronized (loaders) {
-			ClassloaderStats result = (ClassloaderStats) loaders.get(id);
-			if (result == null) {
-				result = new ClassloaderStats(id);
-				loaders.put(id, result);
-			}
-			return result;
-		}
-	}
-
-	public static synchronized Stack getClassStack() {
-		Stack result = (Stack) classStacks.get(Thread.currentThread());
-		if (result == null) {
-			result = new Stack();
-			classStacks.put(Thread.currentThread(), result);
-		}
-		return result;
-	}
-
-	public static ClassloaderStats[] getLoaders() {
-		//the parameter to toArray is of size zero for thread safety, otherwise this
-		//could return an array with null entries if the map shrinks concurrently
-		return (ClassloaderStats[]) loaders.values().toArray(new ClassloaderStats[0]);
-	}
-
-	public static void endLoadingClass(String id, String className, boolean success) {
-		findLoader(id).endLoadClass(className, success);
-	}
-
-	public static void loadedBundle(String id, ResourceBundleStats info) {
-		findLoader(id).loadedBundle(info);
-	}
-
-	public static ClassloaderStats getLoader(String id) {
-		return (ClassloaderStats) loaders.get(id);
-	}
-
-	public ClassloaderStats(String id) {
-		this.id = id;
-		keepTraces = pluginFilters.contains(id);
-	}
-
-	public void addBaseClasses(String[] baseClasses) {
-		for (int i = 0; i < baseClasses.length; i++) {
-			String name = baseClasses[i];
-			if (classes.get(name) == null) {
-				ClassStats value = new ClassStats(name, this);
-				value.toBaseClass();
-				classes.put(name, value);
-			}
-		}
-	}
-
-	private void loadedBundle(ResourceBundleStats bundle) {
-		bundles.add(bundle);
-	}
-
-	public ArrayList getBundles() {
-		return bundles;
-	}
-
-	private synchronized void startLoadClass(String name) {
-		getClassStack().push(findClass(name));
-	}
-
-	// internal method that return the existing classStats or creates one
-	private ClassStats findClass(String name) {
-		ClassStats result = (ClassStats) classes.get(name);
-		return result == null ? new ClassStats(name, this) : result;
-	}
-
-	private synchronized void endLoadClass(String name, boolean success) {
-		ClassStats current = (ClassStats) getClassStack().pop();
-		if (!success) {
-			failureCount++;
-			return;
-		}
-		if (current.getLoadOrder() >= 0)
-			return;
-
-		classes.put(name, current);
-		current.setLoadOrder(classes.size());
-		current.loadingDone();
-		traceLoad(name, current);
-
-		// is there something on the load stack. if so, link them together...
-		Stack classStack = getClassStack();
-		if (classStack.size() != 0) {
-			// get the time spent loading cli and subtract its load time from the class that requires loading
-			ClassStats previous = ((ClassStats) classStack.peek());
-			previous.addTimeLoadingOthers(current.getTimeLoading());
-			current.setLoadedBy(previous);
-			previous.loaded(current);
-		} else {
-			loadingTime = loadingTime + current.getTimeLoading();
-		}
-	}
-
-	private void traceLoad(String name, ClassStats target) {
-		// Stack trace code
-		if (!keepTraces) {
-			boolean found = false;
-			for (int i = 0; !found && i < packageFilters.size(); i++)
-				if (name.startsWith((String) packageFilters.get(i)))
-					found = true;
-			if (!found)
-				return;
-		}
-
-		// Write the stack trace. The position in the file are set to the corresponding classStat object
-		try {
-			target.setTraceStart(traceFile.length());
-			PrintWriter output = new PrintWriter(new FileOutputStream(traceFile.getAbsolutePath(), true));
-			try {
-				output.println("Loading class: " + name); //$NON-NLS-1$
-				output.println("Class loading stack:"); //$NON-NLS-1$
-				output.println("\t" + name); //$NON-NLS-1$
-				Stack classStack = getClassStack();
-				for (int i = classStack.size() - 1; i >= 0; i--)
-					output.println("\t" + ((ClassStats) classStack.get(i)).getClassName()); //$NON-NLS-1$
-				output.println("Stack trace:"); //$NON-NLS-1$
-				new Throwable().printStackTrace(output);
-			} finally {
-				output.close();
-			}
-			target.setTraceEnd(traceFile.length());
-		} catch (FileNotFoundException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public int getClassLoadCount() {
-		return classes.size();
-	}
-
-	public long getClassLoadTime() {
-		return loadingTime;
-	}
-
-	public ClassStats[] getClasses() {
-		//the parameter to toArray is of size zero for thread safety, otherwise this
-		//could return an array with null entries if the map shrinks concurrently
-		return (ClassStats[]) classes.values().toArray(new ClassStats[0]);
-	}
-
-	public String getId() {
-		return id;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ResourceBundleStats.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ResourceBundleStats.java
deleted file mode 100644
index e338e50..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/ResourceBundleStats.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.internal.stats;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.*;
-
-/**
- * BundleStats is used to represent information about loaded bundle. A
- * bundlestats instance represents only one bundle.
- */
-
-public class ResourceBundleStats {
-	private String pluginId; // the plugin loading this bundle
-	private String fileName; // the filename of the bundle 
-	private int keyCount = 0; // number of keys in the bundle
-	private int keySize = 0; // size of the keys in the bundle
-	private int valueSize = 0; // size of the values in the bundle 
-	private long hashSize = 0; // size of the hashtable
-	private long fileSize = 0;
-
-	private static int sizeOf(String value) {
-		return 44 + (2 * value.length());
-	}
-
-	private static int sizeOf(Properties value) {
-		return (int) Math.round(44 + (16 + (value.size() * 1.25 * 4)) + (24 * value.size()));
-	}
-
-	public ResourceBundleStats(String pluginId, String fileName, URL input) {
-		this.pluginId = pluginId;
-		this.fileName = fileName;
-		initialize(input);
-	}
-
-	public ResourceBundleStats(String pluginId, String fileName, ResourceBundle bundle) {
-		this.pluginId = pluginId;
-		this.fileName = fileName;
-		initialize(bundle);
-	}
-
-	/**
-	 * Compute the size of bundle
-	 */
-	private void initialize(ResourceBundle bundle) {
-		for (Enumeration keys = bundle.getKeys(); keys.hasMoreElements();) {
-			String key = (String) keys.nextElement();
-			keySize += sizeOf(key);
-			valueSize += sizeOf(bundle.getString(key));
-			keyCount++;
-		}
-	}
-
-	/**
-	 * Compute the size of stream which represents a property file
-	 */
-	private void initialize(URL url) {
-		InputStream stream = null;
-		Properties props = new Properties();
-		try {
-			try {
-				stream = url.openStream();
-				fileSize = stream.available();
-				props.load(stream);
-				for (Iterator iter = props.keySet().iterator(); iter.hasNext();) {
-					String key = (String) iter.next();
-					keySize += sizeOf(key);
-					valueSize += sizeOf(props.getProperty(key));
-					keyCount++;
-				}
-				hashSize = sizeOf(props);
-			} finally {
-				if (stream != null)
-					stream.close();
-			}
-		} catch (IOException e) {
-			// ignore exceptions as they will be handled when the stream 
-			// is loaded for real.   See callers.
-		}
-	}
-
-	public long getHashSize() {
-		return hashSize;
-	}
-
-	public int getKeyCount() {
-		return keyCount;
-	}
-
-	public String getPluginId() {
-		return pluginId;
-	}
-
-	public int getKeySize() {
-		return keySize;
-	}
-
-	public int getValueSize() {
-		return valueSize;
-	}
-
-	public long getTotalSize() {
-		return keySize + valueSize + hashSize;
-	}
-
-	public String getFileName() {
-		return fileName;
-	}
-
-	public long getFileSize() {
-		return fileSize;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/StatsManager.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/StatsManager.java
deleted file mode 100644
index 250ff9b..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/stats/StatsManager.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.stats;
-
-import java.io.*;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.HookConfigurator;
-import org.eclipse.osgi.baseadaptor.HookRegistry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.hooks.ClassLoadingStatsHook;
-import org.eclipse.osgi.baseadaptor.loader.ClasspathEntry;
-import org.eclipse.osgi.baseadaptor.loader.ClasspathManager;
-import org.eclipse.osgi.framework.adaptor.BundleWatcher;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.Bundle;
-
-public class StatsManager implements BundleWatcher, HookConfigurator, ClassLoadingStatsHook {
-	// This connect bundles and their info, and so allows to access the info without running through
-	// the bundle registry. This map only contains activated bundles. The key is the bundle Id
-	private Hashtable bundles = new Hashtable(20);
-	private Map activationStacks = new HashMap(5);
-	private static boolean booting = true; // the state of the platform. This value is changed by the InternalPlatform itself.
-
-	private static StatsManager defaultInstance;
-
-	public static boolean MONITOR_ACTIVATION = false;
-	public static boolean MONITOR_CLASSES = false;
-	public static boolean MONITOR_RESOURCES = false;
-	public static String TRACE_FILENAME = "runtime.traces"; //$NON-NLS-1$
-	public static String TRACE_FILTERS = "trace.properties"; //$NON-NLS-1$
-	public static boolean TRACE_CLASSES = false;
-	public static boolean TRACE_BUNDLES = false;
-	public static final String FRAMEWORK_SYMBOLICNAME = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	//Option names for spies
-	private static final String OPTION_MONITOR_ACTIVATION = FRAMEWORK_SYMBOLICNAME + "/monitor/activation"; //$NON-NLS-1$
-	private static final String OPTION_MONITOR_CLASSES = FRAMEWORK_SYMBOLICNAME + "/monitor/classes"; //$NON-NLS-1$
-	private static final String OPTION_MONITOR_RESOURCES = FRAMEWORK_SYMBOLICNAME + "/monitor/resources"; //$NON-NLS-1$
-	private static final String OPTION_TRACE_BUNDLES = FRAMEWORK_SYMBOLICNAME + "/trace/activation"; //$NON-NLS-1$
-	private static final String OPTION_TRACE_CLASSES = FRAMEWORK_SYMBOLICNAME + "/trace/classLoading"; //$NON-NLS-1$
-	private static final String OPTION_TRACE_FILENAME = FRAMEWORK_SYMBOLICNAME + "/trace/filename"; //$NON-NLS-1$
-	private static final String OPTION_TRACE_FILTERS = FRAMEWORK_SYMBOLICNAME + "/trace/filters"; //$NON-NLS-1$
-
-	static {
-		setDebugOptions();
-	}
-
-	public static StatsManager getDefault() {
-		if (defaultInstance == null) {
-			defaultInstance = new StatsManager();
-			defaultInstance.initialize();
-		}
-		return defaultInstance;
-	}
-
-	public static void setDebugOptions() {
-		FrameworkDebugOptions options = FrameworkDebugOptions.getDefault();
-		// may be null if debugging is not enabled
-		if (options == null)
-			return;
-		MONITOR_ACTIVATION = options.getBooleanOption(OPTION_MONITOR_ACTIVATION, false);
-		MONITOR_CLASSES = options.getBooleanOption(OPTION_MONITOR_CLASSES, false);
-		MONITOR_RESOURCES = options.getBooleanOption(OPTION_MONITOR_RESOURCES, false);
-		TRACE_CLASSES = options.getBooleanOption(OPTION_TRACE_CLASSES, false);
-		TRACE_BUNDLES = options.getBooleanOption(OPTION_TRACE_BUNDLES, false);
-		TRACE_FILENAME = options.getOption(OPTION_TRACE_FILENAME, TRACE_FILENAME);
-		TRACE_FILTERS = options.getOption(OPTION_TRACE_FILTERS, TRACE_FILTERS);
-	}
-
-	public static void doneBooting() {
-		booting = false;
-	}
-
-	public static boolean isBooting() {
-		return booting;
-	}
-
-	/**
-	 * 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) {
-		return ManifestElement.getArrayFromList(prop, ","); //$NON-NLS-1$
-	}
-
-	private void initialize() {
-		// add the system bundle
-		BundleStats bundle = findBundle(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, 0);
-		bundle.setTimestamp(System.currentTimeMillis());
-		bundle.setActivationOrder(bundles.size());
-		bundle.setDuringStartup(booting);
-	}
-
-	public void watchBundle(Bundle bundle, int type) {
-		switch (type) {
-			case BundleWatcher.START_ACTIVATION :
-				startActivation(bundle);
-				break;
-			case BundleWatcher.END_ACTIVATION :
-				endActivation(bundle);
-				break;
-		}
-	}
-
-	public void startActivation(Bundle bundle) {
-		// should be called from a synchronized location to protect against concurrent updates
-		BundleStats info = findBundle(bundle.getSymbolicName(), bundle.getBundleId());
-		info.setTimestamp(System.currentTimeMillis());
-		info.setActivationOrder(bundles.size());
-		info.setDuringStartup(booting);
-
-		Stack activationStack = (Stack) activationStacks.get(Thread.currentThread());
-		if (activationStack == null) {
-			activationStack = new Stack();
-			activationStacks.put(Thread.currentThread(), activationStack);
-		}
-
-		// set the parentage of activation
-		if (activationStack.size() != 0) {
-			BundleStats activatedBy = (BundleStats) activationStack.peek();
-			activatedBy.activated(info);
-			info.setActivatedBy(activatedBy);
-		}
-		activationStack.push(info);
-
-		if (TRACE_BUNDLES == true) {
-			traceActivate(bundle, info);
-		}
-	}
-
-	public void endActivation(Bundle symbolicName) {
-		Stack activationStack = (Stack) activationStacks.get(Thread.currentThread());
-		// should be called from a synchronized location to protect against concurrent updates
-		BundleStats info = (BundleStats) activationStack.pop();
-		info.endActivation();
-	}
-
-	private void traceActivate(Bundle bundle, BundleStats info) {
-		try {
-			PrintWriter output = new PrintWriter(new FileOutputStream(ClassloaderStats.traceFile.getAbsolutePath(), true));
-			try {
-				long startPosition = ClassloaderStats.traceFile.length();
-				output.println("Activating bundle: " + bundle.getSymbolicName()); //$NON-NLS-1$
-				output.println("Bundle activation stack:"); //$NON-NLS-1$
-				Stack activationStack = (Stack) activationStacks.get(Thread.currentThread());
-				for (int i = activationStack.size() - 1; i >= 0; i--)
-					output.println("\t" + ((BundleStats) activationStack.get(i)).getSymbolicName()); //$NON-NLS-1$
-				output.println("Class loading stack:"); //$NON-NLS-1$
-				Stack classStack = ClassloaderStats.getClassStack();
-				for (int i = classStack.size() - 1; i >= 0; i--)
-					output.println("\t" + ((ClassStats) classStack.get(i)).getClassName()); //$NON-NLS-1$
-				output.println("Stack trace:"); //$NON-NLS-1$
-				new Throwable().printStackTrace(output);
-				info.setTraceStart(startPosition);
-			} finally {
-				output.close();
-				info.setTraceEnd(ClassloaderStats.traceFile.length());
-			}
-		} catch (IOException e) {
-			e.printStackTrace();
-		}
-	}
-
-	public BundleStats findBundle(String symbolicName, long id) {
-		BundleStats result = (BundleStats) bundles.get(new Long(id));
-		try {
-			if (result == null) {
-				result = new BundleStats(symbolicName, id);
-				bundles.put(new Long(id), result);
-			}
-		} catch (IllegalAccessError e) {
-			e.printStackTrace();
-		}
-		return result;
-	}
-
-	public BundleStats[] getBundles() {
-		return (BundleStats[]) bundles.values().toArray(new BundleStats[bundles.size()]);
-	}
-
-	public BundleStats getBundle(long id) {
-		return (BundleStats) bundles.get(new Long(id));
-	}
-
-	public void preFindLocalClass(String name, ClasspathManager manager) throws ClassNotFoundException {
-		if (StatsManager.MONITOR_CLASSES) //Support for performance analysis
-			ClassloaderStats.startLoadingClass(getClassloaderId(manager), name);
-	}
-
-	public void postFindLocalClass(String name, Class clazz, ClasspathManager manager) {
-		if (StatsManager.MONITOR_CLASSES)
-			ClassloaderStats.endLoadingClass(getClassloaderId(manager), name, clazz != null);
-	}
-
-	public void preFindLocalResource(String name, ClasspathManager manager) {
-		// do nothing
-	}
-
-	public void postFindLocalResource(String name, URL resource, ClasspathManager manager) {
-		if (StatsManager.MONITOR_RESOURCES)
-			if (resource != null && name.endsWith(".properties")) //$NON-NLS-1$
-				ClassloaderStats.loadedBundle(getClassloaderId(manager), new ResourceBundleStats(getClassloaderId(manager), name, resource));
-		return;
-	}
-
-	public void recordClassDefine(String name, Class clazz, byte[] classbytes, ClasspathEntry classpathEntry, BundleEntry entry, ClasspathManager manager) {
-		// do nothing
-	}
-
-	private String getClassloaderId(ClasspathManager loader) {
-		return loader.getBaseData().getSymbolicName();
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		if (Debug.MONITOR_ACTIVATION)
-			hookRegistry.addWatcher(StatsManager.getDefault());
-		if (StatsManager.MONITOR_CLASSES || StatsManager.MONITOR_RESOURCES)
-			hookRegistry.addClassLoadingStatsHook(StatsManager.getDefault());
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConversionException.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConversionException.java
deleted file mode 100644
index 6aa16c0..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConversionException.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.pluginconversion;
-
-/**
- * Custom exception for errors that can happen during plugin conversion.
- * 
- * @since 3.0
- */
-public class PluginConversionException extends Exception {
-	private static final long serialVersionUID = 3258130258472284472L;
-
-	/**
-	 * Nested exception.
-	 */
-	private transient Throwable cause;
-
-	/**
-	 * Constructor for the class.
-	 */
-	public PluginConversionException() {
-		super();
-	}
-
-	/**
-	 * Create a new exception with the given message.
-	 * 
-	 * @param message the message for the exception
-	 */
-	public PluginConversionException(String message) {
-		super(message);
-	}
-
-	/**
-	 * Create a new exception with the given message and nested exception.
-	 * 
-	 * @param message the message for the exception
-	 * @param cause the nested exception
-	 */
-	public PluginConversionException(String message, Throwable cause) {
-		super(message);
-		this.cause = cause;
-	}
-
-	/**
-	 * Create a new exception with the given nested exception.
-	 * 
-	 * @param cause the nested exception
-	 */
-	public PluginConversionException(Throwable cause) {
-		this.cause = cause;
-	}
-
-	/**
-	 * Return the nested exception for this exception or <code>null</code>
-	 * if there is none.
-	 * 
-	 * @return the nested exception or <code>null</code>
-	 */
-	public Throwable getCause() {
-		return cause;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConverter.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConverter.java
deleted file mode 100644
index 3e21ac6..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/pluginconversion/PluginConverter.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.pluginconversion;
-
-import java.io.File;
-import java.util.Dictionary;
-
-/**
- * A plug-in convertor is able to convert plug-in manifest files (<tt>plugin.xml</tt>) and
- * fragment manifest files (<tt>fragment.xml</tt>) to bundle manifest files (<tt>MANIFEST.MF</tt>).
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.0
- */
-public interface PluginConverter {
-	/**
-	 * Converts a plug-in/fragment manifest at the given source base location (a directory) and 
-	 * generates a corresponding bundle manifest at the given default target locaton (a file).
-	 * 
-	 * @param pluginBaseLocation the base location for the plug-in/fragment manifest to be converted
-	 * 	(a directory, e.g. the plug-in install location)
-	 * @param bundleManifestLocation the location for the bundle manifest to be generated
-	 * 	(including the file name). 
-	 * @param compatibilityManifest a boolean indicating if the manifest should contain headers to run  
-	 * 	in backward compatibility
-	 * @param target a string indicating the version of the runtime for which the manifest generated is targeted 
-	 * @param analyseJars a boolean indicating if the code jars of the given plugin must be analysed. When set to false the Export-Package header will not be set in the bundle manifest.
-	 * @param devProperties a dictionary of development time classpath properties.  The dictionary contains a mapping from plugin id to development 
-	 * 	time classpath.  A value of <code>null</code> indicates that the default development time classpath properties will be used.
-	 * @return the generated manifest file location, if a bundle manifest was successfully 
-	 * 	generated (or already existed), <code>null</code> otherwise.
-	 * @throws PluginConversionException if an error occurs while converting the manifest
-	 */
-	public File convertManifest(File pluginBaseLocation, File bundleManifestLocation, boolean compatibilityManifest, String target, boolean analyseJars, Dictionary devProperties) throws PluginConversionException;
-
-	/**
-	 * Converts a plug-in/fragment manifest at the given source base location (a directory) and 
-	 * generates a corresponding bundle manifest returned as a dictionary.
-	 * 
-	 * @param pluginBaseLocation the base location for the plug-in/fragment manifest to be converted
-	 * 	(a directory, e.g. the plug-in install location)
-	 * @param compatibility a boolean indicating if the manifest should contain headers to run  
-	 * 	in backward compatibility
-	 * @param target a string indicating the version of the runtime for which the manifest generated is targeted
-	 * @param analyseJars a boolean indicating if the code jars of the given plugin must be analysed. When set to false the Export-Package header will not be set in the bundle manifest.
-	 * @param devProperties a dictionary of development time classpath properties.  The dictionary contains a mapping from plugin id to development 
-	 * 	time classpath.  A value of <code>null</code> indicates that the default development time classpath properties will be used.
-	 * @return the generated manifest as a dictionary,  if a bundle manifest was successfully 
-	 * 	generated, <code>null</code> otherwise
-	 * @throws PluginConversionException if an error occurs while converting the manifest
-	 */
-	public Dictionary convertManifest(File pluginBaseLocation, boolean compatibility, String target, boolean analyseJars, Dictionary devProperties) throws PluginConversionException;
-
-	/**
-	 * Construct a bundle manifest file from the given dictionary and write it out to the 
-	 * specified location in the file system. 
-	 * <p>
-	 * If the <code>compatibilityManifest</code> parameter is <code>true</code> then 
-	 * the generated manifest will include the necessary headers to all the manifest to be
-	 * run in backwards compatibility mode. 
-	 * </p>
-	 * 
-	 * @param generationLocation the location for the bundle manifest to be written
-	 * @param manifestToWrite the dictionary to write into generationLocation file 
-	 * @param compatibilityManifest a boolean indicating if the file should contain headers to allow 
-	 * 	running in backward compatibility mode
-	 * @throws PluginConversionException if an error occurs while writing the given manifest
-	 */
-	public void writeManifest(File generationLocation, Dictionary manifestToWrite, boolean compatibilityManifest) throws PluginConversionException;
-}
diff --git a/bundles/org.eclipse.osgi/hookconfigurators.properties b/bundles/org.eclipse.osgi/hookconfigurators.properties
deleted file mode 100644
index ea475f3..0000000
--- a/bundles/org.eclipse.osgi/hookconfigurators.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-hook.configurators= \
- org.eclipse.osgi.internal.baseadaptor.BaseHookConfigurator,\
- org.eclipse.osgi.internal.baseadaptor.DevClassLoadingHook,\
- org.eclipse.core.runtime.internal.adaptor.EclipseStorageHook,\
- org.eclipse.core.runtime.internal.adaptor.EclipseLogHook,\
- org.eclipse.core.runtime.internal.adaptor.EclipseErrorHandler,\
- org.eclipse.core.runtime.internal.adaptor.EclipseAdaptorHook,\
- org.eclipse.core.runtime.internal.adaptor.EclipseClassLoadingHook,\
- org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter,\
- org.eclipse.core.runtime.internal.stats.StatsManager,\
- org.eclipse.osgi.internal.signedcontent.SignedBundleHook,\
- org.eclipse.osgi.internal.composite.CompositeConfigurator
-builtin.hooks = true
diff --git a/bundles/org.eclipse.osgi/osgi/CDC-1.1_Foundation-1.1.ee b/bundles/org.eclipse.osgi/osgi/CDC-1.1_Foundation-1.1.ee
deleted file mode 100644
index a4fe56e..0000000
--- a/bundles/org.eclipse.osgi/osgi/CDC-1.1_Foundation-1.1.ee
+++ /dev/null
@@ -1,18 +0,0 @@
--Djava.home=.
--Djava.library.path=.
-
--Dee.vm.library=dummy.dll
--Dee.library.path=.
-
--Dee.executable=dummy
--Dee.executable.console=dummy
-
--Dee.bootclasspath=ee.foundation.jar
--Dee.src=
--Dee.ext.dirs=
-
--Dee.language.level=1.4
--Dee.class.library.level=CDC-1.1/Foundation-1.1
--Dee.id=CDC-1.1/Foundation-1.1
--Dee.name=CDC-1.1 Foundation-1.1
--Dee.description=CDC v1.1 / Foundation v1.1
diff --git a/bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.1.ee b/bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.1.ee
deleted file mode 100644
index ad9e5d0..0000000
--- a/bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.1.ee
+++ /dev/null
@@ -1,18 +0,0 @@
--Djava.home=.
--Djava.library.path=.
-
--Dee.vm.library=dummy.dll
--Dee.library.path=.
-
--Dee.executable=dummy
--Dee.executable.console=dummy
-
--Dee.bootclasspath=ee.minimum.jar
--Dee.src=
--Dee.ext.dirs=
-
--Dee.language.level=1.3
--Dee.class.library.level=OSGi/Minimum-1.1
--Dee.id=OSGi/Minimum-1.1
--Dee.name=OSGi Minimum-1.1
--Dee.description=OSGi/Minimum v1.1
diff --git a/bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.2.ee b/bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.2.ee
deleted file mode 100644
index 300c3b6..0000000
--- a/bundles/org.eclipse.osgi/osgi/OSGi_Minimum-1.2.ee
+++ /dev/null
@@ -1,18 +0,0 @@
--Djava.home=.
--Djava.library.path=.
-
--Dee.vm.library=dummy.dll
--Dee.library.path=.
-
--Dee.executable=dummy
--Dee.executable.console=dummy
-
--Dee.bootclasspath=ee.minimum-1.2.0.jar
--Dee.src=
--Dee.ext.dirs=
-
--Dee.language.level=1.4
--Dee.class.library.level=OSGi/Minimum-1.2
--Dee.id=OSGi/Minimum-1.2
--Dee.name=OSGi Minimum-1.2
--Dee.description=OSGi/Minimum v1.2
diff --git a/bundles/org.eclipse.osgi/osgi/ee.foundation.jar b/bundles/org.eclipse.osgi/osgi/ee.foundation.jar
deleted file mode 100644
index 0d4abd8..0000000
--- a/bundles/org.eclipse.osgi/osgi/ee.foundation.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/osgi/ee.minimum-1.2.0.jar b/bundles/org.eclipse.osgi/osgi/ee.minimum-1.2.0.jar
deleted file mode 100644
index e7be21b..0000000
--- a/bundles/org.eclipse.osgi/osgi/ee.minimum-1.2.0.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/osgi/ee.minimum.jar b/bundles/org.eclipse.osgi/osgi/ee.minimum.jar
deleted file mode 100644
index 9b0f991..0000000
--- a/bundles/org.eclipse.osgi/osgi/ee.minimum.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/osgi/exceptions.jar b/bundles/org.eclipse.osgi/osgi/exceptions.jar
deleted file mode 100644
index 7cd07fe..0000000
--- a/bundles/org.eclipse.osgi/osgi/exceptions.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/osgi/osgi.cmpn.jar b/bundles/org.eclipse.osgi/osgi/osgi.cmpn.jar
deleted file mode 100644
index 68cd401..0000000
--- a/bundles/org.eclipse.osgi/osgi/osgi.cmpn.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/osgi/osgi.core.jar b/bundles/org.eclipse.osgi/osgi/osgi.core.jar
deleted file mode 100644
index a73e775..0000000
--- a/bundles/org.eclipse.osgi/osgi/osgi.core.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
deleted file mode 100644
index 1811791..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
+++ /dev/null
@@ -1,1032 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamField;
-import java.security.AccessController;
-import java.security.BasicPermission;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.PrivilegedAction;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * A bundle's authority to perform specific privileged administrative operations
- * on or to get sensitive information about a bundle. The actions for this
- * permission are:
- * 
- * <pre>
- *  Action               Methods
- *  class                Bundle.loadClass
- *  execute              Bundle.start
- *                       Bundle.stop
- *                       StartLevel.setBundleStartLevel
- *  extensionLifecycle   BundleContext.installBundle for extension bundles
- *                       Bundle.update for extension bundles
- *                       Bundle.uninstall for extension bundles
- *  lifecycle            BundleContext.installBundle
- *                       Bundle.update
- *                       Bundle.uninstall
- *  listener             BundleContext.addBundleListener for SynchronousBundleListener
- *                       BundleContext.removeBundleListener for SynchronousBundleListener
- *  metadata             Bundle.getHeaders
- *                       Bundle.getLocation
- *  resolve              PackageAdmin.refreshPackages
- *                       PackageAdmin.resolveBundles
- *  resource             Bundle.getResource
- *                       Bundle.getResources
- *                       Bundle.getEntry
- *                       Bundle.getEntryPaths
- *                       Bundle.findEntries
- *                       Bundle resource/entry URL creation
- *  startlevel           StartLevel.setStartLevel
- *                       StartLevel.setInitialBundleStartLevel 
- *  context              Bundle.getBundleContext
- * </pre>
- * 
- * <p>
- * The special action &quot;*&quot; will represent all actions. The
- * <code>resolve</code> action is implied by the <code>class</code>,
- * <code>execute</code> and <code>resource</code> actions.
- * <p>
- * The name of this permission is a filter expression. The filter gives access
- * to the following attributes:
- * <ul>
- * <li>signer - A Distinguished Name chain used to sign a bundle. Wildcards in a
- * DN are not matched according to the filter string rules, but according to the
- * rules defined for a DN chain.</li>
- * <li>location - The location of a bundle.</li>
- * <li>id - The bundle ID of the designated bundle.</li>
- * <li>name - The symbolic name of a bundle.</li>
- * </ul>
- * Filter attribute names are processed in a case sensitive manner.
- * 
- * @ThreadSafe
- * @version $Revision: 7743 $
- */
-
-public final class AdminPermission extends BasicPermission {
-	static final long						serialVersionUID			= 307051004521261705L;
-
-	/**
-	 * The action string <code>class</code>. The <code>class</code> action
-	 * implies the <code>resolve</code> action.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	CLASS						= "class";
-	/**
-	 * The action string <code>execute</code>. The <code>execute</code> action
-	 * implies the <code>resolve</code> action.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	EXECUTE						= "execute";
-	/**
-	 * The action string <code>extensionLifecycle</code>.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	EXTENSIONLIFECYCLE			= "extensionLifecycle";
-	/**
-	 * The action string <code>lifecycle</code>.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	LIFECYCLE					= "lifecycle";
-	/**
-	 * The action string <code>listener</code>.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	LISTENER					= "listener";
-	/**
-	 * The action string <code>metadata</code>.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	METADATA					= "metadata";
-	/**
-	 * The action string <code>resolve</code>. The <code>resolve</code> action
-	 * is implied by the <code>class</code>, <code>execute</code> and
-	 * <code>resource</code> actions.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	RESOLVE						= "resolve";
-	/**
-	 * The action string <code>resource</code>. The <code>resource</code> action
-	 * implies the <code>resolve</code> action.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	RESOURCE					= "resource";
-	/**
-	 * The action string <code>startlevel</code>.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	STARTLEVEL					= "startlevel";
-
-	/**
-	 * The action string <code>context</code>.
-	 * 
-	 * @since 1.4
-	 */
-	public final static String	CONTEXT						= "context";
-
-	private final static int	ACTION_CLASS				= 0x00000001;
-	private final static int	ACTION_EXECUTE				= 0x00000002;
-	private final static int	ACTION_LIFECYCLE			= 0x00000004;
-	private final static int	ACTION_LISTENER				= 0x00000008;
-	private final static int	ACTION_METADATA				= 0x00000010;
-	private final static int	ACTION_RESOLVE				= 0x00000040;
-	private final static int	ACTION_RESOURCE				= 0x00000080;
-	private final static int	ACTION_STARTLEVEL			= 0x00000100;
-	private final static int	ACTION_EXTENSIONLIFECYCLE	= 0x00000200;
-	private final static int	ACTION_CONTEXT				= 0x00000400;
-	private final static int	ACTION_ALL					= ACTION_CLASS
-																	| ACTION_EXECUTE
-																	| ACTION_LIFECYCLE
-																	| ACTION_LISTENER
-																	| ACTION_METADATA
-																	| ACTION_RESOLVE
-																	| ACTION_RESOURCE
-																	| ACTION_STARTLEVEL
-																	| ACTION_EXTENSIONLIFECYCLE
-																	| ACTION_CONTEXT;
-	final static int						ACTION_NONE					= 0;
-
-	/**
-	 * The actions in canonical form.
-	 * 
-	 * @serial
-	 */
-	private volatile String		actions						= null;
-
-	/**
-	 * The actions mask.
-	 */
-	transient int							action_mask;
-
-	/**
-	 * If this AdminPermission was constructed with a filter, this holds a
-	 * Filter matching object used to evaluate the filter in implies.
-	 */
-	transient Filter						filter;
-
-	/**
-	 * The bundle governed by this AdminPermission - only used if filter == null
-	 */
-	transient final Bundle					bundle; 
-
-	/**
-	 * This dictionary holds the properties of the permission, used to match a
-	 * filter in implies. This is not initialized until necessary, and then
-	 * cached in this object.
-	 */
-	private transient volatile Dictionary	properties;
-
-	/**
-	 * ThreadLocal used to determine if we have recursively called
-	 * getProperties.
-	 */
-	private static final ThreadLocal		recurse						= new ThreadLocal();
-
-	/**
-	 * Creates a new <code>AdminPermission</code> object that matches all
-	 * bundles and has all actions. Equivalent to AdminPermission("*","*");
-	 */
-	public AdminPermission() {
-		this(null, ACTION_ALL); 
-	}
-
-	/**
-	 * Create a new AdminPermission.
-	 * 
-	 * This constructor must only be used to create a permission that is going
-	 * to be checked.
-	 * <p>
-	 * Examples:
-	 * 
-	 * <pre>
-	 * (signer=\*,o=ACME,c=US)   
-	 * (&amp;(signer=\*,o=ACME,c=US)(name=com.acme.*)(location=http://www.acme.com/bundles/*))
-	 * (id&gt;=1)
-	 * </pre>
-	 * 
-	 * <p>
-	 * When a signer key is used within the filter expression the signer value
-	 * must escape the special filter chars ('*', '(', ')').
-	 * <p>
-	 * Null arguments are equivalent to "*".
-	 * 
-	 * @param filter A filter expression that can use signer, location, id, and
-	 *        name keys. A value of &quot;*&quot; or <code>null</code> matches
-	 *        all bundle. Filter attribute names are processed in a case
-	 *        sensitive manner.
-	 * @param actions <code>class</code>, <code>execute</code>,
-	 *        <code>extensionLifecycle</code>, <code>lifecycle</code>,
-	 *        <code>listener</code>, <code>metadata</code>, <code>resolve</code>
-	 *        , <code>resource</code>, <code>startlevel</code> or
-	 *        <code>context</code>. A value of "*" or <code>null</code>
-	 *        indicates all actions.
-	 * @throws IllegalArgumentException If the filter has an invalid syntax.
-	 */
-	public AdminPermission(String filter, String actions) {
-		// arguments will be null if called from a PermissionInfo defined with
-		// no args
-		this(parseFilter(filter), parseActions(actions));
-	}
-
-	/**
-	 * Creates a new requested <code>AdminPermission</code> object to be used by
-	 * the code that must perform <code>checkPermission</code>.
-	 * <code>AdminPermission</code> objects created with this constructor cannot
-	 * be added to an <code>AdminPermission</code> permission collection.
-	 * 
-	 * @param bundle A bundle.
-	 * @param actions <code>class</code>, <code>execute</code>,
-	 *        <code>extensionLifecycle</code>, <code>lifecycle</code>,
-	 *        <code>listener</code>, <code>metadata</code>, <code>resolve</code>
-	 *        , <code>resource</code>, <code>startlevel</code>,
-	 *        <code>context</code>. A value of "*" or <code>null</code>
-	 *        indicates all actions.
-	 * @since 1.3
-	 */
-	public AdminPermission(Bundle bundle, String actions) {
-		super(createName(bundle));
-		setTransients(null, parseActions(actions));
-		this.bundle = bundle;
-	}
-
-	/**
-	 * Create a permission name from a Bundle
-	 * 
-	 * @param bundle Bundle to use to create permission name.
-	 * @return permission name.
-	 */
-	private static String createName(Bundle bundle) {
-		if (bundle == null) {
-			throw new IllegalArgumentException("bundle must not be null");
-		}
-		StringBuffer sb = new StringBuffer("(id=");
-		sb.append(bundle.getBundleId());
-		sb.append(")");
-		return sb.toString();
-	}
-
-	/**
-	 * Package private constructor used by AdminPermissionCollection.
-	 * 
-	 * @param filter name filter or <code>null</code> for wildcard.
-	 * @param mask action mask
-	 */
-	AdminPermission(Filter filter, int mask) {
-		super((filter == null) ? "*" : filter.toString());
-		setTransients(filter, mask);
-		this.bundle = null;
-	}
-
-	/**
-	 * Called by constructors and when deserialized.
-	 * 
-	 * @param filter Permission's filter or <code>null</code> for wildcard.
-	 * @param mask action mask
-	 */
-	private void setTransients(Filter filter, int mask) {
-		this.filter = filter;
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-		this.action_mask = mask;
-	}
-
-	/**
-	 * Parse action string into action mask.
-	 * 
-	 * @param actions Action string.
-	 * @return action mask.
-	 */
-	private static int parseActions(String actions) {
-		if ((actions == null) || actions.equals("*")) {
-			return ACTION_ALL;
-		}
-	
-		boolean seencomma = false;
-	
-		int mask = ACTION_NONE;
-	
-		if (actions == null) {
-			return mask;
-		}
-	
-		char[] a = actions.toCharArray();
-	
-		int i = a.length - 1;
-		if (i < 0)
-			return mask;
-	
-		while (i != -1) {
-			char c;
-	
-			// skip whitespace
-			while ((i != -1)
-					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
-							|| c == '\f' || c == '\t'))
-				i--;
-	
-			// check for the known strings
-			int matchlen;
-	
-			if (i >= 4 && (a[i - 4] == 'c' || a[i - 4] == 'C')
-					&& (a[i - 3] == 'l' || a[i - 3] == 'L')
-					&& (a[i - 2] == 'a' || a[i - 2] == 'A')
-					&& (a[i - 1] == 's' || a[i - 1] == 'S')
-					&& (a[i] == 's' || a[i] == 'S')) {
-				matchlen = 5;
-				mask |= ACTION_CLASS | ACTION_RESOLVE;
-	
-			}
-			else
-				if (i >= 6 && (a[i - 6] == 'e' || a[i - 6] == 'E')
-						&& (a[i - 5] == 'x' || a[i - 5] == 'X')
-						&& (a[i - 4] == 'e' || a[i - 4] == 'E')
-						&& (a[i - 3] == 'c' || a[i - 3] == 'C')
-						&& (a[i - 2] == 'u' || a[i - 2] == 'U')
-						&& (a[i - 1] == 't' || a[i - 1] == 'T')
-						&& (a[i] == 'e' || a[i] == 'E')) {
-					matchlen = 7;
-					mask |= ACTION_EXECUTE | ACTION_RESOLVE;
-	
-				}
-				else
-					if (i >= 17 && (a[i - 17] == 'e' || a[i - 17] == 'E')
-							&& (a[i - 16] == 'x' || a[i - 16] == 'X')
-							&& (a[i - 15] == 't' || a[i - 15] == 'T')
-							&& (a[i - 14] == 'e' || a[i - 14] == 'E')
-							&& (a[i - 13] == 'n' || a[i - 13] == 'N')
-							&& (a[i - 12] == 's' || a[i - 12] == 'S')
-							&& (a[i - 11] == 'i' || a[i - 11] == 'I')
-							&& (a[i - 10] == 'o' || a[i - 10] == 'O')
-							&& (a[i - 9] == 'n' || a[i - 9] == 'N')
-							&& (a[i - 8] == 'l' || a[i - 8] == 'L')
-							&& (a[i - 7] == 'i' || a[i - 7] == 'I')
-							&& (a[i - 6] == 'f' || a[i - 6] == 'F')
-							&& (a[i - 5] == 'e' || a[i - 5] == 'E')
-							&& (a[i - 4] == 'c' || a[i - 4] == 'C')
-							&& (a[i - 3] == 'y' || a[i - 3] == 'Y')
-							&& (a[i - 2] == 'c' || a[i - 2] == 'C')
-							&& (a[i - 1] == 'l' || a[i - 1] == 'L')
-							&& (a[i] == 'e' || a[i] == 'E')) {
-						matchlen = 18;
-						mask |= ACTION_EXTENSIONLIFECYCLE;
-	
-					}
-					else
-						if (i >= 8 && (a[i - 8] == 'l' || a[i - 8] == 'L')
-								&& (a[i - 7] == 'i' || a[i - 7] == 'I')
-								&& (a[i - 6] == 'f' || a[i - 6] == 'F')
-								&& (a[i - 5] == 'e' || a[i - 5] == 'E')
-								&& (a[i - 4] == 'c' || a[i - 4] == 'C')
-								&& (a[i - 3] == 'y' || a[i - 3] == 'Y')
-								&& (a[i - 2] == 'c' || a[i - 2] == 'C')
-								&& (a[i - 1] == 'l' || a[i - 1] == 'L')
-								&& (a[i] == 'e' || a[i] == 'E')) {
-							matchlen = 9;
-							mask |= ACTION_LIFECYCLE;
-	
-						}
-						else
-							if (i >= 7 && (a[i - 7] == 'l' || a[i - 7] == 'L')
-									&& (a[i - 6] == 'i' || a[i - 6] == 'I')
-									&& (a[i - 5] == 's' || a[i - 5] == 'S')
-									&& (a[i - 4] == 't' || a[i - 4] == 'T')
-									&& (a[i - 3] == 'e' || a[i - 3] == 'E')
-									&& (a[i - 2] == 'n' || a[i - 2] == 'N')
-									&& (a[i - 1] == 'e' || a[i - 1] == 'E')
-									&& (a[i] == 'r' || a[i] == 'R')) {
-								matchlen = 8;
-								mask |= ACTION_LISTENER;
-	
-							}
-							else
-								if (i >= 7
-										&& (a[i - 7] == 'm' || a[i - 7] == 'M')
-										&& (a[i - 6] == 'e' || a[i - 6] == 'E')
-										&& (a[i - 5] == 't' || a[i - 5] == 'T')
-										&& (a[i - 4] == 'a' || a[i - 4] == 'A')
-										&& (a[i - 3] == 'd' || a[i - 3] == 'D')
-										&& (a[i - 2] == 'a' || a[i - 2] == 'A')
-										&& (a[i - 1] == 't' || a[i - 1] == 'T')
-										&& (a[i] == 'a' || a[i] == 'A')) {
-									matchlen = 8;
-									mask |= ACTION_METADATA;
-	
-								}
-								else
-									if (i >= 6
-											&& (a[i - 6] == 'r' || a[i - 6] == 'R')
-											&& (a[i - 5] == 'e' || a[i - 5] == 'E')
-											&& (a[i - 4] == 's' || a[i - 4] == 'S')
-											&& (a[i - 3] == 'o' || a[i - 3] == 'O')
-											&& (a[i - 2] == 'l' || a[i - 2] == 'L')
-											&& (a[i - 1] == 'v' || a[i - 1] == 'V')
-											&& (a[i] == 'e' || a[i] == 'E')) {
-										matchlen = 7;
-										mask |= ACTION_RESOLVE;
-	
-									}
-									else
-										if (i >= 7
-												&& (a[i - 7] == 'r' || a[i - 7] == 'R')
-												&& (a[i - 6] == 'e' || a[i - 6] == 'E')
-												&& (a[i - 5] == 's' || a[i - 5] == 'S')
-												&& (a[i - 4] == 'o' || a[i - 4] == 'O')
-												&& (a[i - 3] == 'u' || a[i - 3] == 'U')
-												&& (a[i - 2] == 'r' || a[i - 2] == 'R')
-												&& (a[i - 1] == 'c' || a[i - 1] == 'C')
-												&& (a[i] == 'e' || a[i] == 'E')) {
-											matchlen = 8;
-											mask |= ACTION_RESOURCE
-													| ACTION_RESOLVE;
-	
-										}
-										else
-											if (i >= 9
-													&& (a[i - 9] == 's' || a[i - 9] == 'S')
-													&& (a[i - 8] == 't' || a[i - 8] == 'T')
-													&& (a[i - 7] == 'a' || a[i - 7] == 'A')
-													&& (a[i - 6] == 'r' || a[i - 6] == 'R')
-													&& (a[i - 5] == 't' || a[i - 5] == 'T')
-													&& (a[i - 4] == 'l' || a[i - 4] == 'L')
-													&& (a[i - 3] == 'e' || a[i - 3] == 'E')
-													&& (a[i - 2] == 'v' || a[i - 2] == 'V')
-													&& (a[i - 1] == 'e' || a[i - 1] == 'E')
-													&& (a[i] == 'l' || a[i] == 'L')) {
-												matchlen = 10;
-												mask |= ACTION_STARTLEVEL;
-	
-											}
-											else
-												if (i >= 6
-														&& (a[i - 6] == 'c' || a[i - 6] == 'C')
-														&& (a[i - 5] == 'o' || a[i - 5] == 'O')
-														&& (a[i - 4] == 'n' || a[i - 4] == 'N')
-														&& (a[i - 3] == 't' || a[i - 3] == 'T')
-														&& (a[i - 2] == 'e' || a[i - 2] == 'E')
-														&& (a[i - 1] == 'x' || a[i - 1] == 'X')
-														&& (a[i] == 't' || a[i] == 'T')) {
-													matchlen = 7;
-													mask |= ACTION_CONTEXT;
-	
-												}
-												else
-													if (i >= 0 &&
-	
-													(a[i] == '*')) {
-														matchlen = 1;
-														mask |= ACTION_ALL;
-	
-													}
-													else {
-														// parse error
-														throw new IllegalArgumentException(
-																"invalid permission: "
-																		+ actions); 
-													}
-	
-			// make sure we didn't just match the tail of a word
-			// like "ackbarfstartlevel". Also, skip to the comma.
-			seencomma = false;
-			while (i >= matchlen && !seencomma) {
-				switch (a[i - matchlen]) {
-					case ',' :
-						seencomma = true;
-						/* FALLTHROUGH */
-					case ' ' :
-					case '\r' :
-					case '\n' :
-					case '\f' :
-					case '\t' :
-						break;
-					default :
-						throw new IllegalArgumentException(
-								"invalid permission: " + actions); 
-				}
-				i--;
-			}
-	
-			// point i at the location of the comma minus one (or -1).
-			i -= matchlen;
-		}
-	
-		if (seencomma) {
-			throw new IllegalArgumentException("invalid permission: " + 
-					actions);
-		}
-	
-		return mask;
-	}
-
-	/**
-	 * Parse filter string into a Filter object.
-	 * 
-	 * @param filterString The filter string to parse.
-	 * @return a Filter for this bundle. If the specified filterString is
-	 *         <code>null</code> or equals "*", then <code>null</code> is
-	 *         returned to indicate a wildcard.
-	 * @throws IllegalArgumentException If the filter syntax is invalid.
-	 */
-	private static Filter parseFilter(String filterString) {
-		if (filterString == null) {
-			return null;
-		}
-		filterString = filterString.trim();
-		if (filterString.equals("*")) {
-			return null;
-		}
-		
-		try {
-			return FrameworkUtil.createFilter(filterString);
-		}
-		catch (InvalidSyntaxException e) {
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"invalid filter");
-			iae.initCause(e);
-			throw iae;
-		}
-	}
-
-	/**
-	 * Determines if the specified permission is implied by this object. This
-	 * method throws an exception if the specified permission was not
-	 * constructed with a bundle.
-	 * 
-	 * <p>
-	 * This method returns <code>true</code> if the specified permission is an
-	 * AdminPermission AND
-	 * <ul>
-	 * <li>this object's filter matches the specified permission's bundle ID,
-	 * bundle symbolic name, bundle location and bundle signer distinguished
-	 * name chain OR</li>
-	 * <li>this object's filter is "*"</li>
-	 * </ul>
-	 * AND this object's actions include all of the specified permission's
-	 * actions.
-	 * <p>
-	 * Special case: if the specified permission was constructed with "*"
-	 * filter, then this method returns <code>true</code> if this object's
-	 * filter is "*" and this object's actions include all of the specified
-	 * permission's actions
-	 * 
-	 * @param p The requested permission.
-	 * @return <code>true</code> if the specified permission is implied by this
-	 *         object; <code>false</code> otherwise.
-	 */
-	public boolean implies(Permission p) {
-		if (!(p instanceof AdminPermission)) {
-			return false;
-		}
-		AdminPermission requested = (AdminPermission) p;
-		if (bundle != null) {
-			return false;
-		}
-		// if requested permission has a filter, then it is an invalid argument
-		if (requested.filter != null) {
-			return false;
-		}
-		return implies0(requested, ACTION_NONE);
-	}
-
-	/**
-	 * Internal implies method. Used by the implies and the permission
-	 * collection implies methods.
-	 * 
-	 * @param requested The requested AdminPermision which has already be
-	 *        validated as a proper argument. The requested AdminPermission must
-	 *        not have a filter expression.
-	 * @param effective The effective actions with which to start.
-	 * @return <code>true</code> if the specified permission is implied by this
-	 *         object; <code>false</code> otherwise.
-	 */
-	boolean implies0(AdminPermission requested, int effective) {
-		/* check actions first - much faster */
-		effective |= action_mask;
-		final int desired = requested.action_mask;
-		if ((effective & desired) != desired) {
-			return false;
-		}
-	
-		/* Get our filter */
-		Filter f = filter;
-		if (f == null) {
-			// it's "*"
-			return true;
-		}
-		/* is requested a wildcard filter? */
-		if (requested.bundle == null) {
-			return false;
-		}
-		Dictionary requestedProperties = requested.getProperties();
-		if (requestedProperties == null) {
-			/*
-			 * If the requested properties are null, then we have detected a
-			 * recursion getting the bundle location. So we return true to
-			 * permit the bundle location request in the AdminPermission check
-			 * up the stack to succeed.
-			 */
-			return true;
-		}
-		return f.matchCase(requestedProperties);
-	}
-
-	/**
-	 * Returns the canonical string representation of the
-	 * <code>AdminPermission</code> actions.
-	 * 
-	 * <p>
-	 * Always returns present <code>AdminPermission</code> actions in the
-	 * following order: <code>class</code>, <code>execute</code>,
-	 * <code>extensionLifecycle</code>, <code>lifecycle</code>,
-	 * <code>listener</code>, <code>metadata</code>, <code>resolve</code>,
-	 * <code>resource</code>, <code>startlevel</code>, <code>context</code>.
-	 * 
-	 * @return Canonical string representation of the
-	 *         <code>AdminPermission</code> actions.
-	 */
-	public String getActions() {
-		String result = actions;
-		if (result == null) {
-			StringBuffer sb = new StringBuffer();
-	
-			int mask = action_mask;
-			if ((mask & ACTION_CLASS) == ACTION_CLASS) {
-				sb.append(CLASS);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_EXECUTE) == ACTION_EXECUTE) {
-				sb.append(EXECUTE);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_EXTENSIONLIFECYCLE) == ACTION_EXTENSIONLIFECYCLE) {
-				sb.append(EXTENSIONLIFECYCLE);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_LIFECYCLE) == ACTION_LIFECYCLE) {
-				sb.append(LIFECYCLE);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_LISTENER) == ACTION_LISTENER) {
-				sb.append(LISTENER);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_METADATA) == ACTION_METADATA) {
-				sb.append(METADATA);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_RESOLVE) == ACTION_RESOLVE) {
-				sb.append(RESOLVE);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_RESOURCE) == ACTION_RESOURCE) {
-				sb.append(RESOURCE);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_STARTLEVEL) == ACTION_STARTLEVEL) {
-				sb.append(STARTLEVEL);
-				sb.append(',');
-			}
-	
-			if ((mask & ACTION_CONTEXT) == ACTION_CONTEXT) {
-				sb.append(CONTEXT);
-				sb.append(',');
-			}
-	
-			// remove trailing comma
-			if (sb.length() > 0) {
-				sb.setLength(sb.length() - 1);
-			}
-	
-			actions = result = sb.toString();
-		}
-		return result;
-	}
-
-	/**
-	 * Returns a new <code>PermissionCollection</code> object suitable for
-	 * storing <code>AdminPermission</code>s.
-	 * 
-	 * @return A new <code>PermissionCollection</code> object.
-	 */
-	public PermissionCollection newPermissionCollection() {
-		return new AdminPermissionCollection();
-	}
-
-	/**
-	 * Determines the equality of two <code>AdminPermission</code> objects.
-	 * 
-	 * @param obj The object being compared for equality with this object.
-	 * @return <code>true</code> if <code>obj</code> is equivalent to this
-	 *         <code>AdminPermission</code>; <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof AdminPermission)) {
-			return false;
-		}
-
-		AdminPermission ap = (AdminPermission) obj;
-
-		return (action_mask == ap.action_mask)
-				&& ((bundle == ap.bundle) || ((bundle != null) && bundle
-						.equals(ap.bundle)))
-				&& (filter == null ? ap.filter == null : filter
-						.equals(ap.filter));
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return Hash code value for this object.
-	 */
-	public int hashCode() {
-		int h = 31 * 17 + getName().hashCode();
-		h = 31 * h + getActions().hashCode();
-		if (bundle != null) {
-			h = 31 * h + bundle.hashCode();
-		}
-		return h;
-	}
-
-	/**
-	 * WriteObject is called to save the state of this permission object to a
-	 * stream. The actions are serialized, and the superclass takes care of the
-	 * name.
-	 */
-	private synchronized void writeObject(java.io.ObjectOutputStream s)
-			throws IOException {
-		if (bundle != null) {
-			throw new NotSerializableException("cannot serialize");
-		}
-		// Write out the actions. The superclass takes care of the name
-		// call getActions to make sure actions field is initialized
-		if (actions == null)
-			getActions();
-		s.defaultWriteObject();
-	}
-
-	/**
-	 * readObject is called to restore the state of this permission from a
-	 * stream.
-	 */
-	private synchronized void readObject(java.io.ObjectInputStream s)
-			throws IOException, ClassNotFoundException {
-		// Read in the data, then initialize the transients
-		s.defaultReadObject();
-		setTransients(parseFilter(getName()), parseActions(actions));
-	}
-
-	/**
-	 * Called by <code>implies0</code> on an AdminPermission which was
-	 * constructed with a Bundle. This method loads a dictionary with the
-	 * filter-matchable properties of this bundle. The dictionary is cached so
-	 * this lookup only happens once.
-	 * 
-	 * This method should only be called on an AdminPermission which was
-	 * constructed with a bundle
-	 * 
-	 * @return a dictionary of properties for this bundle
-	 */
-	private Dictionary getProperties() {
-		Dictionary result = properties;
-		if (result != null) {
-			return result;
-		}
-		/*
-		 * We may have recursed here due to the Bundle.getLocation call in the
-		 * doPrivileged below. If this is the case, return null to allow implies
-		 * to return true.
-		 */
-		final Object mark = recurse.get();
-		if (mark == bundle) {
-			return null;
-		}
-		recurse.set(bundle);
-		try {
-			final Dictionary dict = new Hashtable(4);
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					dict.put("id", new Long(bundle.getBundleId()));
-					dict.put("location", bundle.getLocation());
-					String name = bundle.getSymbolicName();
-					if (name != null) {
-						dict.put("name", name);
-					}
-					SignerProperty signer = new SignerProperty(bundle);
-					if (signer.isBundleSigned()) {
-						dict.put("signer", signer);
-					}
-					return null;
-				}
-			});
-			return properties = dict;
-		}
-		finally {
-			recurse.set(null);
-		}
-	}
-}
-
-/**
- * Stores a collection of <code>AdminPermission</code>s.
- */
-final class AdminPermissionCollection extends PermissionCollection {
-	private static final long	serialVersionUID	= 3906372644575328048L;
-	/**
-	 * Collection of permissions.
-	 * 
-	 * @GuardedBy this
-	 */
-	private transient Map		permissions;
-
-	/**
-	 * Boolean saying if "*" is in the collection.
-	 * 
-	 * @serial
-	 * @GuardedBy this
-	 */
-	private boolean				all_allowed;
-
-	/**
-	 * Create an empty AdminPermissions object.
-	 * 
-	 */
-	public AdminPermissionCollection() {
-		permissions = new HashMap();
-	}
-
-	/**
-	 * Adds a permission to this permission collection.
-	 * 
-	 * @param permission The <code>AdminPermission</code> object to add.
-	 * @throws IllegalArgumentException If the specified permission is not an
-	 *         <code>AdminPermission</code> instance or was constructed with a
-	 *         Bundle object.
-	 * @throws SecurityException If this <code>AdminPermissionCollection</code>
-	 *         object has been marked read-only.
-	 */
-	public void add(Permission permission) {
-		if (!(permission instanceof AdminPermission)) {
-			throw new IllegalArgumentException("invalid permission: "
-					+ permission);
-		}
-		if (isReadOnly()) {
-			throw new SecurityException("attempt to add a Permission to a "
-					+ "readonly PermissionCollection"); 
-		}
-		final AdminPermission ap = (AdminPermission) permission;
-		if (ap.bundle != null) {
-			throw new IllegalArgumentException("cannot add to collection: "
-					+ ap);
-		}
-		final String name = ap.getName();
-		synchronized (this) {
-			Map pc = permissions;
-			AdminPermission existing = (AdminPermission) pc.get(name);
-			if (existing != null) {
-				int oldMask = existing.action_mask;
-				int newMask = ap.action_mask;
-
-				if (oldMask != newMask) {
-					pc.put(name, new AdminPermission(existing.filter, oldMask
-							| newMask));
-				}
-			}
-			else {
-				pc.put(name, ap);
-			}
-			if (!all_allowed) {
-				if (name.equals("*")) {
-					all_allowed = true;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Determines if the specified permissions implies the permissions expressed
-	 * in <code>permission</code>.
-	 * 
-	 * @param permission The Permission object to compare with the
-	 *        <code>AdminPermission</code> objects in this collection.
-	 * @return <code>true</code> if <code>permission</code> is implied by an
-	 *         <code>AdminPermission</code> in this collection,
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean implies(Permission permission) {
-		if (!(permission instanceof AdminPermission)) {
-			return false;
-		}
-
-		AdminPermission requested = (AdminPermission) permission;
-		// if requested permission has a filter, then it is an invalid argument
-		if (requested.filter != null) {
-			return false;
-		}
-		int effective = AdminPermission.ACTION_NONE;
-		Collection perms;
-		synchronized (this) {
-			Map pc = permissions;
-			// short circuit if the "*" Permission was added
-			if (all_allowed) {
-				AdminPermission ap = (AdminPermission) pc.get("*");
-				if (ap != null) {
-					effective |= ap.action_mask;
-					final int desired = requested.action_mask;
-					if ((effective & desired) == desired) {
-						return true;
-					}
-				}
-			}
-			perms = pc.values();
-		}
-
-		// just iterate one by one
-		for (Iterator iter = perms.iterator(); iter.hasNext();) {
-			if (((AdminPermission) iter.next()).implies0(requested, effective)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns an enumeration of all <code>AdminPermission</code> objects in the
-	 * container.
-	 * 
-	 * @return Enumeration of all <code>AdminPermission</code> objects.
-	 */
-	public synchronized Enumeration elements() {
-		return Collections.enumeration(permissions.values());
-	}
-	
-	/* serialization logic */
-    private static final ObjectStreamField[]	serialPersistentFields	= {
-			new ObjectStreamField("permissions", Hashtable.class),
-			new ObjectStreamField("all_allowed", Boolean.TYPE)			};
-    
-    private synchronized void writeObject(ObjectOutputStream out)
-			throws IOException {
-		Hashtable hashtable = new Hashtable(permissions);
-		ObjectOutputStream.PutField pfields = out.putFields();
-		pfields.put("permissions", hashtable);
-		pfields.put("all_allowed", all_allowed);
-		out.writeFields();
-	}
-    
-    private synchronized void readObject(java.io.ObjectInputStream in)
-			throws IOException,
-			ClassNotFoundException {
-		ObjectInputStream.GetField gfields = in.readFields();
-		Hashtable hashtable = (Hashtable) gfields.get("permissions", null);
-		permissions = new HashMap(hashtable);
-		all_allowed = gfields.get("all_allowed", false);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AllServiceListener.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AllServiceListener.java
deleted file mode 100644
index 688f51e..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AllServiceListener.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * A <code>ServiceEvent</code> listener that does not filter based upon
- * package wiring. <code>AllServiceListener</code> is a listener interface
- * that may be implemented by a bundle developer. When a
- * <code>ServiceEvent</code> is fired, it is synchronously delivered to an
- * <code>AllServiceListener</code>. The Framework may deliver
- * <code>ServiceEvent</code> objects to an <code>AllServiceListener</code>
- * out of order and may concurrently call and/or reenter an
- * <code>AllServiceListener</code>.
- * <p>
- * An <code>AllServiceListener</code> object is registered with the Framework
- * using the <code>BundleContext.addServiceListener</code> method.
- * <code>AllServiceListener</code> objects are called with a
- * <code>ServiceEvent</code> object when a service is registered, modified, or
- * is in the process of unregistering.
- * 
- * <p>
- * <code>ServiceEvent</code> object delivery to
- * <code>AllServiceListener</code> objects is filtered by the filter specified
- * when the listener was registered. If the Java Runtime Environment supports
- * permissions, then additional filtering is done. <code>ServiceEvent</code>
- * objects are only delivered to the listener if the bundle which defines the
- * listener object's class has the appropriate <code>ServicePermission</code>
- * to get the service using at least one of the named classes under which the
- * service was registered.
- * 
- * <p>
- * Unlike normal <code>ServiceListener</code> objects,
- * <code>AllServiceListener</code> objects receive all
- * <code>ServiceEvent</code> objects regardless of whether the package source
- * of the listening bundle is equal to the package source of the bundle that
- * registered the service. This means that the listener may not be able to cast
- * the service object to any of its corresponding service interfaces if the
- * service object is retrieved.
- * 
- * @see ServiceEvent
- * @see ServicePermission
- * @ThreadSafe
- * @since 1.3
- * @version $Revision: 5673 $
- */
-
-public interface AllServiceListener extends ServiceListener {
-	// This is a marker interface
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Bundle.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Bundle.java
deleted file mode 100644
index 692bc5e..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Bundle.java
+++ /dev/null
@@ -1,1194 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Map;
-
-/**
- * An installed bundle in the Framework.
- * 
- * <p>
- * A <code>Bundle</code> object is the access point to define the lifecycle of
- * an installed bundle. Each bundle installed in the OSGi environment must have
- * an associated <code>Bundle</code> object.
- * 
- * <p>
- * A bundle must have a unique identity, a <code>long</code>, chosen by the
- * Framework. This identity must not change during the lifecycle of a bundle,
- * even when the bundle is updated. Uninstalling and then reinstalling the
- * bundle must create a new unique identity.
- * 
- * <p>
- * A bundle can be in one of six states:
- * <ul>
- * <li>{@link #UNINSTALLED}
- * <li>{@link #INSTALLED}
- * <li>{@link #RESOLVED}
- * <li>{@link #STARTING}
- * <li>{@link #STOPPING}
- * <li>{@link #ACTIVE}
- * </ul>
- * <p>
- * Values assigned to these states have no specified ordering; they represent
- * bit values that may be ORed together to determine if a bundle is in one of
- * the valid states.
- * 
- * <p>
- * A bundle should only execute code when its state is one of
- * <code>STARTING</code>,<code>ACTIVE</code>, or <code>STOPPING</code>.
- * An <code>UNINSTALLED</code> bundle can not be set to another state; it is a
- * zombie and can only be reached because references are kept somewhere.
- * 
- * <p>
- * The Framework is the only entity that is allowed to create
- * <code>Bundle</code> objects, and these objects are only valid within the
- * Framework that created them.
- * 
- * @ThreadSafe
- * @version $Revision: 6906 $
- */
-public interface Bundle {
-	/**
-	 * The bundle is uninstalled and may not be used.
-	 * 
-	 * <p>
-	 * The <code>UNINSTALLED</code> state is only visible after a bundle is
-	 * uninstalled; the bundle is in an unusable state but references to the
-	 * <code>Bundle</code> object may still be available and used for
-	 * introspection.
-	 * <p>
-	 * The value of <code>UNINSTALLED</code> is 0x00000001.
-	 */
-	public static final int	UNINSTALLED				= 0x00000001;
-
-	/**
-	 * The bundle is installed but not yet resolved.
-	 * 
-	 * <p>
-	 * A bundle is in the <code>INSTALLED</code> state when it has been
-	 * installed in the Framework but is not or cannot be resolved.
-	 * <p>
-	 * This state is visible if the bundle's code dependencies are not resolved.
-	 * The Framework may attempt to resolve an <code>INSTALLED</code> bundle's
-	 * code dependencies and move the bundle to the <code>RESOLVED</code>
-	 * state.
-	 * <p>
-	 * The value of <code>INSTALLED</code> is 0x00000002.
-	 */
-	public static final int	INSTALLED				= 0x00000002;
-
-	/**
-	 * The bundle is resolved and is able to be started.
-	 * 
-	 * <p>
-	 * A bundle is in the <code>RESOLVED</code> state when the Framework has
-	 * successfully resolved the bundle's code dependencies. These dependencies
-	 * include:
-	 * <ul>
-	 * <li>The bundle's class path from its {@link Constants#BUNDLE_CLASSPATH}
-	 * Manifest header.
-	 * <li>The bundle's package dependencies from its
-	 * {@link Constants#EXPORT_PACKAGE} and {@link Constants#IMPORT_PACKAGE}
-	 * Manifest headers.
-	 * <li>The bundle's required bundle dependencies from its
-	 * {@link Constants#REQUIRE_BUNDLE} Manifest header.
-	 * <li>A fragment bundle's host dependency from its
-	 * {@link Constants#FRAGMENT_HOST} Manifest header.
-	 * </ul>
-	 * <p>
-	 * Note that the bundle is not active yet. A bundle must be put in the
-	 * <code>RESOLVED</code> state before it can be started. The Framework may
-	 * attempt to resolve a bundle at any time.
-	 * <p>
-	 * The value of <code>RESOLVED</code> is 0x00000004.
-	 */
-	public static final int	RESOLVED				= 0x00000004;
-
-	/**
-	 * The bundle is in the process of starting.
-	 * 
-	 * <p>
-	 * A bundle is in the <code>STARTING</code> state when its
-	 * {@link #start(int) start} method is active. A bundle must be in this
-	 * state when the bundle's {@link BundleActivator#start} is called. If the
-	 * <code>BundleActivator.start</code> method completes without exception,
-	 * then the bundle has successfully started and must move to the
-	 * <code>ACTIVE</code> state.
-	 * <p>
-	 * If the bundle has a
-	 * {@link Constants#ACTIVATION_LAZY lazy activation policy}, then the
-	 * bundle may remain in this state for some time until the activation is
-	 * triggered.
-	 * <p>
-	 * The value of <code>STARTING</code> is 0x00000008.
-	 */
-	public static final int	STARTING				= 0x00000008;
-
-	/**
-	 * The bundle is in the process of stopping.
-	 * 
-	 * <p>
-	 * A bundle is in the <code>STOPPING</code> state when its
-	 * {@link #stop(int) stop} method is active. A bundle must be in this state
-	 * when the bundle's {@link BundleActivator#stop} method is called. When the
-	 * <code>BundleActivator.stop</code> method completes the bundle is
-	 * stopped and must move to the <code>RESOLVED</code> state.
-	 * <p>
-	 * The value of <code>STOPPING</code> is 0x00000010.
-	 */
-	public static final int	STOPPING				= 0x00000010;
-
-	/**
-	 * The bundle is now running.
-	 * 
-	 * <p>
-	 * A bundle is in the <code>ACTIVE</code> state when it has been
-	 * successfully started and activated.
-	 * <p>
-	 * The value of <code>ACTIVE</code> is 0x00000020.
-	 */
-	public static final int	ACTIVE					= 0x00000020;
-
-	/**
-	 * The bundle start operation is transient and the persistent autostart
-	 * setting of the bundle is not modified.
-	 * 
-	 * <p>
-	 * This bit may be set when calling {@link #start(int)} to notify the
-	 * framework that the autostart setting of the bundle must not be modified.
-	 * If this bit is not set, then the autostart setting of the bundle is
-	 * modified.
-	 * 
-	 * @since 1.4
-	 * @see #start(int)
-	 */
-	public static final int	START_TRANSIENT			= 0x00000001;
-
-	/**
-	 * The bundle start operation must activate the bundle according to the
-	 * bundle's declared
-	 * {@link Constants#BUNDLE_ACTIVATIONPOLICY activation policy}.
-	 * 
-	 * <p>
-	 * This bit may be set when calling {@link #start(int)} to notify the
-	 * framework that the bundle must be activated using the bundle's declared
-	 * activation policy.
-	 * 
-	 * @since 1.4
-	 * @see Constants#BUNDLE_ACTIVATIONPOLICY
-	 * @see #start(int)
-	 */
-	public static final int	START_ACTIVATION_POLICY	= 0x00000002;
-
-	/**
-	 * The bundle stop is transient and the persistent autostart setting of the
-	 * bundle is not modified.
-	 * 
-	 * <p>
-	 * This bit may be set when calling {@link #stop(int)} to notify the
-	 * framework that the autostart setting of the bundle must not be modified.
-	 * If this bit is not set, then the autostart setting of the bundle is
-	 * modified.
-	 * 
-	 * @since 1.4
-	 * @see #stop(int)
-	 */
-	public static final int	STOP_TRANSIENT			= 0x00000001;
-
-	/**
-	 * Request that all certificates used to sign the bundle be returned.
-	 * 
-	 * @since 1.5
-	 * @see #getSignerCertificates(int)
-	 */
-	public final static int	SIGNERS_ALL				= 1;
-
-	/**
-	 * Request that only certificates used to sign the bundle that are trusted
-	 * by the framework be returned.
-	 * 
-	 * @since 1.5
-	 * @see #getSignerCertificates(int)
-	 */
-	public final static int	SIGNERS_TRUSTED			= 2;
-
-	/**
-	 * Returns this bundle's current state.
-	 * 
-	 * <p>
-	 * A bundle can be in only one state at any time.
-	 * 
-	 * @return An element of <code>UNINSTALLED</code>,<code>INSTALLED</code>,
-	 *         <code>RESOLVED</code>,<code>STARTING</code>,
-	 *         <code>STOPPING</code>,<code>ACTIVE</code>.
-	 */
-	public int getState();
-
-	/**
-	 * Starts this bundle.
-	 * 
-	 * <p>
-	 * If this bundle's state is <code>UNINSTALLED</code> then an
-	 * <code>IllegalStateException</code> is thrown.
-	 * <p>
-	 * If the Framework implements the optional Start Level service and the
-	 * current start level is less than this bundle's start level:
-	 * <ul>
-	 * <li>If the {@link #START_TRANSIENT} option is set, then a
-	 * <code>BundleException</code> is thrown indicating this bundle cannot be
-	 * started due to the Framework's current start level.
-	 * 
-	 * <li>Otherwise, the Framework must set this bundle's persistent autostart
-	 * setting to <em>Started with declared activation</em> if the
-	 * {@link #START_ACTIVATION_POLICY} option is set or
-	 * <em>Started with eager activation</em> if not set.
-	 * </ul>
-	 * <p>
-	 * When the Framework's current start level becomes equal to or more than
-	 * this bundle's start level, this bundle will be started.
-	 * <p>
-	 * Otherwise, the following steps are required to start this bundle:
-	 * <ol>
-	 * <li>If this bundle is in the process of being activated or deactivated
-	 * then this method must wait for activation or deactivation to complete
-	 * before continuing. If this does not occur in a reasonable time, a
-	 * <code>BundleException</code> is thrown to indicate this bundle was unable
-	 * to be started.
-	 * 
-	 * <li>If this bundle's state is <code>ACTIVE</code> then this method
-	 * returns immediately.
-	 * 
-	 * <li>If the {@link #START_TRANSIENT} option is not set then set this
-	 * bundle's autostart setting to <em>Started with declared activation</em>
-	 * if the {@link #START_ACTIVATION_POLICY} option is set or
-	 * <em>Started with eager activation</em> if not set. When the Framework is
-	 * restarted and this bundle's autostart setting is not <em>Stopped</em>,
-	 * this bundle must be automatically started.
-	 * 
-	 * <li>If this bundle's state is not <code>RESOLVED</code>, an attempt is
-	 * made to resolve this bundle. If the Framework cannot resolve this bundle,
-	 * a <code>BundleException</code> is thrown.
-	 * 
-	 * <li>If the {@link #START_ACTIVATION_POLICY} option is set and this
-	 * bundle's declared activation policy is {@link Constants#ACTIVATION_LAZY
-	 * lazy} then:
-	 * <ul>
-	 * <li>If this bundle's state is <code>STARTING</code> then this method
-	 * returns immediately.
-	 * <li>This bundle's state is set to <code>STARTING</code>.
-	 * <li>A bundle event of type {@link BundleEvent#LAZY_ACTIVATION} is fired.
-	 * <li>This method returns immediately and the remaining steps will be
-	 * followed when this bundle's activation is later triggered.
-	 * </ul>
-	 * <i></i>
-	 * <li>This bundle's state is set to <code>STARTING</code>.
-	 * 
-	 * <li>A bundle event of type {@link BundleEvent#STARTING} is fired.
-	 * 
-	 * <li>The {@link BundleActivator#start} method of this bundle's
-	 * <code>BundleActivator</code>, if one is specified, is called. If the
-	 * <code>BundleActivator</code> is invalid or throws an exception then:
-	 * <ul>
-	 * <li>This bundle's state is set to <code>STOPPING</code>.
-	 * <li>A bundle event of type {@link BundleEvent#STOPPING} is fired.
-	 * <li>Any services registered by this bundle must be unregistered.
-	 * <li>Any services used by this bundle must be released.
-	 * <li>Any listeners registered by this bundle must be removed.
-	 * <li>This bundle's state is set to <code>RESOLVED</code>.
-	 * <li>A bundle event of type {@link BundleEvent#STOPPED} is fired.
-	 * <li>A <code>BundleException</code> is then thrown.
-	 * </ul>
-	 * <i></i>
-	 * <li>If this bundle's state is <code>UNINSTALLED</code>, because this
-	 * bundle was uninstalled while the <code>BundleActivator.start</code>
-	 * method was running, a <code>BundleException</code> is thrown.
-	 * 
-	 * <li>This bundle's state is set to <code>ACTIVE</code>.
-	 * 
-	 * <li>A bundle event of type {@link BundleEvent#STARTED} is fired.
-	 * </ol>
-	 * 
-	 * <b>Preconditions </b>
-	 * <ul>
-	 * <li><code>getState()</code> in &#x007B; <code>INSTALLED</code>,
-	 * <code>RESOLVED</code> &#x007D; or &#x007B; <code>INSTALLED</code>,
-	 * <code>RESOLVED</code>, <code>STARTING</code> &#x007D; if this bundle has
-	 * a lazy activation policy.
-	 * </ul>
-	 * <b>Postconditions, no exceptions thrown </b>
-	 * <ul>
-	 * <li>Bundle autostart setting is modified unless the
-	 * {@link #START_TRANSIENT} option was set.
-	 * <li><code>getState()</code> in &#x007B; <code>ACTIVE</code> &#x007D;
-	 * unless the lazy activation policy was used.
-	 * <li><code>BundleActivator.start()</code> has been called and did not
-	 * throw an exception unless the lazy activation policy was used.
-	 * </ul>
-	 * <b>Postconditions, when an exception is thrown </b>
-	 * <ul>
-	 * <li>Depending on when the exception occurred, bundle autostart setting is
-	 * modified unless the {@link #START_TRANSIENT} option was set.
-	 * <li><code>getState()</code> not in &#x007B; <code>STARTING</code>,
-	 * <code>ACTIVE</code> &#x007D;.
-	 * </ul>
-	 * 
-	 * @param options The options for starting this bundle. See
-	 *        {@link #START_TRANSIENT} and {@link #START_ACTIVATION_POLICY}. The
-	 *        Framework must ignore unrecognized options.
-	 * @throws BundleException If this bundle could not be started. This could
-	 *         be because a code dependency could not be resolved or the
-	 *         specified <code>BundleActivator</code> could not be loaded or
-	 *         threw an exception or this bundle is a fragment.
-	 * @throws IllegalStateException If this bundle has been uninstalled or this
-	 *         bundle tries to change its own state.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @since 1.4
-	 */
-	public void start(int options) throws BundleException;
-
-	/**
-	 * Starts this bundle with no options.
-	 * 
-	 * <p>
-	 * This method performs the same function as calling <code>start(0)</code>.
-	 * 
-	 * @throws BundleException If this bundle could not be started. This could
-	 *         be because a code dependency could not be resolved or the
-	 *         specified <code>BundleActivator</code> could not be loaded or
-	 *         threw an exception or this bundle is a fragment.
-	 * @throws IllegalStateException If this bundle has been uninstalled or this
-	 *         bundle tries to change its own state.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @see #start(int)
-	 */
-	public void start() throws BundleException;
-
-	/**
-	 * Stops this bundle.
-	 * 
-	 * <p>
-	 * The following steps are required to stop a bundle:
-	 * <ol>
-	 * <li>If this bundle's state is <code>UNINSTALLED</code> then an
-	 * <code>IllegalStateException</code> is thrown.
-	 * 
-	 * <li>If this bundle is in the process of being activated or deactivated
-	 * then this method must wait for activation or deactivation to complete
-	 * before continuing. If this does not occur in a reasonable time, a
-	 * <code>BundleException</code> is thrown to indicate this bundle was unable
-	 * to be stopped.
-	 * <li>If the {@link #STOP_TRANSIENT} option is not set then then set this
-	 * bundle's persistent autostart setting to to <em>Stopped</em>. When the
-	 * Framework is restarted and this bundle's autostart setting is
-	 * <em>Stopped</em>, this bundle must not be automatically started.
-	 * 
-	 * <li>If this bundle's state is not <code>STARTING</code> or
-	 * <code>ACTIVE</code> then this method returns immediately.
-	 * 
-	 * <li>This bundle's state is set to <code>STOPPING</code>.
-	 * 
-	 * <li>A bundle event of type {@link BundleEvent#STOPPING} is fired.
-	 * 
-	 * <li>If this bundle's state was <code>ACTIVE</code> prior to setting the
-	 * state to <code>STOPPING</code>, the {@link BundleActivator#stop} method
-	 * of this bundle's <code>BundleActivator</code>, if one is specified, is
-	 * called. If that method throws an exception, this method must continue to
-	 * stop this bundle and a <code>BundleException</code> must be thrown after
-	 * completion of the remaining steps.
-	 * 
-	 * <li>Any services registered by this bundle must be unregistered.
-	 * <li>Any services used by this bundle must be released.
-	 * <li>Any listeners registered by this bundle must be removed.
-	 * 
-	 * <li>If this bundle's state is <code>UNINSTALLED</code>, because this
-	 * bundle was uninstalled while the <code>BundleActivator.stop</code> method
-	 * was running, a <code>BundleException</code> must be thrown.
-	 * 
-	 * <li>This bundle's state is set to <code>RESOLVED</code>.
-	 * 
-	 * <li>A bundle event of type {@link BundleEvent#STOPPED} is fired.
-	 * </ol>
-	 * 
-	 * <b>Preconditions </b>
-	 * <ul>
-	 * <li><code>getState()</code> in &#x007B; <code>ACTIVE</code> &#x007D;.
-	 * </ul>
-	 * <b>Postconditions, no exceptions thrown </b>
-	 * <ul>
-	 * <li>Bundle autostart setting is modified unless the
-	 * {@link #STOP_TRANSIENT} option was set.
-	 * <li><code>getState()</code> not in &#x007B; <code>ACTIVE</code>,
-	 * <code>STOPPING</code> &#x007D;.
-	 * <li><code>BundleActivator.stop</code> has been called and did not throw
-	 * an exception.
-	 * </ul>
-	 * <b>Postconditions, when an exception is thrown </b>
-	 * <ul>
-	 * <li>Bundle autostart setting is modified unless the
-	 * {@link #STOP_TRANSIENT} option was set.
-	 * </ul>
-	 * 
-	 * @param options The options for stoping this bundle. See
-	 *        {@link #STOP_TRANSIENT}. The Framework must ignore unrecognized
-	 *        options.
-	 * @throws BundleException If this bundle's <code>BundleActivator</code>
-	 *         threw an exception or this bundle is a fragment.
-	 * @throws IllegalStateException If this bundle has been uninstalled or this
-	 *         bundle tries to change its own state.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @since 1.4
-	 */
-	public void stop(int options) throws BundleException;
-
-	/**
-	 * Stops this bundle with no options.
-	 * 
-	 * <p>
-	 * This method performs the same function as calling <code>stop(0)</code>.
-	 * 
-	 * @throws BundleException If this bundle's <code>BundleActivator</code>
-	 *         threw an exception or this bundle is a fragment.
-	 * @throws IllegalStateException If this bundle has been uninstalled or this
-	 *         bundle tries to change its own state.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @see #start(int)
-	 */
-	public void stop() throws BundleException;
-
-	/**
-	 * Updates this bundle from an <code>InputStream</code>.
-	 * 
-	 * <p>
-	 * If the specified <code>InputStream</code> is <code>null</code>, the
-	 * Framework must create the <code>InputStream</code> from which to read the
-	 * updated bundle by interpreting, in an implementation dependent manner,
-	 * this bundle's {@link Constants#BUNDLE_UPDATELOCATION
-	 * Bundle-UpdateLocation} Manifest header, if present, or this bundle's
-	 * original location.
-	 * 
-	 * <p>
-	 * If this bundle's state is <code>ACTIVE</code>, it must be stopped before
-	 * the update and started after the update successfully completes.
-	 * 
-	 * <p>
-	 * If this bundle has exported any packages that are imported by another
-	 * bundle, these packages must not be updated. Instead, the previous package
-	 * version must remain exported until the
-	 * <code>PackageAdmin.refreshPackages</code> method has been has been called
-	 * or the Framework is relaunched.
-	 * 
-	 * <p>
-	 * The following steps are required to update a bundle:
-	 * <ol>
-	 * <li>If this bundle's state is <code>UNINSTALLED</code> then an
-	 * <code>IllegalStateException</code> is thrown.
-	 * 
-	 * <li>If this bundle's state is <code>ACTIVE</code>, <code>STARTING</code>
-	 * or <code>STOPPING</code>, this bundle is stopped as described in the
-	 * <code>Bundle.stop</code> method. If <code>Bundle.stop</code> throws an
-	 * exception, the exception is rethrown terminating the update.
-	 * 
-	 * <li>The updated version of this bundle is read from the input stream and
-	 * installed. If the Framework is unable to install the updated version of
-	 * this bundle, the original version of this bundle must be restored and a
-	 * <code>BundleException</code> must be thrown after completion of the
-	 * remaining steps.
-	 * 
-	 * <li>This bundle's state is set to <code>INSTALLED</code>.
-	 * 
-	 * <li>If the updated version of this bundle was successfully installed, a
-	 * bundle event of type {@link BundleEvent#UPDATED} is fired.
-	 * 
-	 * <li>If this bundle's state was originally <code>ACTIVE</code>, the
-	 * updated bundle is started as described in the <code>Bundle.start</code>
-	 * method. If <code>Bundle.start</code> throws an exception, a Framework
-	 * event of type {@link FrameworkEvent#ERROR} is fired containing the
-	 * exception.
-	 * </ol>
-	 * 
-	 * <b>Preconditions </b>
-	 * <ul>
-	 * <li><code>getState()</code> not in &#x007B; <code>UNINSTALLED</code>
-	 * &#x007D;.
-	 * </ul>
-	 * <b>Postconditions, no exceptions thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> in &#x007B; <code>INSTALLED</code>,
-	 * <code>RESOLVED</code>, <code>ACTIVE</code> &#x007D;.
-	 * <li>This bundle has been updated.
-	 * </ul>
-	 * <b>Postconditions, when an exception is thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> in &#x007B; <code>INSTALLED</code>,
-	 * <code>RESOLVED</code>, <code>ACTIVE</code> &#x007D;.
-	 * <li>Original bundle is still used; no update occurred.
-	 * </ul>
-	 * 
-	 * @param input The <code>InputStream</code> from which to read the new
-	 *        bundle or <code>null</code> to indicate the Framework must create
-	 *        the input stream from this bundle's
-	 *        {@link Constants#BUNDLE_UPDATELOCATION Bundle-UpdateLocation}
-	 *        Manifest header, if present, or this bundle's original location.
-	 *        The input stream must always be closed when this method completes,
-	 *        even if an exception is thrown.
-	 * @throws BundleException If the input stream cannot be read or the update
-	 *         fails.
-	 * @throws IllegalStateException If this bundle has been uninstalled or this
-	 *         bundle tries to change its own state.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,LIFECYCLE]</code> for both the current
-	 *         bundle and the updated bundle, and the Java Runtime Environment
-	 *         supports permissions.
-	 * @see #stop()
-	 * @see #start()
-	 */
-	public void update(InputStream input) throws BundleException;
-
-	/**
-	 * Updates this bundle.
-	 * 
-	 * <p>
-	 * This method performs the same function as calling
-	 * {@link #update(InputStream)} with a <code>null</code> InputStream.
-	 * 
-	 * @throws BundleException If the update fails.
-	 * @throws IllegalStateException If this bundle has been uninstalled or this
-	 *         bundle tries to change its own state.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,LIFECYCLE]</code> for both the current
-	 *         bundle and the updated bundle, and the Java Runtime Environment
-	 *         supports permissions.
-	 * @see #update(InputStream)
-	 */
-	public void update() throws BundleException;
-
-	/**
-	 * Uninstalls this bundle.
-	 * 
-	 * <p>
-	 * This method causes the Framework to notify other bundles that this bundle
-	 * is being uninstalled, and then puts this bundle into the
-	 * <code>UNINSTALLED</code> state. The Framework must remove any resources
-	 * related to this bundle that it is able to remove.
-	 * 
-	 * <p>
-	 * If this bundle has exported any packages, the Framework must continue to
-	 * make these packages available to their importing bundles until the
-	 * <code>PackageAdmin.refreshPackages</code> method has been called or the
-	 * Framework is relaunched.
-	 * 
-	 * <p>
-	 * The following steps are required to uninstall a bundle:
-	 * <ol>
-	 * <li>If this bundle's state is <code>UNINSTALLED</code> then an
-	 * <code>IllegalStateException</code> is thrown.
-	 * 
-	 * <li>If this bundle's state is <code>ACTIVE</code>, <code>STARTING</code>
-	 * or <code>STOPPING</code>, this bundle is stopped as described in the
-	 * <code>Bundle.stop</code> method. If <code>Bundle.stop</code> throws an
-	 * exception, a Framework event of type {@link FrameworkEvent#ERROR} is
-	 * fired containing the exception.
-	 * 
-	 * <li>This bundle's state is set to <code>UNINSTALLED</code>.
-	 * 
-	 * <li>A bundle event of type {@link BundleEvent#UNINSTALLED} is fired.
-	 * 
-	 * <li>This bundle and any persistent storage area provided for this bundle
-	 * by the Framework are removed.
-	 * </ol>
-	 * 
-	 * <b>Preconditions </b>
-	 * <ul>
-	 * <li><code>getState()</code> not in &#x007B; <code>UNINSTALLED</code>
-	 * &#x007D;.
-	 * </ul>
-	 * <b>Postconditions, no exceptions thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> in &#x007B; <code>UNINSTALLED</code>
-	 * &#x007D;.
-	 * <li>This bundle has been uninstalled.
-	 * </ul>
-	 * <b>Postconditions, when an exception is thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> not in &#x007B; <code>UNINSTALLED</code>
-	 * &#x007D;.
-	 * <li>This Bundle has not been uninstalled.
-	 * </ul>
-	 * 
-	 * @throws BundleException If the uninstall failed. This can occur if
-	 *         another thread is attempting to change this bundle's state and
-	 *         does not complete in a timely manner.
-	 * @throws IllegalStateException If this bundle has been uninstalled or this
-	 *         bundle tries to change its own state.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,LIFECYCLE]</code>, and the Java
-	 *         Runtime Environment supports permissions.
-	 * @see #stop()
-	 */
-	public void uninstall() throws BundleException;
-
-	/**
-	 * Returns this bundle's Manifest headers and values. This method returns
-	 * all the Manifest headers and values from the main section of this
-	 * bundle's Manifest file; that is, all lines prior to the first blank line.
-	 * 
-	 * <p>
-	 * Manifest header names are case-insensitive. The methods of the returned
-	 * <code>Dictionary</code> object must operate on header names in a
-	 * case-insensitive manner.
-	 * 
-	 * If a Manifest header value starts with &quot;%&quot;, it must be
-	 * localized according to the default locale. If no localization is found
-	 * for a header value, the header value without the leading &quot;%&quot; is
-	 * returned.
-	 * 
-	 * <p>
-	 * For example, the following Manifest headers and values are included if
-	 * they are present in the Manifest file:
-	 * 
-	 * <pre>
-	 *     Bundle-Name
-	 *     Bundle-Vendor
-	 *     Bundle-Version
-	 *     Bundle-Description
-	 *     Bundle-DocURL
-	 *     Bundle-ContactAddress
-	 * </pre>
-	 * 
-	 * <p>
-	 * This method must continue to return Manifest header information while
-	 * this bundle is in the <code>UNINSTALLED</code> state.
-	 * 
-	 * @return A <code>Dictionary</code> object containing this bundle's
-	 *         Manifest headers and values.
-	 * @throws SecurityException If the caller does not have the
-	 *         appropriate <code>AdminPermission[this,METADATA]</code>, and
-	 *         the Java Runtime Environment supports permissions.
-	 * @see Constants#BUNDLE_LOCALIZATION
-	 */
-	public Dictionary/* <String,String> */getHeaders();
-
-	/**
-	 * Returns this bundle's unique identifier. This bundle is assigned a unique
-	 * identifier by the Framework when it was installed in the OSGi
-	 * environment.
-	 * 
-	 * <p>
-	 * A bundle's unique identifier has the following attributes:
-	 * <ul>
-	 * <li>Is unique and persistent.
-	 * <li>Is a <code>long</code>.
-	 * <li>Its value is not reused for another bundle, even after a bundle is
-	 * uninstalled.
-	 * <li>Does not change while a bundle remains installed.
-	 * <li>Does not change when a bundle is updated.
-	 * </ul>
-	 * 
-	 * <p>
-	 * This method must continue to return this bundle's unique identifier while
-	 * this bundle is in the <code>UNINSTALLED</code> state.
-	 * 
-	 * @return The unique identifier of this bundle.
-	 */
-	public long getBundleId();
-
-	/**
-	 * Returns this bundle's location identifier.
-	 * 
-	 * <p>
-	 * The location identifier is the location passed to
-	 * <code>BundleContext.installBundle</code> when a bundle is installed.
-	 * The location identifier does not change while this bundle remains
-	 * installed, even if this bundle is updated.
-	 * 
-	 * <p>
-	 * This method must continue to return this bundle's location identifier
-	 * while this bundle is in the <code>UNINSTALLED</code> state.
-	 * 
-	 * @return The string representation of this bundle's location identifier.
-	 * @throws SecurityException If the caller does not have the
-	 *         appropriate <code>AdminPermission[this,METADATA]</code>, and
-	 *         the Java Runtime Environment supports permissions.
-	 */
-	public String getLocation();
-
-	/**
-	 * Returns this bundle's <code>ServiceReference</code> list for all
-	 * services it has registered or <code>null</code> if this bundle has no
-	 * registered services.
-	 * 
-	 * <p>
-	 * If the Java runtime supports permissions, a <code>ServiceReference</code>
-	 * object to a service is included in the returned list only if the caller
-	 * has the <code>ServicePermission</code> to get the service using at
-	 * least one of the named classes the service was registered under.
-	 * 
-	 * <p>
-	 * The list is valid at the time of the call to this method, however, as the
-	 * Framework is a very dynamic environment, services can be modified or
-	 * unregistered at anytime.
-	 * 
-	 * @return An array of <code>ServiceReference</code> objects or
-	 *         <code>null</code>.
-	 * @throws IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @see ServiceRegistration
-	 * @see ServiceReference
-	 * @see ServicePermission
-	 */
-	public ServiceReference[] getRegisteredServices();
-
-	/**
-	 * Returns this bundle's <code>ServiceReference</code> list for all
-	 * services it is using or returns <code>null</code> if this bundle is not
-	 * using any services. A bundle is considered to be using a service if its
-	 * use count for that service is greater than zero.
-	 * 
-	 * <p>
-	 * If the Java Runtime Environment supports permissions, a
-	 * <code>ServiceReference</code> object to a service is included in the
-	 * returned list only if the caller has the <code>ServicePermission</code>
-	 * to get the service using at least one of the named classes the service
-	 * was registered under.
-	 * <p>
-	 * The list is valid at the time of the call to this method, however, as the
-	 * Framework is a very dynamic environment, services can be modified or
-	 * unregistered at anytime.
-	 * 
-	 * @return An array of <code>ServiceReference</code> objects or
-	 *         <code>null</code>.
-	 * @throws IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @see ServiceReference
-	 * @see ServicePermission
-	 */
-	public ServiceReference[] getServicesInUse();
-
-	/**
-	 * Determines if this bundle has the specified permissions.
-	 * 
-	 * <p>
-	 * If the Java Runtime Environment does not support permissions, this method
-	 * always returns <code>true</code>.
-	 * <p>
-	 * <code>permission</code> is of type <code>Object</code> to avoid
-	 * referencing the <code>java.security.Permission</code> class directly.
-	 * This is to allow the Framework to be implemented in Java environments
-	 * which do not support permissions.
-	 * 
-	 * <p>
-	 * If the Java Runtime Environment does support permissions, this bundle and
-	 * all its resources including embedded JAR files, belong to the same
-	 * <code>java.security.ProtectionDomain</code>; that is, they must share
-	 * the same set of permissions.
-	 * 
-	 * @param permission The permission to verify.
-	 * @return <code>true</code> if this bundle has the specified permission
-	 *         or the permissions possessed by this bundle imply the specified
-	 *         permission; <code>false</code> if this bundle does not have the
-	 *         specified permission or <code>permission</code> is not an
-	 *         <code>instanceof</code> <code>java.security.Permission</code>.
-	 * @throws IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 */
-	public boolean hasPermission(Object permission);
-
-	/**
-	 * Find the specified resource from this bundle's class loader.
-	 * 
-	 * This bundle's class loader is called to search for the specified
-	 * resource. If this bundle's state is <code>INSTALLED</code>, this method
-	 * must attempt to resolve this bundle before attempting to get the
-	 * specified resource. If this bundle cannot be resolved, then only this
-	 * bundle must be searched for the specified resource. Imported packages
-	 * cannot be searched when this bundle has not been resolved. If this bundle
-	 * is a fragment bundle then <code>null</code> is returned.
-	 * <p>
-	 * Note: Jar and zip files are not required to include directory entries.
-	 * URLs to directory entries will not be returned if the bundle contents do
-	 * not contain directory entries.
-	 * 
-	 * @param name The name of the resource. See
-	 *        <code>ClassLoader.getResource</code> for a description of the
-	 *        format of a resource name.
-	 * @return A URL to the named resource, or <code>null</code> if the resource
-	 *         could not be found or if this bundle is a fragment bundle or if
-	 *         the caller does not have the appropriate
-	 *         <code>AdminPermission[this,RESOURCE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @throws IllegalStateException If this bundle has been uninstalled.
-	 * @see #getEntry
-	 * @see #findEntries
-	 * @since 1.1
-	 */
-	public URL getResource(String name);
-
-	/**
-	 * Returns this bundle's Manifest headers and values localized to the
-	 * specified locale.
-	 * 
-	 * <p>
-	 * This method performs the same function as
-	 * <code>Bundle.getHeaders()</code> except the manifest header values are
-	 * localized to the specified locale.
-	 * 
-	 * <p>
-	 * If a Manifest header value starts with &quot;%&quot;, it must be
-	 * localized according to the specified locale. If a locale is specified and
-	 * cannot be found, then the header values must be returned using the
-	 * default locale. Localizations are searched for in the following order:
-	 * 
-	 * <pre>
-	 *   bn + &quot;_&quot; + Ls + &quot;_&quot; + Cs + &quot;_&quot; + Vs
-	 *   bn + &quot;_&quot; + Ls + &quot;_&quot; + Cs
-	 *   bn + &quot;_&quot; + Ls
-	 *   bn + &quot;_&quot; + Ld + &quot;_&quot; + Cd + &quot;_&quot; + Vd
-	 *   bn + &quot;_&quot; + Ld + &quot;_&quot; + Cd
-	 *   bn + &quot;_&quot; + Ld
-	 *   bn
-	 * </pre>
-	 * 
-	 * Where <code>bn</code> is this bundle's localization basename,
-	 * <code>Ls</code>, <code>Cs</code> and <code>Vs</code> are the
-	 * specified locale (language, country, variant) and <code>Ld</code>,
-	 * <code>Cd</code> and <code>Vd</code> are the default locale (language,
-	 * country, variant).
-	 * 
-	 * If <code>null</code> is specified as the locale string, the header
-	 * values must be localized using the default locale. If the empty string
-	 * (&quot;&quot;) is specified as the locale string, the header values must
-	 * not be localized and the raw (unlocalized) header values, including any
-	 * leading &quot;%&quot;, must be returned. If no localization is found for
-	 * a header value, the header value without the leading &quot;%&quot; is
-	 * returned.
-	 * 
-	 * <p>
-	 * This method must continue to return Manifest header information while
-	 * this bundle is in the <code>UNINSTALLED</code> state, however the
-	 * header values must only be available in the raw and default locale
-	 * values.
-	 * 
-	 * @param locale The locale name into which the header values are to be
-	 *        localized. If the specified locale is <code>null</code> then the
-	 *        locale returned by <code>java.util.Locale.getDefault</code> is
-	 *        used. If the specified locale is the empty string, this method
-	 *        will return the raw (unlocalized) manifest headers including any
-	 *        leading &quot;%&quot;.
-	 * @return A <code>Dictionary</code> object containing this bundle's
-	 *         Manifest headers and values.
-	 * @throws SecurityException If the caller does not have the
-	 *         appropriate <code>AdminPermission[this,METADATA]</code>, and
-	 *         the Java Runtime Environment supports permissions.
-	 * @see #getHeaders()
-	 * @see Constants#BUNDLE_LOCALIZATION
-	 * @since 1.3
-	 */
-	public Dictionary/* <String,String> */getHeaders(String locale);
-
-	/**
-	 * Returns the symbolic name of this bundle as specified by its
-	 * <code>Bundle-SymbolicName</code> manifest header. The bundle symbolic
-	 * name together with a version must identify a unique bundle. The bundle
-	 * symbolic name should be based on the reverse domain name naming
-	 * convention like that used for java packages.
-	 * 
-	 * <p>
-	 * This method must continue to return this bundle's symbolic name while
-	 * this bundle is in the <code>UNINSTALLED</code> state.
-	 * 
-	 * @return The symbolic name of this bundle or <code>null</code> if this
-	 *         bundle does not have a symbolic name.
-	 * @since 1.3
-	 */
-	public String getSymbolicName();
-
-	/**
-	 * Loads the specified class using this bundle's class loader.
-	 * 
-	 * <p>
-	 * If this bundle is a fragment bundle then this method must throw a
-	 * <code>ClassNotFoundException</code>.
-	 * 
-	 * <p>
-	 * If this bundle's state is <code>INSTALLED</code>, this method must
-	 * attempt to resolve this bundle before attempting to load the class.
-	 * 
-	 * <p>
-	 * If this bundle cannot be resolved, a Framework event of type
-	 * {@link FrameworkEvent#ERROR} is fired containing a
-	 * <code>BundleException</code> with details of the reason this bundle
-	 * could not be resolved. This method must then throw a
-	 * <code>ClassNotFoundException</code>.
-	 * 
-	 * <p>
-	 * If this bundle's state is <code>UNINSTALLED</code>, then an
-	 * <code>IllegalStateException</code> is thrown.
-	 * 
-	 * @param name The name of the class to load.
-	 * @return The Class object for the requested class.
-	 * @throws ClassNotFoundException If no such class can be found or
-	 *         if this bundle is a fragment bundle or if the caller does not
-	 *         have the appropriate <code>AdminPermission[this,CLASS]</code>,
-	 *         and the Java Runtime Environment supports permissions.
-	 * @throws IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @since 1.3
-	 */
-	public Class loadClass(String name) throws ClassNotFoundException;
-
-	/**
-	 * Find the specified resources from this bundle's class loader.
-	 * 
-	 * This bundle's class loader is called to search for the specified
-	 * resources. If this bundle's state is <code>INSTALLED</code>, this method
-	 * must attempt to resolve this bundle before attempting to get the
-	 * specified resources. If this bundle cannot be resolved, then only this
-	 * bundle must be searched for the specified resources. Imported packages
-	 * cannot be searched when a bundle has not been resolved. If this bundle is
-	 * a fragment bundle then <code>null</code> is returned.
-	 * <p>
-	 * Note: Jar and zip files are not required to include directory entries.
-	 * URLs to directory entries will not be returned if the bundle contents do
-	 * not contain directory entries.
-	 * 
-	 * @param name The name of the resource. See
-	 *        <code>ClassLoader.getResources</code> for a description of the
-	 *        format of a resource name.
-	 * @return An enumeration of URLs to the named resources, or
-	 *         <code>null</code> if the resource could not be found or if this
-	 *         bundle is a fragment bundle or if the caller does not have the
-	 *         appropriate <code>AdminPermission[this,RESOURCE]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 * @throws IllegalStateException If this bundle has been uninstalled.
-	 * @throws IOException If there is an I/O error.
-	 * @since 1.3
-	 */
-	public Enumeration/* <URL> */getResources(String name) throws IOException;
-
-	/**
-	 * Returns an Enumeration of all the paths (<code>String</code> objects)
-	 * to entries within this bundle whose longest sub-path matches the
-	 * specified path. This bundle's class loader is not used to search for
-	 * entries. Only the contents of this bundle are searched.
-	 * <p>
-	 * The specified path is always relative to the root of this bundle and may
-	 * begin with a &quot;/&quot;. A path value of &quot;/&quot; indicates the
-	 * root of this bundle.
-	 * <p>
-	 * Returned paths indicating subdirectory paths end with a &quot;/&quot;.
-	 * The returned paths are all relative to the root of this bundle and must
-	 * not begin with &quot;/&quot;.
-	 * <p>
-	 * Note: Jar and zip files are not required to include directory entries.
-	 * Paths to directory entries will not be returned if the bundle contents do
-	 * not contain directory entries.
-	 * 
-	 * @param path The path name for which to return entry paths.
-	 * @return An Enumeration of the entry paths (<code>String</code>
-	 *         objects) or <code>null</code> if no entry could be found or if
-	 *         the caller does not have the appropriate
-	 *         <code>AdminPermission[this,RESOURCE]</code> and the Java
-	 *         Runtime Environment supports permissions.
-	 * @throws IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @since 1.3
-	 */
-	public Enumeration/* <String> */getEntryPaths(String path);
-
-	/**
-	 * Returns a URL to the entry at the specified path in this bundle. This
-	 * bundle's class loader is not used to search for the entry. Only the
-	 * contents of this bundle are searched for the entry.
-	 * <p>
-	 * The specified path is always relative to the root of this bundle and may
-	 * begin with &quot;/&quot;. A path value of &quot;/&quot; indicates the
-	 * root of this bundle.
-	 * <p>
-	 * Note: Jar and zip files are not required to include directory entries.
-	 * URLs to directory entries will not be returned if the bundle contents do
-	 * not contain directory entries.
-	 * 
-	 * @param path The path name of the entry.
-	 * @return A URL to the entry, or <code>null</code> if no entry could be
-	 *         found or if the caller does not have the appropriate
-	 *         <code>AdminPermission[this,RESOURCE]</code> and the Java
-	 *         Runtime Environment supports permissions.
-	 * @throws IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @since 1.3
-	 */
-	public URL getEntry(String path);
-
-	/**
-	 * Returns the time when this bundle was last modified. A bundle is
-	 * considered to be modified when it is installed, updated or uninstalled.
-	 * 
-	 * <p>
-	 * The time value is the number of milliseconds since January 1, 1970,
-	 * 00:00:00 GMT.
-	 * 
-	 * @return The time when this bundle was last modified.
-	 * @since 1.3
-	 */
-	public long getLastModified();
-
-	/**
-	 * Returns entries in this bundle and its attached fragments. This bundle's
-	 * class loader is not used to search for entries. Only the contents of this
-	 * bundle and its attached fragments are searched for the specified entries.
-	 * 
-	 * If this bundle's state is <code>INSTALLED</code>, this method must
-	 * attempt to resolve this bundle before attempting to find entries.
-	 * 
-	 * <p>
-	 * This method is intended to be used to obtain configuration, setup,
-	 * localization and other information from this bundle. This method takes
-	 * into account that the &quot;contents&quot; of this bundle can be extended
-	 * with fragments. This &quot;bundle space&quot; is not a namespace with
-	 * unique members; the same entry name can be present multiple times. This
-	 * method therefore returns an enumeration of URL objects. These URLs can
-	 * come from different JARs but have the same path name. This method can
-	 * either return only entries in the specified path or recurse into
-	 * subdirectories returning entries in the directory tree beginning at the
-	 * specified path. Fragments can be attached after this bundle is resolved,
-	 * possibly changing the set of URLs returned by this method. If this bundle
-	 * is not resolved, only the entries in the JAR file of this bundle are
-	 * returned.
-	 * <p>
-	 * Examples:
-	 * 
-	 * <pre>
-	 * // List all XML files in the OSGI-INF directory and below
-	 * Enumeration e = b.findEntries(&quot;OSGI-INF&quot;, &quot;*.xml&quot;, true);
-	 * 
-	 * // Find a specific localization file
-	 * Enumeration e = b
-	 * 		.findEntries(&quot;OSGI-INF/l10n&quot;, &quot;bundle_nl_DU.properties&quot;, false);
-	 * if (e.hasMoreElements())
-	 * 	return (URL) e.nextElement();
-	 * </pre>
-	 * 
-	 * <p>
-	 * Note: Jar and zip files are not required to include directory entries.
-	 * URLs to directory entries will not be returned if the bundle contents do
-	 * not contain directory entries.
-	 * 
-	 * @param path The path name in which to look. The path is always relative
-	 *        to the root of this bundle and may begin with &quot;/&quot;. A
-	 *        path value of &quot;/&quot; indicates the root of this bundle.
-	 * @param filePattern The file name pattern for selecting entries in the
-	 *        specified path. The pattern is only matched against the last
-	 *        element of the entry path. If the entry is a directory then the
-	 *        trailing &quot;/&quot; is not used for pattern matching. Substring
-	 *        matching is supported, as specified in the Filter specification,
-	 *        using the wildcard character (&quot;*&quot;). If null is
-	 *        specified, this is equivalent to &quot;*&quot; and matches all
-	 *        files.
-	 * @param recurse If <code>true</code>, recurse into subdirectories.
-	 *        Otherwise only return entries from the specified path.
-	 * @return An enumeration of URL objects for each matching entry, or
-	 *         <code>null</code> if an entry could not be found or if the caller
-	 *         does not have the appropriate
-	 *         <code>AdminPermission[this,RESOURCE]</code>, and the Java Runtime
-	 *         Environment supports permissions. The URLs are sorted such that
-	 *         entries from this bundle are returned first followed by the
-	 *         entries from attached fragments in ascending bundle id order. If
-	 *         this bundle is a fragment, then only matching entries in this
-	 *         fragment are returned.
-	 * @throws IllegalStateException If this bundle has been uninstalled.
-	 * @since 1.3
-	 */
-	public Enumeration/* <URL> */findEntries(String path, String filePattern,
-			boolean recurse);
-
-	/**
-	 * Returns this bundle's {@link BundleContext}. The returned
-	 * <code>BundleContext</code> can be used by the caller to act on behalf
-	 * of this bundle.
-	 * 
-	 * <p>
-	 * If this bundle is not in the {@link #STARTING}, {@link #ACTIVE}, or
-	 * {@link #STOPPING} states or this bundle is a fragment bundle, then this
-	 * bundle has no valid <code>BundleContext</code>. This method will
-	 * return <code>null</code> if this bundle has no valid
-	 * <code>BundleContext</code>.
-	 * 
-	 * @return A <code>BundleContext</code> for this bundle or
-	 *         <code>null</code> if this bundle has no valid
-	 *         <code>BundleContext</code>.
-	 * @throws SecurityException If the caller does not have the
-	 *         appropriate <code>AdminPermission[this,CONTEXT]</code>, and
-	 *         the Java Runtime Environment supports permissions.
-	 * @since 1.4
-	 */
-	public BundleContext getBundleContext();
-
-	/**
-	 * Return the certificates for the signers of this bundle and the
-	 * certificate chains for those signers.
-	 * 
-	 * @param signersType If {@link #SIGNERS_ALL} is specified, then information
-	 *        on all signers of this bundle is returned. If
-	 *        {@link #SIGNERS_TRUSTED} is specified, then only information on
-	 *        the signers of this bundle trusted by the framework is returned.
-	 * @return The <code>X509Certificate</code>s for the signers of this bundle
-	 *         and the <code>X509Certificate</code> chains for those signers.
-	 *         The keys of the <code>Map</code> are the
-	 *         <code>X509Certificate</code>s of the signers of this bundle. The
-	 *         value for a key is a <code>List</code> containing the
-	 *         <code>X509Certificate</code> chain for the signer. The first item
-	 *         in the <code>List</code> is the signer's
-	 *         <code>X509Certificate</code> which is then followed by the rest
-	 *         of the <code>X509Certificate</code> chain. The returned
-	 *         <code>Map</code> will be empty if there are no signers. The
-	 *         returned <code>Map</code> is the property of the caller who is
-	 *         free to modify it.
-	 * @throws IllegalArgumentException If the specified
-	 *         <code>signersType</code> is not {@link #SIGNERS_ALL} or
-	 *         {@link #SIGNERS_TRUSTED}.
-	 * @since 1.5
-	 */
-	public Map/* <X509Certificate, List<X509Certificate>> */getSignerCertificates(
-			int signersType);
-	
-	/**
-	 * Returns the version of this bundle as specified by its
-	 * <code>Bundle-Version</code> manifest header. If this bundle does not have a
-	 * specified version then {@link Version#emptyVersion} is returned.
-	 * 
-	 * <p>
-	 * This method must continue to return this bundle's version while
-	 * this bundle is in the <code>UNINSTALLED</code> state.
-	 * 
-	 * @return The version of this bundle.
-	 * @since 1.5
-	 */
-	public Version getVersion();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleActivator.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleActivator.java
deleted file mode 100644
index 56660b1..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleActivator.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * Customizes the starting and stopping of a bundle.
- * <p>
- * <code>BundleActivator</code> is an interface that may be implemented when a
- * bundle is started or stopped. The Framework can create instances of a
- * bundle's <code>BundleActivator</code> as required. If an instance's
- * <code>BundleActivator.start</code> method executes successfully, it is
- * guaranteed that the same instance's <code>BundleActivator.stop</code>
- * method will be called when the bundle is to be stopped. The Framework must
- * not concurrently call a <code>BundleActivator</code> object.
- * 
- * <p>
- * <code>BundleActivator</code> is specified through the
- * <code>Bundle-Activator</code> Manifest header. A bundle can only specify a
- * single <code>BundleActivator</code> in the Manifest file. Fragment bundles
- * must not have a <code>BundleActivator</code>. The form of the Manifest
- * header is:
- * 
- * <p>
- * <code>Bundle-Activator: <i>class-name</i></code>
- * 
- * <p>
- * where <code><i>class-name</i></code> is a fully qualified Java classname.
- * <p>
- * The specified <code>BundleActivator</code> class must have a public
- * constructor that takes no parameters so that a <code>BundleActivator</code>
- * object can be created by <code>Class.newInstance()</code>.
- * 
- * @NotThreadSafe
- * @version $Revision: 6361 $
- */
-
-public interface BundleActivator {
-	/**
-	 * Called when this bundle is started so the Framework can perform the
-	 * bundle-specific activities necessary to start this bundle. This method
-	 * can be used to register services or to allocate any resources that this
-	 * bundle needs.
-	 * 
-	 * <p>
-	 * This method must complete and return to its caller in a timely manner.
-	 * 
-	 * @param context The execution context of the bundle being started.
-	 * @throws Exception If this method throws an exception, this
-	 *         bundle is marked as stopped and the Framework will remove this
-	 *         bundle's listeners, unregister all services registered by this
-	 *         bundle, and release all services used by this bundle.
-	 */
-	public void start(BundleContext context) throws Exception;
-
-	/**
-	 * Called when this bundle is stopped so the Framework can perform the
-	 * bundle-specific activities necessary to stop the bundle. In general, this
-	 * method should undo the work that the <code>BundleActivator.start</code>
-	 * method started. There should be no active threads that were started by
-	 * this bundle when this bundle returns. A stopped bundle must not call any
-	 * Framework objects.
-	 * 
-	 * <p>
-	 * This method must complete and return to its caller in a timely manner.
-	 * 
-	 * @param context The execution context of the bundle being stopped.
-	 * @throws Exception If this method throws an exception, the
-	 *         bundle is still marked as stopped, and the Framework will remove
-	 *         the bundle's listeners, unregister all services registered by the
-	 *         bundle, and release all services used by the bundle.
-	 */
-	public void stop(BundleContext context) throws Exception;
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleContext.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleContext.java
deleted file mode 100644
index 44b3801..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleContext.java
+++ /dev/null
@@ -1,756 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Dictionary;
-
-/**
- * A bundle's execution context within the Framework. The context is used to
- * grant access to other methods so that this bundle can interact with the
- * Framework.
- * 
- * <p>
- * <code>BundleContext</code> methods allow a bundle to:
- * <ul>
- * <li>Subscribe to events published by the Framework.
- * <li>Register service objects with the Framework service registry.
- * <li>Retrieve <code>ServiceReferences</code> from the Framework service
- * registry.
- * <li>Get and release service objects for a referenced service.
- * <li>Install new bundles in the Framework.
- * <li>Get the list of bundles installed in the Framework.
- * <li>Get the {@link Bundle} object for a bundle.
- * <li>Create <code>File</code> objects for files in a persistent storage
- * area provided for the bundle by the Framework.
- * </ul>
- * 
- * <p>
- * A <code>BundleContext</code> object will be created and provided to the
- * bundle associated with this context when it is started using the
- * {@link BundleActivator#start} method. The same <code>BundleContext</code>
- * object will be passed to the bundle associated with this context when it is
- * stopped using the {@link BundleActivator#stop} method. A
- * <code>BundleContext</code> object is generally for the private use of its
- * associated bundle and is not meant to be shared with other bundles in the
- * OSGi environment.
- * 
- * <p>
- * The <code>Bundle</code> object associated with a <code>BundleContext</code>
- * object is called the <em>context bundle</em>.
- * 
- * <p>
- * The <code>BundleContext</code> object is only valid during the execution of
- * its context bundle; that is, during the period from when the context bundle
- * is in the <code>STARTING</code>, <code>STOPPING</code>, and
- * <code>ACTIVE</code> bundle states. If the <code>BundleContext</code>
- * object is used subsequently, an <code>IllegalStateException</code> must be
- * thrown. The <code>BundleContext</code> object must never be reused after
- * its context bundle is stopped.
- * 
- * <p>
- * The Framework is the only entity that can create <code>BundleContext</code>
- * objects and they are only valid within the Framework that created them.
- * 
- * @ThreadSafe
- * @version $Revision: 6781 $
- */
-
-public interface BundleContext {
-	/**
-	 * Returns the value of the specified property. If the key is not found in
-	 * the Framework properties, the system properties are then searched. The
-	 * method returns <code>null</code> if the property is not found.
-	 * 
-	 * <p>
-	 * All bundles must have permission to read properties whose names start
-	 * with &quot;org.osgi.&quot;.
-	 * 
-	 * @param key The name of the requested property.
-	 * @return The value of the requested property, or <code>null</code> if the
-	 *         property is undefined.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>PropertyPermission</code> to read the property, and the
-	 *         Java Runtime Environment supports permissions.
-	 */
-	public String getProperty(String key);
-
-	/**
-	 * Returns the <code>Bundle</code> object associated with this
-	 * <code>BundleContext</code>. This bundle is called the context bundle.
-	 * 
-	 * @return The <code>Bundle</code> object associated with this
-	 *         <code>BundleContext</code>.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public Bundle getBundle();
-
-	/**
-	 * Installs a bundle from the specified <code>InputStream</code> object.
-	 * 
-	 * <p>
-	 * If the specified <code>InputStream</code> is <code>null</code>, the
-	 * Framework must create the <code>InputStream</code> from which to read the
-	 * bundle by interpreting, in an implementation dependent manner, the
-	 * specified <code>location</code>.
-	 * 
-	 * <p>
-	 * The specified <code>location</code> identifier will be used as the
-	 * identity of the bundle. Every installed bundle is uniquely identified by
-	 * its location identifier which is typically in the form of a URL.
-	 * 
-	 * <p>
-	 * The following steps are required to install a bundle:
-	 * <ol>
-	 * <li>If a bundle containing the same location identifier is already
-	 * installed, the <code>Bundle</code> object for that bundle is returned.
-	 * 
-	 * <li>The bundle's content is read from the input stream. If this fails, a
-	 * {@link BundleException} is thrown.
-	 * 
-	 * <li>The bundle's associated resources are allocated. The associated
-	 * resources minimally consist of a unique identifier and a persistent
-	 * storage area if the platform has file system support. If this step fails,
-	 * a <code>BundleException</code> is thrown.
-	 * 
-	 * <li>The bundle's state is set to <code>INSTALLED</code>.
-	 * 
-	 * <li>A bundle event of type {@link BundleEvent#INSTALLED} is fired.
-	 * 
-	 * <li>The <code>Bundle</code> object for the newly or previously installed
-	 * bundle is returned.
-	 * </ol>
-	 * 
-	 * <b>Postconditions, no exceptions thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> in &#x007B; <code>INSTALLED</code>,
-	 * <code>RESOLVED</code> &#x007D;.
-	 * <li>Bundle has a unique ID.
-	 * </ul>
-	 * <b>Postconditions, when an exception is thrown </b>
-	 * <ul>
-	 * <li>Bundle is not installed and no trace of the bundle exists.
-	 * </ul>
-	 * 
-	 * @param location The location identifier of the bundle to install.
-	 * @param input The <code>InputStream</code> object from which this bundle
-	 *        will be read or <code>null</code> to indicate the Framework must
-	 *        create the input stream from the specified location identifier.
-	 *        The input stream must always be closed when this method completes,
-	 *        even if an exception is thrown.
-	 * @return The <code>Bundle</code> object of the installed bundle.
-	 * @throws BundleException If the input stream cannot be read or the
-	 *         installation failed.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[installed bundle,LIFECYCLE]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 */
-	public Bundle installBundle(String location, InputStream input)
-			throws BundleException;
-
-	/**
-	 * Installs a bundle from the specified <code>location</code> identifier.
-	 * 
-	 * <p>
-	 * This method performs the same function as calling
-	 * {@link #installBundle(String,InputStream)} with the specified
-	 * <code>location</code> identifier and a <code>null</code> InputStream.
-	 * 
-	 * @param location The location identifier of the bundle to install.
-	 * @return The <code>Bundle</code> object of the installed bundle.
-	 * @throws BundleException If the installation failed.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[installed bundle,LIFECYCLE]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 * @see #installBundle(String, InputStream)
-	 */
-	public Bundle installBundle(String location) throws BundleException;
-
-	/**
-	 * Returns the bundle with the specified identifier.
-	 * 
-	 * @param id The identifier of the bundle to retrieve.
-	 * @return A <code>Bundle</code> object or <code>null</code> if the
-	 *         identifier does not match any installed bundle.
-	 */
-	public Bundle getBundle(long id);
-
-	/**
-	 * Returns a list of all installed bundles.
-	 * <p>
-	 * This method returns a list of all bundles installed in the OSGi
-	 * environment at the time of the call to this method. However, since the
-	 * Framework is a very dynamic environment, bundles can be installed or
-	 * uninstalled at anytime.
-	 * 
-	 * @return An array of <code>Bundle</code> objects, one object per
-	 *         installed bundle.
-	 */
-	public Bundle[] getBundles();
-
-	/**
-	 * Adds the specified <code>ServiceListener</code> object with the
-	 * specified <code>filter</code> to the context bundle's list of
-	 * listeners. See {@link Filter} for a description of the filter syntax.
-	 * <code>ServiceListener</code> objects are notified when a service has a
-	 * lifecycle state change.
-	 * 
-	 * <p>
-	 * If the context bundle's list of listeners already contains a listener
-	 * <code>l</code> such that <code>(l==listener)</code>, then this
-	 * method replaces that listener's filter (which may be <code>null</code>)
-	 * with the specified one (which may be <code>null</code>).
-	 * 
-	 * <p>
-	 * The listener is called if the filter criteria is met. To filter based
-	 * upon the class of the service, the filter should reference the
-	 * {@link Constants#OBJECTCLASS} property. If <code>filter</code> is
-	 * <code>null</code>, all services are considered to match the filter.
-	 * 
-	 * <p>
-	 * When using a <code>filter</code>, it is possible that the
-	 * <code>ServiceEvent</code>s for the complete lifecycle of a service
-	 * will not be delivered to the listener. For example, if the
-	 * <code>filter</code> only matches when the property <code>x</code> has
-	 * the value <code>1</code>, the listener will not be called if the
-	 * service is registered with the property <code>x</code> not set to the
-	 * value <code>1</code>. Subsequently, when the service is modified
-	 * setting property <code>x</code> to the value <code>1</code>, the
-	 * filter will match and the listener will be called with a
-	 * <code>ServiceEvent</code> of type <code>MODIFIED</code>. Thus, the
-	 * listener will not be called with a <code>ServiceEvent</code> of type
-	 * <code>REGISTERED</code>.
-	 * 
-	 * <p>
-	 * If the Java Runtime Environment supports permissions, the
-	 * <code>ServiceListener</code> object will be notified of a service event
-	 * only if the bundle that is registering it has the
-	 * <code>ServicePermission</code> to get the service using at least one of
-	 * the named classes the service was registered under.
-	 * 
-	 * @param listener The <code>ServiceListener</code> object to be added.
-	 * @param filter The filter criteria.
-	 * @throws InvalidSyntaxException If <code>filter</code> contains an
-	 *         invalid filter string that cannot be parsed.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @see ServiceEvent
-	 * @see ServiceListener
-	 * @see ServicePermission
-	 */
-	public void addServiceListener(ServiceListener listener, String filter)
-			throws InvalidSyntaxException;
-
-	/**
-	 * Adds the specified <code>ServiceListener</code> object to the context
-	 * bundle's list of listeners.
-	 * 
-	 * <p>
-	 * This method is the same as calling
-	 * <code>BundleContext.addServiceListener(ServiceListener listener,
-	 * String filter)</code>
-	 * with <code>filter</code> set to <code>null</code>.
-	 * 
-	 * @param listener The <code>ServiceListener</code> object to be added.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @see #addServiceListener(ServiceListener, String)
-	 */
-	public void addServiceListener(ServiceListener listener);
-
-	/**
-	 * Removes the specified <code>ServiceListener</code> object from the
-	 * context bundle's list of listeners.
-	 * 
-	 * <p>
-	 * If <code>listener</code> is not contained in this context bundle's list
-	 * of listeners, this method does nothing.
-	 * 
-	 * @param listener The <code>ServiceListener</code> to be removed.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public void removeServiceListener(ServiceListener listener);
-
-	/**
-	 * Adds the specified <code>BundleListener</code> object to the context
-	 * bundle's list of listeners if not already present. BundleListener objects
-	 * are notified when a bundle has a lifecycle state change.
-	 * 
-	 * <p>
-	 * If the context bundle's list of listeners already contains a listener
-	 * <code>l</code> such that <code>(l==listener)</code>, this method
-	 * does nothing.
-	 * 
-	 * @param listener The <code>BundleListener</code> to be added.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @throws SecurityException If listener is a
-	 *         <code>SynchronousBundleListener</code> and the caller does not
-	 *         have the appropriate
-	 *         <code>AdminPermission[context bundle,LISTENER]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 * @see BundleEvent
-	 * @see BundleListener
-	 */
-	public void addBundleListener(BundleListener listener);
-
-	/**
-	 * Removes the specified <code>BundleListener</code> object from the
-	 * context bundle's list of listeners.
-	 * 
-	 * <p>
-	 * If <code>listener</code> is not contained in the context bundle's list
-	 * of listeners, this method does nothing.
-	 * 
-	 * @param listener The <code>BundleListener</code> object to be removed.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @throws SecurityException If listener is a
-	 *         <code>SynchronousBundleListener</code> and the caller does not
-	 *         have the appropriate
-	 *         <code>AdminPermission[context bundle,LISTENER]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 */
-	public void removeBundleListener(BundleListener listener);
-
-	/**
-	 * Adds the specified <code>FrameworkListener</code> object to the context
-	 * bundle's list of listeners if not already present. FrameworkListeners are
-	 * notified of general Framework events.
-	 * 
-	 * <p>
-	 * If the context bundle's list of listeners already contains a listener
-	 * <code>l</code> such that <code>(l==listener)</code>, this method
-	 * does nothing.
-	 * 
-	 * @param listener The <code>FrameworkListener</code> object to be added.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @see FrameworkEvent
-	 * @see FrameworkListener
-	 */
-	public void addFrameworkListener(FrameworkListener listener);
-
-	/**
-	 * Removes the specified <code>FrameworkListener</code> object from the
-	 * context bundle's list of listeners.
-	 * 
-	 * <p>
-	 * If <code>listener</code> is not contained in the context bundle's list
-	 * of listeners, this method does nothing.
-	 * 
-	 * @param listener The <code>FrameworkListener</code> object to be
-	 *        removed.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public void removeFrameworkListener(FrameworkListener listener);
-
-	/**
-	 * Registers the specified service object with the specified properties
-	 * under the specified class names into the Framework. A
-	 * <code>ServiceRegistration</code> object is returned. The
-	 * <code>ServiceRegistration</code> object is for the private use of the
-	 * bundle registering the service and should not be shared with other
-	 * bundles. The registering bundle is defined to be the context bundle.
-	 * Other bundles can locate the service by using either the
-	 * {@link #getServiceReferences} or {@link #getServiceReference} method.
-	 * 
-	 * <p>
-	 * A bundle can register a service object that implements the
-	 * {@link ServiceFactory} interface to have more flexibility in providing
-	 * service objects to other bundles.
-	 * 
-	 * <p>
-	 * The following steps are required to register a service:
-	 * <ol>
-	 * <li>If <code>service</code> is not a <code>ServiceFactory</code>, an
-	 * <code>IllegalArgumentException</code> is thrown if <code>service</code>
-	 * is not an <code>instanceof</code> all the specified class names.
-	 * <li>The Framework adds the following service properties to the service
-	 * properties from the specified <code>Dictionary</code> (which may be
-	 * <code>null</code>): <br/>
-	 * A property named {@link Constants#SERVICE_ID} identifying the
-	 * registration number of the service <br/>
-	 * A property named {@link Constants#OBJECTCLASS} containing all the
-	 * specified classes. <br/>
-	 * Properties with these names in the specified <code>Dictionary</code> will
-	 * be ignored.
-	 * <li>The service is added to the Framework service registry and may now be
-	 * used by other bundles.
-	 * <li>A service event of type {@link ServiceEvent#REGISTERED} is fired.
-	 * <li>A <code>ServiceRegistration</code> object for this registration is
-	 * returned.
-	 * </ol>
-	 * 
-	 * @param clazzes The class names under which the service can be located.
-	 *        The class names in this array will be stored in the service's
-	 *        properties under the key {@link Constants#OBJECTCLASS}.
-	 * @param service The service object or a <code>ServiceFactory</code>
-	 *        object.
-	 * @param properties The properties for this service. The keys in the
-	 *        properties object must all be <code>String</code> objects. See
-	 *        {@link Constants} for a list of standard service property keys.
-	 *        Changes should not be made to this object after calling this
-	 *        method. To update the service's properties the
-	 *        {@link ServiceRegistration#setProperties} method must be called.
-	 *        The set of properties may be <code>null</code> if the service has
-	 *        no properties.
-	 * @return A <code>ServiceRegistration</code> object for use by the bundle
-	 *         registering the service to update the service's properties or to
-	 *         unregister the service.
-	 * @throws IllegalArgumentException If one of the following is true:
-	 *         <ul>
-	 *         <li><code>service</code> is <code>null</code>. <li><code>service
-	 *         </code> is not a <code>ServiceFactory</code> object and is not an
-	 *         instance of all the named classes in <code>clazzes</code>. <li>
-	 *         <code>properties</code> contains case variants of the same key
-	 *         name.
-	 *         </ul>
-	 * @throws SecurityException If the caller does not have the
-	 *         <code>ServicePermission</code> to register the service for all
-	 *         the named classes and the Java Runtime Environment supports
-	 *         permissions.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 * @see ServiceRegistration
-	 * @see ServiceFactory
-	 */
-	public ServiceRegistration registerService(String[] clazzes,
-			Object service, Dictionary properties);
-
-	/**
-	 * Registers the specified service object with the specified properties
-	 * under the specified class name with the Framework.
-	 * 
-	 * <p>
-	 * This method is otherwise identical to
-	 * {@link #registerService(String[], Object, Dictionary)} and is provided as
-	 * a convenience when <code>service</code> will only be registered under a
-	 * single class name. Note that even in this case the value of the service's
-	 * {@link Constants#OBJECTCLASS} property will be an array of string, rather
-	 * than just a single string.
-	 * 
-	 * @param clazz The class name under which the service can be located.
-	 * @param service The service object or a <code>ServiceFactory</code>
-	 *        object.
-	 * @param properties The properties for this service.
-	 * @return A <code>ServiceRegistration</code> object for use by the bundle
-	 *         registering the service to update the service's properties or to
-	 *         unregister the service.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 * @see #registerService(String[], Object, Dictionary)
-	 */
-	public ServiceRegistration registerService(String clazz, Object service,
-			Dictionary properties);
-
-	/**
-	 * Returns an array of <code>ServiceReference</code> objects. The returned
-	 * array of <code>ServiceReference</code> objects contains services that
-	 * were registered under the specified class, match the specified filter
-	 * expression, and the packages for the class names under which the services
-	 * were registered match the context bundle's packages as defined in
-	 * {@link ServiceReference#isAssignableTo(Bundle, String)}.
-	 * 
-	 * <p>
-	 * The list is valid at the time of the call to this method. However since
-	 * the Framework is a very dynamic environment, services can be modified or
-	 * unregistered at any time.
-	 * 
-	 * <p>
-	 * The specified <code>filter</code> expression is used to select the
-	 * registered services whose service properties contain keys and values
-	 * which satisfy the filter expression. See {@link Filter} for a description
-	 * of the filter syntax. If the specified <code>filter</code> is
-	 * <code>null</code>, all registered services are considered to match the
-	 * filter. If the specified <code>filter</code> expression cannot be parsed,
-	 * an {@link InvalidSyntaxException} will be thrown with a human readable
-	 * message where the filter became unparsable.
-	 * 
-	 * <p>
-	 * The result is an array of <code>ServiceReference</code> objects for all
-	 * services that meet all of the following conditions:
-	 * <ul>
-	 * <li>If the specified class name, <code>clazz</code>, is not
-	 * <code>null</code>, the service must have been registered with the
-	 * specified class name. The complete list of class names with which a
-	 * service was registered is available from the service's
-	 * {@link Constants#OBJECTCLASS objectClass} property.
-	 * <li>If the specified <code>filter</code> is not <code>null</code>, the
-	 * filter expression must match the service.
-	 * <li>If the Java Runtime Environment supports permissions, the caller must
-	 * have <code>ServicePermission</code> with the <code>GET</code> action for
-	 * at least one of the class names under which the service was registered.
-	 * <li>For each class name with which the service was registered, calling
-	 * {@link ServiceReference#isAssignableTo(Bundle, String)} with the context
-	 * bundle and the class name on the service's <code>ServiceReference</code>
-	 * object must return <code>true</code>
-	 * </ul>
-	 * 
-	 * @param clazz The class name with which the service was registered or
-	 *        <code>null</code> for all services.
-	 * @param filter The filter expression or <code>null</code> for all
-	 *        services.
-	 * @return An array of <code>ServiceReference</code> objects or
-	 *         <code>null</code> if no services are registered which satisfy the
-	 *         search.
-	 * @throws InvalidSyntaxException If the specified <code>filter</code>
-	 *         contains an invalid filter expression that cannot be parsed.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 */
-	public ServiceReference[] getServiceReferences(String clazz, String filter)
-			throws InvalidSyntaxException;
-
-	/**
-	 * Returns an array of <code>ServiceReference</code> objects. The returned
-	 * array of <code>ServiceReference</code> objects contains services that
-	 * were registered under the specified class and match the specified filter
-	 * expression.
-	 * 
-	 * <p>
-	 * The list is valid at the time of the call to this method. However since
-	 * the Framework is a very dynamic environment, services can be modified or
-	 * unregistered at any time.
-	 * 
-	 * <p>
-	 * The specified <code>filter</code> expression is used to select the
-	 * registered services whose service properties contain keys and values
-	 * which satisfy the filter expression. See {@link Filter} for a description
-	 * of the filter syntax. If the specified <code>filter</code> is
-	 * <code>null</code>, all registered services are considered to match the
-	 * filter. If the specified <code>filter</code> expression cannot be parsed,
-	 * an {@link InvalidSyntaxException} will be thrown with a human readable
-	 * message where the filter became unparsable.
-	 * 
-	 * <p>
-	 * The result is an array of <code>ServiceReference</code> objects for all
-	 * services that meet all of the following conditions:
-	 * <ul>
-	 * <li>If the specified class name, <code>clazz</code>, is not
-	 * <code>null</code>, the service must have been registered with the
-	 * specified class name. The complete list of class names with which a
-	 * service was registered is available from the service's
-	 * {@link Constants#OBJECTCLASS objectClass} property.
-	 * <li>If the specified <code>filter</code> is not <code>null</code>, the
-	 * filter expression must match the service.
-	 * <li>If the Java Runtime Environment supports permissions, the caller must
-	 * have <code>ServicePermission</code> with the <code>GET</code> action for
-	 * at least one of the class names under which the service was registered.
-	 * </ul>
-	 * 
-	 * @param clazz The class name with which the service was registered or
-	 *        <code>null</code> for all services.
-	 * @param filter The filter expression or <code>null</code> for all
-	 *        services.
-	 * @return An array of <code>ServiceReference</code> objects or
-	 *         <code>null</code> if no services are registered which satisfy the
-	 *         search.
-	 * @throws InvalidSyntaxException If the specified <code>filter</code>
-	 *         contains an invalid filter expression that cannot be parsed.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 * @since 1.3
-	 */
-	public ServiceReference[] getAllServiceReferences(String clazz,
-			String filter) throws InvalidSyntaxException;
-
-	/**
-	 * Returns a <code>ServiceReference</code> object for a service that
-	 * implements and was registered under the specified class.
-	 * 
-	 * <p>
-	 * The returned <code>ServiceReference</code> object is valid at the time of
-	 * the call to this method. However as the Framework is a very dynamic
-	 * environment, services can be modified or unregistered at any time.
-	 * 
-	 * <p>
-	 * This method is the same as calling
-	 * {@link BundleContext#getServiceReferences(String, String)} with a
-	 * <code>null</code> filter expression. It is provided as a convenience for
-	 * when the caller is interested in any service that implements the
-	 * specified class.
-	 * <p>
-	 * If multiple such services exist, the service with the highest ranking (as
-	 * specified in its {@link Constants#SERVICE_RANKING} property) is returned.
-	 * <p>
-	 * If there is a tie in ranking, the service with the lowest service ID (as
-	 * specified in its {@link Constants#SERVICE_ID} property); that is, the
-	 * service that was registered first is returned.
-	 * 
-	 * @param clazz The class name with which the service was registered.
-	 * @return A <code>ServiceReference</code> object, or <code>null</code> if
-	 *         no services are registered which implement the named class.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 * @see #getServiceReferences(String, String)
-	 */
-	public ServiceReference getServiceReference(String clazz);
-
-	/**
-	 * Returns the service object referenced by the specified
-	 * <code>ServiceReference</code> object.
-	 * <p>
-	 * A bundle's use of a service is tracked by the bundle's use count of that
-	 * service. Each time a service's service object is returned by
-	 * {@link #getService(ServiceReference)} the context bundle's use count for
-	 * that service is incremented by one. Each time the service is released by
-	 * {@link #ungetService(ServiceReference)} the context bundle's use count
-	 * for that service is decremented by one.
-	 * <p>
-	 * When a bundle's use count for a service drops to zero, the bundle should
-	 * no longer use that service.
-	 * 
-	 * <p>
-	 * This method will always return <code>null</code> when the service
-	 * associated with this <code>reference</code> has been unregistered.
-	 * 
-	 * <p>
-	 * The following steps are required to get the service object:
-	 * <ol>
-	 * <li>If the service has been unregistered, <code>null</code> is returned.
-	 * <li>The context bundle's use count for this service is incremented by
-	 * one.
-	 * <li>If the context bundle's use count for the service is currently one
-	 * and the service was registered with an object implementing the
-	 * <code>ServiceFactory</code> interface, the
-	 * {@link ServiceFactory#getService(Bundle, ServiceRegistration)} method is
-	 * called to create a service object for the context bundle. This service
-	 * object is cached by the Framework. While the context bundle's use count
-	 * for the service is greater than zero, subsequent calls to get the
-	 * services's service object for the context bundle will return the cached
-	 * service object. <br>
-	 * If the service object returned by the <code>ServiceFactory</code> object
-	 * is not an <code>instanceof</code> all the classes named when the service
-	 * was registered or the <code>ServiceFactory</code> object throws an
-	 * exception, <code>null</code> is returned and a Framework event of type
-	 * {@link FrameworkEvent#ERROR} containing a {@link ServiceException}
-	 * describing the error is fired.
-	 * <li>The service object for the service is returned.
-	 * </ol>
-	 * 
-	 * @param reference A reference to the service.
-	 * @return A service object for the service associated with
-	 *         <code>reference</code> or <code>null</code> if the service is not
-	 *         registered, the service object returned by a
-	 *         <code>ServiceFactory</code> does not implement the classes under
-	 *         which it was registered or the <code>ServiceFactory</code> threw
-	 *         an exception.
-	 * @throws SecurityException If the caller does not have the
-	 *         <code>ServicePermission</code> to get the service using at least
-	 *         one of the named classes the service was registered under and the
-	 *         Java Runtime Environment supports permissions.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @throws IllegalArgumentException If the specified
-	 *         <code>ServiceReference</code> was not created by the same
-	 *         framework instance as this <code>BundleContext</code>.
-	 * @see #ungetService(ServiceReference)
-	 * @see ServiceFactory
-	 */
-	public Object getService(ServiceReference reference);
-
-	/**
-	 * Releases the service object referenced by the specified
-	 * <code>ServiceReference</code> object. If the context bundle's use count
-	 * for the service is zero, this method returns <code>false</code>.
-	 * Otherwise, the context bundle's use count for the service is decremented
-	 * by one.
-	 * 
-	 * <p>
-	 * The service's service object should no longer be used and all references
-	 * to it should be destroyed when a bundle's use count for the service drops
-	 * to zero.
-	 * 
-	 * <p>
-	 * The following steps are required to unget the service object:
-	 * <ol>
-	 * <li>If the context bundle's use count for the service is zero or the
-	 * service has been unregistered, <code>false</code> is returned.
-	 * <li>The context bundle's use count for this service is decremented by
-	 * one.
-	 * <li>If the context bundle's use count for the service is currently zero
-	 * and the service was registered with a <code>ServiceFactory</code> object,
-	 * the
-	 * {@link ServiceFactory#ungetService(Bundle, ServiceRegistration, Object)}
-	 * method is called to release the service object for the context bundle.
-	 * <li><code>true</code> is returned.
-	 * </ol>
-	 * 
-	 * @param reference A reference to the service to be released.
-	 * @return <code>false</code> if the context bundle's use count for the
-	 *         service is zero or if the service has been unregistered;
-	 *         <code>true</code> otherwise.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @throws IllegalArgumentException If the specified
-	 *         <code>ServiceReference</code> was not created by the same
-	 *         framework instance as this <code>BundleContext</code>.
-	 * @see #getService
-	 * @see ServiceFactory
-	 */
-	public boolean ungetService(ServiceReference reference);
-
-	/**
-	 * Creates a <code>File</code> object for a file in the persistent storage
-	 * area provided for the bundle by the Framework. This method will return
-	 * <code>null</code> if the platform does not have file system support.
-	 * 
-	 * <p>
-	 * A <code>File</code> object for the base directory of the persistent
-	 * storage area provided for the context bundle by the Framework can be
-	 * obtained by calling this method with an empty string as
-	 * <code>filename</code>.
-	 * 
-	 * <p>
-	 * If the Java Runtime Environment supports permissions, the Framework will
-	 * ensure that the bundle has the <code>java.io.FilePermission</code> with
-	 * actions <code>read</code>,<code>write</code>,<code>delete</code>
-	 * for all files (recursively) in the persistent storage area provided for
-	 * the context bundle.
-	 * 
-	 * @param filename A relative name to the file to be accessed.
-	 * @return A <code>File</code> object that represents the requested file
-	 *         or <code>null</code> if the platform does not have file system
-	 *         support.
-	 * @throws IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public File getDataFile(String filename);
-
-	/**
-	 * Creates a <code>Filter</code> object. This <code>Filter</code> object may
-	 * be used to match a <code>ServiceReference</code> object or a
-	 * <code>Dictionary</code> object.
-	 * 
-	 * <p>
-	 * If the filter cannot be parsed, an {@link InvalidSyntaxException} will be
-	 * thrown with a human readable message where the filter became unparsable.
-	 * 
-	 * @param filter The filter string.
-	 * @return A <code>Filter</code> object encapsulating the filter string.
-	 * @throws InvalidSyntaxException If <code>filter</code> contains an invalid
-	 *         filter string that cannot be parsed.
-	 * @throws NullPointerException If <code>filter</code> is null.
-	 * @throws IllegalStateException If this BundleContext is no longer valid.
-	 * @see "Framework specification for a description of the filter string syntax."
-	 * @see FrameworkUtil#createFilter(String)
-	 * @since 1.1
-	 */
-	public Filter createFilter(String filter) throws InvalidSyntaxException;
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleEvent.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleEvent.java
deleted file mode 100644
index 7a8fb8d..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleEvent.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.EventObject;
-
-/**
- * An event from the Framework describing a bundle lifecycle change.
- * <p>
- * <code>BundleEvent</code> objects are delivered to
- * <code>SynchronousBundleListener</code>s and <code>BundleListener</code>s
- * when a change occurs in a bundle's lifecycle. A type code is used to identify
- * the event type for future extendability.
- * 
- * <p>
- * OSGi Alliance reserves the right to extend the set of types.
- * 
- * @Immutable
- * @see BundleListener
- * @see SynchronousBundleListener
- * @version $Revision: 6542 $
- */
-
-public class BundleEvent extends EventObject {
-	static final long		serialVersionUID	= 4080640865971756012L;
-	/**
-	 * Bundle that had a change occur in its lifecycle.
-	 */
-	private final Bundle	bundle;
-
-	/**
-	 * Type of bundle lifecycle change.
-	 */
-	private final int		type;
-
-	/**
-	 * The bundle has been installed.
-	 * 
-	 * @see BundleContext#installBundle(String)
-	 */
-	public final static int	INSTALLED			= 0x00000001;
-
-	/**
-	 * The bundle has been started.
-	 * <p>
-	 * The bundle's
-	 * {@link BundleActivator#start(BundleContext) BundleActivator start} method
-	 * has been executed if the bundle has a bundle activator class.
-	 * 
-	 * @see Bundle#start()
-	 */
-	public final static int	STARTED				= 0x00000002;
-
-	/**
-	 * The bundle has been stopped.
-	 * <p>
-	 * The bundle's
-	 * {@link BundleActivator#stop(BundleContext) BundleActivator stop} method
-	 * has been executed if the bundle has a bundle activator class.
-	 * 
-	 * @see Bundle#stop()
-	 */
-	public final static int	STOPPED				= 0x00000004;
-
-	/**
-	 * The bundle has been updated.
-	 * 
-	 * @see Bundle#update()
-	 */
-	public final static int	UPDATED				= 0x00000008;
-
-	/**
-	 * The bundle has been uninstalled.
-	 * 
-	 * @see Bundle#uninstall
-	 */
-	public final static int	UNINSTALLED			= 0x00000010;
-
-	/**
-	 * The bundle has been resolved.
-	 * 
-	 * @see Bundle#RESOLVED
-	 * @since 1.3
-	 */
-	public final static int	RESOLVED			= 0x00000020;
-
-	/**
-	 * The bundle has been unresolved.
-	 * 
-	 * @see Bundle#INSTALLED
-	 * @since 1.3
-	 */
-	public final static int	UNRESOLVED			= 0x00000040;
-
-	/**
-	 * The bundle is about to be activated.
-	 * <p>
-	 * The bundle's
-	 * {@link BundleActivator#start(BundleContext) BundleActivator start} method
-	 * is about to be called if the bundle has a bundle activator class. This
-	 * event is only delivered to {@link SynchronousBundleListener}s. It is not
-	 * delivered to <code>BundleListener</code>s.
-	 * 
-	 * @see Bundle#start()
-	 * @since 1.3
-	 */
-	public final static int	STARTING			= 0x00000080;
-
-	/**
-	 * The bundle is about to deactivated.
-	 * <p>
-	 * The bundle's
-	 * {@link BundleActivator#stop(BundleContext) BundleActivator stop} method
-	 * is about to be called if the bundle has a bundle activator class. This
-	 * event is only delivered to {@link SynchronousBundleListener}s. It is not
-	 * delivered to <code>BundleListener</code>s.
-	 * 
-	 * @see Bundle#stop()
-	 * @since 1.3
-	 */
-	public final static int	STOPPING			= 0x00000100;
-
-	/**
-	 * The bundle will be lazily activated.
-	 * <p>
-	 * The bundle has a {@link Constants#ACTIVATION_LAZY lazy activation policy}
-	 * and is waiting to be activated. It is now in the
-	 * {@link Bundle#STARTING STARTING} state and has a valid
-	 * <code>BundleContext</code>. This event is only delivered to
-	 * {@link SynchronousBundleListener}s. It is not delivered to
-	 * <code>BundleListener</code>s.
-	 * 
-	 * @since 1.4
-	 */
-	public final static int	LAZY_ACTIVATION		= 0x00000200;
-
-	/**
-	 * Creates a bundle event of the specified type.
-	 * 
-	 * @param type The event type.
-	 * @param bundle The bundle which had a lifecycle change.
-	 */
-
-	public BundleEvent(int type, Bundle bundle) {
-		super(bundle);
-		this.bundle = bundle;
-		this.type = type;
-	}
-
-	/**
-	 * Returns the bundle which had a lifecycle change. This bundle is the
-	 * source of the event.
-	 * 
-	 * @return The bundle that had a change occur in its lifecycle.
-	 */
-	public Bundle getBundle() {
-		return bundle;
-	}
-
-	/**
-	 * Returns the type of lifecyle event. The type values are:
-	 * <ul>
-	 * <li>{@link #INSTALLED}
-	 * <li>{@link #RESOLVED}
-	 * <li>{@link #LAZY_ACTIVATION}
-	 * <li>{@link #STARTING}
-	 * <li>{@link #STARTED}
-	 * <li>{@link #STOPPING}
-	 * <li>{@link #STOPPED}
-	 * <li>{@link #UPDATED}
-	 * <li>{@link #UNRESOLVED}
-	 * <li>{@link #UNINSTALLED}
-	 * </ul>
-	 * 
-	 * @return The type of lifecycle event.
-	 */
-
-	public int getType() {
-		return type;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleException.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleException.java
deleted file mode 100644
index 500d147..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleException.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * A Framework exception used to indicate that a bundle lifecycle problem
- * occurred.
- * 
- * <p>
- * A <code>BundleException</code> object is created by the Framework to denote
- * an exception condition in the lifecycle of a bundle.
- * <code>BundleException</code>s should not be created by bundle developers.
- * A type code is used to identify the exception type for future extendability.
- * 
- * <p>
- * OSGi Alliance reserves the right to extend the set of types.
- * 
- * <p>
- * This exception conforms to the general purpose exception chaining mechanism.
- * 
- * @version $Revision: 6083 $
- */
-
-public class BundleException extends Exception {
-	static final long		serialVersionUID		= 3571095144220455665L;
-	/**
-	 * Type of bundle exception.
-	 * 
-	 * @since 1.5
-	 */
-	private final int		type;
-
-	/**
-	 * No exception type is unspecified.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	UNSPECIFIED				= 0;
-	/**
-	 * The operation was unsupported.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	UNSUPPORTED_OPERATION	= 1;
-	/**
-	 * The operation was invalid.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	INVALID_OPERATION		= 2;
-	/**
-	 * The bundle manifest was in error.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	MANIFEST_ERROR			= 3;
-	/**
-	 * The bundle was not resolved.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	RESOLVE_ERROR			= 4;
-	/**
-	 * The bundle activator was in error.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	ACTIVATOR_ERROR			= 5;
-	/**
-	 * The operation failed due to insufficient permissions.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	SECURITY_ERROR			= 6;
-	/**
-	 * The operation failed to complete the requested lifecycle state change.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	STATECHANGE_ERROR		= 7;
-
-	/**
-	 * The bundle could not be resolved due to an error with the
-	 * Bundle-NativeCode header.
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	NATIVECODE_ERROR		= 8;
-
-	/**
-	 * The install or update operation failed because another 
-	 * already installed bundle has the same symbolic name and version.
-	 * @since 1.5
-	 */
-	public static final int	DUPLICATE_BUNDLE_ERROR	= 9;
-	
-    /**
-	 * The start transient operation failed because the start level of the
-	 * bundle is greater than the current framework start level
-	 * 
-	 * @since 1.5
-	 */
-	public static final int	START_TRANSIENT_ERROR	= 10;
-
-	/**
-	 * Creates a <code>BundleException</code> with the specified message and
-	 * exception cause.
-	 * 
-	 * @param msg The associated message.
-	 * @param cause The cause of this exception.
-	 */
-	public BundleException(String msg, Throwable cause) {
-		this(msg, UNSPECIFIED, cause);
-	}
-
-	/**
-	 * Creates a <code>BundleException</code> with the specified message.
-	 * 
-	 * @param msg The message.
-	 */
-	public BundleException(String msg) {
-		this(msg, UNSPECIFIED);
-	}
-
-	/**
-	 * Creates a <code>BundleException</code> with the specified message, type
-	 * and exception cause.
-	 * 
-	 * @param msg The associated message.
-	 * @param type The type for this exception.
-	 * @param cause The cause of this exception.
-	 * @since 1.5
-	 */
-	public BundleException(String msg, int type, Throwable cause) {
-		super(msg, cause);
-		this.type = type;
-	}
-
-	/**
-	 * Creates a <code>BundleException</code> with the specified message and
-	 * type.
-	 * 
-	 * @param msg The message.
-	 * @param type The type for this exception.
-	 * @since 1.5
-	 */
-	public BundleException(String msg, int type) {
-		super(msg);
-		this.type = type;
-	}
-
-	/**
-	 * Returns the cause of this exception or <code>null</code> if no cause was
-	 * specified when this exception was created.
-	 * 
-	 * <p>
-	 * This method predates the general purpose exception chaining mechanism.
-	 * The <code>getCause()</code> method is now the preferred means of
-	 * obtaining this information.
-	 * 
-	 * @return The result of calling <code>getCause()</code>.
-	 */
-	public Throwable getNestedException() {
-		return getCause();
-	}
-
-	/**
-	 * Returns the cause of this exception or <code>null</code> if no cause was
-	 * set.
-	 * 
-	 * @return The cause of this exception or <code>null</code> if no cause was
-	 *         set.
-	 * @since 1.3
-	 */
-    public Throwable getCause() {
-		return super.getCause();
-	}
-
-	/**
-	 * Initializes the cause of this exception to the specified value.
-	 * 
-	 * @param cause The cause of this exception.
-	 * @return This exception.
-	 * @throws IllegalArgumentException If the specified cause is this
-	 *         exception.
-	 * @throws IllegalStateException If the cause of this exception has already
-	 *         been set.
-	 * @since 1.3
-	 */
-	public Throwable initCause(Throwable cause) {
-		return super.initCause(cause);
-	}
-
-	/**
-	 * Returns the type for this exception or <code>UNSPECIFIED</code> if the
-	 * type was unspecified or unknown.
-	 * 
-	 * @return The type of this exception.
-	 * @since 1.5
-	 */
-	public int getType() {
-		return type;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleListener.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleListener.java
deleted file mode 100644
index 9dd7151..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleListener.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.EventListener;
-
-/**
- * A <code>BundleEvent</code> listener. <code>BundleListener</code> is a
- * listener interface that may be implemented by a bundle developer. When a
- * <code>BundleEvent</code> is fired, it is asynchronously delivered to a
- * <code>BundleListener</code>. The Framework delivers
- * <code>BundleEvent</code> objects to a <code>BundleListener</code> in
- * order and must not concurrently call a <code>BundleListener</code>.
- * <p>
- * A <code>BundleListener</code> object is registered with the Framework using
- * the {@link BundleContext#addBundleListener} method.
- * <code>BundleListener</code>s are called with a <code>BundleEvent</code>
- * object when a bundle has been installed, resolved, started, stopped, updated,
- * unresolved, or uninstalled.
- * 
- * @see BundleEvent
- * @NotThreadSafe
- * @version $Revision: 5673 $
- */
-
-public interface BundleListener extends EventListener {
-	/**
-	 * Receives notification that a bundle has had a lifecycle change.
-	 * 
-	 * @param event The <code>BundleEvent</code>.
-	 */
-	public void bundleChanged(BundleEvent event);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
deleted file mode 100644
index 8677e69..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
+++ /dev/null
@@ -1,606 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamField;
-import java.security.BasicPermission;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Map;
-
-/**
- * A bundle's authority to require or provide a bundle or to receive or attach
- * fragments.
- * 
- * <p>
- * A bundle symbolic name defines a unique fully qualified name. Wildcards may
- * be used.
- * 
- * <pre>
- * name ::= &lt;symbolic name&gt; | &lt;symbolic name ending in &quot;.*&quot;&gt; | *
- * </pre>
- * 
- * Examples:
- * 
- * <pre>
- * org.osgi.example.bundle
- * org.osgi.example.*
- * *
- * </pre>
- * 
- * <p>
- * <code>BundlePermission</code> has four actions: <code>provide</code>,
- * <code>require</code>,<code>host</code>, and <code>fragment</code>. The
- * <code>provide</code> action implies the <code>require</code> action.
- * 
- * @since 1.3
- * @ThreadSafe
- * @version $Revision: 6860 $
- */
-
-public final class BundlePermission extends BasicPermission {
-
-	private static final long	serialVersionUID	= 3257846601685873716L;
-
-	/**
-	 * The action string <code>provide</code>. The <code>provide</code> action
-	 * implies the <code>require</code> action.
-	 */
-	public final static String	PROVIDE				= "provide";
-
-	/**
-	 * The action string <code>require</code>. The <code>require</code> action
-	 * is implied by the <code>provide</code> action.
-	 */
-	public final static String	REQUIRE				= "require";
-
-	/**
-	 * The action string <code>host</code>.
-	 */
-	public final static String	HOST				= "host";
-
-	/**
-	 * The action string <code>fragment</code>.
-	 */
-	public final static String	FRAGMENT			= "fragment";
-
-	private final static int	ACTION_PROVIDE		= 0x00000001;
-	private final static int	ACTION_REQUIRE		= 0x00000002;
-	private final static int	ACTION_HOST			= 0x00000004;
-	private final static int	ACTION_FRAGMENT		= 0x00000008;
-	private final static int	ACTION_ALL			= ACTION_PROVIDE
-															| ACTION_REQUIRE
-															| ACTION_HOST
-															| ACTION_FRAGMENT;
-	final static int			ACTION_NONE			= 0;
-	/**
-	 * The actions mask.
-	 */
-	private transient int		action_mask;
-
-	/**
-	 * The actions in canonical form.
-	 * 
-	 * @serial
-	 */
-	private volatile String		actions				= null;
-
-	/**
-	 * Defines the authority to provide and/or require and or specify a host
-	 * fragment symbolic name within the OSGi environment.
-	 * <p>
-	 * Bundle Permissions are granted over all possible versions of a bundle.
-	 * 
-	 * A bundle that needs to provide a bundle must have the appropriate
-	 * <code>BundlePermission</code> for the symbolic name; a bundle that
-	 * requires a bundle must have the appropriate <code>BundlePermssion</code>
-	 * for that symbolic name; a bundle that specifies a fragment host must have
-	 * the appropriate <code>BundlePermission</code> for that symbolic name.
-	 * 
-	 * @param symbolicName The bundle symbolic name.
-	 * @param actions <code>provide</code>,<code>require</code>,
-	 *        <code>host</code>,<code>fragment</code> (canonical order).
-	 */
-	public BundlePermission(String symbolicName, String actions) {
-		this(symbolicName, parseActions(actions));
-	}
-
-	/**
-	 * Package private constructor used by BundlePermissionCollection.
-	 * 
-	 * @param symbolicName the bundle symbolic name
-	 * @param mask the action mask
-	 */
-	BundlePermission(String symbolicName, int mask) {
-		super(symbolicName);
-		setTransients(mask);
-	}
-
-	/**
-	 * Called by constructors and when deserialized.
-	 * 
-	 * @param mask
-	 */
-	private synchronized void setTransients(int mask) {
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-
-		action_mask = mask;
-	}
-
-	/**
-	 * Returns the current action mask.
-	 * <p>
-	 * Used by the BundlePermissionCollection class.
-	 * 
-	 * @return Current action mask.
-	 */
-	synchronized int getActionsMask() {
-		return action_mask;
-	}
-
-	/**
-	 * Parse action string into action mask.
-	 * 
-	 * @param actions Action string.
-	 * @return action mask.
-	 */
-	private static int parseActions(String actions) {
-		boolean seencomma = false;
-
-		int mask = ACTION_NONE;
-
-		if (actions == null) {
-			return mask;
-		}
-
-		char[] a = actions.toCharArray();
-
-		int i = a.length - 1;
-		if (i < 0)
-			return mask;
-
-		while (i != -1) {
-			char c;
-
-			// skip whitespace
-			while ((i != -1)
-					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
-							|| c == '\f' || c == '\t'))
-				i--;
-
-			// check for the known strings
-			int matchlen;
-
-			if (i >= 6 && (a[i - 6] == 'p' || a[i - 6] == 'P')
-					&& (a[i - 5] == 'r' || a[i - 5] == 'R')
-					&& (a[i - 4] == 'o' || a[i - 4] == 'O')
-					&& (a[i - 3] == 'v' || a[i - 3] == 'V')
-					&& (a[i - 2] == 'i' || a[i - 2] == 'I')
-					&& (a[i - 1] == 'd' || a[i - 1] == 'D')
-					&& (a[i] == 'e' || a[i] == 'E')) {
-				matchlen = 7;
-				mask |= ACTION_PROVIDE | ACTION_REQUIRE;
-			}
-			else
-				if (i >= 6 && (a[i - 6] == 'r' || a[i - 6] == 'R')
-						&& (a[i - 5] == 'e' || a[i - 5] == 'E')
-						&& (a[i - 4] == 'q' || a[i - 4] == 'Q')
-						&& (a[i - 3] == 'u' || a[i - 3] == 'U')
-						&& (a[i - 2] == 'i' || a[i - 2] == 'I')
-						&& (a[i - 1] == 'r' || a[i - 1] == 'R')
-						&& (a[i] == 'e' || a[i] == 'E')) {
-					matchlen = 7;
-					mask |= ACTION_REQUIRE;
-				}
-				else
-					if (i >= 3 && (a[i - 3] == 'h' || a[i - 3] == 'H')
-							&& (a[i - 2] == 'o' || a[i - 2] == 'O')
-							&& (a[i - 1] == 's' || a[i - 1] == 'S')
-							&& (a[i] == 't' || a[i] == 'T')) {
-						matchlen = 4;
-						mask |= ACTION_HOST;
-					}
-					else
-						if (i >= 7 && (a[i - 7] == 'f' || a[i - 7] == 'F')
-								&& (a[i - 6] == 'r' || a[i - 6] == 'R')
-								&& (a[i - 5] == 'a' || a[i - 5] == 'A')
-								&& (a[i - 4] == 'g' || a[i - 4] == 'G')
-								&& (a[i - 3] == 'm' || a[i - 3] == 'M')
-								&& (a[i - 2] == 'e' || a[i - 2] == 'E')
-								&& (a[i - 1] == 'n' || a[i - 1] == 'N')
-								&& (a[i] == 't' || a[i] == 'T')) {
-							matchlen = 8;
-							mask |= ACTION_FRAGMENT;
-						}
-						else {
-							// parse error
-							throw new IllegalArgumentException(
-									"invalid permission: " + actions);
-						}
-
-			// make sure we didn't just match the tail of a word
-			// like "ackbarfrequire". Also, skip to the comma.
-			seencomma = false;
-			while (i >= matchlen && !seencomma) {
-				switch (a[i - matchlen]) {
-					case ',' :
-						seencomma = true;
-						/* FALLTHROUGH */
-					case ' ' :
-					case '\r' :
-					case '\n' :
-					case '\f' :
-					case '\t' :
-						break;
-					default :
-						throw new IllegalArgumentException(
-								"invalid permission: " + actions);
-				}
-				i--;
-			}
-
-			// point i at the location of the comma minus one (or -1).
-			i -= matchlen;
-		}
-
-		if (seencomma) {
-			throw new IllegalArgumentException("invalid permission: " + actions);
-		}
-
-		return mask;
-	}
-
-	/**
-	 * Determines if the specified permission is implied by this object.
-	 * 
-	 * <p>
-	 * This method checks that the symbolic name of the target is implied by the
-	 * symbolic name of this object. The list of <code>BundlePermission</code>
-	 * actions must either match or allow for the list of the target object to
-	 * imply the target <code>BundlePermission</code> action.
-	 * <p>
-	 * The permission to provide a bundle implies the permission to require the
-	 * named symbolic name.
-	 * 
-	 * <pre>
-	 *       x.y.*,&quot;provide&quot; -&gt; x.y.z,&quot;provide&quot; is true
-	 *       *,&quot;require&quot; -&gt; x.y, &quot;require&quot;      is true
-	 *       *,&quot;provide&quot; -&gt; x.y, &quot;require&quot;      is true
-	 *       x.y,&quot;provide&quot; -&gt; x.y.z, &quot;provide&quot;  is false
-	 * </pre>
-	 * 
-	 * @param p The requested permission.
-	 * @return <code>true</code> if the specified <code>BundlePermission</code>
-	 *         action is implied by this object; <code>false</code> otherwise.
-	 */
-	public boolean implies(Permission p) {
-		if (!(p instanceof BundlePermission)) {
-			return false;
-		}
-		BundlePermission requested = (BundlePermission) p;
-
-		final int effective = getActionsMask();
-		final int desired = requested.getActionsMask();
-		return ((effective & desired) == desired)
-				&& super.implies(requested);
-	}
-
-	/**
-	 * Returns the canonical string representation of the
-	 * <code>BundlePermission</code> actions.
-	 * 
-	 * <p>
-	 * Always returns present <code>BundlePermission</code> actions in the
-	 * following order: <code>provide</code>, <code>require</code>,
-	 * <code>host</code>, <code>fragment</code>.
-	 * 
-	 * @return Canonical string representation of the <code>BundlePermission
-	 *         </code> actions.
-	 */
-	public String getActions() {
-		String result = actions;
-		if (result == null) {
-			StringBuffer sb = new StringBuffer();
-			boolean comma = false;
-
-			if ((action_mask & ACTION_PROVIDE) == ACTION_PROVIDE) {
-				sb.append(PROVIDE);
-				comma = true;
-			}
-
-			if ((action_mask & ACTION_REQUIRE) == ACTION_REQUIRE) {
-				if (comma)
-					sb.append(',');
-				sb.append(REQUIRE);
-				comma = true;
-			}
-
-			if ((action_mask & ACTION_HOST) == ACTION_HOST) {
-				if (comma)
-					sb.append(',');
-				sb.append(HOST);
-				comma = true;
-			}
-
-			if ((action_mask & ACTION_FRAGMENT) == ACTION_FRAGMENT) {
-				if (comma)
-					sb.append(',');
-				sb.append(FRAGMENT);
-			}
-
-			actions = result = sb.toString();
-		}
-		return result;
-	}
-
-	/**
-	 * Returns a new <code>PermissionCollection</code> object suitable for
-	 * storing <code>BundlePermission</code> objects.
-	 * 
-	 * @return A new <code>PermissionCollection</code> object.
-	 */
-	public PermissionCollection newPermissionCollection() {
-		return new BundlePermissionCollection();
-	}
-
-	/**
-	 * Determines the equality of two <code>BundlePermission</code> objects.
-	 * 
-	 * This method checks that specified bundle has the same bundle symbolic
-	 * name and <code>BundlePermission</code> actions as this
-	 * <code>BundlePermission</code> object.
-	 * 
-	 * @param obj The object to test for equality with this
-	 *        <code>BundlePermission</code> object.
-	 * @return <code>true</code> if <code>obj</code> is a
-	 *         <code>BundlePermission</code>, and has the same bundle symbolic
-	 *         name and actions as this <code>BundlePermission</code> object;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof BundlePermission)) {
-			return false;
-		}
-
-		BundlePermission bp = (BundlePermission) obj;
-
-		return (getActionsMask() == bp.getActionsMask())
-				&& getName().equals(bp.getName());
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return A hash code value for this object.
-	 */
-	public int hashCode() {
-		int h = 31 * 17 + getName().hashCode();
-		h = 31 * h + getActions().hashCode();
-		return h;
-	}
-
-	/**
-	 * WriteObject is called to save the state of the
-	 * <code>BundlePermission</code> object to a stream. The actions are
-	 * serialized, and the superclass takes care of the name.
-	 */
-	private synchronized void writeObject(java.io.ObjectOutputStream s)
-			throws IOException {
-		// Write out the actions. The superclass takes care of the name
-		// call getActions to make sure actions field is initialized
-		if (actions == null)
-			getActions();
-		s.defaultWriteObject();
-	}
-
-	/**
-	 * readObject is called to restore the state of the BundlePermission from a
-	 * stream.
-	 */
-	private synchronized void readObject(java.io.ObjectInputStream s)
-			throws IOException, ClassNotFoundException {
-		// Read in the action, then initialize the rest
-		s.defaultReadObject();
-		setTransients(parseActions(actions));
-	}
-}
-
-/**
- * Stores a set of <code>BundlePermission</code> permissions.
- * 
- * @see java.security.Permission
- * @see java.security.Permissions
- * @see java.security.PermissionCollection
- */
-
-final class BundlePermissionCollection extends PermissionCollection {
-	private static final long	serialVersionUID	= 3258407326846433079L;
-
-	/**
-	 * Table of permissions.
-	 * 
-	 * @GuardedBy this
-	 */
-	private transient Map		permissions;
-
-	/**
-	 * Boolean saying if "*" is in the collection.
-	 * 
-	 * @serial
-	 * @GuardedBy this
-	 */
-	private boolean				all_allowed;
-
-	/**
-	 * Create an empty BundlePermissions object.
-	 * 
-	 */
-	public BundlePermissionCollection() {
-		permissions = new HashMap();
-		all_allowed = false;
-	}
-
-	/**
-	 * Add a permission to this permission collection.
-	 * 
-	 * @param permission The <code>BundlePermission</code> object to add.
-	 * @throws IllegalArgumentException If the permission is not a
-	 *         <code>BundlePermission</code> instance.
-	 * @throws SecurityException If this <code>BundlePermissionCollection</code>
-	 *         object has been marked read-only.
-	 */
-	public void add(final Permission permission) {
-		if (!(permission instanceof BundlePermission)) {
-			throw new IllegalArgumentException("invalid permission: "
-					+ permission);
-		}
-		if (isReadOnly()) {
-			throw new SecurityException("attempt to add a Permission to a "
-					+ "readonly PermissionCollection");
-		}
-		final BundlePermission bp = (BundlePermission) permission;
-		final String name = bp.getName();
-		synchronized (this) {
-			Map pc = permissions;
-			BundlePermission existing = (BundlePermission) pc.get(name);
-			if (existing != null) {
-				final int oldMask = existing.getActionsMask();
-				final int newMask = bp.getActionsMask();
-				if (oldMask != newMask) {
-					pc.put(name, new BundlePermission(name, oldMask
-							| newMask));
-
-				}
-			}
-			else {
-				pc.put(name, bp);
-			}
-
-			if (!all_allowed) {
-				if (name.equals("*"))
-					all_allowed = true;
-			}
-		}
-	}
-
-	/**
-	 * Determines if the specified permissions implies the permissions expressed
-	 * in <code>permission</code>.
-	 * 
-	 * @param permission The Permission object to compare with this
-	 *        <code>BundlePermission</code> object.
-	 * @return <code>true</code> if <code>permission</code> is a proper subset
-	 *         of a permission in the set; <code>false</code> otherwise.
-	 */
-	public boolean implies(final Permission permission) {
-		if (!(permission instanceof BundlePermission)) {
-			return false;
-		}
-		BundlePermission requested = (BundlePermission) permission;
-		String requestedName = requested.getName();
-		final int desired = requested.getActionsMask();
-		int effective = BundlePermission.ACTION_NONE;
-		BundlePermission bp;
-
-		synchronized (this) {
-			Map pc = permissions;
-			/* short circuit if the "*" Permission was added */
-			if (all_allowed) {
-				bp = (BundlePermission) pc.get("*");
-				if (bp != null) {
-					effective |= bp.getActionsMask();
-					if ((effective & desired) == desired) {
-						return true;
-					}
-				}
-			}
-			bp = (BundlePermission) pc.get(requestedName);
-			// strategy:
-			// Check for full match first. Then work our way up the
-			// name looking for matches on a.b.*
-			if (bp != null) {
-				// we have a direct hit!
-				effective |= bp.getActionsMask();
-				if ((effective & desired) == desired) {
-					return true;
-				}
-			}
-			// work our way up the tree...
-			int last;
-			int offset = requestedName.length() - 1;
-			while ((last = requestedName.lastIndexOf(".", offset)) != -1) {
-				requestedName = requestedName.substring(0, last + 1) + "*";
-				bp = (BundlePermission) pc.get(requestedName);
-				if (bp != null) {
-					effective |= bp.getActionsMask();
-					if ((effective & desired) == desired) {
-						return true;
-					}
-				}
-				offset = last - 1;
-			}
-			// we don't have to check for "*" as it was already checked
-			// at the top (all_allowed), so we just return false
-			return false;
-		}
-	}
-
-	/**
-	 * Returns an enumeration of all <code>BundlePermission</code> objects in
-	 * the container.
-	 * 
-	 * @return Enumeration of all <code>BundlePermission</code> objects.
-	 */
-	public synchronized Enumeration elements() {
-		return Collections.enumeration(permissions.values());
-	}
-	
-	/* serialization logic */
-	private static final ObjectStreamField[]	serialPersistentFields	= {
-			new ObjectStreamField("permissions", Hashtable.class),
-			new ObjectStreamField("all_allowed", Boolean.TYPE)			};
-
-	private synchronized void writeObject(ObjectOutputStream out)
-			throws IOException {
-		Hashtable hashtable = new Hashtable(permissions);
-		ObjectOutputStream.PutField pfields = out.putFields();
-		pfields.put("permissions", hashtable);
-		pfields.put("all_allowed", all_allowed);
-		out.writeFields();
-	}
-
-	private synchronized void readObject(java.io.ObjectInputStream in)
-			throws IOException, ClassNotFoundException {
-		ObjectInputStream.GetField gfields = in.readFields();
-		Hashtable hashtable = (Hashtable) gfields.get("permissions", null);
-		permissions = new HashMap(hashtable);
-		all_allowed = gfields.get("all_allowed", false);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleReference.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleReference.java
deleted file mode 100644
index f9c4183..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleReference.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * A reference to a Bundle.
- * 
- * @since 1.5
- * @ThreadSafe
- * @version $Revision: 6860 $
- */
-public interface BundleReference {
-	/**
-	 * Returns the <code>Bundle</code> object associated with this
-	 * <code>BundleReference</code>.
-	 * 
-	 * @return The <code>Bundle</code> object associated with this
-	 *         <code>BundleReference</code>.
-	 */
-	public Bundle getBundle();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Configurable.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Configurable.java
deleted file mode 100644
index b30910c..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Configurable.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * Supports a configuration object.
- * 
- * <p>
- * <code>Configurable</code> is an interface that should be used by a bundle
- * developer in support of a configurable service. Bundles that need to
- * configure a service may test to determine if the service object is an
- * <code>instanceof Configurable</code>.
- * 
- * @deprecated As of 1.2. Please use Configuration Admin service.
- * @version $Revision: 6361 $
- */
-public interface Configurable {
-	/**
-	 * Returns this service's configuration object.
-	 * 
-	 * <p>
-	 * Services implementing <code>Configurable</code> should take care when
-	 * returning a service configuration object since this object is probably
-	 * sensitive.
-	 * <p>
-	 * If the Java Runtime Environment supports permissions, it is recommended
-	 * that the caller is checked for some appropriate permission before
-	 * returning the configuration object.
-	 * 
-	 * @return The configuration object for this service.
-	 * @throws SecurityException If the caller does not have an
-	 *         appropriate permission and the Java Runtime Environment supports
-	 *         permissions.
-	 * @deprecated As of 1.2. Please use Configuration Admin service.
-	 */
-	public Object getConfigurationObject();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java
deleted file mode 100644
index 16a10d8..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java
+++ /dev/null
@@ -1,1312 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * Defines standard names for the OSGi environment system properties, service
- * properties, and Manifest header attribute keys.
- * 
- * <p>
- * The values associated with these keys are of type
- * <code>String</code>, unless otherwise indicated.
- * 
- * @since 1.1
- * @version $Revision: 6552 $
- */
-
-public interface Constants {
-	/**
-	 * Location identifier of the OSGi <i>system bundle </i>, which is defined
-	 * to be &quot;System Bundle&quot;.
-	 */
-	public static final String	SYSTEM_BUNDLE_LOCATION					= "System Bundle";
-
-	/**
-	 * Alias for the symbolic name of the OSGi <i>system bundle </i>. It is
-	 * defined to be &quot;system.bundle&quot;.
-	 * 
-	 * @since 1.3
-	 */
-	public static final String	SYSTEM_BUNDLE_SYMBOLICNAME				= "system.bundle";
-
-	/**
-	 * Manifest header identifying the bundle's category.
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_CATEGORY							= "Bundle-Category";
-
-	/**
-	 * Manifest header identifying a list of directories and embedded JAR files,
-	 * which are bundle resources used to extend the bundle's classpath.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_CLASSPATH						= "Bundle-ClassPath";
-
-	/**
-	 * Manifest header identifying the bundle's copyright information.
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_COPYRIGHT						= "Bundle-Copyright";
-
-	/**
-	 * Manifest header containing a brief description of the bundle's
-	 * functionality.
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_DESCRIPTION						= "Bundle-Description";
-
-	/**
-	 * Manifest header identifying the bundle's name.
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_NAME								= "Bundle-Name";
-
-	/**
-	 * Manifest header identifying a number of hardware environments and the
-	 * native language code libraries that the bundle is carrying for each of
-	 * these environments.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_NATIVECODE						= "Bundle-NativeCode";
-
-	/**
-	 * Manifest header identifying the packages that the bundle offers to the
-	 * Framework for export.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	EXPORT_PACKAGE							= "Export-Package";
-
-	/**
-	 * Manifest header identifying the fully qualified class names of the
-	 * services that the bundle may register (used for informational purposes
-	 * only).
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @deprecated As of 1.2.
-	 */
-	public static final String	EXPORT_SERVICE							= "Export-Service";
-
-	/**
-	 * Manifest header identifying the packages on which the bundle depends.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	IMPORT_PACKAGE							= "Import-Package";
-
-	/**
-	 * Manifest header identifying the packages that the bundle may dynamically
-	 * import during execution.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @since 1.2
-	 */
-	public static final String	DYNAMICIMPORT_PACKAGE					= "DynamicImport-Package";
-
-	/**
-	 * Manifest header identifying the fully qualified class names of the
-	 * services that the bundle requires (used for informational purposes only).
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @deprecated As of 1.2.
-	 */
-	public static final String	IMPORT_SERVICE							= "Import-Service";
-
-	/**
-	 * Manifest header identifying the bundle's vendor.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_VENDOR							= "Bundle-Vendor";
-
-	/**
-	 * Manifest header identifying the bundle's version.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_VERSION							= "Bundle-Version";
-
-	/**
-	 * Manifest header identifying the bundle's documentation URL, from which
-	 * further information about the bundle may be obtained.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_DOCURL							= "Bundle-DocURL";
-
-	/**
-	 * Manifest header identifying the contact address where problems with the
-	 * bundle may be reported; for example, an email address.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_CONTACTADDRESS					= "Bundle-ContactAddress";
-
-	/**
-	 * Manifest header attribute identifying the bundle's activator class.
-	 * 
-	 * <p>
-	 * If present, this header specifies the name of the bundle resource class
-	 * that implements the <code>BundleActivator</code> interface and whose
-	 * <code>start</code> and <code>stop</code> methods are called by the
-	 * Framework when the bundle is started and stopped, respectively.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_ACTIVATOR						= "Bundle-Activator";
-
-	/**
-	 * Manifest header identifying the location from which a new bundle version
-	 * is obtained during a bundle update operation.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 */
-	public static final String	BUNDLE_UPDATELOCATION					= "Bundle-UpdateLocation";
-
-	/**
-	 * Manifest header attribute identifying the version of a package specified
-	 * in the Export-Package or Import-Package manifest header.
-	 * 
-	 * @deprecated As of 1.3. This has been replaced by
-	 *             {@link #VERSION_ATTRIBUTE}.
-	 */
-	public static final String	PACKAGE_SPECIFICATION_VERSION			= "specification-version";
-
-	/**
-	 * Manifest header attribute identifying the processor required to run
-	 * native bundle code specified in the Bundle-NativeCode manifest header).
-	 * 
-	 * <p>
-	 * The attribute value is encoded in the Bundle-NativeCode manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-NativeCode: http.so ; processor=x86 ...
-	 * </pre>
-	 * 
-	 * @see #BUNDLE_NATIVECODE
-	 */
-	public static final String	BUNDLE_NATIVECODE_PROCESSOR				= "processor";
-
-	/**
-	 * Manifest header attribute identifying the operating system required to
-	 * run native bundle code specified in the Bundle-NativeCode manifest
-	 * header).
-	 * <p>
-	 * The attribute value is encoded in the Bundle-NativeCode manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-NativeCode: http.so ; osname=Linux ...
-	 * </pre>
-	 * 
-	 * @see #BUNDLE_NATIVECODE
-	 */
-	public static final String	BUNDLE_NATIVECODE_OSNAME				= "osname";
-
-	/**
-	 * Manifest header attribute identifying the operating system version
-	 * required to run native bundle code specified in the Bundle-NativeCode
-	 * manifest header).
-	 * <p>
-	 * The attribute value is encoded in the Bundle-NativeCode manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-NativeCode: http.so ; osversion=&quot;2.34&quot; ...
-	 * </pre>
-	 * 
-	 * @see #BUNDLE_NATIVECODE
-	 */
-	public static final String	BUNDLE_NATIVECODE_OSVERSION				= "osversion";
-
-	/**
-	 * Manifest header attribute identifying the language in which the native
-	 * bundle code is written specified in the Bundle-NativeCode manifest
-	 * header. See ISO 639 for possible values.
-	 * <p>
-	 * The attribute value is encoded in the Bundle-NativeCode manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-NativeCode: http.so ; language=nl_be ...
-	 * </pre>
-	 * 
-	 * @see #BUNDLE_NATIVECODE
-	 */
-	public static final String	BUNDLE_NATIVECODE_LANGUAGE				= "language";
-
-	/**
-	 * Manifest header identifying the required execution environment for the
-	 * bundle. The service platform may run this bundle if any of the execution
-	 * environments named in this header matches one of the execution
-	 * environments it implements.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @since 1.2
-	 */
-	public static final String	BUNDLE_REQUIREDEXECUTIONENVIRONMENT		= "Bundle-RequiredExecutionEnvironment";
-
-	/**
-	 * Manifest header identifying the bundle's symbolic name.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	BUNDLE_SYMBOLICNAME						= "Bundle-SymbolicName";
-
-	/**
-	 * Manifest header directive identifying whether a bundle is a singleton.
-	 * The default value is <code>false</code>.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Bundle-SymbolicName manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-SymbolicName: com.acme.module.test; singleton:=true
-	 * </pre>
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @see #BUNDLE_SYMBOLICNAME
-	 * @since 1.3
-	 */
-	public final static String	SINGLETON_DIRECTIVE						= "singleton";
-
-	/**
-	 * Manifest header directive identifying if and when a fragment may attach
-	 * to a host bundle. The default value is
-	 * {@link #FRAGMENT_ATTACHMENT_ALWAYS always}.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Bundle-SymbolicName manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;never&quot;
-	 * </pre>
-	 * 
-	 * @see #BUNDLE_SYMBOLICNAME
-	 * @see #FRAGMENT_ATTACHMENT_ALWAYS
-	 * @see #FRAGMENT_ATTACHMENT_RESOLVETIME
-	 * @see #FRAGMENT_ATTACHMENT_NEVER
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_DIRECTIVE			= "fragment-attachment";
-
-	/**
-	 * Manifest header directive value identifying a fragment attachment type of
-	 * always. A fragment attachment type of always indicates that fragments are
-	 * allowed to attach to the host bundle at any time (while the host is
-	 * resolved or during the process of resolving the host bundle).
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Bundle-SymbolicName manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;always&quot;
-	 * </pre>
-	 * 
-	 * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_ALWAYS				= "always";
-
-	/**
-	 * Manifest header directive value identifying a fragment attachment type of
-	 * resolve-time. A fragment attachment type of resolve-time indicates that
-	 * fragments are allowed to attach to the host bundle only during the
-	 * process of resolving the host bundle.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Bundle-SymbolicName manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;resolve-time&quot;
-	 * </pre>
-	 * 
-	 * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_RESOLVETIME			= "resolve-time";
-
-	/**
-	 * Manifest header directive value identifying a fragment attachment type of
-	 * never. A fragment attachment type of never indicates that no fragments
-	 * are allowed to attach to the host bundle at any time.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Bundle-SymbolicName manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Bundle-SymbolicName: com.acme.module.test; fragment-attachment:=&quot;never&quot;
-	 * </pre>
-	 * 
-	 * @see #FRAGMENT_ATTACHMENT_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_NEVER				= "never";
-
-	/**
-	 * Manifest header identifying the base name of the bundle's localization
-	 * entries.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @see #BUNDLE_LOCALIZATION_DEFAULT_BASENAME
-	 * @since 1.3
-	 */
-	public final static String	BUNDLE_LOCALIZATION						= "Bundle-Localization";
-
-	/**
-	 * Default value for the <code>Bundle-Localization</code> manifest header.
-	 * 
-	 * @see #BUNDLE_LOCALIZATION
-	 * @since 1.3
-	 */
-	public final static String	BUNDLE_LOCALIZATION_DEFAULT_BASENAME	= "OSGI-INF/l10n/bundle";
-
-	/**
-	 * Manifest header identifying the symbolic names of other bundles required
-	 * by the bundle.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	REQUIRE_BUNDLE							= "Require-Bundle";
-
-	/**
-	 * Manifest header attribute identifying a range of versions for a bundle
-	 * specified in the <code>Require-Bundle</code> or
-	 * <code>Fragment-Host</code> manifest headers. The default value is
-	 * <code>0.0.0</code>.
-	 * 
-	 * <p>
-	 * The attribute value is encoded in the Require-Bundle manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Require-Bundle: com.acme.module.test; bundle-version=&quot;1.1&quot;
-	 *     Require-Bundle: com.acme.module.test; bundle-version=&quot;[1.0,2.0)&quot;
-	 * </pre>
-	 * 
-	 * <p>
-	 * The bundle-version attribute value uses a mathematical interval notation
-	 * to specify a range of bundle versions. A bundle-version attribute value
-	 * specified as a single version means a version range that includes any
-	 * bundle version greater than or equal to the specified version.
-	 * 
-	 * @see #REQUIRE_BUNDLE
-	 * @since 1.3
-	 */
-	public static final String	BUNDLE_VERSION_ATTRIBUTE				= "bundle-version";
-
-	/**
-	 * Manifest header identifying the symbolic name of another bundle for which
-	 * that the bundle is a fragment.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_HOST							= "Fragment-Host";
-
-	/**
-	 * Manifest header attribute is used for selection by filtering based upon
-	 * system properties.
-	 * 
-	 * <p>
-	 * The attribute value is encoded in manifest headers like:
-	 * 
-	 * <pre>
-	 *     Bundle-NativeCode: libgtk.so; selection-filter=&quot;(ws=gtk)&quot;; ...
-	 * </pre>
-	 * 
-	 * @see #BUNDLE_NATIVECODE
-	 * @since 1.3
-	 */
-	public final static String	SELECTION_FILTER_ATTRIBUTE				= "selection-filter";
-
-	/**
-	 * Manifest header identifying the bundle manifest version. A bundle
-	 * manifest may express the version of the syntax in which it is written by
-	 * specifying a bundle manifest version. Bundles exploiting OSGi Release 4,
-	 * or later, syntax must specify a bundle manifest version.
-	 * <p>
-	 * The bundle manifest version defined by OSGi Release 4 or, more
-	 * specifically, by version 1.3 of the OSGi Core Specification is "2".
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	BUNDLE_MANIFESTVERSION					= "Bundle-ManifestVersion";
-
-	/**
-	 * Manifest header attribute identifying the version of a package specified
-	 * in the Export-Package or Import-Package manifest header.
-	 * 
-	 * <p>
-	 * The attribute value is encoded in the Export-Package or Import-Package
-	 * manifest header like:
-	 * 
-	 * <pre>
-	 *     Import-Package: org.osgi.framework; version=&quot;1.1&quot;
-	 * </pre>
-	 * 
-	 * @see #EXPORT_PACKAGE
-	 * @see #IMPORT_PACKAGE
-	 * @since 1.3
-	 */
-	public final static String	VERSION_ATTRIBUTE						= "version";
-
-	/**
-	 * Manifest header attribute identifying the symbolic name of a bundle that
-	 * exports a package specified in the Import-Package manifest header.
-	 * 
-	 * <p>
-	 * The attribute value is encoded in the Import-Package manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Import-Package: org.osgi.framework; bundle-symbolic-name=&quot;com.acme.module.test&quot;
-	 * </pre>
-	 * 
-	 * @see #IMPORT_PACKAGE
-	 * @since 1.3
-	 */
-	public final static String	BUNDLE_SYMBOLICNAME_ATTRIBUTE			= "bundle-symbolic-name";
-
-	/**
-	 * Manifest header directive identifying the resolution type in the
-	 * Import-Package or Require-Bundle manifest header. The default value is
-	 * {@link #RESOLUTION_MANDATORY mandatory}.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Import-Package or Require-Bundle
-	 * manifest header like:
-	 * 
-	 * <pre>
-	 *     Import-Package: org.osgi.framework; resolution:=&quot;optional&quot;
-	 *     Require-Bundle: com.acme.module.test; resolution:=&quot;optional&quot;
-	 * </pre>
-	 * 
-	 * @see #IMPORT_PACKAGE
-	 * @see #REQUIRE_BUNDLE
-	 * @see #RESOLUTION_MANDATORY
-	 * @see #RESOLUTION_OPTIONAL
-	 * @since 1.3
-	 */
-	public final static String	RESOLUTION_DIRECTIVE					= "resolution";
-
-	/**
-	 * Manifest header directive value identifying a mandatory resolution type.
-	 * A mandatory resolution type indicates that the import package or require
-	 * bundle must be resolved when the bundle is resolved. If such an import or
-	 * require bundle cannot be resolved, the module fails to resolve.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Import-Package or Require-Bundle
-	 * manifest header like:
-	 * 
-	 * <pre>
-	 *     Import-Package: org.osgi.framework; resolution:=&quot;manditory&quot;
-	 *     Require-Bundle: com.acme.module.test; resolution:=&quot;manditory&quot;
-	 * </pre>
-	 * 
-	 * @see #RESOLUTION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	RESOLUTION_MANDATORY					= "mandatory";
-
-	/**
-	 * Manifest header directive value identifying an optional resolution type.
-	 * An optional resolution type indicates that the import or require bundle
-	 * is optional and the bundle may be resolved without the import or require
-	 * bundle being resolved. If the import or require bundle is not resolved
-	 * when the bundle is resolved, the import or require bundle may not be
-	 * resolved before the bundle is refreshed.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Import-Package or Require-Bundle
-	 * manifest header like:
-	 * 
-	 * <pre>
-	 *     Import-Package: org.osgi.framework; resolution:=&quot;optional&quot;
-	 *     Require-Bundle: com.acme.module.test; resolution:=&quot;optional&quot;
-	 * </pre>
-	 * 
-	 * @see #RESOLUTION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	RESOLUTION_OPTIONAL						= "optional";
-
-	/**
-	 * Manifest header directive identifying a list of packages that an exported
-	 * package uses.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Export-Package manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Export-Package: org.osgi.util.tracker; uses:=&quot;org.osgi.framework&quot;
-	 * </pre>
-	 * 
-	 * @see #EXPORT_PACKAGE
-	 * @since 1.3
-	 */
-	public final static String	USES_DIRECTIVE							= "uses";
-
-	/**
-	 * Manifest header directive identifying a list of classes to include in the
-	 * exported package.
-	 * 
-	 * <p>
-	 * This directive is used by the Export-Package manifest header to identify
-	 * a list of classes of the specified package which must be allowed to be
-	 * exported. The directive value is encoded in the Export-Package manifest
-	 * header like:
-	 * 
-	 * <pre>
-	 *     Export-Package: org.osgi.framework; include:=&quot;MyClass*&quot;
-	 * </pre>
-	 * 
-	 * <p>
-	 * This directive is also used by the Bundle-ActivationPolicy manifest
-	 * header to identify the packages from which class loads will trigger lazy
-	 * activation. The directive value is encoded in the Bundle-ActivationPolicy
-	 * manifest header like:
-	 * 
-	 * <pre>
-	 *     Bundle-ActivationPolicy: lazy; include:=&quot;org.osgi.framework&quot;
-	 * </pre>
-	 * 
-	 * @see #EXPORT_PACKAGE
-	 * @see #BUNDLE_ACTIVATIONPOLICY
-	 * @since 1.3
-	 */
-	public final static String	INCLUDE_DIRECTIVE						= "include";
-
-	/**
-	 * Manifest header directive identifying a list of classes to exclude in the
-	 * exported package..
-	 * <p>
-	 * This directive is used by the Export-Package manifest header to identify
-	 * a list of classes of the specified package which must not be allowed to
-	 * be exported. The directive value is encoded in the Export-Package
-	 * manifest header like:
-	 * 
-	 * <pre>
-	 *     Export-Package: org.osgi.framework; exclude:=&quot;*Impl&quot;
-	 * </pre>
-	 * 
-	 * <p>
-	 * This directive is also used by the Bundle-ActivationPolicy manifest
-	 * header to identify the packages from which class loads will not trigger
-	 * lazy activation. The directive value is encoded in the
-	 * Bundle-ActivationPolicy manifest header like:
-	 * 
-	 * <pre>
-	 *     Bundle-ActivationPolicy: lazy; exclude:=&quot;org.osgi.framework&quot;
-	 * </pre>
-	 * 
-	 * @see #EXPORT_PACKAGE
-	 * @see #BUNDLE_ACTIVATIONPOLICY
-	 * @since 1.3
-	 */
-	public final static String	EXCLUDE_DIRECTIVE						= "exclude";
-
-	/**
-	 * Manifest header directive identifying names of matching attributes which
-	 * must be specified by matching Import-Package statements in the
-	 * Export-Package manifest header.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Export-Package manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Export-Package: org.osgi.framework; mandatory:=&quot;bundle-symbolic-name&quot;
-	 * </pre>
-	 * 
-	 * @see #EXPORT_PACKAGE
-	 * @since 1.3
-	 */
-	public final static String	MANDATORY_DIRECTIVE						= "mandatory";
-
-	/**
-	 * Manifest header directive identifying the visibility of a required bundle
-	 * in the Require-Bundle manifest header. The default value is
-	 * {@link #VISIBILITY_PRIVATE private}.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Require-Bundle manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Require-Bundle: com.acme.module.test; visibility:=&quot;reexport&quot;
-	 * </pre>
-	 * 
-	 * @see #REQUIRE_BUNDLE
-	 * @see #VISIBILITY_PRIVATE
-	 * @see #VISIBILITY_REEXPORT
-	 * @since 1.3
-	 */
-	public final static String	VISIBILITY_DIRECTIVE					= "visibility";
-
-	/**
-	 * Manifest header directive value identifying a private visibility type. A
-	 * private visibility type indicates that any packages that are exported by
-	 * the required bundle are not made visible on the export signature of the
-	 * requiring bundle.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Require-Bundle manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Require-Bundle: com.acme.module.test; visibility:=&quot;private&quot;
-	 * </pre>
-	 * 
-	 * @see #VISIBILITY_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	VISIBILITY_PRIVATE						= "private";
-
-	/**
-	 * Manifest header directive value identifying a reexport visibility type. A
-	 * reexport visibility type indicates any packages that are exported by the
-	 * required bundle are re-exported by the requiring bundle. Any arbitrary
-	 * arbitrary matching attributes with which they were exported by the
-	 * required bundle are deleted.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Require-Bundle manifest header
-	 * like:
-	 * 
-	 * <pre>
-	 *     Require-Bundle: com.acme.module.test; visibility:=&quot;reexport&quot;
-	 * </pre>
-	 * 
-	 * @see #VISIBILITY_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	VISIBILITY_REEXPORT						= "reexport";
-
-	/**
-	 * Manifest header directive identifying the type of the extension fragment.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Fragment-Host manifest header like:
-	 * 
-	 * <pre>
-	 *     Fragment-Host: system.bundle; extension:=&quot;framework&quot;
-	 * </pre>
-	 * 
-	 * @see #FRAGMENT_HOST
-	 * @see #EXTENSION_FRAMEWORK
-	 * @see #EXTENSION_BOOTCLASSPATH
-	 * @since 1.3
-	 */
-	public final static String	EXTENSION_DIRECTIVE						= "extension";
-
-	/**
-	 * Manifest header directive value identifying the type of extension
-	 * fragment. An extension fragment type of framework indicates that the
-	 * extension fragment is to be loaded by the framework's class loader.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Fragment-Host manifest header like:
-	 * 
-	 * <pre>
-	 *     Fragment-Host: system.bundle; extension:=&quot;framework&quot;
-	 * </pre>
-	 * 
-	 * @see #EXTENSION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	EXTENSION_FRAMEWORK						= "framework";
-
-	/**
-	 * Manifest header directive value identifying the type of extension
-	 * fragment. An extension fragment type of bootclasspath indicates that the
-	 * extension fragment is to be loaded by the boot class loader.
-	 * 
-	 * <p>
-	 * The directive value is encoded in the Fragment-Host manifest header like:
-	 * 
-	 * <pre>
-	 *     Fragment-Host: system.bundle; extension:=&quot;bootclasspath&quot;
-	 * </pre>
-	 * 
-	 * @see #EXTENSION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	EXTENSION_BOOTCLASSPATH					= "bootclasspath";
-
-	/**
-	 * Manifest header identifying the bundle's activation policy.
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @since 1.4
-	 * @see #ACTIVATION_LAZY
-	 * @see #INCLUDE_DIRECTIVE
-	 * @see #EXCLUDE_DIRECTIVE
-	 */
-	public final static String	BUNDLE_ACTIVATIONPOLICY					= "Bundle-ActivationPolicy";
-
-	/**
-	 * Bundle activation policy declaring the bundle must be activated when the
-	 * first class load is made from the bundle.
-	 * <p>
-	 * A bundle with the lazy activation policy that is started with the
-	 * {@link Bundle#START_ACTIVATION_POLICY START_ACTIVATION_POLICY} option
-	 * will wait in the {@link Bundle#STARTING STARTING} state until the first
-	 * class load from the bundle occurs. The bundle will then be activated
-	 * before the class is returned to the requester.
-	 * <p>
-	 * The activation policy value is specified as in the
-	 * Bundle-ActivationPolicy manifest header like:
-	 * 
-	 * <pre>
-	 *       Bundle-ActivationPolicy: lazy
-	 * </pre>
-	 * 
-	 * @see #BUNDLE_ACTIVATIONPOLICY
-	 * @see Bundle#start(int)
-	 * @see Bundle#START_ACTIVATION_POLICY
-	 * @since 1.4
-	 */
-	public final static String	ACTIVATION_LAZY							= "lazy";
-
-	/**
-	 * Framework environment property identifying the Framework version.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 */
-	public static final String	FRAMEWORK_VERSION						= "org.osgi.framework.version";
-
-	/**
-	 * Framework environment property identifying the Framework implementation
-	 * vendor.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 */
-	public static final String	FRAMEWORK_VENDOR						= "org.osgi.framework.vendor";
-
-	/**
-	 * Framework environment property identifying the Framework implementation
-	 * language (see ISO 639 for possible values).
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 */
-	public static final String	FRAMEWORK_LANGUAGE						= "org.osgi.framework.language";
-
-	/**
-	 * Framework environment property identifying the Framework host-computer's
-	 * operating system.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 */
-	public static final String	FRAMEWORK_OS_NAME						= "org.osgi.framework.os.name";
-
-	/**
-	 * Framework environment property identifying the Framework host-computer's
-	 * operating system version number.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 */
-	public static final String	FRAMEWORK_OS_VERSION					= "org.osgi.framework.os.version";
-
-	/**
-	 * Framework environment property identifying the Framework host-computer's
-	 * processor name.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 */
-	public static final String	FRAMEWORK_PROCESSOR						= "org.osgi.framework.processor";
-
-	/**
-	 * Framework environment property identifying execution environments
-	 * provided by the Framework.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @since 1.2
-	 */
-	public static final String	FRAMEWORK_EXECUTIONENVIRONMENT			= "org.osgi.framework.executionenvironment";
-
-	/**
-	 * Framework environment property identifying packages for which the
-	 * Framework must delegate class loading to the parent class loader of the
-	 * bundle.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @see #FRAMEWORK_BUNDLE_PARENT
-	 * @since 1.3
-	 */
-	public static final String	FRAMEWORK_BOOTDELEGATION				= "org.osgi.framework.bootdelegation";
-
-	/**
-	 * Framework environment property identifying packages which the system
-	 * bundle must export.
-	 * 
-	 * <p>
-	 * If this property is not specified then the framework must calculate a
-	 * reasonable default value for the current execution environment.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public static final String	FRAMEWORK_SYSTEMPACKAGES				= "org.osgi.framework.system.packages";
-
-	/**
-	 * Framework environment property identifying extra packages which the
-	 * system bundle must export from the current execution environment.
-	 * 
-	 * <p>
-	 * This property is useful for configuring extra system packages in addition
-	 * to the system packages calculated by the framework.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @see #FRAMEWORK_SYSTEMPACKAGES
-	 * @since 1.5
-	 */
-	public static final String	FRAMEWORK_SYSTEMPACKAGES_EXTRA			= "org.osgi.framework.system.packages.extra";
-
-	/**
-	 * Framework environment property identifying whether the Framework supports
-	 * framework extension bundles.
-	 * 
-	 * <p>
-	 * As of version 1.4, the value of this property must be <code>true</code>.
-	 * The Framework must support framework extension bundles.
-	 * 
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public static final String	SUPPORTS_FRAMEWORK_EXTENSION			= "org.osgi.supports.framework.extension";
-
-	/**
-	 * Framework environment property identifying whether the Framework supports
-	 * bootclasspath extension bundles.
-	 * 
-	 * <p>
-	 * If the value of this property is <code>true</code>, then the Framework
-	 * supports bootclasspath extension bundles. The default value is
-	 * <code>false</code>.
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public static final String	SUPPORTS_BOOTCLASSPATH_EXTENSION		= "org.osgi.supports.bootclasspath.extension";
-
-	/**
-	 * Framework environment property identifying whether the Framework supports
-	 * fragment bundles.
-	 * 
-	 * <p>
-	 * As of version 1.4, the value of this property must be <code>true</code>.
-	 * The Framework must support fragment bundles.
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public static final String	SUPPORTS_FRAMEWORK_FRAGMENT				= "org.osgi.supports.framework.fragment";
-
-	/**
-	 * Framework environment property identifying whether the Framework supports
-	 * the {@link #REQUIRE_BUNDLE Require-Bundle} manifest header.
-	 * 
-	 * <p>
-	 * As of version 1.4, the value of this property must be <code>true</code>.
-	 * The Framework must support the <code>Require-Bundle</code> manifest
-	 * header.
-	 * <p>
-	 * The value of this property may be retrieved by calling the
-	 * <code>BundleContext.getProperty</code> method.
-	 * 
-	 * @since 1.3
-	 */
-	public static final String	SUPPORTS_FRAMEWORK_REQUIREBUNDLE		= "org.osgi.supports.framework.requirebundle";
-
-	/**
-	 * Specifies the type of security manager the framework must use. If not
-	 * specified then the framework will not set the VM security manager.
-	 * 
-	 * @see #FRAMEWORK_SECURITY_OSGI
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_SECURITY						= "org.osgi.framework.security";
-
-	/**
-	 * Specifies that a security manager that supports all security aspects of
-	 * the OSGi core specification including postponed conditions must be
-	 * installed.
-	 * 
-	 * <p>
-	 * If this value is specified and there is a security manager already
-	 * installed, then a <code>SecurityException</code> must be thrown when the
-	 * Framework is initialized.
-	 * 
-	 * @see #FRAMEWORK_SECURITY
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_SECURITY_OSGI					= "osgi";
-
-	/**
-	 * Specified the persistent storage area used by the framework. The value of
-	 * this property must be a valid file path in the file system to a
-	 * directory. If the specified directory does not exist then the framework
-	 * will create the directory. If the specified path exists but is not a
-	 * directory or if the framework fails to create the storage directory, then
-	 * framework initialization must fail. The framework is free to use this
-	 * directory as it sees fit. This area can not be shared with anything else.
-	 * <p>
-	 * If this property is not set, the framework should use a reasonable
-	 * platform default for the persistent storage area.
-	 * 
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_STORAGE						= "org.osgi.framework.storage";
-
-	/**
-	 * Specifies if and when the persistent storage area for the framework
-	 * should be cleaned. If this property is not set, then the framework
-	 * storage area must not be cleaned.
-	 * 
-	 * @see #FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_STORAGE_CLEAN					= "org.osgi.framework.storage.clean";
-
-	/**
-	 * Specifies that the framework storage area must be cleaned before the
-	 * framework is initialized for the first time. Subsequent inits, starts or
-	 * updates of the framework will not result in cleaning the framework
-	 * storage area.
-	 * 
-	 * @since 1.5
-	 */
-	public final static String  FRAMEWORK_STORAGE_CLEAN_ONFIRSTINIT			= "onFirstInit";
-
-	/**
-	 * Specifies a comma separated list of additional library file extensions
-	 * that must be used when a bundle's class loader is searching for native
-	 * libraries. If this property is not set, then only the library name
-	 * returned by <code>System.mapLibraryName(String)</code> will be used to
-	 * search. This is needed for certain operating systems which allow more
-	 * than one extension for a library. For example, AIX allows library
-	 * extensions of <code>.a</code> and <code>.so</code>, but
-	 * <code>System.mapLibraryName(String)</code> will only return names with
-	 * the <code>.a</code> extension.
-	 * 
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_LIBRARY_EXTENSIONS			= "org.osgi.framework.library.extensions";
-
-	/**
-	 * Specifies an optional OS specific command to set file permissions on
-	 * extracted native code. On some operating systems, it is required that
-	 * native libraries be set to executable. This optional property allows you
-	 * to specify the command. For example, on a UNIX style OS, this property
-	 * could have the following value.
-	 * 
-	 * <pre>
-	 * chmod +rx ${abspath}
-	 * </pre>
-	 * 
-	 * The <code>${abspath}</code> is used by the framework to substitute the
-	 * actual absolute file path.
-	 * 
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_EXECPERMISSION				= "org.osgi.framework.command.execpermission";
-
-	/**
-	 * Specifies the trust repositories used by the framework. The value is a
-	 * <code>java.io.File.pathSeparator</code> separated list of valid file
-	 * paths to files that contain key stores of type <code>JKS</code>. The
-	 * framework will use the key stores as trust repositories to authenticate
-	 * certificates of trusted signers. The key stores are only used as
-	 * read-only trust repositories to access public keys. No passwords are
-	 * required to access the key stores' public keys.
-	 * <p>
-	 * Note that framework implementations are allowed to use other trust
-	 * repositories in addition to the trust repositories specified by this
-	 * property. How these other trust repositories are configured and populated
-	 * is implementation specific.
-	 * 
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_TRUST_REPOSITORIES			= "org.osgi.framework.trust.repositories";
-
-	/**
-	 * Specifies the current windowing system. The framework should provide a
-	 * reasonable default if this is not set.
-	 * 
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_WINDOWSYSTEM					= "org.osgi.framework.windowsystem";
-
-	/**
-	 * Specifies the beginning start level of the framework.
-	 * 
-	 * @see "Core Specification, section 8.2.3."
-	 * @since 1.5
-	 */
-	public final static String	FRAMEWORK_BEGINNING_STARTLEVEL			= "org.osgi.framework.startlevel.beginning";
-
-	/**
-	 * Specifies the parent class loader type for all bundle class loaders.
-	 * Default value is {@link #FRAMEWORK_BUNDLE_PARENT_BOOT boot}.
-	 * 
-	 * @see #FRAMEWORK_BUNDLE_PARENT_BOOT
-	 * @see #FRAMEWORK_BUNDLE_PARENT_EXT
-	 * @see #FRAMEWORK_BUNDLE_PARENT_APP
-	 * @see #FRAMEWORK_BUNDLE_PARENT_FRAMEWORK
-	 * @since 1.5
-	 */
-	public final static String FRAMEWORK_BUNDLE_PARENT 					= "org.osgi.framework.bundle.parent";
-
-	/**
-	 * Specifies to use of the boot class loader as the parent class loader for
-	 * all bundle class loaders.
-	 * 
-	 * @since 1.5
-	 * @see #FRAMEWORK_BUNDLE_PARENT
-	 */
-	public final static String	FRAMEWORK_BUNDLE_PARENT_BOOT			= "boot";
-
-	/**
-	 * Specifies to use the extension class loader as the parent class loader
-	 * for all bundle class loaders.
-	 * 
-	 * @since 1.5
-	 * @see #FRAMEWORK_BUNDLE_PARENT
-	 */
-	public final static String	FRAMEWORK_BUNDLE_PARENT_EXT				= "ext";
-
-	/**
-	 * Specifies to use the application class loader as the parent class loader
-	 * for all bundle class loaders.  Depending on how the framework is 
-	 * launched, this may refer to the same class loader as 
-	 * {@link #FRAMEWORK_BUNDLE_PARENT_FRAMEWORK}.
-	 * 
-	 * @since 1.5
-	 * @see #FRAMEWORK_BUNDLE_PARENT
-	 */
-	public final static String	FRAMEWORK_BUNDLE_PARENT_APP				= "app";
-
-	/**
-	 * Specifies to use the framework class loader as the parent class loader
-	 * for all bundle class loaders. The framework class loader is the class
-	 * loader used to load the framework implementation.  Depending on how the 
-	 * framework is launched, this may refer to the same class loader as 
-	 * {@link #FRAMEWORK_BUNDLE_PARENT_APP}.
-	 * 
-	 * @since 1.5
-	 * @see #FRAMEWORK_BUNDLE_PARENT
-	 */
-	public final static String	FRAMEWORK_BUNDLE_PARENT_FRAMEWORK		= "framework";
-
-	/*
-	 * Service properties.
-	 */
-	
-	/**
-	 * Service property identifying all of the class names under which a service
-	 * was registered in the Framework. The value of this property must be of
-	 * type <code>String[]</code>.
-	 * 
-	 * <p>
-	 * This property is set by the Framework when a service is registered.
-	 */
-	public static final String	OBJECTCLASS								= "objectClass";
-
-	/**
-	 * Service property identifying a service's registration number. The value
-	 * of this property must be of type <code>Long</code>.
-	 * 
-	 * <p>
-	 * The value of this property is assigned by the Framework when a service is
-	 * registered. The Framework assigns a unique value that is larger than all
-	 * previously assigned values since the Framework was started. These values
-	 * are NOT persistent across restarts of the Framework.
-	 */
-	public static final String	SERVICE_ID								= "service.id";
-
-	/**
-	 * Service property identifying a service's persistent identifier.
-	 * 
-	 * <p>
-	 * This property may be supplied in the <code>properties</code>
-	 * <code>Dictionary</code> object passed to the
-	 * <code>BundleContext.registerService</code> method. The value of this
-	 * property must be of type <code>String</code>, <code>String[]</code>, or
-	 * <code>Collection</code> of <code>String</code>.
-	 * 
-	 * <p>
-	 * A service's persistent identifier uniquely identifies the service and
-	 * persists across multiple Framework invocations.
-	 * 
-	 * <p>
-	 * By convention, every bundle has its own unique namespace, starting with
-	 * the bundle's identifier (see {@link Bundle#getBundleId}) and followed by
-	 * a dot (.). A bundle may use this as the prefix of the persistent
-	 * identifiers for the services it registers.
-	 */
-	public static final String	SERVICE_PID								= "service.pid";
-
-	/**
-	 * Service property identifying a service's ranking number.
-	 * 
-	 * <p>
-	 * This property may be supplied in the <code>properties
-	 * Dictionary</code> object passed to the
-	 * <code>BundleContext.registerService</code> method. The value of this
-	 * property must be of type <code>Integer</code>.
-	 * 
-	 * <p>
-	 * The service ranking is used by the Framework to determine the <i>natural
-	 * order</i> of services, see {@link ServiceReference#compareTo(Object)},
-	 * and the <i>default</i> service to be returned from a call to the
-	 * {@link BundleContext#getServiceReference} method.
-	 * 
-	 * <p>
-	 * The default ranking is zero (0). A service with a ranking of
-	 * <code>Integer.MAX_VALUE</code> is very likely to be returned as the
-	 * default service, whereas a service with a ranking of
-	 * <code>Integer.MIN_VALUE</code> is very unlikely to be returned.
-	 * 
-	 * <p>
-	 * If the supplied property value is not of type <code>Integer</code>, it is
-	 * deemed to have a ranking value of zero.
-	 */
-	public static final String	SERVICE_RANKING							= "service.ranking";
-
-	/**
-	 * Service property identifying a service's vendor.
-	 * 
-	 * <p>
-	 * This property may be supplied in the properties <code>Dictionary</code>
-	 * object passed to the <code>BundleContext.registerService</code> method.
-	 */
-	public static final String	SERVICE_VENDOR							= "service.vendor";
-
-	/**
-	 * Service property identifying a service's description.
-	 * 
-	 * <p>
-	 * This property may be supplied in the properties <code>Dictionary</code>
-	 * object passed to the <code>BundleContext.registerService</code> method.
-	 */
-	public static final String	SERVICE_DESCRIPTION						= "service.description"; 
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Filter.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Filter.java
deleted file mode 100644
index 81c3e5b..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Filter.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.osgi.framework;
-
-import java.util.Dictionary;
-
-/**
- * An RFC 1960-based Filter.
- * <p>
- * <code>Filter</code>s can be created by calling
- * {@link BundleContext#createFilter} or {@link FrameworkUtil#createFilter} with
- * a filter string.
- * <p>
- * A <code>Filter</code> can be used numerous times to determine if the match
- * argument matches the filter string that was used to create the
- * <code>Filter</code>.
- * <p>
- * Some examples of LDAP filters are:
- * 
- * <pre>
- *  &quot;(cn=Babs Jensen)&quot;
- *  &quot;(!(cn=Tim Howes))&quot;
- *  &quot;(&amp;(&quot; + Constants.OBJECTCLASS + &quot;=Person)(|(sn=Jensen)(cn=Babs J*)))&quot;
- *  &quot;(o=univ*of*mich*)&quot;
- * </pre>
- * 
- * @since 1.1
- * @see "Core Specification, section 5.5, for a description of the filter string syntax."
- * @ThreadSafe
- * @version $Revision: 6860 $
- */
-public interface Filter {
-	/**
-	 * Filter using a service's properties.
-	 * <p>
-	 * This <code>Filter</code> is executed using the keys and values of the
-	 * referenced service's properties. The keys are case insensitively matched
-	 * with this <code>Filter</code>.
-	 * 
-	 * @param reference The reference to the service whose properties are used
-	 *        in the match.
-	 * @return <code>true</code> if the service's properties match this
-	 *         <code>Filter</code>; <code>false</code> otherwise.
-	 */
-	public boolean match(ServiceReference reference);
-
-	/**
-	 * Filter using a <code>Dictionary</code>. This <code>Filter</code> is
-	 * executed using the specified <code>Dictionary</code>'s keys and values.
-	 * The keys are case insensitively matched with this <code>Filter</code>.
-	 * 
-	 * @param dictionary The <code>Dictionary</code> whose keys are used in the
-	 *        match.
-	 * @return <code>true</code> if the <code>Dictionary</code>'s keys and
-	 *         values match this filter; <code>false</code> otherwise.
-	 * @throws IllegalArgumentException If <code>dictionary</code> contains case
-	 *         variants of the same key name.
-	 */
-	public boolean match(Dictionary dictionary);
-
-	/**
-	 * Returns this <code>Filter</code>'s filter string.
-	 * <p>
-	 * The filter string is normalized by removing whitespace which does not
-	 * affect the meaning of the filter.
-	 * 
-	 * @return This <code>Filter</code>'s filter string.
-	 */
-	public String toString();
-
-	/**
-	 * Compares this <code>Filter</code> to another <code>Filter</code>.
-	 * 
-	 * <p>
-	 * This method returns the result of calling
-	 * <code>this.toString().equals(obj.toString())</code>.
-	 * 
-	 * @param obj The object to compare against this <code>Filter</code>.
-	 * @return If the other object is a <code>Filter</code> object, then returns
-	 *         the result of calling
-	 *         <code>this.toString().equals(obj.toString())</code>;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj);
-
-	/**
-	 * Returns the hashCode for this <code>Filter</code>.
-	 * 
-	 * <p>
-	 * This method returns the result of calling
-	 * <code>this.toString().hashCode()</code>.
-	 * 
-	 * @return The hashCode of this <code>Filter</code>.
-	 */
-	public int hashCode();
-
-	/**
-	 * Filter with case sensitivity using a <code>Dictionary</code>. This
-	 * <code>Filter</code> is executed using the specified
-	 * <code>Dictionary</code>'s keys and values. The keys are case sensitively
-	 * matched with this <code>Filter</code>.
-	 * 
-	 * @param dictionary The <code>Dictionary</code> whose keys are used in the
-	 *        match.
-	 * @return <code>true</code> if the <code>Dictionary</code>'s keys and
-	 *         values match this filter; <code>false</code> otherwise.
-	 * @since 1.3
-	 */
-	public boolean matchCase(Dictionary dictionary);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkEvent.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkEvent.java
deleted file mode 100644
index 747b249..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkEvent.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.EventObject;
-
-/**
- * A general event from the Framework.
- * 
- * <p>
- * <code>FrameworkEvent</code> objects are delivered to
- * <code>FrameworkListener</code>s when a general event occurs within the OSGi
- * environment. A type code is used to identify the event type for future
- * extendability.
- * 
- * <p>
- * OSGi Alliance reserves the right to extend the set of event types.
- * 
- * @Immutable
- * @see FrameworkListener
- * @version $Revision: 6542 $
- */
-
-public class FrameworkEvent extends EventObject {
-	static final long		serialVersionUID				= 207051004521261705L;
-	/**
-	 * Bundle related to the event.
-	 */
-	private final Bundle	bundle;
-
-	/**
-	 * Exception related to the event.
-	 */
-	private final Throwable	throwable;
-
-	/**
-	 * Type of event.
-	 */
-	private final int		type;
-
-	/**
-	 * The Framework has started.
-	 * 
-	 * <p>
-	 * This event is fired when the Framework has started after all installed
-	 * bundles that are marked to be started have been started and the Framework
-	 * has reached the initial start level. The source of this event is the
-	 * System Bundle.
-	 * 
-	 * @see "The Start Level Service"
-	 */
-	public final static int	STARTED							= 0x00000001;
-
-	/**
-	 * An error has occurred.
-	 * 
-	 * <p>
-	 * There was an error associated with a bundle.
-	 */
-	public final static int	ERROR							= 0x00000002;
-
-	/**
-	 * A PackageAdmin.refreshPackage operation has completed.
-	 * 
-	 * <p>
-	 * This event is fired when the Framework has completed the refresh packages
-	 * operation initiated by a call to the PackageAdmin.refreshPackages method.
-	 * The source of this event is the System Bundle.
-	 * 
-	 * @since 1.2
-	 * @see "<code>PackageAdmin.refreshPackages</code>"
-	 */
-	public final static int	PACKAGES_REFRESHED				= 0x00000004;
-
-	/**
-	 * A StartLevel.setStartLevel operation has completed.
-	 * 
-	 * <p>
-	 * This event is fired when the Framework has completed changing the active
-	 * start level initiated by a call to the StartLevel.setStartLevel method.
-	 * The source of this event is the System Bundle.
-	 * 
-	 * @since 1.2
-	 * @see "The Start Level Service"
-	 */
-	public final static int	STARTLEVEL_CHANGED				= 0x00000008;
-
-	/**
-	 * A warning has occurred.
-	 * 
-	 * <p>
-	 * There was a warning associated with a bundle.
-	 * 
-	 * @since 1.3
-	 */
-	public final static int	WARNING							= 0x00000010;
-
-	/**
-	 * An informational event has occurred.
-	 * 
-	 * <p>
-	 * There was an informational event associated with a bundle.
-	 * 
-	 * @since 1.3
-	 */
-	public final static int	INFO							= 0x00000020;
-
-	/**
-	 * The Framework has stopped.
-	 * 
-	 * <p>
-	 * This event is fired when the Framework has been stopped because of a stop
-	 * operation on the system bundle. The source of this event is the System
-	 * Bundle.
-	 * 
-	 * @since 1.5
-	 */
-	public final static int	STOPPED							= 0x00000040;
-
-	/**
-	 * The Framework has stopped during update.
-	 * 
-	 * <p>
-	 * This event is fired when the Framework has been stopped because of an
-	 * update operation on the system bundle. The Framework will be restarted
-	 * after this event is fired. The source of this event is the System Bundle.
-	 * 
-	 * @since 1.5
-	 */
-	public final static int	STOPPED_UPDATE					= 0x00000080;
-
-	/**
-	 * The Framework has stopped and the boot class path has changed.
-	 * 
-	 * <p>
-	 * This event is fired when the Framework has been stopped because of a stop
-	 * operation on the system bundle and a bootclasspath extension bundle has
-	 * been installed or updated. The source of this event is the System Bundle.
-	 * 
-	 * @since 1.5
-	 */
-	public final static int	STOPPED_BOOTCLASSPATH_MODIFIED	= 0x00000100;
-
-	/**
-	 * The Framework did not stop before the wait timeout expired.
-	 * 
-	 * <p>
-	 * This event is fired when the Framework did not stop before the wait
-	 * timeout expired. The source of this event is the System Bundle.
-	 * 
-	 * @since 1.5
-	 */
-	public final static int	WAIT_TIMEDOUT					= 0x00000200;
-
-	/**
-	 * Creates a Framework event.
-	 * 
-	 * @param type The event type.
-	 * @param source The event source object. This may not be <code>null</code>.
-	 * @deprecated As of 1.2. This constructor is deprecated in favor of using
-	 *             the other constructor with the System Bundle as the event
-	 *             source.
-	 */
-	public FrameworkEvent(int type, Object source) {
-		super(source);
-		this.type = type;
-		this.bundle = null;
-		this.throwable = null;
-	}
-
-	/**
-	 * Creates a Framework event regarding the specified bundle.
-	 * 
-	 * @param type The event type.
-	 * @param bundle The event source.
-	 * @param throwable The related exception. This argument may be
-	 *        <code>null</code> if there is no related exception.
-	 */
-	public FrameworkEvent(int type, Bundle bundle, Throwable throwable) {
-		super(bundle);
-		this.type = type;
-		this.bundle = bundle;
-		this.throwable = throwable;
-	}
-
-	/**
-	 * Returns the exception related to this event.
-	 * 
-	 * @return The related exception or <code>null</code> if none.
-	 */
-	public Throwable getThrowable() {
-		return throwable;
-	}
-
-	/**
-	 * Returns the bundle associated with the event. This bundle is also the
-	 * source of the event.
-	 * 
-	 * @return The bundle associated with the event.
-	 */
-	public Bundle getBundle() {
-		return bundle;
-	}
-
-	/**
-	 * Returns the type of framework event.
-	 * <p>
-	 * The type values are:
-	 * <ul>
-	 * <li>{@link #STARTED}
-	 * <li>{@link #ERROR}
-	 * <li>{@link #WARNING}
-	 * <li>{@link #INFO}
-	 * <li>{@link #PACKAGES_REFRESHED}
-	 * <li>{@link #STARTLEVEL_CHANGED}
-	 * <li>{@link #STOPPED}
-	 * <li>{@link #STOPPED_BOOTCLASSPATH_MODIFIED}
-	 * <li>{@link #STOPPED_UPDATE}
-	 * <li>{@link #WAIT_TIMEDOUT}
-	 * </ul>
-	 * 
-	 * @return The type of state change.
-	 */
-
-	public int getType() {
-		return type;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkListener.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkListener.java
deleted file mode 100644
index c96c490..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkListener.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.EventListener;
-
-/**
- * A <code>FrameworkEvent</code> listener. <code>FrameworkListener</code> is
- * a listener interface that may be implemented by a bundle developer. When a
- * <code>FrameworkEvent</code> is fired, it is asynchronously delivered to a
- * <code>FrameworkListener</code>. The Framework delivers
- * <code>FrameworkEvent</code> objects to a <code>FrameworkListener</code>
- * in order and must not concurrently call a <code>FrameworkListener</code>.
- * 
- * <p>
- * A <code>FrameworkListener</code> object is registered with the Framework
- * using the {@link BundleContext#addFrameworkListener} method.
- * <code>FrameworkListener</code> objects are called with a
- * <code>FrameworkEvent</code> objects when the Framework starts and when
- * asynchronous errors occur.
- * 
- * @see FrameworkEvent
- * @NotThreadSafe
- * @version $Revision: 5673 $
- */
-
-public interface FrameworkListener extends EventListener {
-
-	/**
-	 * Receives notification of a general <code>FrameworkEvent</code> object.
-	 * 
-	 * @param event The <code>FrameworkEvent</code> object.
-	 */
-	public void frameworkEvent(FrameworkEvent event);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
deleted file mode 100644
index 0b31ec8..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
+++ /dev/null
@@ -1,2193 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2005, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.security.auth.x500.X500Principal;
-
-/**
- * Framework Utility class.
- * 
- * <p>
- * This class contains utility methods which access Framework functions that may
- * be useful to bundles.
- * 
- * @since 1.3
- * @ThreadSafe
- * @version $Revision: 8080 $
- */
-public class FrameworkUtil {
-	/**
-	 * FrameworkUtil objects may not be constructed.
-	 */
-	private FrameworkUtil() {
-		// private empty constructor to prevent construction
-	}
-
-	/**
-	 * Creates a <code>Filter</code> object. This <code>Filter</code> object may
-	 * be used to match a <code>ServiceReference</code> object or a
-	 * <code>Dictionary</code> object.
-	 * 
-	 * <p>
-	 * If the filter cannot be parsed, an {@link InvalidSyntaxException} will be
-	 * thrown with a human readable message where the filter became unparsable.
-	 * 
-	 * <p>
-	 * This method returns a Filter implementation which may not perform as well
-	 * as the framework implementation-specific Filter implementation returned
-	 * by {@link BundleContext#createFilter(String)}.
-	 * 
-	 * @param filter The filter string.
-	 * @return A <code>Filter</code> object encapsulating the filter string.
-	 * @throws InvalidSyntaxException If <code>filter</code> contains an invalid
-	 *         filter string that cannot be parsed.
-	 * @throws NullPointerException If <code>filter</code> is null.
-	 * 
-	 * @see Filter
-	 */
-	public static Filter createFilter(String filter)
-			throws InvalidSyntaxException {
-		return FilterImpl.newInstance(filter);
-	}
-
-	/**
-	 * Match a Distinguished Name (DN) chain against a pattern. DNs can be
-	 * matched using wildcards. A wildcard ('*' &#92;u002A) replaces all
-	 * possible values. Due to the structure of the DN, the comparison is more
-	 * complicated than string-based wildcard matching.
-	 * <p>
-	 * A wildcard can stand for zero or more DNs in a chain, a number of
-	 * relative distinguished names (RDNs) within a DN, or the value of a single
-	 * RDN. The DNs in the chain and the matching pattern are canonicalized
-	 * before processing. This means, among other things, that spaces must be
-	 * ignored, except in values.
-	 * <p>
-	 * The format of a wildcard match pattern is:
-	 * 
-	 * <pre>
-	 * matchPattern	::= dn-match ( ';' dn-match ) *
-	 * dn-match 	::= ( '*' | rdn-match ) ( ',' rdn-match ) * | '-'
-	 * rdn-match 	::= name '=' value-match
-	 * value-match 	::= '*' | value-star
-	 * value-star 	::= &lt; value, requires escaped '*' and '-' &gt;
-	 * </pre>
-	 * <p>
-	 * The most simple case is a single wildcard; it must match any DN. A
-	 * wildcard can also replace the first list of RDNs of a DN. The first RDNs
-	 * are the least significant. Such lists of matched RDNs can be empty.
-	 * <p>
-	 * For example, a match pattern with a wildcard that matches all all DNs
-	 * that end with RDNs of o=ACME and c=US would look like this:
-	 * 
-	 * <pre>
-	 * *, o=ACME, c=US
-	 * </pre>
-	 * 
-	 * This match pattern would match the following DNs:
-	 * 
-	 * <pre>
-	 * cn = Bugs Bunny, o = ACME, c = US
-	 * ou = Carrots, cn=Daffy Duck, o=ACME, c=US
-	 * street = 9C\, Avenue St. Drézéry, o=ACME, c=US
-	 * dc=www, dc=acme, dc=com, o=ACME, c=US
-	 * o=ACME, c=US
-	 * </pre>
-	 * 
-	 * The following DNs would not match:
-	 * 
-	 * <pre>
-	 * street = 9C\, Avenue St. Drézéry, o=ACME, c=FR
-	 * dc=www, dc=acme, dc=com, c=US
-	 * </pre>
-	 * 
-	 * If a wildcard is used for a value of an RDN, the value must be exactly *.
-	 * The wildcard must match any value, and no substring matching must be
-	 * done. For example:
-	 * 
-	 * <pre>
-	 * cn=*,o=ACME,c=*
-	 * </pre>
-	 * 
-	 * This match pattern with wildcard must match the following DNs:
-	 * 
-	 * <pre>
-	 * cn=Bugs Bunny,o=ACME,c=US
-	 * cn = Daffy Duck , o = ACME , c = US
-	 * cn=Road Runner, o=ACME, c=NL
-	 * </pre>
-	 * 
-	 * But not:
-	 * 
-	 * <pre>
-	 * o=ACME, c=NL
-	 * dc=acme.com, cn=Bugs Bunny, o=ACME, c=US
-	 * </pre>
-	 * 
-	 * <p>
-	 * A match pattern may contain a chain of DN match patterns. The
-	 * semicolon(';' &#92;u003B) must be used to separate DN match patterns in a
-	 * chain. Wildcards can also be used to match against a complete DN within a
-	 * chain.
-	 * <p>
-	 * The following example matches a certificate signed by Tweety Inc. in the
-	 * US.
-	 * </p>
-	 * 
-	 * <pre>
-	 * * ; ou=S &amp; V, o=Tweety Inc., c=US
-	 * </pre>
-	 * <p>
-	 * The wildcard ('*') matches zero or one DN in the chain, however,
-	 * sometimes it is necessary to match a longer chain. The minus sign ('-'
-	 * &#92;u002D) represents zero or more DNs, whereas the asterisk only
-	 * represents a single DN. For example, to match a DN where the Tweety Inc.
-	 * is in the DN chain, use the following expression:
-	 * </p>
-	 * 
-	 * <pre>
-	 * - ; *, o=Tweety Inc., c=US
-	 * </pre>
-	 * 
-	 * @param matchPattern The pattern against which to match the DN chain.
-	 * @param dnChain The DN chain to match against the specified pattern. Each
-	 *        element of the chain must be of type <code>String</code> and use
-	 *        the format defined in RFC 2253.
-	 * @return <code>true</code> If the pattern matches the DN chain; otherwise
-	 *         <code>false</code> is returned.
-	 * @throws IllegalArgumentException If the specified match pattern or DN
-	 *         chain is invalid.
-	 * @since 1.5
-	 */
-	public static boolean matchDistinguishedNameChain(String matchPattern,
-			List /* <String> */dnChain) {
-		return DNChainMatching.match(matchPattern, dnChain);
-	}
-
-	/**
-	 * Return a <code>Bundle</code> for the specified bundle class. The returned
-	 * <code>Bundle</code> is the bundle associated with the bundle class loader
-	 * which defined the specified class.
-	 * 
-	 * @param classFromBundle A class defined by a bundle class loader.
-	 * @return A <code>Bundle</code> for the specified bundle class or
-	 *         <code>null</code> if the specified class was not defined by a
-	 *         bundle class loader.
-	 * @since 1.5
-	 */
-	public static Bundle getBundle(final Class classFromBundle) {
-		// We use doPriv since the caller may not have permission
-		// to call getClassLoader.
-		Object cl = AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return classFromBundle.getClassLoader();
-			}
-		});
-
-		if (cl instanceof BundleReference) {
-			return ((BundleReference) cl).getBundle();
-		}
-		return null;
-	}
-
-	/**
-	 * RFC 1960-based Filter. Filter objects can be created by calling the
-	 * constructor with the desired filter string. A Filter object can be called
-	 * numerous times to determine if the match argument matches the filter
-	 * string that was used to create the Filter object.
-	 * 
-	 * <p>
-	 * The syntax of a filter string is the string representation of LDAP search
-	 * filters as defined in RFC 1960: <i>A String Representation of LDAP Search
-	 * Filters</i> (available at http://www.ietf.org/rfc/rfc1960.txt). It should
-	 * be noted that RFC 2254: <i>A String Representation of LDAP Search
-	 * Filters</i> (available at http://www.ietf.org/rfc/rfc2254.txt) supersedes
-	 * RFC 1960 but only adds extensible matching and is not applicable for this
-	 * API.
-	 * 
-	 * <p>
-	 * The string representation of an LDAP search filter is defined by the
-	 * following grammar. It uses a prefix format.
-	 * 
-	 * <pre>
-	 *   &lt;filter&gt; ::= '(' &lt;filtercomp&gt; ')'
-	 *   &lt;filtercomp&gt; ::= &lt;and&gt; | &lt;or&gt; | &lt;not&gt; | &lt;item&gt;
-	 *   &lt;and&gt; ::= '&amp;' &lt;filterlist&gt;
-	 *   &lt;or&gt; ::= '|' &lt;filterlist&gt;
-	 *   &lt;not&gt; ::= '!' &lt;filter&gt;
-	 *   &lt;filterlist&gt; ::= &lt;filter&gt; | &lt;filter&gt; &lt;filterlist&gt;
-	 *   &lt;item&gt; ::= &lt;simple&gt; | &lt;present&gt; | &lt;substring&gt;
-	 *   &lt;simple&gt; ::= &lt;attr&gt; &lt;filtertype&gt; &lt;value&gt;
-	 *   &lt;filtertype&gt; ::= &lt;equal&gt; | &lt;approx&gt; | &lt;greater&gt; | &lt;less&gt;
-	 *   &lt;equal&gt; ::= '='
-	 *   &lt;approx&gt; ::= '&tilde;='
-	 *   &lt;greater&gt; ::= '&gt;='
-	 *   &lt;less&gt; ::= '&lt;='
-	 *   &lt;present&gt; ::= &lt;attr&gt; '=*'
-	 *   &lt;substring&gt; ::= &lt;attr&gt; '=' &lt;initial&gt; &lt;any&gt; &lt;final&gt;
-	 *   &lt;initial&gt; ::= NULL | &lt;value&gt;
-	 *   &lt;any&gt; ::= '*' &lt;starval&gt;
-	 *   &lt;starval&gt; ::= NULL | &lt;value&gt; '*' &lt;starval&gt;
-	 *   &lt;final&gt; ::= NULL | &lt;value&gt;
-	 * </pre>
-	 * 
-	 * <code>&lt;attr&gt;</code> is a string representing an attribute, or key,
-	 * in the properties objects of the registered services. Attribute names are
-	 * not case sensitive; that is cn and CN both refer to the same attribute.
-	 * <code>&lt;value&gt;</code> is a string representing the value, or part of
-	 * one, of a key in the properties objects of the registered services. If a
-	 * <code>&lt;value&gt;</code> must contain one of the characters '
-	 * <code>*</code>' or '<code>(</code>' or '<code>)</code>', these characters
-	 * should be escaped by preceding them with the backslash '<code>\</code>'
-	 * character. Note that although both the <code>&lt;substring&gt;</code> and
-	 * <code>&lt;present&gt;</code> productions can produce the <code>'attr=*'</code>
-	 * construct, this construct is used only to denote a presence filter.
-	 * 
-	 * <p>
-	 * Examples of LDAP filters are:
-	 * 
-	 * <pre>
-	 *   &quot;(cn=Babs Jensen)&quot;
-	 *   &quot;(!(cn=Tim Howes))&quot;
-	 *   &quot;(&amp;(&quot; + Constants.OBJECTCLASS + &quot;=Person)(|(sn=Jensen)(cn=Babs J*)))&quot;
-	 *   &quot;(o=univ*of*mich*)&quot;
-	 * </pre>
-	 * 
-	 * <p>
-	 * The approximate match (<code>~=</code>) is implementation specific but
-	 * should at least ignore case and white space differences. Optional are
-	 * codes like soundex or other smart "closeness" comparisons.
-	 * 
-	 * <p>
-	 * Comparison of values is not straightforward. Strings are compared
-	 * differently than numbers and it is possible for a key to have multiple
-	 * values. Note that that keys in the match argument must always be strings.
-	 * The comparison is defined by the object type of the key's value. The
-	 * following rules apply for comparison:
-	 * 
-	 * <blockquote>
-	 * <TABLE BORDER=0>
-	 * <TR>
-	 * <TD><b>Property Value Type </b></TD>
-	 * <TD><b>Comparison Type</b></TD>
-	 * </TR>
-	 * <TR>
-	 * <TD>String</TD>
-	 * <TD>String comparison</TD>
-	 * </TR>
-	 * <TR valign=top>
-	 * <TD>Integer, Long, Float, Double, Byte, Short, BigInteger, BigDecimal</TD>
-	 * <TD>numerical comparison</TD>
-	 * </TR>
-	 * <TR>
-	 * <TD>Character</TD>
-	 * <TD>character comparison</TD>
-	 * </TR>
-	 * <TR>
-	 * <TD>Boolean</TD>
-	 * <TD>equality comparisons only</TD>
-	 * </TR>
-	 * <TR>
-	 * <TD>[] (array)</TD>
-	 * <TD>recursively applied to values</TD>
-	 * </TR>
-	 * <TR>
-	 * <TD>Collection</TD>
-	 * <TD>recursively applied to values</TD>
-	 * </TR>
-	 * </TABLE>
-	 * Note: arrays of primitives are also supported. </blockquote>
-	 * 
-	 * A filter matches a key that has multiple values if it matches at least
-	 * one of those values. For example,
-	 * 
-	 * <pre>
-	 * Dictionary d = new Hashtable();
-	 * d.put(&quot;cn&quot;, new String[] {&quot;a&quot;, &quot;b&quot;, &quot;c&quot;});
-	 * </pre>
-	 * 
-	 * d will match <code>(cn=a)</code> and also <code>(cn=b)</code>
-	 * 
-	 * <p>
-	 * A filter component that references a key having an unrecognizable data
-	 * type will evaluate to <code>false</code> .
-	 */
-	private static class FilterImpl implements Filter {
-		/* filter operators */
-		private static final int			EQUAL		= 1;
-		private static final int			APPROX		= 2;
-		private static final int			GREATER		= 3;
-		private static final int			LESS		= 4;
-		private static final int			PRESENT		= 5;
-		private static final int			SUBSTRING	= 6;
-		private static final int			AND			= 7;
-		private static final int			OR			= 8;
-		private static final int			NOT			= 9;
-
-		/** filter operation */
-		private final int					op;
-		/** filter attribute or null if operation AND, OR or NOT */
-		private final String				attr;
-		/** filter operands */
-		private final Object				value;
-
-		/* normalized filter string for Filter object */
-		private transient volatile String	filterString;
-
-		/**
-		 * Constructs a {@link FilterImpl} object. This filter object may be
-		 * used to match a {@link ServiceReference} or a Dictionary.
-		 * 
-		 * <p>
-		 * If the filter cannot be parsed, an {@link InvalidSyntaxException}
-		 * will be thrown with a human readable message where the filter became
-		 * unparsable.
-		 * 
-		 * @param filterString the filter string.
-		 * @exception InvalidSyntaxException If the filter parameter contains an
-		 *            invalid filter string that cannot be parsed.
-		 */
-		static FilterImpl newInstance(String filterString)
-				throws InvalidSyntaxException {
-			return new Parser(filterString).parse();
-		}
-
-		FilterImpl(int operation, String attr, Object value) {
-			this.op = operation;
-			this.attr = attr;
-			this.value = value;
-		}
-
-		/**
-		 * Filter using a service's properties.
-		 * <p>
-		 * This <code>Filter</code> is executed using the keys and values of the
-		 * referenced service's properties. The keys are case insensitively
-		 * matched with this <code>Filter</code>.
-		 * 
-		 * @param reference The reference to the service whose properties are
-		 *        used in the match.
-		 * @return <code>true</code> if the service's properties match this
-		 *         <code>Filter</code>; <code>false</code> otherwise.
-		 */
-		public boolean match(ServiceReference reference) {
-			return match0(new ServiceReferenceDictionary(reference));
-		}
-
-		/**
-		 * Filter using a <code>Dictionary</code>. This <code>Filter</code> is
-		 * executed using the specified <code>Dictionary</code>'s keys and
-		 * values. The keys are case insensitively matched with this
-		 * <code>Filter</code>.
-		 * 
-		 * @param dictionary The <code>Dictionary</code> whose keys are used in
-		 *        the match.
-		 * @return <code>true</code> if the <code>Dictionary</code>'s keys and
-		 *         values match this filter; <code>false</code> otherwise.
-		 * @throws IllegalArgumentException If <code>dictionary</code> contains
-		 *         case variants of the same key name.
-		 */
-		public boolean match(Dictionary dictionary) {
-			return match0(new CaseInsensitiveDictionary(dictionary));
-		}
-
-		/**
-		 * Filter with case sensitivity using a <code>Dictionary</code>. This
-		 * <code>Filter</code> is executed using the specified
-		 * <code>Dictionary</code>'s keys and values. The keys are case
-		 * sensitively matched with this <code>Filter</code>.
-		 * 
-		 * @param dictionary The <code>Dictionary</code> whose keys are used in
-		 *        the match.
-		 * @return <code>true</code> if the <code>Dictionary</code>'s keys and
-		 *         values match this filter; <code>false</code> otherwise.
-		 * @since 1.3
-		 */
-		public boolean matchCase(Dictionary dictionary) {
-			return match0(dictionary);
-		}
-
-		/**
-		 * Returns this <code>Filter</code>'s filter string.
-		 * <p>
-		 * The filter string is normalized by removing whitespace which does not
-		 * affect the meaning of the filter.
-		 * 
-		 * @return This <code>Filter</code>'s filter string.
-		 */
-		public String toString() {
-			String result = filterString;
-			if (result == null) {
-				filterString = result = normalize();
-			}
-			return result;
-		}
-
-		/**
-		 * Returns this <code>Filter</code>'s normalized filter string.
-		 * <p>
-		 * The filter string is normalized by removing whitespace which does not
-		 * affect the meaning of the filter.
-		 * 
-		 * @return This <code>Filter</code>'s filter string.
-		 */
-		private String normalize() {
-			StringBuffer sb = new StringBuffer();
-			sb.append('(');
-
-			switch (op) {
-				case AND : {
-					sb.append('&');
-
-					FilterImpl[] filters = (FilterImpl[]) value;
-					for (int i = 0, size = filters.length; i < size; i++) {
-						sb.append(filters[i].normalize());
-					}
-
-					break;
-				}
-
-				case OR : {
-					sb.append('|');
-
-					FilterImpl[] filters = (FilterImpl[]) value;
-					for (int i = 0, size = filters.length; i < size; i++) {
-						sb.append(filters[i].normalize());
-					}
-
-					break;
-				}
-
-				case NOT : {
-					sb.append('!');
-					FilterImpl filter = (FilterImpl) value;
-					sb.append(filter.normalize());
-
-					break;
-				}
-
-				case SUBSTRING : {
-					sb.append(attr);
-					sb.append('=');
-
-					String[] substrings = (String[]) value;
-
-					for (int i = 0, size = substrings.length; i < size; i++) {
-						String substr = substrings[i];
-
-						if (substr == null) /* * */{
-							sb.append('*');
-						}
-						else /* xxx */{
-							sb.append(encodeValue(substr));
-						}
-					}
-
-					break;
-				}
-				case EQUAL : {
-					sb.append(attr);
-					sb.append('=');
-					sb.append(encodeValue((String) value));
-
-					break;
-				}
-				case GREATER : {
-					sb.append(attr);
-					sb.append(">=");
-					sb.append(encodeValue((String) value));
-
-					break;
-				}
-				case LESS : {
-					sb.append(attr);
-					sb.append("<=");
-					sb.append(encodeValue((String) value));
-
-					break;
-				}
-				case APPROX : {
-					sb.append(attr);
-					sb.append("~=");
-					sb.append(encodeValue(approxString((String) value)));
-
-					break;
-				}
-
-				case PRESENT : {
-					sb.append(attr);
-					sb.append("=*");
-
-					break;
-				}
-			}
-
-			sb.append(')');
-
-			return sb.toString();
-		}
-
-		/**
-		 * Compares this <code>Filter</code> to another <code>Filter</code>.
-		 * 
-		 * <p>
-		 * This implementation returns the result of calling
-		 * <code>this.toString().equals(obj.toString()</code>.
-		 * 
-		 * @param obj The object to compare against this <code>Filter</code>.
-		 * @return If the other object is a <code>Filter</code> object, then
-		 *         returns the result of calling
-		 *         <code>this.toString().equals(obj.toString()</code>;
-		 *         <code>false</code> otherwise.
-		 */
-		public boolean equals(Object obj) {
-			if (obj == this) {
-				return true;
-			}
-
-			if (!(obj instanceof Filter)) {
-				return false;
-			}
-
-			return this.toString().equals(obj.toString());
-		}
-
-		/**
-		 * Returns the hashCode for this <code>Filter</code>.
-		 * 
-		 * <p>
-		 * This implementation returns the result of calling
-		 * <code>this.toString().hashCode()</code>.
-		 * 
-		 * @return The hashCode of this <code>Filter</code>.
-		 */
-		public int hashCode() {
-			return this.toString().hashCode();
-		}
-
-		/**
-		 * Internal match routine. Dictionary parameter must support
-		 * case-insensitive get.
-		 * 
-		 * @param properties A dictionary whose keys are used in the match.
-		 * @return If the Dictionary's keys match the filter, return
-		 *         <code>true</code>. Otherwise, return <code>false</code>.
-		 */
-		private boolean match0(Dictionary properties) {
-			switch (op) {
-				case AND : {
-					FilterImpl[] filters = (FilterImpl[]) value;
-					for (int i = 0, size = filters.length; i < size; i++) {
-						if (!filters[i].match0(properties)) {
-							return false;
-						}
-					}
-
-					return true;
-				}
-
-				case OR : {
-					FilterImpl[] filters = (FilterImpl[]) value;
-					for (int i = 0, size = filters.length; i < size; i++) {
-						if (filters[i].match0(properties)) {
-							return true;
-						}
-					}
-
-					return false;
-				}
-
-				case NOT : {
-					FilterImpl filter = (FilterImpl) value;
-
-					return !filter.match0(properties);
-				}
-
-				case SUBSTRING :
-				case EQUAL :
-				case GREATER :
-				case LESS :
-				case APPROX : {
-					Object prop = (properties == null) ? null : properties
-							.get(attr);
-
-					return compare(op, prop, value);
-				}
-
-				case PRESENT : {
-					Object prop = (properties == null) ? null : properties
-							.get(attr);
-
-					return prop != null;
-				}
-			}
-
-			return false;
-		}
-
-		/**
-		 * Encode the value string such that '(', '*', ')' and '\' are escaped.
-		 * 
-		 * @param value unencoded value string.
-		 * @return encoded value string.
-		 */
-		private static String encodeValue(String value) {
-			boolean encoded = false;
-			int inlen = value.length();
-			int outlen = inlen << 1; /* inlen 2 */
-
-			char[] output = new char[outlen];
-			value.getChars(0, inlen, output, inlen);
-
-			int cursor = 0;
-			for (int i = inlen; i < outlen; i++) {
-				char c = output[i];
-
-				switch (c) {
-					case '(' :
-					case '*' :
-					case ')' :
-					case '\\' : {
-						output[cursor] = '\\';
-						cursor++;
-						encoded = true;
-
-						break;
-					}
-				}
-
-				output[cursor] = c;
-				cursor++;
-			}
-
-			return encoded ? new String(output, 0, cursor) : value;
-		}
-
-		private boolean compare(int operation, Object value1, Object value2) {
-			if (value1 == null) {
-				return false;
-			}
-			if (value1 instanceof String) {
-				return compare_String(operation, (String) value1, value2);
-			}
-
-			Class clazz = value1.getClass();
-			if (clazz.isArray()) {
-				Class type = clazz.getComponentType();
-				if (type.isPrimitive()) {
-					return compare_PrimitiveArray(operation, type, value1,
-							value2);
-				}
-				return compare_ObjectArray(operation, (Object[]) value1, value2);
-			}
-			if (value1 instanceof Collection) {
-				return compare_Collection(operation, (Collection) value1,
-						value2);
-			}
-			if (value1 instanceof Integer) {
-				return compare_Integer(operation,
-						((Integer) value1).intValue(), value2);
-			}
-			if (value1 instanceof Long) {
-				return compare_Long(operation, ((Long) value1).longValue(),
-						value2);
-			}
-			if (value1 instanceof Byte) {
-				return compare_Byte(operation, ((Byte) value1).byteValue(),
-						value2);
-			}
-			if (value1 instanceof Short) {
-				return compare_Short(operation, ((Short) value1).shortValue(),
-						value2);
-			}
-			if (value1 instanceof Character) {
-				return compare_Character(operation, ((Character) value1)
-						.charValue(), value2);
-			}
-			if (value1 instanceof Float) {
-				return compare_Float(operation, ((Float) value1).floatValue(),
-						value2);
-			}
-			if (value1 instanceof Double) {
-				return compare_Double(operation, ((Double) value1)
-						.doubleValue(), value2);
-			}
-			if (value1 instanceof Boolean) {
-				return compare_Boolean(operation, ((Boolean) value1)
-						.booleanValue(), value2);
-			}
-			if (value1 instanceof Comparable) {
-				return compare_Comparable(operation, (Comparable) value1,
-						value2);
-			}
-			return compare_Unknown(operation, value1, value2); // RFC 59
-		}
-
-		private boolean compare_Collection(int operation,
-				Collection collection, Object value2) {
-			for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
-				if (compare(operation, iterator.next(), value2)) {
-					return true;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_ObjectArray(int operation, Object[] array,
-				Object value2) {
-			for (int i = 0, size = array.length; i < size; i++) {
-				if (compare(operation, array[i], value2)) {
-					return true;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_PrimitiveArray(int operation, Class type,
-				Object primarray, Object value2) {
-			if (Integer.TYPE.isAssignableFrom(type)) {
-				int[] array = (int[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Integer(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			if (Long.TYPE.isAssignableFrom(type)) {
-				long[] array = (long[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Long(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			if (Byte.TYPE.isAssignableFrom(type)) {
-				byte[] array = (byte[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Byte(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			if (Short.TYPE.isAssignableFrom(type)) {
-				short[] array = (short[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Short(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			if (Character.TYPE.isAssignableFrom(type)) {
-				char[] array = (char[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Character(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			if (Float.TYPE.isAssignableFrom(type)) {
-				float[] array = (float[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Float(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			if (Double.TYPE.isAssignableFrom(type)) {
-				double[] array = (double[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Double(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			if (Boolean.TYPE.isAssignableFrom(type)) {
-				boolean[] array = (boolean[]) primarray;
-				for (int i = 0, size = array.length; i < size; i++) {
-					if (compare_Boolean(operation, array[i], value2)) {
-						return true;
-					}
-				}
-				return false;
-			}
-			return false;
-		}
-
-		private boolean compare_String(int operation, String string,
-				Object value2) {
-			switch (operation) {
-				case SUBSTRING : {
-					String[] substrings = (String[]) value2;
-					int pos = 0;
-					for (int i = 0, size = substrings.length; i < size; i++) {
-						String substr = substrings[i];
-
-						if (i + 1 < size) /* if this is not that last substr */{
-							if (substr == null) /* * */{
-								String substr2 = substrings[i + 1];
-
-								if (substr2 == null) /* ** */
-									continue; /* ignore first star */
-								/* xxx */
-								int index = string.indexOf(substr2, pos);
-								if (index == -1) {
-									return false;
-								}
-
-								pos = index + substr2.length();
-								if (i + 2 < size) // if there are more
-									// substrings, increment
-									// over the string we just
-									// matched; otherwise need
-									// to do the last substr
-									// check
-									i++;
-							}
-							else /* xxx */{
-								int len = substr.length();
-								if (string.regionMatches(pos, substr, 0, len)) {
-									pos += len;
-								}
-								else {
-									return false;
-								}
-							}
-						}
-						else /* last substr */{
-							if (substr == null) /* * */{
-								return true;
-							}
-							/* xxx */
-							return string.endsWith(substr);
-						}
-					}
-
-					return true;
-				}
-				case EQUAL : {
-					return string.equals(value2);
-				}
-				case APPROX : {
-					string = approxString(string);
-					String string2 = approxString((String) value2);
-
-					return string.equalsIgnoreCase(string2);
-				}
-				case GREATER : {
-					return string.compareTo((String) value2) >= 0;
-				}
-				case LESS : {
-					return string.compareTo((String) value2) <= 0;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Integer(int operation, int intval, Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			int intval2;
-			try {
-				intval2 = Integer.parseInt(((String) value2).trim());
-			}
-			catch (IllegalArgumentException e) {
-				return false;
-			}
-			switch (operation) {
-				case APPROX :
-				case EQUAL : {
-					return intval == intval2;
-				}
-				case GREATER : {
-					return intval >= intval2;
-				}
-				case LESS : {
-					return intval <= intval2;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Long(int operation, long longval, Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			long longval2;
-			try {
-				longval2 = Long.parseLong(((String) value2).trim());
-			}
-			catch (IllegalArgumentException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case APPROX :
-				case EQUAL : {
-					return longval == longval2;
-				}
-				case GREATER : {
-					return longval >= longval2;
-				}
-				case LESS : {
-					return longval <= longval2;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Byte(int operation, byte byteval, Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			byte byteval2;
-			try {
-				byteval2 = Byte.parseByte(((String) value2).trim());
-			}
-			catch (IllegalArgumentException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case APPROX :
-				case EQUAL : {
-					return byteval == byteval2;
-				}
-				case GREATER : {
-					return byteval >= byteval2;
-				}
-				case LESS : {
-					return byteval <= byteval2;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Short(int operation, short shortval,
-				Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			short shortval2;
-			try {
-				shortval2 = Short.parseShort(((String) value2).trim());
-			}
-			catch (IllegalArgumentException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case APPROX :
-				case EQUAL : {
-					return shortval == shortval2;
-				}
-				case GREATER : {
-					return shortval >= shortval2;
-				}
-				case LESS : {
-					return shortval <= shortval2;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Character(int operation, char charval,
-				Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			char charval2;
-			try {
-				charval2 = ((String) value2).charAt(0);
-			}
-			catch (IndexOutOfBoundsException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case EQUAL : {
-					return charval == charval2;
-				}
-				case APPROX : {
-					return (charval == charval2)
-							|| (Character.toUpperCase(charval) == Character
-									.toUpperCase(charval2))
-							|| (Character.toLowerCase(charval) == Character
-									.toLowerCase(charval2));
-				}
-				case GREATER : {
-					return charval >= charval2;
-				}
-				case LESS : {
-					return charval <= charval2;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Boolean(int operation, boolean boolval,
-				Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			boolean boolval2 = Boolean.valueOf(((String) value2).trim())
-					.booleanValue();
-			switch (operation) {
-				case APPROX :
-				case EQUAL :
-				case GREATER :
-				case LESS : {
-					return boolval == boolval2;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Float(int operation, float floatval,
-				Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			float floatval2;
-			try {
-				floatval2 = Float.parseFloat(((String) value2).trim());
-			}
-			catch (IllegalArgumentException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case APPROX :
-				case EQUAL : {
-					return Float.compare(floatval, floatval2) == 0;
-				}
-				case GREATER : {
-					return Float.compare(floatval, floatval2) >= 0;
-				}
-				case LESS : {
-					return Float.compare(floatval, floatval2) <= 0;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Double(int operation, double doubleval,
-				Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			double doubleval2;
-			try {
-				doubleval2 = Double.parseDouble(((String) value2).trim());
-			}
-			catch (IllegalArgumentException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case APPROX :
-				case EQUAL : {
-					return Double.compare(doubleval, doubleval2) == 0;
-				}
-				case GREATER : {
-					return Double.compare(doubleval, doubleval2) >= 0;
-				}
-				case LESS : {
-					return Double.compare(doubleval, doubleval2) <= 0;
-				}
-			}
-			return false;
-		}
-
-		private static final Class[]	constructorType	= new Class[] {String.class};
-
-		private boolean compare_Comparable(int operation, Comparable value1,
-				Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			Constructor constructor;
-			try {
-				constructor = value1.getClass().getConstructor(constructorType);
-			}
-			catch (NoSuchMethodException e) {
-				return false;
-			}
-			try {
-				if (!constructor.isAccessible())
-					AccessController.doPrivileged(new SetAccessibleAction(
-							constructor));
-				value2 = constructor
-						.newInstance(new Object[] {((String) value2).trim()});
-			}
-			catch (IllegalAccessException e) {
-				return false;
-			}
-			catch (InvocationTargetException e) {
-				return false;
-			}
-			catch (InstantiationException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case APPROX :
-				case EQUAL : {
-					return value1.compareTo(value2) == 0;
-				}
-				case GREATER : {
-					return value1.compareTo(value2) >= 0;
-				}
-				case LESS : {
-					return value1.compareTo(value2) <= 0;
-				}
-			}
-			return false;
-		}
-
-		private boolean compare_Unknown(int operation, Object value1,
-				Object value2) {
-			if (operation == SUBSTRING) {
-				return false;
-			}
-			Constructor constructor;
-			try {
-				constructor = value1.getClass().getConstructor(constructorType);
-			}
-			catch (NoSuchMethodException e) {
-				return false;
-			}
-			try {
-				if (!constructor.isAccessible())
-					AccessController.doPrivileged(new SetAccessibleAction(
-							constructor));
-				value2 = constructor
-						.newInstance(new Object[] {((String) value2).trim()});
-			}
-			catch (IllegalAccessException e) {
-				return false;
-			}
-			catch (InvocationTargetException e) {
-				return false;
-			}
-			catch (InstantiationException e) {
-				return false;
-			}
-
-			switch (operation) {
-				case APPROX :
-				case EQUAL :
-				case GREATER :
-				case LESS : {
-					return value1.equals(value2);
-				}
-			}
-			return false;
-		}
-
-		/**
-		 * Map a string for an APPROX (~=) comparison.
-		 * 
-		 * This implementation removes white spaces. This is the minimum
-		 * implementation allowed by the OSGi spec.
-		 * 
-		 * @param input Input string.
-		 * @return String ready for APPROX comparison.
-		 */
-		private static String approxString(String input) {
-			boolean changed = false;
-			char[] output = input.toCharArray();
-			int cursor = 0;
-			for (int i = 0, length = output.length; i < length; i++) {
-				char c = output[i];
-
-				if (Character.isWhitespace(c)) {
-					changed = true;
-					continue;
-				}
-
-				output[cursor] = c;
-				cursor++;
-			}
-
-			return changed ? new String(output, 0, cursor) : input;
-		}
-
-		/**
-		 * Parser class for OSGi filter strings. This class parses the complete
-		 * filter string and builds a tree of Filter objects rooted at the
-		 * parent.
-		 */
-		private static class Parser {
-			private final String	filterstring;
-			private final char[]	filterChars;
-			private int				pos;
-
-			Parser(String filterstring) {
-				this.filterstring = filterstring;
-				filterChars = filterstring.toCharArray();
-				pos = 0;
-			}
-
-			FilterImpl parse() throws InvalidSyntaxException {
-				FilterImpl filter;
-				try {
-					filter = parse_filter();
-				}
-				catch (ArrayIndexOutOfBoundsException e) {
-					throw new InvalidSyntaxException("Filter ended abruptly",
-							filterstring);
-				}
-
-				if (pos != filterChars.length) {
-					throw new InvalidSyntaxException(
-							"Extraneous trailing characters: "
-									+ filterstring.substring(pos), filterstring);
-				}
-				return filter;
-			}
-
-			private FilterImpl parse_filter() throws InvalidSyntaxException {
-				FilterImpl filter;
-				skipWhiteSpace();
-
-				if (filterChars[pos] != '(') {
-					throw new InvalidSyntaxException("Missing '(': "
-							+ filterstring.substring(pos), filterstring);
-				}
-
-				pos++;
-
-				filter = parse_filtercomp();
-
-				skipWhiteSpace();
-
-				if (filterChars[pos] != ')') {
-					throw new InvalidSyntaxException("Missing ')': "
-							+ filterstring.substring(pos), filterstring);
-				}
-
-				pos++;
-
-				skipWhiteSpace();
-
-				return filter;
-			}
-
-			private FilterImpl parse_filtercomp() throws InvalidSyntaxException {
-				skipWhiteSpace();
-
-				char c = filterChars[pos];
-
-				switch (c) {
-					case '&' : {
-						pos++;
-						return parse_and();
-					}
-					case '|' : {
-						pos++;
-						return parse_or();
-					}
-					case '!' : {
-						pos++;
-						return parse_not();
-					}
-				}
-				return parse_item();
-			}
-
-			private FilterImpl parse_and() throws InvalidSyntaxException {
-				int lookahead = pos;
-				skipWhiteSpace();
-
-				if (filterChars[pos] != '(') {
-					pos = lookahead - 1;
-					return parse_item();
-				}
-
-				List operands = new ArrayList(10);
-
-				while (filterChars[pos] == '(') {
-					FilterImpl child = parse_filter();
-					operands.add(child);
-				}
-
-				return new FilterImpl(FilterImpl.AND, null, operands
-						.toArray(new FilterImpl[operands.size()]));
-			}
-
-			private FilterImpl parse_or() throws InvalidSyntaxException {
-				int lookahead = pos;
-				skipWhiteSpace();
-
-				if (filterChars[pos] != '(') {
-					pos = lookahead - 1;
-					return parse_item();
-				}
-
-				List operands = new ArrayList(10);
-
-				while (filterChars[pos] == '(') {
-					FilterImpl child = parse_filter();
-					operands.add(child);
-				}
-
-				return new FilterImpl(FilterImpl.OR, null, operands
-						.toArray(new FilterImpl[operands.size()]));
-			}
-
-			private FilterImpl parse_not() throws InvalidSyntaxException {
-				int lookahead = pos;
-				skipWhiteSpace();
-
-				if (filterChars[pos] != '(') {
-					pos = lookahead - 1;
-					return parse_item();
-				}
-
-				FilterImpl child = parse_filter();
-
-				return new FilterImpl(FilterImpl.NOT, null, child);
-			}
-
-			private FilterImpl parse_item() throws InvalidSyntaxException {
-				String attr = parse_attr();
-
-				skipWhiteSpace();
-
-				switch (filterChars[pos]) {
-					case '~' : {
-						if (filterChars[pos + 1] == '=') {
-							pos += 2;
-							return new FilterImpl(FilterImpl.APPROX, attr,
-									parse_value());
-						}
-						break;
-					}
-					case '>' : {
-						if (filterChars[pos + 1] == '=') {
-							pos += 2;
-							return new FilterImpl(FilterImpl.GREATER, attr,
-									parse_value());
-						}
-						break;
-					}
-					case '<' : {
-						if (filterChars[pos + 1] == '=') {
-							pos += 2;
-							return new FilterImpl(FilterImpl.LESS, attr,
-									parse_value());
-						}
-						break;
-					}
-					case '=' : {
-						if (filterChars[pos + 1] == '*') {
-							int oldpos = pos;
-							pos += 2;
-							skipWhiteSpace();
-							if (filterChars[pos] == ')') {
-								return new FilterImpl(FilterImpl.PRESENT, attr,
-										null);
-							}
-							pos = oldpos;
-						}
-
-						pos++;
-						Object string = parse_substring();
-
-						if (string instanceof String) {
-							return new FilterImpl(FilterImpl.EQUAL, attr,
-									string);
-						}
-						return new FilterImpl(FilterImpl.SUBSTRING, attr,
-								string);
-					}
-				}
-
-				throw new InvalidSyntaxException("Invalid operator: "
-						+ filterstring.substring(pos), filterstring);
-			}
-
-			private String parse_attr() throws InvalidSyntaxException {
-				skipWhiteSpace();
-
-				int begin = pos;
-				int end = pos;
-
-				char c = filterChars[pos];
-
-				while (c != '~' && c != '<' && c != '>' && c != '=' && c != '('
-						&& c != ')') {
-					pos++;
-
-					if (!Character.isWhitespace(c)) {
-						end = pos;
-					}
-
-					c = filterChars[pos];
-				}
-
-				int length = end - begin;
-
-				if (length == 0) {
-					throw new InvalidSyntaxException("Missing attr: "
-							+ filterstring.substring(pos), filterstring);
-				}
-
-				return new String(filterChars, begin, length);
-			}
-
-			private String parse_value() throws InvalidSyntaxException {
-				StringBuffer sb = new StringBuffer(filterChars.length - pos);
-
-				parseloop: while (true) {
-					char c = filterChars[pos];
-
-					switch (c) {
-						case ')' : {
-							break parseloop;
-						}
-
-						case '(' : {
-							throw new InvalidSyntaxException("Invalid value: "
-									+ filterstring.substring(pos), filterstring);
-						}
-
-						case '\\' : {
-							pos++;
-							c = filterChars[pos];
-							/* fall through into default */
-						}
-
-						default : {
-							sb.append(c);
-							pos++;
-							break;
-						}
-					}
-				}
-
-				if (sb.length() == 0) {
-					throw new InvalidSyntaxException("Missing value: "
-							+ filterstring.substring(pos), filterstring);
-				}
-
-				return sb.toString();
-			}
-
-			private Object parse_substring() throws InvalidSyntaxException {
-				StringBuffer sb = new StringBuffer(filterChars.length - pos);
-
-				List operands = new ArrayList(10);
-
-				parseloop: while (true) {
-					char c = filterChars[pos];
-
-					switch (c) {
-						case ')' : {
-							if (sb.length() > 0) {
-								operands.add(sb.toString());
-							}
-
-							break parseloop;
-						}
-
-						case '(' : {
-							throw new InvalidSyntaxException("Invalid value: "
-									+ filterstring.substring(pos), filterstring);
-						}
-
-						case '*' : {
-							if (sb.length() > 0) {
-								operands.add(sb.toString());
-							}
-
-							sb.setLength(0);
-
-							operands.add(null);
-							pos++;
-
-							break;
-						}
-
-						case '\\' : {
-							pos++;
-							c = filterChars[pos];
-							/* fall through into default */
-						}
-
-						default : {
-							sb.append(c);
-							pos++;
-							break;
-						}
-					}
-				}
-
-				int size = operands.size();
-
-				if (size == 0) {
-					return "";
-				}
-
-				if (size == 1) {
-					Object single = operands.get(0);
-
-					if (single != null) {
-						return single;
-					}
-				}
-
-				return operands.toArray(new String[size]);
-			}
-
-			private void skipWhiteSpace() {
-				for (int length = filterChars.length; (pos < length)
-						&& Character.isWhitespace(filterChars[pos]);) {
-					pos++;
-				}
-			}
-		}
-	}
-
-	/**
-	 * This Dictionary is used for case-insensitive key lookup during filter
-	 * evaluation. This Dictionary implementation only supports the get
-	 * operation using a String key as no other operations are used by the
-	 * Filter implementation.
-	 */
-	private static class CaseInsensitiveDictionary extends Dictionary {
-		private final Dictionary	dictionary;
-		private final String[]		keys;
-
-		/**
-		 * Create a case insensitive dictionary from the specified dictionary.
-		 * 
-		 * @param dictionary
-		 * @throws IllegalArgumentException If <code>dictionary</code> contains
-		 *         case variants of the same key name.
-		 */
-		CaseInsensitiveDictionary(Dictionary dictionary) {
-			if (dictionary == null) {
-				this.dictionary = null;
-				this.keys = new String[0];
-				return;
-			}
-			this.dictionary = dictionary;
-			List keyList = new ArrayList(dictionary.size());
-			for (Enumeration e = dictionary.keys(); e.hasMoreElements();) {
-				Object k = e.nextElement();
-				if (k instanceof String) {
-					String key = (String) k;
-					for (Iterator i = keyList.iterator(); i.hasNext();) {
-						if (key.equalsIgnoreCase((String) i.next())) {
-							throw new IllegalArgumentException();
-						}
-					}
-					keyList.add(key);
-				}
-			}
-			this.keys = (String[]) keyList.toArray(new String[keyList.size()]);
-		}
-
-		public Object get(Object o) {
-			String k = (String) o;
-			for (int i = 0, length = keys.length; i < length; i++) {
-				String key = keys[i];
-				if (key.equalsIgnoreCase(k)) {
-					return dictionary.get(key);
-				}
-			}
-			return null;
-		}
-
-		public boolean isEmpty() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Enumeration keys() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Enumeration elements() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Object put(Object key, Object value) {
-			throw new UnsupportedOperationException();
-		}
-
-		public Object remove(Object key) {
-			throw new UnsupportedOperationException();
-		}
-
-		public int size() {
-			throw new UnsupportedOperationException();
-		}
-	}
-
-	/**
-	 * This Dictionary is used for key lookup from a ServiceReference during
-	 * filter evaluation. This Dictionary implementation only supports the get
-	 * operation using a String key as no other operations are used by the
-	 * Filter implementation.
-	 */
-	private static class ServiceReferenceDictionary extends Dictionary {
-		private final ServiceReference	reference;
-
-		ServiceReferenceDictionary(ServiceReference reference) {
-			this.reference = reference;
-		}
-
-		public Object get(Object key) {
-			if (reference == null) {
-				return null;
-			}
-			return reference.getProperty((String) key);
-		}
-
-		public boolean isEmpty() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Enumeration keys() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Enumeration elements() {
-			throw new UnsupportedOperationException();
-		}
-
-		public Object put(Object key, Object value) {
-			throw new UnsupportedOperationException();
-		}
-
-		public Object remove(Object key) {
-			throw new UnsupportedOperationException();
-		}
-
-		public int size() {
-			throw new UnsupportedOperationException();
-		}
-	}
-
-	private static class SetAccessibleAction implements PrivilegedAction {
-		private final AccessibleObject	accessible;
-
-		SetAccessibleAction(AccessibleObject accessible) {
-			this.accessible = accessible;
-		}
-
-		public Object run() {
-			accessible.setAccessible(true);
-			return null;
-		}
-	}
-
-	/**
-	 * This class contains a method to match a distinguished name (DN) chain
-	 * against and DN chain pattern.
-	 * <p>
-	 * The format of DNs are given in RFC 2253. We represent a signature chain
-	 * for an X.509 certificate as a semicolon separated list of DNs. This is
-	 * what we refer to as the DN chain. Each DN is made up of relative
-	 * distinguished names (RDN) which in turn are made up of key value pairs.
-	 * For example:
-	 * 
-	 * <pre>
-	 *   cn=ben+ou=research,o=ACME,c=us;ou=Super CA,c=CA
-	 * </pre>
-	 * 
-	 * is made up of two DNs: "<code>cn=ben+ou=research,o=ACME,c=us</code>
-	 * " and " <code>ou=Super CA,c=CA</code>
-	 * ". The first DN is made of of three RDNs: "
-	 * <code>cn=ben+ou=research</code>" and "<code>o=ACME</code>" and "
-	 * <code>c=us</code>". The first RDN has two name value pairs: "
-	 * <code>cn=ben</code>" and "<code>ou=research</code>".
-	 * <p>
-	 * A chain pattern makes use of wildcards ('*' or '-') to match against DNs,
-	 * and wildcards ('*') to match againts DN prefixes, and value. If a DN in a
-	 * match pattern chain is made up of a wildcard ("*"), that wildcard will
-	 * match zero or one DNs in the chain. If a DN in a match pattern chain is
-	 * made up of a wildcard ("-"), that wildcard will match zero or more DNs in
-	 * the chain. If the first RDN of a DN is the wildcard ("*"), that DN will
-	 * match any other DN with the same suffix (the DN with the wildcard RDN
-	 * removed). If a value of a name/value pair is a wildcard ("*"), the value
-	 * will match any value for that name.
-	 */
-	private static class DNChainMatching {
-		private static final String	MINUS_WILDCARD	= "-";
-		private static final String	STAR_WILDCARD	= "*";
-
-		/**
-		 * Check the name/value pairs of the rdn against the pattern.
-		 * 
-		 * @param rdn List of name value pairs for a given RDN.
-		 * @param rdnPattern List of name value pattern pairs.
-		 * @return true if the list of name value pairs match the pattern.
-		 */
-		private static boolean rdnmatch(List rdn, List rdnPattern) {
-			if (rdn.size() != rdnPattern.size()) {
-				return false;
-			}
-			for (int i = 0; i < rdn.size(); i++) {
-				String rdnNameValue = (String) rdn.get(i);
-				String patNameValue = (String) rdnPattern.get(i);
-				int rdnNameEnd = rdnNameValue.indexOf('=');
-				int patNameEnd = patNameValue.indexOf('=');
-				if (rdnNameEnd != patNameEnd
-						|| !rdnNameValue.regionMatches(0, patNameValue, 0,
-								rdnNameEnd)) {
-					return false;
-				}
-				String patValue = patNameValue.substring(patNameEnd);
-				String rdnValue = rdnNameValue.substring(rdnNameEnd);
-				if (!rdnValue.equals(patValue) && !patValue.equals("=*")
-						&& !patValue.equals("=#16012a")) {
-					return false;
-				}
-			}
-			return true;
-		}
-
-		private static boolean dnmatch(List dn, List dnPattern) {
-			int dnStart = 0;
-			int patStart = 0;
-			int patLen = dnPattern.size();
-			if (patLen == 0) {
-				return false;
-			}
-			if (dnPattern.get(0).equals(STAR_WILDCARD)) {
-				patStart = 1;
-				patLen--;
-			}
-			if (dn.size() < patLen) {
-				return false;
-			}
-			else {
-				if (dn.size() > patLen) {
-					if (!dnPattern.get(0).equals(STAR_WILDCARD)) {
-						// If the number of rdns do not match we must have a
-						// prefix map
-						return false;
-					}
-					// The rdnPattern and rdn must have the same number of
-					// elements
-					dnStart = dn.size() - patLen;
-				}
-			}
-			for (int i = 0; i < patLen; i++) {
-				if (!rdnmatch((List) dn.get(i + dnStart), (List) dnPattern
-						.get(i + patStart))) {
-					return false;
-				}
-			}
-			return true;
-		}
-
-		/**
-		 * Parses a distinguished name chain pattern and returns a List where
-		 * each element represents a distinguished name (DN) in the chain of
-		 * DNs. Each element will be either a String, if the element represents
-		 * a wildcard ("*" or "-"), or a List representing an RDN. Each element
-		 * in the RDN List will be a String, if the element represents a
-		 * wildcard ("*"), or a List of Strings, each String representing a
-		 * name/value pair in the RDN.
-		 * 
-		 * @param dnChain
-		 * @return a list of DNs.
-		 * @throws IllegalArgumentException
-		 */
-		private static List parseDNchainPattern(String dnChain) {
-			if (dnChain == null) {
-				throw new IllegalArgumentException(
-						"The DN chain must not be null.");
-			}
-			List parsed = new ArrayList();
-			int startIndex = 0;
-			startIndex = skipSpaces(dnChain, startIndex);
-			while (startIndex < dnChain.length()) {
-				int endIndex = startIndex;
-				boolean inQuote = false;
-				out: while (endIndex < dnChain.length()) {
-					char c = dnChain.charAt(endIndex);
-					switch (c) {
-						case '"' :
-							inQuote = !inQuote;
-							break;
-						case '\\' :
-							endIndex++; // skip the escaped char
-							break;
-						case ';' :
-							if (!inQuote)
-								break out;
-					}
-					endIndex++;
-				}
-				if (endIndex > dnChain.length()) {
-					throw new IllegalArgumentException("unterminated escape");
-				}
-				parsed.add(dnChain.substring(startIndex, endIndex));
-				startIndex = endIndex + 1;
-				startIndex = skipSpaces(dnChain, startIndex);
-			}
-			return parseDNchain(parsed);
-		}
-
-		private static List parseDNchain(List chain) {
-			if (chain == null) {
-				throw new IllegalArgumentException("DN chain must not be null.");
-			}
-			chain = new ArrayList(chain);
-			// Now we parse is a list of strings, lets make List of rdn out
-			// of them
-			for (int i = 0; i < chain.size(); i++) {
-				String dn = (String) chain.get(i);
-				if (dn.equals(STAR_WILDCARD) || dn.equals(MINUS_WILDCARD)) {
-					continue;
-				}
-				List rdns = new ArrayList();
-				if (dn.charAt(0) == '*') {
-					if (dn.charAt(1) != ',') {
-						throw new IllegalArgumentException(
-								"invalid wildcard prefix");
-					}
-					rdns.add(STAR_WILDCARD);
-					dn = new X500Principal(dn.substring(2))
-							.getName(X500Principal.CANONICAL);
-				}
-				else {
-					dn = new X500Principal(dn).getName(X500Principal.CANONICAL);
-				}
-				// Now dn is a nice CANONICAL DN
-				parseDN(dn, rdns);
-				chain.set(i, rdns);
-			}
-			if (chain.size() == 0) {
-				throw new IllegalArgumentException("empty DN chain");
-			}
-			return chain;
-		}
-
-		/**
-		 * Increment startIndex until the end of dnChain is hit or until it is
-		 * the index of a non-space character.
-		 */
-		private static int skipSpaces(String dnChain, int startIndex) {
-			while (startIndex < dnChain.length()
-					&& dnChain.charAt(startIndex) == ' ') {
-				startIndex++;
-			}
-			return startIndex;
-		}
-
-		/**
-		 * Takes a distinguished name in canonical form and fills in the
-		 * rdnArray with the extracted RDNs.
-		 * 
-		 * @param dn the distinguished name in canonical form.
-		 * @param rdn the list to fill in with RDNs extracted from the dn
-		 * @throws IllegalArgumentException if a formatting error is found.
-		 */
-		private static void parseDN(String dn, List rdn) {
-			int startIndex = 0;
-			char c = '\0';
-			List nameValues = new ArrayList();
-			while (startIndex < dn.length()) {
-				int endIndex;
-				for (endIndex = startIndex; endIndex < dn.length(); endIndex++) {
-					c = dn.charAt(endIndex);
-					if (c == ',' || c == '+') {
-						break;
-					}
-					if (c == '\\') {
-						endIndex++; // skip the escaped char
-					}
-				}
-				if (endIndex > dn.length()) {
-					throw new IllegalArgumentException("unterminated escape "
-							+ dn);
-				}
-				nameValues.add(dn.substring(startIndex, endIndex));
-				if (c != '+') {
-					rdn.add(nameValues);
-					if (endIndex != dn.length()) {
-						nameValues = new ArrayList();
-					}
-					else {
-						nameValues = null;
-					}
-				}
-				startIndex = endIndex + 1;
-			}
-			if (nameValues != null) {
-				throw new IllegalArgumentException("improperly terminated DN "
-						+ dn);
-			}
-		}
-
-		/**
-		 * This method will return an 'index' which points to a non-wildcard DN
-		 * or the end-of-list.
-		 */
-		private static int skipWildCards(List dnChainPattern,
-				int dnChainPatternIndex) {
-			int i;
-			for (i = dnChainPatternIndex; i < dnChainPattern.size(); i++) {
-				Object dnPattern = dnChainPattern.get(i);
-				if (dnPattern instanceof String) {
-					if (!dnPattern.equals(STAR_WILDCARD)
-							&& !dnPattern.equals(MINUS_WILDCARD)) {
-						throw new IllegalArgumentException(
-								"expected wildcard in DN pattern");
-					}
-					// otherwise continue skipping over wild cards
-				}
-				else {
-					if (dnPattern instanceof List) {
-						// if its a list then we have our 'non-wildcard' DN
-						break;
-					}
-					else {
-						// unknown member of the DNChainPattern
-						throw new IllegalArgumentException(
-								"expected String or List in DN Pattern");
-					}
-				}
-			}
-			// i either points to end-of-list, or to the first
-			// non-wildcard pattern after dnChainPatternIndex
-			return i;
-		}
-
-		/**
-		 * recursively attempt to match the DNChain, and the DNChainPattern
-		 * where DNChain is of the format: "DN;DN;DN;" and DNChainPattern is of
-		 * the format: "DNPattern;*;DNPattern" (or combinations of this)
-		 */
-		private static boolean dnChainMatch(List dnChain, int dnChainIndex,
-				List dnChainPattern, int dnChainPatternIndex)
-				throws IllegalArgumentException {
-			if (dnChainIndex >= dnChain.size()) {
-				return false;
-			}
-			if (dnChainPatternIndex >= dnChainPattern.size()) {
-				return false;
-			}
-			// check to see what the pattern starts with
-			Object dnPattern = dnChainPattern.get(dnChainPatternIndex);
-			if (dnPattern instanceof String) {
-				if (!dnPattern.equals(STAR_WILDCARD)
-						&& !dnPattern.equals(MINUS_WILDCARD)) {
-					throw new IllegalArgumentException(
-							"expected wildcard in DN pattern");
-				}
-				// here we are processing a wild card as the first DN
-				// skip all wildcard DN's
-				if (dnPattern.equals(MINUS_WILDCARD)) {
-					dnChainPatternIndex = skipWildCards(dnChainPattern,
-							dnChainPatternIndex);
-				}
-				else {
-					dnChainPatternIndex++; // only skip the '*' wildcard
-				}
-				if (dnChainPatternIndex >= dnChainPattern.size()) {
-					// return true iff the wild card is '-' or if we are at the
-					// end of the chain
-					return dnPattern.equals(MINUS_WILDCARD) ? true : dnChain
-							.size() - 1 == dnChainIndex;
-				}
-				//
-				// we will now recursively call to see if the rest of the
-				// DNChainPattern matches increasingly smaller portions of the
-				// rest of the DNChain
-				//
-				if (dnPattern.equals(STAR_WILDCARD)) {
-					// '*' option: only wildcard on 0 or 1
-					return dnChainMatch(dnChain, dnChainIndex, dnChainPattern,
-							dnChainPatternIndex)
-							|| dnChainMatch(dnChain, dnChainIndex + 1,
-									dnChainPattern, dnChainPatternIndex);
-				}
-				for (int i = dnChainIndex; i < dnChain.size(); i++) {
-					// '-' option: wildcard 0 or more
-					if (dnChainMatch(dnChain, i, dnChainPattern,
-							dnChainPatternIndex)) {
-						return true;
-					}
-				}
-				// if we are here, then we didn't find a match.. fall through to
-				// failure
-			}
-			else {
-				if (dnPattern instanceof List) {
-					// here we have to do a deeper check for each DN in the
-					// pattern until we hit a wild card
-					do {
-						if (!dnmatch((List) dnChain.get(dnChainIndex),
-								(List) dnPattern)) {
-							return false;
-						}
-						// go to the next set of DN's in both chains
-						dnChainIndex++;
-						dnChainPatternIndex++;
-						// if we finished the pattern then it all matched
-						if ((dnChainIndex >= dnChain.size())
-								&& (dnChainPatternIndex >= dnChainPattern
-										.size())) {
-							return true;
-						}
-						// if the DN Chain is finished, but the pattern isn't
-						// finished then if the rest of the pattern is not
-						// wildcard then we are done
-						if (dnChainIndex >= dnChain.size()) {
-							dnChainPatternIndex = skipWildCards(dnChainPattern,
-									dnChainPatternIndex);
-							// return TRUE iff the pattern index moved past the
-							// list-size (implying that the rest of the pattern
-							// is all wildcards)
-							return dnChainPatternIndex >= dnChainPattern.size();
-						}
-						// if the pattern finished, but the chain continues then
-						// we have a mis-match
-						if (dnChainPatternIndex >= dnChainPattern.size()) {
-							return false;
-						}
-						// get the next DN Pattern
-						dnPattern = dnChainPattern.get(dnChainPatternIndex);
-						if (dnPattern instanceof String) {
-							if (!dnPattern.equals(STAR_WILDCARD)
-									&& !dnPattern.equals(MINUS_WILDCARD)) {
-								throw new IllegalArgumentException(
-										"expected wildcard in DN pattern");
-							}
-							// if the next DN is a 'wildcard', then we will
-							// recurse
-							return dnChainMatch(dnChain, dnChainIndex,
-									dnChainPattern, dnChainPatternIndex);
-						}
-						else {
-							if (!(dnPattern instanceof List)) {
-								throw new IllegalArgumentException(
-										"expected String or List in DN Pattern");
-							}
-						}
-						// if we are here, then we will just continue to the
-						// match the next set of DN's from the DNChain, and the
-						// DNChainPattern since both are lists
-					} while (true);
-					// should never reach here?
-				}
-				else {
-					throw new IllegalArgumentException(
-							"expected String or List in DN Pattern");
-				}
-			}
-			// if we get here, the the default return is 'mis-match'
-			return false;
-		}
-
-		/**
-		 * Matches a distinguished name chain against a pattern of a
-		 * distinguished name chain.
-		 * 
-		 * @param dnChain
-		 * @param pattern the pattern of distinguished name (DN) chains to match
-		 *        against the dnChain. Wildcards ("*" or "-") can be used in
-		 *        three cases:
-		 *        <ol>
-		 *        <li>As a DN. In this case, the DN will consist of just the "*"
-		 *        or "-". When "*" is used it will match zero or one DNs. When
-		 *        "-" is used it will match zero or more DNs. For example,
-		 *        "cn=me,c=US;*;cn=you" will match
-		 *        "cn=me,c=US";cn=you" and "cn=me,c=US;cn=her;cn=you". The
-		 *        pattern "cn=me,c=US;-;cn=you" will match "cn=me,c=US";cn=you"
-		 *        and "cn=me,c=US;cn=her;cn=him;cn=you".
-		 *        <li>As a DN prefix. In this case, the DN must start with "*,".
-		 *        The wild card will match zero or more RDNs at the start of a
-		 *        DN. For example, "*,cn=me,c=US;cn=you" will match
-		 *        "cn=me,c=US";cn=you" and
-		 *        "ou=my org unit,o=my org,cn=me,c=US;cn=you"</li>
-		 *        <li>As a value. In this case the value of a name value pair in
-		 *        an RDN will be a "*". The wildcard will match any value for
-		 *        the given name. For example, "cn=*,c=US;cn=you" will match
-		 *        "cn=me,c=US";cn=you" and "cn=her,c=US;cn=you", but it will not
-		 *        match "ou=my org unit,c=US;cn=you". If the wildcard does not
-		 *        occur by itself in the value, it will not be used as a
-		 *        wildcard. In other words, "cn=m*,c=US;cn=you" represents the
-		 *        common name of "m*" not any common name starting with "m".</li>
-		 *        </ol>
-		 * @return true if dnChain matches the pattern.
-		 * @throws IllegalArgumentException
-		 */
-		static boolean match(String pattern, List/* <String> */dnChain) {
-			List parsedDNChain;
-			List parsedDNPattern;
-			try {
-				parsedDNChain = parseDNchain(dnChain);
-			}
-			catch (RuntimeException e) {
-				IllegalArgumentException iae = new IllegalArgumentException(
-						"Invalid DN chain: " + toString(dnChain));
-				iae.initCause(e);
-				throw iae;
-			}
-			try {
-				parsedDNPattern = parseDNchainPattern(pattern);
-			}
-			catch (RuntimeException e) {
-				IllegalArgumentException iae = new IllegalArgumentException(
-						"Invalid match pattern: " + pattern);
-				iae.initCause(e);
-				throw iae;
-			}
-			return dnChainMatch(parsedDNChain, 0, parsedDNPattern, 0);
-		}
-
-		private static String toString(List dnChain) {
-			if (dnChain == null) {
-				return null;
-			}
-			StringBuffer sb = new StringBuffer();
-			for (Iterator iChain = dnChain.iterator(); iChain.hasNext();) {
-				sb.append(iChain.next());
-				if (iChain.hasNext()) {
-					sb.append("; ");
-				}
-			}
-			return sb.toString();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/InvalidSyntaxException.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/InvalidSyntaxException.java
deleted file mode 100644
index f67fd43..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/InvalidSyntaxException.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * A Framework exception used to indicate that a filter string has an invalid
- * syntax.
- * 
- * <p>
- * An <code>InvalidSyntaxException</code> object indicates that a filter
- * string parameter has an invalid syntax and cannot be parsed. See
- * {@link Filter} for a description of the filter string syntax.
- * 
- * <p>
- * This exception conforms to the general purpose exception chaining mechanism.
- * 
- * @version $Revision: 6083 $
- */
-
-public class InvalidSyntaxException extends Exception {
-	static final long		serialVersionUID	= -4295194420816491875L;
-	/**
-	 * The invalid filter string.
-	 */
-	private final String	filter;
-
-	/**
-	 * Creates an exception of type <code>InvalidSyntaxException</code>.
-	 * 
-	 * <p>
-	 * This method creates an <code>InvalidSyntaxException</code> object with
-	 * the specified message and the filter string which generated the
-	 * exception.
-	 * 
-	 * @param msg The message.
-	 * @param filter The invalid filter string.
-	 */
-	public InvalidSyntaxException(String msg, String filter) {
-		super(msg);
-		this.filter = filter;
-	}
-
-	/**
-	 * Creates an exception of type <code>InvalidSyntaxException</code>.
-	 * 
-	 * <p>
-	 * This method creates an <code>InvalidSyntaxException</code> object with
-	 * the specified message and the filter string which generated the
-	 * exception.
-	 * 
-	 * @param msg The message.
-	 * @param filter The invalid filter string.
-	 * @param cause The cause of this exception.
-	 * @since 1.3
-	 */
-	public InvalidSyntaxException(String msg, String filter, Throwable cause) {
-		super(msg, cause);
-		this.filter = filter;
-	}
-
-	/**
-	 * Returns the filter string that generated the
-	 * <code>InvalidSyntaxException</code> object.
-	 * 
-	 * @return The invalid filter string.
-	 * @see BundleContext#getServiceReferences
-	 * @see BundleContext#addServiceListener(ServiceListener,String)
-	 */
-	public String getFilter() {
-		return filter;
-	}
-
-	/**
-	 * Returns the cause of this exception or <code>null</code> if no cause was
-	 * set.
-	 * 
-	 * @return The cause of this exception or <code>null</code> if no cause was
-	 *         set.
-	 * @since 1.3
-	 */
-	public Throwable getCause() {
-		return super.getCause();
-	}
-
-	/**
-	 * Initializes the cause of this exception to the specified value.
-	 * 
-	 * @param cause The cause of this exception.
-	 * @return This exception.
-	 * @throws IllegalArgumentException If the specified cause is this
-	 *         exception.
-	 * @throws IllegalStateException If the cause of this exception has already
-	 *         been set.
-	 * @since 1.3
-	 */
-	public Throwable initCause(Throwable cause) {
-		return super.initCause(cause);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
deleted file mode 100644
index da2f540..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
+++ /dev/null
@@ -1,811 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamField;
-import java.security.AccessController;
-import java.security.BasicPermission;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A bundle's authority to import or export a package.
- * 
- * <p>
- * A package is a dot-separated string that defines a fully qualified Java
- * package.
- * <p>
- * For example:
- * 
- * <pre>
- * org.osgi.service.http
- * </pre>
- * 
- * <p>
- * <code>PackagePermission</code> has three actions: <code>exportonly</code>,
- * <code>import</code> and <code>export</code>. The <code>export</code> action,
- * which is deprecated, implies the <code>import</code> action.
- * 
- * @ThreadSafe
- * @version $Revision: 7189 $
- */
-
-public final class PackagePermission extends BasicPermission {
-	static final long						serialVersionUID	= -5107705877071099135L;
-
-	/**
-	 * The action string <code>export</code>. The <code>export</code> action
-	 * implies the <code>import</code> action.
-	 * 
-	 * @deprecated Since 1.5. Use <code>exportonly</code> instead.
-	 */
-	public final static String				EXPORT				= "export";
-
-	/**
-	 * The action string <code>exportonly</code>. The <code>exportonly</code>
-	 * action does not imply the <code>import</code> action.
-	 * 
-	 * @since 1.5
-	 */
-	public final static String				EXPORTONLY			= "exportonly";
-
-	/**
-	 * The action string <code>import</code>.
-	 */
-	public final static String				IMPORT				= "import";
-
-	private final static int				ACTION_EXPORT		= 0x00000001;
-	private final static int				ACTION_IMPORT		= 0x00000002;
-	private final static int				ACTION_ALL			= ACTION_EXPORT
-																		| ACTION_IMPORT;
-	final static int						ACTION_NONE			= 0;
-
-	/**
-	 * The actions mask.
-	 */
-	transient int							action_mask;
-
-	/**
-	 * The actions in canonical form.
-	 * 
-	 * @serial
-	 */
-	private volatile String					actions				= null;
-
-	/**
-	 * The bundle used by this PackagePermission.
-	 */
-	transient final Bundle					bundle;
-
-	/**
-	 * If this PackagePermission was constructed with a filter, this holds a
-	 * Filter matching object used to evaluate the filter in implies.
-	 */
-	transient Filter						filter;
-
-	/**
-	 * This dictionary holds the properties of the permission, used to match a
-	 * filter in implies. This is not initialized until necessary, and then
-	 * cached in this object.
-	 */
-	private transient volatile Dictionary	properties;
-
-	/**
-	 * Creates a new <code>PackagePermission</code> object.
-	 * 
-	 * <p>
-	 * The name is specified as a normal Java package name: a dot-separated
-	 * string. Wildcards may be used.
-	 * 
-	 * <pre>
-	 * name ::= &lt;package name&gt; | &lt;package name ending in &quot;.*&quot;&gt; | *
-	 * </pre>
-	 * 
-	 * Examples:
-	 * 
-	 * <pre>
-	 * org.osgi.service.http
-	 * javax.servlet.*
-	 * *
-	 * </pre>
-	 * 
-	 * For the <code>import</code> action, the name can also be a filter
-	 * expression. The filter gives access to the following attributes:
-	 * <ul>
-	 * <li>signer - A Distinguished Name chain used to sign the exporting
-	 * bundle. Wildcards in a DN are not matched according to the filter string
-	 * rules, but according to the rules defined for a DN chain.</li>
-	 * <li>location - The location of the exporting bundle.</li>
-	 * <li>id - The bundle ID of the exporting bundle.</li>
-	 * <li>name - The symbolic name of the exporting bundle.</li>
-	 * <li>package.name - The name of the requested package.</li>
-	 * </ul>
-	 * Filter attribute names are processed in a case sensitive manner.
-	 * 
-	 * <p>
-	 * Package Permissions are granted over all possible versions of a package.
-	 * 
-	 * A bundle that needs to export a package must have the appropriate
-	 * <code>PackagePermission</code> for that package; similarly, a bundle that
-	 * needs to import a package must have the appropriate
-	 * <code>PackagePermssion</code> for that package.
-	 * <p>
-	 * Permission is granted for both classes and resources.
-	 * 
-	 * @param name Package name or filter expression. A filter expression can
-	 *        only be specified if the specified action is <code>import</code>.
-	 * @param actions <code>exportonly</code>,<code>import</code> (canonical
-	 *        order).
-	 * @throws IllegalArgumentException If the specified name is a filter
-	 *         expression and either the specified action is not
-	 *         <code>import</code> or the filter has an invalid syntax.
-	 */
-	public PackagePermission(String name, String actions) {
-		this(name, parseActions(actions));
-		if ((filter != null)
-				&& ((action_mask & ACTION_ALL) != ACTION_IMPORT)) {
-			throw new IllegalArgumentException(
-					"invalid action string for filter expression");
-		}
-	}
-
-	/**
-	 * Creates a new requested <code>PackagePermission</code> object to be used
-	 * by code that must perform <code>checkPermission</code> for the
-	 * <code>import</code> action. <code>PackagePermission</code> objects
-	 * created with this constructor cannot be added to a
-	 * <code>PackagePermission</code> permission collection.
-	 * 
-	 * @param name The name of the requested package to import.
-	 * @param exportingBundle The bundle exporting the requested package.
-	 * @param actions The action <code>import</code>.
-	 * @throws IllegalArgumentException If the specified action is not
-	 *         <code>import</code> or the name is a filter expression.
-	 * @since 1.5
-	 */
-	public PackagePermission(String name, Bundle exportingBundle, String actions) {
-		super(name);
-		setTransients(name, parseActions(actions));
-		this.bundle = exportingBundle;
-		if (exportingBundle == null) {
-			throw new IllegalArgumentException("bundle must not be null");
-		}
-		if (filter != null) {
-			throw new IllegalArgumentException("invalid name");
-		}
-		if ((action_mask & ACTION_ALL) != ACTION_IMPORT) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-	}
-
-	/**
-	 * Package private constructor used by PackagePermissionCollection.
-	 * 
-	 * @param name package name
-	 * @param mask action mask
-	 */
-	PackagePermission(String name, int mask) {
-		super(name);
-		setTransients(name, mask);
-		this.bundle = null;
-	}
-
-	/**
-	 * Called by constructors and when deserialized.
-	 * 
-	 * @param mask action mask
-	 */
-	private void setTransients(String name, int mask) {
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-		action_mask = mask;
-		filter = parseFilter(name);
-	}
-
-	/**
-	 * Parse action string into action mask.
-	 * 
-	 * @param actions Action string.
-	 * @return action mask.
-	 */
-	private static int parseActions(String actions) {
-		boolean seencomma = false;
-
-		int mask = ACTION_NONE;
-
-		if (actions == null) {
-			return mask;
-		}
-
-		char[] a = actions.toCharArray();
-
-		int i = a.length - 1;
-		if (i < 0)
-			return mask;
-
-		while (i != -1) {
-			char c;
-
-			// skip whitespace
-			while ((i != -1)
-					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
-							|| c == '\f' || c == '\t'))
-				i--;
-
-			// check for the known strings
-			int matchlen;
-
-			if (i >= 5 && (a[i - 5] == 'i' || a[i - 5] == 'I')
-					&& (a[i - 4] == 'm' || a[i - 4] == 'M')
-					&& (a[i - 3] == 'p' || a[i - 3] == 'P')
-					&& (a[i - 2] == 'o' || a[i - 2] == 'O')
-					&& (a[i - 1] == 'r' || a[i - 1] == 'R')
-					&& (a[i] == 't' || a[i] == 'T')) {
-				matchlen = 6;
-				mask |= ACTION_IMPORT;
-
-			}
-			else
-				if (i >= 5 && (a[i - 5] == 'e' || a[i - 5] == 'E')
-						&& (a[i - 4] == 'x' || a[i - 4] == 'X')
-						&& (a[i - 3] == 'p' || a[i - 3] == 'P')
-						&& (a[i - 2] == 'o' || a[i - 2] == 'O')
-						&& (a[i - 1] == 'r' || a[i - 1] == 'R')
-						&& (a[i] == 't' || a[i] == 'T')) {
-					matchlen = 6;
-					mask |= ACTION_EXPORT | ACTION_IMPORT;
-
-				}
-				else {
-					if (i >= 9 && (a[i - 9] == 'e' || a[i - 9] == 'E')
-							&& (a[i - 8] == 'x' || a[i - 8] == 'X')
-							&& (a[i - 7] == 'p' || a[i - 7] == 'P')
-							&& (a[i - 6] == 'o' || a[i - 6] == 'O')
-							&& (a[i - 5] == 'r' || a[i - 5] == 'R')
-							&& (a[i - 4] == 't' || a[i - 4] == 'T')
-							&& (a[i - 3] == 'o' || a[i - 3] == 'O')
-							&& (a[i - 2] == 'n' || a[i - 2] == 'N')
-							&& (a[i - 1] == 'l' || a[i - 1] == 'L')
-							&& (a[i] == 'y' || a[i] == 'Y')) {
-						matchlen = 10;
-						mask |= ACTION_EXPORT;
-
-					}
-					else {
-						// parse error
-						throw new IllegalArgumentException(
-								"invalid permission: " + actions);
-					}
-				}
-
-			// make sure we didn't just match the tail of a word
-			// like "ackbarfimport". Also, skip to the comma.
-			seencomma = false;
-			while (i >= matchlen && !seencomma) {
-				switch (a[i - matchlen]) {
-					case ',' :
-						seencomma = true;
-						/* FALLTHROUGH */
-					case ' ' :
-					case '\r' :
-					case '\n' :
-					case '\f' :
-					case '\t' :
-						break;
-					default :
-						throw new IllegalArgumentException(
-								"invalid permission: " + actions);
-				}
-				i--;
-			}
-
-			// point i at the location of the comma minus one (or -1).
-			i -= matchlen;
-		}
-
-		if (seencomma) {
-			throw new IllegalArgumentException("invalid permission: " + actions);
-		}
-
-		return mask;
-	}
-
-	/**
-	 * Parse filter string into a Filter object.
-	 * 
-	 * @param filterString The filter string to parse.
-	 * @return a Filter for this bundle. If the specified filterString is not a
-	 *         filter expression, then <code>null</code> is returned.
-	 * @throws IllegalArgumentException If the filter syntax is invalid.
-	 */
-	private static Filter parseFilter(String filterString) {
-		filterString = filterString.trim();
-		if (filterString.charAt(0) != '(') {
-			return null;
-		}
-
-		try {
-			return FrameworkUtil.createFilter(filterString);
-		}
-		catch (InvalidSyntaxException e) {
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"invalid filter");
-			iae.initCause(e);
-			throw iae;
-		}
-	}
-
-	/**
-	 * Determines if the specified permission is implied by this object.
-	 * 
-	 * <p>
-	 * This method checks that the package name of the target is implied by the
-	 * package name of this object. The list of <code>PackagePermission</code>
-	 * actions must either match or allow for the list of the target object to
-	 * imply the target <code>PackagePermission</code> action.
-	 * <p>
-	 * The permission to export a package implies the permission to import the
-	 * named package.
-	 * 
-	 * <pre>
-	 * x.y.*,&quot;export&quot; -&gt; x.y.z,&quot;export&quot; is true
-	 * *,&quot;import&quot; -&gt; x.y, &quot;import&quot;      is true
-	 * *,&quot;export&quot; -&gt; x.y, &quot;import&quot;      is true
-	 * x.y,&quot;export&quot; -&gt; x.y.z, &quot;export&quot;  is false
-	 * </pre>
-	 * 
-	 * @param p The requested permission.
-	 * @return <code>true</code> if the specified permission is implied by this
-	 *         object; <code>false</code> otherwise.
-	 */
-	public boolean implies(Permission p) {
-		if (!(p instanceof PackagePermission)) {
-			return false;
-		}
-		PackagePermission requested = (PackagePermission) p;
-		if (bundle != null) {
-			return false;
-		}
-		// if requested permission has a filter, then it is an invalid argument
-		if (requested.filter != null) {
-			return false;
-		}
-		return implies0(requested, ACTION_NONE);
-	}
-
-	/**
-	 * Internal implies method. Used by the implies and the permission
-	 * collection implies methods.
-	 * 
-	 * @param requested The requested PackagePermission which has already be
-	 *        validated as a proper argument. The requested PackagePermission
-	 *        must not have a filter expression.
-	 * @param effective The effective actions with which to start.
-	 * @return <code>true</code> if the specified permission is implied by this
-	 *         object; <code>false</code> otherwise.
-	 */
-	boolean implies0(PackagePermission requested, int effective) {
-		/* check actions first - much faster */
-		effective |= action_mask;
-		final int desired = requested.action_mask;
-		if ((effective & desired) != desired) {
-			return false;
-		}
-		/* Get filter if any */
-		Filter f = filter;
-		if (f == null) {
-			return super.implies(requested);
-		}
-		return f.matchCase(requested.getProperties());
-	}
-
-	/**
-	 * Returns the canonical string representation of the
-	 * <code>PackagePermission</code> actions.
-	 * 
-	 * <p>
-	 * Always returns present <code>PackagePermission</code> actions in the
-	 * following order: <code>EXPORTONLY</code>,<code>IMPORT</code>.
-	 * 
-	 * @return Canonical string representation of the
-	 *         <code>PackagePermission</code> actions.
-	 */
-	public String getActions() {
-		String result = actions;
-		if (result == null) {
-			StringBuffer sb = new StringBuffer();
-			boolean comma = false;
-
-			int mask = action_mask;
-			if ((mask & ACTION_EXPORT) == ACTION_EXPORT) {
-				sb.append(EXPORTONLY);
-				comma = true;
-			}
-
-			if ((mask & ACTION_IMPORT) == ACTION_IMPORT) {
-				if (comma)
-					sb.append(',');
-				sb.append(IMPORT);
-			}
-
-			actions = result = sb.toString();
-		}
-		return result;
-	}
-
-	/**
-	 * Returns a new <code>PermissionCollection</code> object suitable for
-	 * storing <code>PackagePermission</code> objects.
-	 * 
-	 * @return A new <code>PermissionCollection</code> object.
-	 */
-	public PermissionCollection newPermissionCollection() {
-		return new PackagePermissionCollection();
-	}
-
-	/**
-	 * Determines the equality of two <code>PackagePermission</code> objects.
-	 * 
-	 * This method checks that specified package has the same package name and
-	 * <code>PackagePermission</code> actions as this
-	 * <code>PackagePermission</code> object.
-	 * 
-	 * @param obj The object to test for equality with this
-	 *        <code>PackagePermission</code> object.
-	 * @return <code>true</code> if <code>obj</code> is a
-	 *         <code>PackagePermission</code>, and has the same package name and
-	 *         actions as this <code>PackagePermission</code> object;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof PackagePermission)) {
-			return false;
-		}
-
-		PackagePermission pp = (PackagePermission) obj;
-
-		return (action_mask == pp.action_mask)
-				&& getName().equals(pp.getName())
-				&& ((bundle == pp.bundle) || ((bundle != null) && bundle
-						.equals(pp.bundle)));
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return A hash code value for this object.
-	 */
-	public int hashCode() {
-		int h = 31 * 17 + getName().hashCode();
-		h = 31 * h + getActions().hashCode();
-		if (bundle != null) {
-			h = 31 * h + bundle.hashCode();
-		}
-		return h;
-	}
-
-	/**
-	 * WriteObject is called to save the state of this permission object to a
-	 * stream. The actions are serialized, and the superclass takes care of the
-	 * name.
-	 */
-	private synchronized void writeObject(java.io.ObjectOutputStream s)
-			throws IOException {
-		if (bundle != null) {
-			throw new NotSerializableException("cannot serialize");
-		}
-		// Write out the actions. The superclass takes care of the name
-		// call getActions to make sure actions field is initialized
-		if (actions == null)
-			getActions();
-		s.defaultWriteObject();
-	}
-
-	/**
-	 * readObject is called to restore the state of this permission from a
-	 * stream.
-	 */
-	private synchronized void readObject(java.io.ObjectInputStream s)
-			throws IOException, ClassNotFoundException {
-		// Read in the action, then initialize the rest
-		s.defaultReadObject();
-		setTransients(getName(), parseActions(actions));
-	}
-
-	/**
-	 * Called by <code><@link PackagePermission#implies(Permission)></code>.
-	 * 
-	 * @return a dictionary of properties for this permission.
-	 */
-	private Dictionary getProperties() {
-		Dictionary result = properties;
-		if (result != null) {
-			return result;
-		}
-		final Dictionary dict = new Hashtable(5);
-		if (filter == null) {
-			dict.put("package.name", getName());
-		}
-		if (bundle != null) {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					dict.put("id", new Long(bundle.getBundleId()));
-					dict.put("location", bundle.getLocation());
-					String name = bundle.getSymbolicName();
-					if (name != null) {
-						dict.put("name", name);
-					}
-					SignerProperty signer = new SignerProperty(bundle);
-					if (signer.isBundleSigned()) {
-						dict.put("signer", signer);
-					}
-					return null;
-				}
-			});
-		}
-		return properties = dict;
-	}
-}
-
-/**
- * Stores a set of <code>PackagePermission</code> permissions.
- * 
- * @see java.security.Permission
- * @see java.security.Permissions
- * @see java.security.PermissionCollection
- */
-
-final class PackagePermissionCollection extends PermissionCollection {
-	static final long		serialVersionUID	= -3350758995234427603L;
-	/**
-	 * Table of permissions with names.
-	 * 
-	 * @GuardedBy this
-	 */
-	private transient Map	permissions;
-
-	/**
-	 * Boolean saying if "*" is in the collection.
-	 * 
-	 * @serial
-	 * @GuardedBy this
-	 */
-	private boolean			all_allowed;
-
-	/**
-	 * Table of permissions with filter expressions.
-	 * 
-	 * @serial
-	 * @GuardedBy this
-	 */
-	private Map				filterPermissions;
-
-	/**
-	 * Create an empty PackagePermissions object.
-	 */
-	public PackagePermissionCollection() {
-		permissions = new HashMap();
-		all_allowed = false;
-	}
-
-	/**
-	 * Adds a permission to this permission collection.
-	 * 
-	 * @param permission The <code>PackagePermission</code> object to add.
-	 * @throws IllegalArgumentException If the specified permission is not a
-	 *         <code>PackagePermission</code> instance or was constructed with a
-	 *         Bundle object.
-	 * @throws SecurityException If this
-	 *         <code>PackagePermissionCollection</code> object has been marked
-	 *         read-only.
-	 */
-	public void add(final Permission permission) {
-		if (!(permission instanceof PackagePermission)) {
-			throw new IllegalArgumentException("invalid permission: "
-					+ permission);
-		}
-		if (isReadOnly()) {
-			throw new SecurityException("attempt to add a Permission to a "
-					+ "readonly PermissionCollection");
-		}
-
-		final PackagePermission pp = (PackagePermission) permission;
-		if (pp.bundle != null) {
-			throw new IllegalArgumentException("cannot add to collection: "
-					+ pp);
-		}
-
-		final String name = pp.getName();
-		final Filter f = pp.filter;
-		synchronized (this) {
-			/* select the bucket for the permission */
-			Map pc;
-			if (f != null) {
-				pc = filterPermissions;
-				if (pc == null) {
-					filterPermissions = pc = new HashMap();
-				}
-			}
-			else {
-				pc = permissions;
-			}
-			
-			final PackagePermission existing = (PackagePermission) pc.get(name);
-			if (existing != null) {
-				final int oldMask = existing.action_mask;
-				final int newMask = pp.action_mask;
-				if (oldMask != newMask) {
-					pc
-							.put(name, new PackagePermission(name, oldMask
-									| newMask));
-
-				}
-			}
-			else {
-				pc.put(name, pp);
-			}
-
-			if (!all_allowed) {
-				if (name.equals("*")) {
-					all_allowed = true;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Determines if the specified permissions implies the permissions expressed
-	 * in <code>permission</code>.
-	 * 
-	 * @param permission The Permission object to compare with this
-	 *        <code>PackagePermission</code> object.
-	 * @return <code>true</code> if <code>permission</code> is a proper subset
-	 *         of a permission in the set; <code>false</code> otherwise.
-	 */
-	public boolean implies(final Permission permission) {
-		if (!(permission instanceof PackagePermission)) {
-			return false;
-		}
-		final PackagePermission requested = (PackagePermission) permission;
-		/* if requested permission has a filter, then it is an invalid argument */
-		if (requested.filter != null) {
-			return false;
-		}
-		String requestedName = requested.getName();
-		final int desired = requested.action_mask;
-		int effective = PackagePermission.ACTION_NONE;
-
-		Collection perms;
-		synchronized (this) {
-			Map pc = permissions;
-			PackagePermission pp;
-			/* short circuit if the "*" Permission was added */
-			if (all_allowed) {
-				pp = (PackagePermission) pc.get("*");
-				if (pp != null) {
-					effective |= pp.action_mask;
-					if ((effective & desired) == desired) {
-						return true;
-					}
-				}
-			}
-			/*
-			 * strategy: Check for full match first. Then work our way up the
-			 * name looking for matches on a.b.*
-			 */
-			pp = (PackagePermission) pc.get(requestedName);
-			if (pp != null) {
-				/* we have a direct hit! */
-				effective |= pp.action_mask;
-				if ((effective & desired) == desired) {
-					return true;
-				}
-			}
-			/* work our way up the tree... */
-			int last;
-			int offset = requestedName.length() - 1;
-			while ((last = requestedName.lastIndexOf(".", offset)) != -1) {
-				requestedName = requestedName.substring(0, last + 1) + "*";
-				pp = (PackagePermission) pc.get(requestedName);
-				if (pp != null) {
-					effective |= pp.action_mask;
-					if ((effective & desired) == desired) {
-						return true;
-					}
-				}
-				offset = last - 1;
-			}
-			/*
-			 * we don't have to check for "*" as it was already checked before
-			 * we were called.
-			 */
-			pc = filterPermissions;
-			if (pc == null) {
-				return false;
-			}
-			perms = pc.values();
-		}
-		/* iterate one by one over filteredPermissions */
-		for (Iterator iter = perms.iterator(); iter.hasNext();) {
-			if (((PackagePermission) iter.next())
-					.implies0(requested, effective)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns an enumeration of all <code>PackagePermission</code> objects in
-	 * the container.
-	 * 
-	 * @return Enumeration of all <code>PackagePermission</code> objects.
-	 */
-	public synchronized Enumeration elements() {
-		List all = new ArrayList(permissions.values());
-		Map pc = filterPermissions;
-		if (pc != null) {
-			all.addAll(pc.values());
-		}
-		return Collections.enumeration(all);
-	}
-
-	/* serialization logic */
-	private static final ObjectStreamField[]	serialPersistentFields	= {
-			new ObjectStreamField("permissions", Hashtable.class),
-			new ObjectStreamField("all_allowed", Boolean.TYPE),
-			new ObjectStreamField("filterPermissions", HashMap.class)	};
-
-	private synchronized void writeObject(ObjectOutputStream out)
-			throws IOException {
-		Hashtable hashtable = new Hashtable(permissions);
-		ObjectOutputStream.PutField pfields = out.putFields();
-		pfields.put("permissions", hashtable);
-		pfields.put("all_allowed", all_allowed);
-		pfields.put("filterPermissions", filterPermissions);
-		out.writeFields();
-	}
-
-	private synchronized void readObject(java.io.ObjectInputStream in)
-			throws IOException, ClassNotFoundException {
-		ObjectInputStream.GetField gfields = in.readFields();
-		Hashtable hashtable = (Hashtable) gfields.get("permissions", null);
-		permissions = new HashMap(hashtable);
-		all_allowed = gfields.get("all_allowed", false);
-		filterPermissions = (HashMap) gfields.get("filterPermissions", null);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceEvent.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceEvent.java
deleted file mode 100644
index b7c9928..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceEvent.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.Dictionary;
-import java.util.EventObject;
-
-/**
- * An event from the Framework describing a service lifecycle change.
- * <p>
- * <code>ServiceEvent</code> objects are delivered to
- * <code>ServiceListener</code>s and <code>AllServiceListener</code>s when a
- * change occurs in this service's lifecycle. A type code is used to identify
- * the event type for future extendability.
- * 
- * <p>
- * OSGi Alliance reserves the right to extend the set of types.
- * 
- * @Immutable
- * @see ServiceListener
- * @see AllServiceListener
- * @version $Revision: 6542 $
- */
-
-public class ServiceEvent extends EventObject {
-	static final long				serialVersionUID	= 8792901483909409299L;
-	/**
-	 * Reference to the service that had a change occur in its lifecycle.
-	 */
-	private final ServiceReference	reference;
-
-	/**
-	 * Type of service lifecycle change.
-	 */
-	private final int				type;
-
-	/**
-	 * This service has been registered.
-	 * <p>
-	 * This event is synchronously delivered <strong>after</strong> the service
-	 * has been registered with the Framework.
-	 * 
-	 * @see BundleContext#registerService(String[],Object,Dictionary)
-	 */
-	public final static int			REGISTERED			= 0x00000001;
-
-	/**
-	 * The properties of a registered service have been modified.
-	 * <p>
-	 * This event is synchronously delivered <strong>after</strong> the service
-	 * properties have been modified.
-	 * 
-	 * @see ServiceRegistration#setProperties
-	 */
-	public final static int			MODIFIED			= 0x00000002;
-
-	/**
-	 * This service is in the process of being unregistered.
-	 * <p>
-	 * This event is synchronously delivered <strong>before</strong> the service
-	 * has completed unregistering.
-	 * 
-	 * <p>
-	 * If a bundle is using a service that is <code>UNREGISTERING</code>, the
-	 * bundle should release its use of the service when it receives this event.
-	 * If the bundle does not release its use of the service when it receives
-	 * this event, the Framework will automatically release the bundle's use of
-	 * the service while completing the service unregistration operation.
-	 * 
-	 * @see ServiceRegistration#unregister
-	 * @see BundleContext#ungetService
-	 */
-	public final static int			UNREGISTERING		= 0x00000004;
-
-	/**
-	 * The properties of a registered service have been modified and the new
-	 * properties no longer match the listener's filter.
-	 * <p>
-	 * This event is synchronously delivered <strong>after</strong> the service
-	 * properties have been modified. This event is only delivered to listeners
-	 * which were added with a non-<code>null</code> filter where the filter
-	 * matched the service properties prior to the modification but the filter
-	 * does not match the modified service properties.
-	 * 
-	 * @see ServiceRegistration#setProperties
-	 * @since 1.5
-	 */
-	public final static int			MODIFIED_ENDMATCH	= 0x00000008;
-
-	/**
-	 * Creates a new service event object.
-	 * 
-	 * @param type The event type.
-	 * @param reference A <code>ServiceReference</code> object to the service
-	 * 	that had a lifecycle change.
-	 */
-	public ServiceEvent(int type, ServiceReference reference) {
-		super(reference);
-		this.reference = reference;
-		this.type = type;
-	}
-
-	/**
-	 * Returns a reference to the service that had a change occur in its
-	 * lifecycle.
-	 * <p>
-	 * This reference is the source of the event.
-	 * 
-	 * @return Reference to the service that had a lifecycle change.
-	 */
-	public ServiceReference getServiceReference() {
-		return reference;
-	}
-
-	/**
-	 * Returns the type of event. The event type values are:
-	 * <ul>
-	 * <li>{@link #REGISTERED} </li> 
-	 * <li>{@link #MODIFIED} </li> 
-	 * <li>{@link #MODIFIED_ENDMATCH} </li> 
-	 * <li>{@link #UNREGISTERING} </li>
-	 * </ul>
-	 * 
-	 * @return Type of service lifecycle change.
-	 */
-
-	public int getType() {
-		return type;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceException.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceException.java
deleted file mode 100644
index 4cf04a0..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceException.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2007, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * A service exception used to indicate that a service problem occurred.
- * 
- * <p>
- * A <code>ServiceException</code> object is created by the Framework or
- * service implementation to denote an exception condition in the service. A
- * type code is used to identify the exception type for future extendability.
- * Service implementations may also create subclasses of
- * <code>ServiceException</code>. When subclassing, the subclass should set
- * the type to {@link #SUBCLASSED} to indicate that
- * <code>ServiceException</code> has been subclassed.
- * 
- * <p>
- * This exception conforms to the general purpose exception chaining mechanism.
- * 
- * @version $Revision: 6518 $
- * @since 1.5
- */
-
-public class ServiceException extends RuntimeException {
-	static final long		serialVersionUID	= 3038963223712959631L;
-
-	/**
-	 * Type of service exception.
-	 */
-	private final int		type;
-
-	/**
-	 * No exception type is unspecified.
-	 */
-	public static final int	UNSPECIFIED			= 0;
-	/**
-	 * The service has been unregistered.
-	 */
-	public static final int	UNREGISTERED		= 1;
-	/**
-	 * The service factory produced an invalid service object.
-	 */
-	public static final int	FACTORY_ERROR		= 2;
-	/**
-	 * The service factory threw an exception.
-	 */
-	public static final int	FACTORY_EXCEPTION	= 3;
-	/**
-	 * The exception is a subclass of ServiceException. The subclass should be
-	 * examined for the type of the exception.
-	 */
-	public static final int	SUBCLASSED			= 4;
-	/**
-	 * An error occurred invoking a remote service.
-	 */
-	public static final int REMOTE 				= 5;
-
-	/**
-	 * Creates a <code>ServiceException</code> with the specified message and
-	 * exception cause.
-	 * 
-	 * @param msg The associated message.
-	 * @param cause The cause of this exception.
-	 */
-	public ServiceException(String msg, Throwable cause) {
-		this(msg, UNSPECIFIED, cause);
-	}
-
-	/**
-	 * Creates a <code>ServiceException</code> with the specified message.
-	 * 
-	 * @param msg The message.
-	 */
-	public ServiceException(String msg) {
-		this(msg, UNSPECIFIED);
-	}
-
-	/**
-	 * Creates a <code>ServiceException</code> with the specified message,
-	 * type and exception cause.
-	 * 
-	 * @param msg The associated message.
-	 * @param type The type for this exception.
-	 * @param cause The cause of this exception.
-	 */
-	public ServiceException(String msg, int type, Throwable cause) {
-		super(msg, cause);
-		this.type = type;
-	}
-
-	/**
-	 * Creates a <code>ServiceException</code> with the specified message and
-	 * type.
-	 * 
-	 * @param msg The message.
-	 * @param type The type for this exception.
-	 */
-	public ServiceException(String msg, int type) {
-		super(msg);
-		this.type = type;
-	}
-
-	/**
-	 * Returns the type for this exception or <code>UNSPECIFIED</code> if the
-	 * type was unspecified or unknown.
-	 * 
-	 * @return The type of this exception.
-	 */
-	public int getType() {
-		return type;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceFactory.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceFactory.java
deleted file mode 100644
index c8f6bf3..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * Allows services to provide customized service objects in the OSGi
- * environment.
- * 
- * <p>
- * When registering a service, a <code>ServiceFactory</code> object can be
- * used instead of a service object, so that the bundle developer can gain
- * control of the specific service object granted to a bundle that is using the
- * service.
- * 
- * <p>
- * When this happens, the
- * <code>BundleContext.getService(ServiceReference)</code> method calls the
- * <code>ServiceFactory.getService</code> method to create a service object
- * specifically for the requesting bundle. The service object returned by the
- * <code>ServiceFactory</code> is cached by the Framework until the bundle
- * releases its use of the service.
- * 
- * <p>
- * When the bundle's use count for the service equals zero (including the bundle
- * stopping or the service being unregistered), the
- * <code>ServiceFactory.ungetService</code> method is called.
- * 
- * <p>
- * <code>ServiceFactory</code> objects are only used by the Framework and are
- * not made available to other bundles in the OSGi environment. The Framework
- * may concurrently call a <code>ServiceFactory</code>.
- * 
- * @see BundleContext#getService
- * @ThreadSafe
- * @version $Revision: 5967 $
- */
-
-public interface ServiceFactory {
-	/**
-	 * Creates a new service object.
-	 * 
-	 * <p>
-	 * The Framework invokes this method the first time the specified
-	 * <code>bundle</code> requests a service object using the
-	 * <code>BundleContext.getService(ServiceReference)</code> method. The
-	 * service factory can then return a specific service object for each
-	 * bundle.
-	 * 
-	 * <p>
-	 * The Framework caches the value returned (unless it is <code>null</code>),
-	 * and will return the same service object on any future call to
-	 * <code>BundleContext.getService</code> for the same bundle. This means the
-	 * Framework must not allow this method to be concurrently called for the
-	 * same bundle.
-	 * 
-	 * <p>
-	 * The Framework will check if the returned service object is an instance of
-	 * all the classes named when the service was registered. If not, then
-	 * <code>null</code> is returned to the bundle.
-	 * 
-	 * @param bundle The bundle using the service.
-	 * @param registration The <code>ServiceRegistration</code> object for the
-	 *        service.
-	 * @return A service object that <strong>must</strong> be an instance of all
-	 *         the classes named when the service was registered.
-	 * @see BundleContext#getService
-	 */
-	public Object getService(Bundle bundle, ServiceRegistration registration);
-
-	/**
-	 * Releases a service object.
-	 * 
-	 * <p>
-	 * The Framework invokes this method when a service has been released by a
-	 * bundle. The service object may then be destroyed.
-	 * 
-	 * @param bundle The bundle releasing the service.
-	 * @param registration The <code>ServiceRegistration</code> object for the
-	 *        service.
-	 * @param service The service object returned by a previous call to the
-	 *        <code>ServiceFactory.getService</code> method.
-	 * @see BundleContext#ungetService
-	 */
-	public void ungetService(Bundle bundle, ServiceRegistration registration,
-			Object service);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceListener.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceListener.java
deleted file mode 100644
index ec08560..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceListener.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.EventListener;
-
-/**
- * A <code>ServiceEvent</code> listener. <code>ServiceListener</code> is a
- * listener interface that may be implemented by a bundle developer. When a
- * <code>ServiceEvent</code> is fired, it is synchronously delivered to a
- * <code>ServiceListener</code>. The Framework may deliver
- * <code>ServiceEvent</code> objects to a <code>ServiceListener</code> out
- * of order and may concurrently call and/or reenter a
- * <code>ServiceListener</code>.
- * 
- * <p>
- * A <code>ServiceListener</code> object is registered with the Framework
- * using the <code>BundleContext.addServiceListener</code> method.
- * <code>ServiceListener</code> objects are called with a
- * <code>ServiceEvent</code> object when a service is registered, modified, or
- * is in the process of unregistering.
- * 
- * <p>
- * <code>ServiceEvent</code> object delivery to <code>ServiceListener</code>
- * objects is filtered by the filter specified when the listener was registered.
- * If the Java Runtime Environment supports permissions, then additional
- * filtering is done. <code>ServiceEvent</code> objects are only delivered to
- * the listener if the bundle which defines the listener object's class has the
- * appropriate <code>ServicePermission</code> to get the service using at
- * least one of the named classes under which the service was registered.
- * 
- * <p>
- * <code>ServiceEvent</code> object delivery to <code>ServiceListener</code>
- * objects is further filtered according to package sources as defined in
- * {@link ServiceReference#isAssignableTo(Bundle, String)}.
- * 
- * @see ServiceEvent
- * @see ServicePermission
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-
-public interface ServiceListener extends EventListener {
-	/**
-	 * Receives notification that a service has had a lifecycle change.
-	 * 
-	 * @param event The <code>ServiceEvent</code> object.
-	 */
-	public void serviceChanged(ServiceEvent event);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
deleted file mode 100644
index d2f3c31..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
+++ /dev/null
@@ -1,932 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.io.IOException;
-import java.io.NotSerializableException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.ObjectStreamField;
-import java.security.AccessController;
-import java.security.BasicPermission;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Hashtable;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A bundle's authority to register or get a service.
- * <ul>
- * <li>The <code>register</code> action allows a bundle to register a service on
- * the specified names.
- * <li>The <code>get</code> action allows a bundle to detect a service and get
- * it.
- * </ul>
- * Permission to get a service is required in order to detect events regarding
- * the service. Untrusted bundles should not be able to detect the presence of
- * certain services unless they have the appropriate
- * <code>ServicePermission</code> to get the specific service.
- * 
- * @ThreadSafe
- * @version $Revision: 7189 $
- */
-
-public final class ServicePermission extends BasicPermission {
-	static final long			serialVersionUID	= -7662148639076511574L;
-	/**
-	 * The action string <code>get</code>.
-	 */
-	public final static String	GET					= "get";
-	/**
-	 * The action string <code>register</code>.
-	 */
-	public final static String	REGISTER			= "register";
-
-	private final static int	ACTION_GET			= 0x00000001;
-	private final static int	ACTION_REGISTER		= 0x00000002;
-	private final static int	ACTION_ALL			= ACTION_GET
-															| ACTION_REGISTER;
-	final static int						ACTION_NONE			= 0;
-
-	/**
-	 * The actions mask.
-	 */
-	transient int							action_mask;
-
-	/**
-	 * The actions in canonical form.
-	 * 
-	 * @serial
-	 */
-	private volatile String		actions				= null;
-
-	/**
-	 * The service used by this ServicePermission. Must be null if not
-	 * constructed with a service.
-	 */
-	transient final ServiceReference		service;
-
-	/**
-	 * The object classes for this ServicePermission. Must be null if not
-	 * constructed with a service.
-	 */
-	transient final String[]				objectClass;
-
-	/**
-	 * If this ServicePermission was constructed with a filter, this holds a
-	 * Filter matching object used to evaluate the filter in implies.
-	 */
-	transient Filter						filter;
-
-	/**
-	 * This dictionary holds the properties of the permission, used to match a
-	 * filter in implies. This is not initialized until necessary, and then
-	 * cached in this object.
-	 */
-	private transient volatile Dictionary	properties;
-
-	/**
-	 * True if constructed with a name and the name is "*" or ends with ".*".
-	 */
-	private transient boolean				wildcard;
-
-	/**
-	 * If constructed with a name and the name ends with ".*", this contains the
-	 * name without the final "*".
-	 */
-	private transient String				prefix;
-
-	/**
-	 * Create a new ServicePermission.
-	 * 
-	 * <p>
-	 * The name of the service is specified as a fully qualified class name.
-	 * Wildcards may be used.
-	 * 
-	 * <pre>
-	 * name ::= &lt;class name&gt; | &lt;class name ending in &quot;.*&quot;&gt; | *
-	 * </pre>
-	 * 
-	 * Examples:
-	 * 
-	 * <pre>
-	 * org.osgi.service.http.HttpService
-	 * org.osgi.service.http.*
-	 * *
-	 * </pre>
-	 * 
-	 * For the <code>get</code> action, the name can also be a filter
-	 * expression. The filter gives access to the service properties as well as
-	 * the following attributes:
-	 * <ul>
-	 * <li>signer - A Distinguished Name chain used to sign the bundle
-	 * publishing the service. Wildcards in a DN are not matched according to
-	 * the filter string rules, but according to the rules defined for a DN
-	 * chain.</li>
-	 * <li>location - The location of the bundle publishing the service.</li>
-	 * <li>id - The bundle ID of the bundle publishing the service.</li>
-	 * <li>name - The symbolic name of the bundle publishing the service.</li>
-	 * </ul>
-	 * Since the above attribute names may conflict with service property names
-	 * used by a service, you can prefix an attribute name with '@' in the
-	 * filter expression to match against the service property and not one of
-	 * the above attributes. Filter attribute names are processed in a case
-	 * sensitive manner unless the attribute references a service property.
-	 * Service properties names are case insensitive.
-	 * 
-	 * <p>
-	 * There are two possible actions: <code>get</code> and
-	 * <code>register</code>. The <code>get</code> permission allows the owner
-	 * of this permission to obtain a service with this name. The
-	 * <code>register</code> permission allows the bundle to register a service
-	 * under that name.
-	 * 
-	 * @param name The service class name
-	 * @param actions <code>get</code>,<code>register</code> (canonical order)
-	 * @throws IllegalArgumentException If the specified name is a filter
-	 *         expression and either the specified action is not
-	 *         <code>get</code> or the filter has an invalid syntax.
-	 */
-	public ServicePermission(String name, String actions) {
-		this(name, parseActions(actions));
-		if ((filter != null)
-				&& ((action_mask & ACTION_ALL) != ACTION_GET)) {
-			throw new IllegalArgumentException(
-					"invalid action string for filter expression");
-		}
-	}
-
-	/**
-	 * Creates a new requested <code>ServicePermission</code> object to be used
-	 * by code that must perform <code>checkPermission</code> for the
-	 * <code>get</code> action. <code>ServicePermission</code> objects created
-	 * with this constructor cannot be added to a <code>ServicePermission</code>
-	 * permission collection.
-	 * 
-	 * @param reference The requested service.
-	 * @param actions The action <code>get</code>.
-	 * @throws IllegalArgumentException If the specified action is not
-	 *         <code>get</code> or reference is <code>null</code>.
-	 * @since 1.5
-	 */
-	public ServicePermission(ServiceReference reference, String actions) {
-		super(createName(reference));
-		setTransients(null, parseActions(actions));
-		this.service = reference;
-		this.objectClass = (String[]) reference
-				.getProperty(Constants.OBJECTCLASS);
-		if ((action_mask & ACTION_ALL) != ACTION_GET) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-	}
-
-	/**
-	 * Create a permission name from a ServiceReference
-	 * 
-	 * @param reference ServiceReference to use to create permission name.
-	 * @return permission name.
-	 */
-	private static String createName(ServiceReference reference) {
-		if (reference == null) {
-			throw new IllegalArgumentException("reference must not be null");
-		}
-		StringBuffer sb = new StringBuffer("(service.id=");
-		sb.append(reference.getProperty(Constants.SERVICE_ID));
-		sb.append(")");
-		return sb.toString();
-	}
-
-	/**
-	 * Package private constructor used by ServicePermissionCollection.
-	 * 
-	 * @param name class name
-	 * @param mask action mask
-	 */
-	ServicePermission(String name, int mask) {
-		super(name);
-		setTransients(parseFilter(name), mask);
-		this.service = null;
-		this.objectClass = null;
-	}
-
-	/**
-	 * Called by constructors and when deserialized.
-	 * 
-	 * @param mask action mask
-	 */
-	private void setTransients(Filter f, int mask) {
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-		action_mask = mask;
-		filter = f;
-		if (f == null) {
-			String name = getName();
-			int l = name.length();
-			/* if "*" or endsWith ".*" */
-			wildcard = ((name.charAt(l - 1) == '*') && ((l == 1) || (name
-					.charAt(l - 2) == '.')));
-			if (wildcard && (l > 1)) {
-				prefix = name.substring(0, l - 1);
-			}
-		}
-	}
-
-	/**
-	 * Parse action string into action mask.
-	 * 
-	 * @param actions Action string.
-	 * @return action mask.
-	 */
-	private static int parseActions(String actions) {
-		boolean seencomma = false;
-
-		int mask = ACTION_NONE;
-
-		if (actions == null) {
-			return mask;
-		}
-
-		char[] a = actions.toCharArray();
-
-		int i = a.length - 1;
-		if (i < 0)
-			return mask;
-
-		while (i != -1) {
-			char c;
-
-			// skip whitespace
-			while ((i != -1)
-					&& ((c = a[i]) == ' ' || c == '\r' || c == '\n'
-							|| c == '\f' || c == '\t'))
-				i--;
-
-			// check for the known strings
-			int matchlen;
-
-			if (i >= 2 && (a[i - 2] == 'g' || a[i - 2] == 'G')
-					&& (a[i - 1] == 'e' || a[i - 1] == 'E')
-					&& (a[i] == 't' || a[i] == 'T')) {
-				matchlen = 3;
-				mask |= ACTION_GET;
-
-			}
-			else
-				if (i >= 7 && (a[i - 7] == 'r' || a[i - 7] == 'R')
-						&& (a[i - 6] == 'e' || a[i - 6] == 'E')
-						&& (a[i - 5] == 'g' || a[i - 5] == 'G')
-						&& (a[i - 4] == 'i' || a[i - 4] == 'I')
-						&& (a[i - 3] == 's' || a[i - 3] == 'S')
-						&& (a[i - 2] == 't' || a[i - 2] == 'T')
-						&& (a[i - 1] == 'e' || a[i - 1] == 'E')
-						&& (a[i] == 'r' || a[i] == 'R')) {
-					matchlen = 8;
-					mask |= ACTION_REGISTER;
-
-				}
-				else {
-					// parse error
-					throw new IllegalArgumentException("invalid permission: "
-							+ actions);
-				}
-
-			// make sure we didn't just match the tail of a word
-			// like "ackbarfregister". Also, skip to the comma.
-			seencomma = false;
-			while (i >= matchlen && !seencomma) {
-				switch (a[i - matchlen]) {
-					case ',' :
-						seencomma = true;
-					/* FALLTHROUGH */
-					case ' ' :
-					case '\r' :
-					case '\n' :
-					case '\f' :
-					case '\t' :
-						break;
-					default :
-						throw new IllegalArgumentException(
-								"invalid permission: " + actions);
-				}
-				i--;
-			}
-
-			// point i at the location of the comma minus one (or -1).
-			i -= matchlen;
-		}
-
-		if (seencomma) {
-			throw new IllegalArgumentException("invalid permission: " + actions);
-		}
-
-		return mask;
-	}
-
-	/**
-	 * Parse filter string into a Filter object.
-	 * 
-	 * @param filterString The filter string to parse.
-	 * @return a Filter for this bundle. If the specified filterString is not a
-	 *         filter expression, then <code>null</code> is returned.
-	 * @throws IllegalArgumentException If the filter syntax is invalid.
-	 */
-	private static Filter parseFilter(String filterString) {
-		filterString = filterString.trim();
-		if (filterString.charAt(0) != '(') {
-			return null;
-		}
-
-		try {
-			return FrameworkUtil.createFilter(filterString);
-		}
-		catch (InvalidSyntaxException e) {
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"invalid filter");
-			iae.initCause(e);
-			throw iae;
-		}
-	}
-
-	/**
-	 * Determines if a <code>ServicePermission</code> object "implies" the
-	 * specified permission.
-	 * 
-	 * @param p The target permission to check.
-	 * @return <code>true</code> if the specified permission is implied by this
-	 *         object; <code>false</code> otherwise.
-	 */
-	public boolean implies(Permission p) {
-		if (!(p instanceof ServicePermission)) {
-			return false;
-		}
-		ServicePermission requested = (ServicePermission) p;
-		if (service != null) {
-			return false;
-		}
-		// if requested permission has a filter, then it is an invalid argument
-		if (requested.filter != null) {
-			return false;
-		}
-		return implies0(requested, ACTION_NONE);
-	}
-
-	/**
-	 * Internal implies method. Used by the implies and the permission
-	 * collection implies methods.
-	 * 
-	 * @param requested The requested ServicePermission which has already be
-	 *        validated as a proper argument. The requested ServicePermission
-	 *        must not have a filter expression.
-	 * @param effective The effective actions with which to start.
-	 * @return <code>true</code> if the specified permission is implied by this
-	 *         object; <code>false</code> otherwise.
-	 */
-	boolean implies0(ServicePermission requested, int effective) {
-		/* check actions first - much faster */
-		effective |= action_mask;
-		final int desired = requested.action_mask;
-		if ((effective & desired) != desired) {
-			return false;
-		}
-		/* we have name of "*" */
-		if (wildcard && (prefix == null)) {
-			return true;
-		}
-		/* if we have a filter */
-		Filter f = filter;
-		if (f != null) {
-			return f.matchCase(requested.getProperties());
-		}
-		/* if requested permission not created with ServiceReference */
-		String[] requestedNames = requested.objectClass;
-		if (requestedNames == null) {
-			return super.implies(requested);
-		}
-		/* requested permission created with ServiceReference */
-		if (wildcard) {
-			int pl = prefix.length();
-			for (int i = 0, l = requestedNames.length; i < l; i++) {
-				String requestedName = requestedNames[i];
-				if ((requestedName.length() > pl)
-						&& requestedName.startsWith(prefix)) {
-					return true;
-				}
-			}
-		}
-		else {
-			String name = getName();
-			for (int i = 0, l = requestedNames.length; i < l; i++) {
-				if (requestedNames[i].equals(name)) {
-					return true;
-				}
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Returns the canonical string representation of the actions. Always
-	 * returns present actions in the following order: <code>get</code>,
-	 * <code>register</code>.
-	 * 
-	 * @return The canonical string representation of the actions.
-	 */
-	public String getActions() {
-		String result = actions;
-		if (result == null) {
-			StringBuffer sb = new StringBuffer();
-			boolean comma = false;
-
-			int mask = action_mask;
-			if ((mask & ACTION_GET) == ACTION_GET) {
-				sb.append(GET);
-				comma = true;
-			}
-
-			if ((mask & ACTION_REGISTER) == ACTION_REGISTER) {
-				if (comma)
-					sb.append(',');
-				sb.append(REGISTER);
-			}
-
-			actions = result = sb.toString();
-		}
-
-		return result;
-	}
-
-	/**
-	 * Returns a new <code>PermissionCollection</code> object for storing
-	 * <code>ServicePermission<code> objects.
-	 *
-	 * @return A new <code>PermissionCollection</code> object suitable for storing
-	 * <code>ServicePermission</code> objects.
-	 */
-	public PermissionCollection newPermissionCollection() {
-		return new ServicePermissionCollection();
-	}
-
-	/**
-	 * Determines the equality of two ServicePermission objects.
-	 * 
-	 * Checks that specified object has the same class name and action as this
-	 * <code>ServicePermission</code>.
-	 * 
-	 * @param obj The object to test for equality.
-	 * @return true if obj is a <code>ServicePermission</code>, and has the same
-	 *         class name and actions as this <code>ServicePermission</code>
-	 *         object; <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof ServicePermission)) {
-			return false;
-		}
-
-		ServicePermission sp = (ServicePermission) obj;
-
-		return (action_mask == sp.action_mask)
-				&& getName().equals(sp.getName())
-				&& ((service == sp.service) || ((service != null) && (service
-						.compareTo(sp.service) == 0)));
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return Hash code value for this object.
-	 */
-	public int hashCode() {
-		int h = 31 * 17 + getName().hashCode();
-		h = 31 * h + getActions().hashCode();
-		if (service != null) {
-			h = 31 * h + service.hashCode();
-		}
-		return h;
-	}
-
-	/**
-	 * WriteObject is called to save the state of this permission to a stream.
-	 * The actions are serialized, and the superclass takes care of the name.
-	 */
-	private synchronized void writeObject(java.io.ObjectOutputStream s)
-			throws IOException {
-		if (service != null) {
-			throw new NotSerializableException("cannot serialize");
-		}
-		// Write out the actions. The superclass takes care of the name
-		// call getActions to make sure actions field is initialized
-		if (actions == null)
-			getActions();
-		s.defaultWriteObject();
-	}
-
-	/**
-	 * readObject is called to restore the state of this permission from a
-	 * stream.
-	 */
-	private synchronized void readObject(java.io.ObjectInputStream s)
-			throws IOException, ClassNotFoundException {
-		// Read in the action, then initialize the rest
-		s.defaultReadObject();
-		setTransients(parseFilter(getName()), parseActions(actions));
-	}
-	/**
-	 * Called by <code><@link ServicePermission#implies(Permission)></code>.
-	 * 
-	 * @return a dictionary of properties for this permission.
-	 */
-	private Dictionary getProperties() {
-		Dictionary result = properties;
-		if (result != null) {
-			return result;
-		}
-		if (service == null) {
-			result = new Hashtable(1);
-			if (filter == null) {
-				result.put(Constants.OBJECTCLASS, new String[] {getName()});
-			}
-			return properties = result;
-		}
-		final Map props = new HashMap(4);
-		final Bundle bundle = service.getBundle();
-		if (bundle != null) {
-			AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-					props.put("id", new Long(bundle.getBundleId()));
-					props.put("location", bundle.getLocation());
-					String name = bundle.getSymbolicName();
-					if (name != null) {
-						props.put("name", name);
-					}
-					SignerProperty signer = new SignerProperty(bundle);
-					if (signer.isBundleSigned()) {
-						props.put("signer", signer);
-					}
-					return null;
-				}
-			});
-		}
-		return properties = new Properties(props, service);
-	}
-	
-	private static class Properties extends Dictionary {
-		private final Map				properties;
-		private final ServiceReference	service;
-
-		Properties(Map properties, ServiceReference service) {
-			this.properties = properties;
-			this.service = service;
-		}
-
-		public Object get(Object k) {
-			if (!(k instanceof String)) {
-				return null;
-			}
-			String key = (String) k;
-			if (key.charAt(0) == '@') {
-				return service.getProperty(key.substring(1));
-			}
-			Object value = properties.get(key);
-			if (value != null) { // fall back to service properties
-				return value;
-			}
-			return service.getProperty(key);
-		}
-
-		public int size() {
-			return properties.size() + service.getPropertyKeys().length;
-		}
-
-		public boolean isEmpty() {
-			// we can return false because this must never be empty
-			return false;
-		}
-
-		public Enumeration keys() {
-			Collection pk = properties.keySet();
-			String spk[] = service.getPropertyKeys();
-			List all = new ArrayList(pk.size() + spk.length);
-			all.addAll(pk);
-			add:
-			for (int i = 0, length = spk.length; i < length; i++) {
-				String key = spk[i];
-				for (Iterator iter = pk.iterator(); iter.hasNext();) {
-					if (key.equalsIgnoreCase((String) iter.next())) {
-						continue add;
-					}
-				}
-				all.add(key);
-			}
-			return Collections.enumeration(all);
-		}
-
-		public Enumeration elements() {
-			Collection pk = properties.keySet();
-			String spk[] = service.getPropertyKeys();
-			List all = new ArrayList(pk.size() + spk.length);
-			all.addAll(properties.values());
-			add:
-			for (int i = 0, length = spk.length; i < length; i++) {
-				String key = spk[i];
-				for (Iterator iter = pk.iterator(); iter.hasNext();) {
-					if (key.equalsIgnoreCase((String) iter.next())) {
-						continue add;
-					}
-				}
-				all.add(service.getProperty(key));
-			}
-			return Collections.enumeration(all);
-		}
-
-		public Object put(Object key, Object value) {
-			throw new UnsupportedOperationException();
-		}
-
-		public Object remove(Object key) {
-			throw new UnsupportedOperationException();
-		}
-	}
-}
-
-/**
- * Stores a set of ServicePermission permissions.
- * 
- * @see java.security.Permission
- * @see java.security.Permissions
- * @see java.security.PermissionCollection
- */
-final class ServicePermissionCollection extends PermissionCollection {
-	static final long	serialVersionUID	= 662615640374640621L;
-	/**
-	 * Table of permissions.
-	 * 
-	 * @GuardedBy this
-	 */
-	private transient Map	permissions;
-
-	/**
-	 * Boolean saying if "*" is in the collection.
-	 * 
-	 * @serial
-	 * @GuardedBy this
-	 */
-	private boolean		all_allowed;
-
-	/**
-	 * Table of permissions with filter expressions.
-	 * 
-	 * @serial
-	 * @GuardedBy this
-	 */
-	private Map				filterPermissions;
-
-	/**
-	 * Creates an empty ServicePermissions object.
-	 */
-	public ServicePermissionCollection() {
-		permissions = new HashMap();
-		all_allowed = false;
-	}
-
-	/**
-	 * Adds a permission to this permission collection.
-	 * 
-	 * @param permission The Permission object to add.
-	 * @throws IllegalArgumentException If the specified permission is not a
-	 *         ServicePermission object.
-	 * @throws SecurityException If this
-	 *         <code>ServicePermissionCollection</code> object has been marked
-	 *         read-only.
-	 */
-	public void add(final Permission permission) {
-		if (!(permission instanceof ServicePermission)) {
-			throw new IllegalArgumentException("invalid permission: "
-					+ permission);
-		}
-		if (isReadOnly()) {
-			throw new SecurityException("attempt to add a Permission to a "
-					+ "readonly PermissionCollection");
-		}
-
-		final ServicePermission sp = (ServicePermission) permission;
-		if (sp.service != null) {
-			throw new IllegalArgumentException("cannot add to collection: "
-					+ sp);
-		}
-		
-		final String name = sp.getName();
-		final Filter f = sp.filter;
-		synchronized (this) {
-			/* select the bucket for the permission */
-			Map pc;
-			if (f != null) {
-				pc = filterPermissions;
-				if (pc == null) {
-					filterPermissions = pc = new HashMap();
-				}
-			}
-			else {
-				pc = permissions;
-			}
-			final ServicePermission existing = (ServicePermission) pc.get(name);
-			
-			if (existing != null) {
-				final int oldMask = existing.action_mask;
-				final int newMask = sp.action_mask;
-				if (oldMask != newMask) {
-					pc
-							.put(name, new ServicePermission(name, oldMask
-							| newMask));
-				}
-			}
-			else {
-				pc.put(name, sp);
-			}
-			
-			if (!all_allowed) {
-				if (name.equals("*")) {
-					all_allowed = true;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Determines if a set of permissions implies the permissions expressed in
-	 * <code>permission</code>.
-	 * 
-	 * @param permission The Permission object to compare.
-	 * @return <code>true</code> if <code>permission</code> is a proper
-	 *         subset of a permission in the set; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean implies(final Permission permission) {
-		if (!(permission instanceof ServicePermission)) {
-			return false;
-		}
-		final ServicePermission requested = (ServicePermission) permission;
-		/* if requested permission has a filter, then it is an invalid argument */
-		if (requested.filter != null) {
-			return false;
-		}
-
-		int effective = ServicePermission.ACTION_NONE;
-		Collection perms;
-		synchronized (this) {
-			final int desired = requested.action_mask;
-			/* short circuit if the "*" Permission was added */
-			if (all_allowed) {
-				ServicePermission sp = (ServicePermission) permissions.get("*");
-				if (sp != null) {
-					effective |= sp.action_mask;
-					if ((effective & desired) == desired) {
-						return true;
-					}
-				}
-			}
-			
-			String[] requestedNames = requested.objectClass;
-			/* if requested permission not created with ServiceReference */
-			if (requestedNames == null) {
-				effective |= effective(requested.getName(), desired, effective);
-				if ((effective & desired) == desired) {
-					return true;
-				}
-			}
-			/* requested permission created with ServiceReference */
-			else {
-				for (int i = 0, l = requestedNames.length; i < l; i++) {
-					if ((effective(requestedNames[i], desired, effective) & desired) == desired) {
-						return true;
-					}
-				}
-			}
-			Map pc = filterPermissions;
-			if (pc == null) {
-				return false;
-			}
-			perms = pc.values();
-		}
-		
-		/* iterate one by one over filteredPermissions */
-		for (Iterator iter = perms.iterator(); iter.hasNext();) {
-			if (((ServicePermission) iter.next())
-					.implies0(requested, effective)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Consult permissions map to compute the effective permission for the
-	 * requested permission name.
-	 * 
-	 * @param requestedName The requested service name.
-	 * @param desired The desired actions.
-	 * @param effective The effective actions.
-	 * @return The new effective actions.
-	 */
-	private int effective(String requestedName, final int desired,
-			int effective) {
-		final Map pc = permissions;
-		ServicePermission sp = (ServicePermission) pc.get(requestedName);
-		// strategy:
-		// Check for full match first. Then work our way up the
-		// name looking for matches on a.b.*
-		if (sp != null) {
-			// we have a direct hit!
-			effective |= sp.action_mask;
-			if ((effective & desired) == desired) {
-				return effective;
-			}
-		}
-		// work our way up the tree...
-		int last;
-		int offset = requestedName.length() - 1;
-		while ((last = requestedName.lastIndexOf(".", offset)) != -1) {
-			requestedName = requestedName.substring(0, last + 1) + "*";
-			sp = (ServicePermission) pc.get(requestedName);
-			if (sp != null) {
-				effective |= sp.action_mask;
-				if ((effective & desired) == desired) {
-					return effective;
-				}
-			}
-			offset = last - 1;
-		}
-		/*
-		 * we don't have to check for "*" as it was already checked before we
-		 * were called.
-		 */
-		return effective;
-	}
-	
-	/**
-	 * Returns an enumeration of all the <code>ServicePermission</code>
-	 * objects in the container.
-	 * 
-	 * @return Enumeration of all the ServicePermission objects.
-	 */
-	public synchronized Enumeration elements() {
-		List all = new ArrayList(permissions.values());
-		Map pc = filterPermissions;
-		if (pc != null) {
-			all.addAll(pc.values());
-		}
-		return Collections.enumeration(all);
-	}
-	
-	/* serialization logic */
-	private static final ObjectStreamField[]	serialPersistentFields	= {
-			new ObjectStreamField("permissions", Hashtable.class),
-			new ObjectStreamField("all_allowed", Boolean.TYPE),
-			new ObjectStreamField("filterPermissions", HashMap.class)	};
-
-	private synchronized void writeObject(ObjectOutputStream out)
-			throws IOException {
-		Hashtable hashtable = new Hashtable(permissions);
-		ObjectOutputStream.PutField pfields = out.putFields();
-		pfields.put("permissions", hashtable);
-		pfields.put("all_allowed", all_allowed);
-		pfields.put("filterPermissions", filterPermissions);
-		out.writeFields();
-	}
-
-	private synchronized void readObject(java.io.ObjectInputStream in)
-			throws IOException, ClassNotFoundException {
-		ObjectInputStream.GetField gfields = in.readFields();
-		Hashtable hashtable = (Hashtable) gfields.get("permissions", null);
-		permissions = new HashMap(hashtable);
-		all_allowed = gfields.get("all_allowed", false);
-		filterPermissions = (HashMap) gfields.get("filterPermissions", null);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java
deleted file mode 100644
index a6dd9bd..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.Dictionary;
-
-/**
- * A reference to a service.
- * 
- * <p>
- * The Framework returns <code>ServiceReference</code> objects from the
- * <code>BundleContext.getServiceReference</code> and
- * <code>BundleContext.getServiceReferences</code> methods.
- * <p>
- * A <code>ServiceReference</code> object may be shared between bundles and
- * can be used to examine the properties of the service and to get the service
- * object.
- * <p>
- * Every service registered in the Framework has a unique
- * <code>ServiceRegistration</code> object and may have multiple, distinct
- * <code>ServiceReference</code> objects referring to it.
- * <code>ServiceReference</code> objects associated with a
- * <code>ServiceRegistration</code> object have the same <code>hashCode</code>
- * and are considered equal (more specifically, their <code>equals()</code>
- * method will return <code>true</code> when compared).
- * <p>
- * If the same service object is registered multiple times,
- * <code>ServiceReference</code> objects associated with different
- * <code>ServiceRegistration</code> objects are not equal.
- * 
- * @see BundleContext#getServiceReference
- * @see BundleContext#getServiceReferences
- * @see BundleContext#getService
- * @ThreadSafe
- * @version $Revision: 6374 $
- */
-
-public interface ServiceReference extends Comparable {
-	/**
-	 * Returns the property value to which the specified property key is mapped
-	 * in the properties <code>Dictionary</code> object of the service
-	 * referenced by this <code>ServiceReference</code> object.
-	 * 
-	 * <p>
-	 * Property keys are case-insensitive.
-	 * 
-	 * <p>
-	 * This method must continue to return property values after the service has
-	 * been unregistered. This is so references to unregistered services (for
-	 * example, <code>ServiceReference</code> objects stored in the log) can
-	 * still be interrogated.
-	 * 
-	 * @param key The property key.
-	 * @return The property value to which the key is mapped; <code>null</code>
-	 *         if there is no property named after the key.
-	 */
-	public Object getProperty(String key);
-
-	/**
-	 * Returns an array of the keys in the properties <code>Dictionary</code>
-	 * object of the service referenced by this <code>ServiceReference</code>
-	 * object.
-	 * 
-	 * <p>
-	 * This method will continue to return the keys after the service has been
-	 * unregistered. This is so references to unregistered services (for
-	 * example, <code>ServiceReference</code> objects stored in the log) can
-	 * still be interrogated.
-	 * 
-	 * <p>
-	 * This method is <i>case-preserving </i>; this means that every key in the
-	 * returned array must have the same case as the corresponding key in the
-	 * properties <code>Dictionary</code> that was passed to the
-	 * {@link BundleContext#registerService(String[],Object,Dictionary)} or
-	 * {@link ServiceRegistration#setProperties} methods.
-	 * 
-	 * @return An array of property keys.
-	 */
-	public String[] getPropertyKeys();
-
-	/**
-	 * Returns the bundle that registered the service referenced by this
-	 * <code>ServiceReference</code> object.
-	 * 
-	 * <p>
-	 * This method must return <code>null</code> when the service has been
-	 * unregistered. This can be used to determine if the service has been
-	 * unregistered.
-	 * 
-	 * @return The bundle that registered the service referenced by this
-	 *         <code>ServiceReference</code> object; <code>null</code> if that
-	 *         service has already been unregistered.
-	 * @see BundleContext#registerService(String[],Object,Dictionary)
-	 */
-	public Bundle getBundle();
-
-	/**
-	 * Returns the bundles that are using the service referenced by this
-	 * <code>ServiceReference</code> object. Specifically, this method returns
-	 * the bundles whose usage count for that service is greater than zero.
-	 * 
-	 * @return An array of bundles whose usage count for the service referenced
-	 *         by this <code>ServiceReference</code> object is greater than
-	 *         zero; <code>null</code> if no bundles are currently using that
-	 *         service.
-	 * 
-	 * @since 1.1
-	 */
-	public Bundle[] getUsingBundles();
-
-	/**
-	 * Tests if the bundle that registered the service referenced by this
-	 * <code>ServiceReference</code> and the specified bundle use the same
-	 * source for the package of the specified class name.
-	 * <p>
-	 * This method performs the following checks:
-	 * <ol>
-	 * <li>Get the package name from the specified class name.</li>
-	 * <li>For the bundle that registered the service referenced by this
-	 * <code>ServiceReference</code> (registrant bundle); find the source for
-	 * the package. If no source is found then return <code>true</code> if the
-	 * registrant bundle is equal to the specified bundle; otherwise return
-	 * <code>false</code>.</li>
-	 * <li>If the package source of the registrant bundle is equal to the
-	 * package source of the specified bundle then return <code>true</code>;
-	 * otherwise return <code>false</code>.</li>
-	 * </ol>
-	 * 
-	 * @param bundle The <code>Bundle</code> object to check.
-	 * @param className The class name to check.
-	 * @return <code>true</code> if the bundle which registered the service
-	 *         referenced by this <code>ServiceReference</code> and the
-	 *         specified bundle use the same source for the package of the
-	 *         specified class name. Otherwise <code>false</code> is returned.
-	 * @throws IllegalArgumentException If the specified <code>Bundle</code> was
-	 *         not created by the same framework instance as this
-	 *         <code>ServiceReference</code>.
-	 * @since 1.3
-	 */
-	public boolean isAssignableTo(Bundle bundle, String className);
-
-	/**
-	 * Compares this <code>ServiceReference</code> with the specified
-	 * <code>ServiceReference</code> for order.
-	 * 
-	 * <p>
-	 * If this <code>ServiceReference</code> and the specified
-	 * <code>ServiceReference</code> have the same {@link Constants#SERVICE_ID
-	 * service id} they are equal. This <code>ServiceReference</code> is less
-	 * than the specified <code>ServiceReference</code> if it has a lower
-	 * {@link Constants#SERVICE_RANKING service ranking} and greater if it has a
-	 * higher service ranking. Otherwise, if this <code>ServiceReference</code>
-	 * and the specified <code>ServiceReference</code> have the same
-	 * {@link Constants#SERVICE_RANKING service ranking}, this
-	 * <code>ServiceReference</code> is less than the specified
-	 * <code>ServiceReference</code> if it has a higher
-	 * {@link Constants#SERVICE_ID service id} and greater if it has a lower
-	 * service id.
-	 * 
-	 * @param reference The <code>ServiceReference</code> to be compared.
-	 * @return Returns a negative integer, zero, or a positive integer if this
-	 *         <code>ServiceReference</code> is less than, equal to, or greater
-	 *         than the specified <code>ServiceReference</code>.
-	 * @throws IllegalArgumentException If the specified
-	 *         <code>ServiceReference</code> was not created by the same
-	 *         framework instance as this <code>ServiceReference</code>.
-	 * @since 1.4
-	 */
-	public int compareTo(Object reference);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceRegistration.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceRegistration.java
deleted file mode 100644
index 9186cf7..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceRegistration.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.Dictionary;
-
-/**
- * A registered service.
- * 
- * <p>
- * The Framework returns a <code>ServiceRegistration</code> object when a
- * <code>BundleContext.registerService</code> method invocation is successful.
- * The <code>ServiceRegistration</code> object is for the private use of the
- * registering bundle and should not be shared with other bundles.
- * <p>
- * The <code>ServiceRegistration</code> object may be used to update the
- * properties of the service or to unregister the service.
- * 
- * @see BundleContext#registerService(String[],Object,Dictionary)
- * @ThreadSafe
- * @version $Revision: 6361 $
- */
-
-public interface ServiceRegistration {
-	/**
-	 * Returns a <code>ServiceReference</code> object for a service being
-	 * registered.
-	 * <p>
-	 * The <code>ServiceReference</code> object may be shared with other
-	 * bundles.
-	 * 
-	 * @throws IllegalStateException If this
-	 *         <code>ServiceRegistration</code> object has already been
-	 *         unregistered.
-	 * @return <code>ServiceReference</code> object.
-	 */
-	public ServiceReference getReference();
-
-	/**
-	 * Updates the properties associated with a service.
-	 * 
-	 * <p>
-	 * The {@link Constants#OBJECTCLASS} and {@link Constants#SERVICE_ID} keys
-	 * cannot be modified by this method. These values are set by the Framework
-	 * when the service is registered in the OSGi environment.
-	 * 
-	 * <p>
-	 * The following steps are required to modify service properties:
-	 * <ol>
-	 * <li>The service's properties are replaced with the provided properties.
-	 * <li>A service event of type {@link ServiceEvent#MODIFIED} is fired.
-	 * </ol>
-	 * 
-	 * @param properties The properties for this service. See {@link Constants}
-	 *        for a list of standard service property keys. Changes should not
-	 *        be made to this object after calling this method. To update the
-	 *        service's properties this method should be called again.
-	 * 
-	 * @throws IllegalStateException If this <code>ServiceRegistration</code>
-	 *         object has already been unregistered.
-	 * @throws IllegalArgumentException If <code>properties</code> contains
-	 *         case variants of the same key name.
-	 */
-	public void setProperties(Dictionary properties);
-
-	/**
-	 * Unregisters a service. Remove a <code>ServiceRegistration</code> object
-	 * from the Framework service registry. All <code>ServiceReference</code>
-	 * objects associated with this <code>ServiceRegistration</code> object
-	 * can no longer be used to interact with the service once unregistration is
-	 * complete.
-	 * 
-	 * <p>
-	 * The following steps are required to unregister a service:
-	 * <ol>
-	 * <li>The service is removed from the Framework service registry so that
-	 * it can no longer be obtained.
-	 * <li>A service event of type {@link ServiceEvent#UNREGISTERING} is fired
-	 * so that bundles using this service can release their use of the service.
-	 * Once delivery of the service event is complete, the
-	 * <code>ServiceReference</code> objects for the service may no longer be
-	 * used to get a service object for the service.
-	 * <li>For each bundle whose use count for this service is greater than
-	 * zero: <br>
-	 * The bundle's use count for this service is set to zero. <br>
-	 * If the service was registered with a {@link ServiceFactory} object, the
-	 * <code>ServiceFactory.ungetService</code> method is called to release
-	 * the service object for the bundle.
-	 * </ol>
-	 * 
-	 * @throws IllegalStateException If this
-	 *         <code>ServiceRegistration</code> object has already been
-	 *         unregistered.
-	 * @see BundleContext#ungetService
-	 * @see ServiceFactory#ungetService
-	 */
-	public void unregister();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java
deleted file mode 100644
index 2ba0389..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SignerProperty.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Package private class used by permissions for filter matching on signer key
- * during filter expression evaluation in the permission implies method.
- * 
- * @Immutable
- * @version $Revision: 6479 $
- */
-class SignerProperty {
-	private final Bundle	bundle;
-	private final String	pattern;
-
-	/**
-	 * String constructor used by the filter matching algorithm to construct a
-	 * SignerProperty from the attribute value in a filter expression.
-	 * 
-	 * @param pattern Attribute value in the filter expression.
-	 */
-	public SignerProperty(String pattern) {
-		this.pattern = pattern;
-		this.bundle = null;
-	}
-
-	/**
-	 * Used by the permission implies method to build the properties for a
-	 * filter match.
-	 * 
-	 * @param bundle The bundle whose signers are to be matched.
-	 */
-	SignerProperty(Bundle bundle) {
-		this.bundle = bundle;
-		this.pattern = null;
-	}
-
-	/**
-	 * Used by the filter matching algorithm. This methods does NOT satisfy the
-	 * normal equals contract. Since the class is only used in filter expression
-	 * evaluations, it only needs to support comparing an instance created with
-	 * a Bundle to an instance created with a pattern string from the filter
-	 * expression.
-	 * 
-	 * @param o SignerProperty to compare against.
-	 * @return true if the DN name chain matches the pattern.
-	 */
-	public boolean equals(Object o) {
-		if (!(o instanceof SignerProperty))
-			return false;
-		SignerProperty other = (SignerProperty) o;
-		Bundle matchBundle = bundle != null ? bundle : other.bundle;
-		String matchPattern = bundle != null ? other.pattern : pattern;
-		Map/* <X509Certificate, List<X509Certificate>> */signers = matchBundle
-				.getSignerCertificates(Bundle.SIGNERS_TRUSTED);
-		for (Iterator iSigners = signers.values().iterator(); iSigners
-				.hasNext();) {
-			List/* <X509Certificate> */signerCerts = (List) iSigners.next();
-			List/* <String> */dnChain = new ArrayList(signerCerts.size());
-			for (Iterator iCerts = signerCerts.iterator(); iCerts.hasNext();) {
-				dnChain.add(((X509Certificate) iCerts.next()).getSubjectDN()
-						.getName());
-			}
-			if (FrameworkUtil
-					.matchDistinguishedNameChain(matchPattern, dnChain)) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-	/**
-	 * Since the equals method does not obey the general equals contract, this
-	 * method cannot generate hash codes which obey the equals contract.
-	 */
-	public int hashCode() {
-		return 31;
-	}
-
-	/**
-	 * Check if the bundle is signed.
-	 * 
-	 * @return true if constructed with a bundle that is signed.
-	 */
-	boolean isBundleSigned() {
-		if (bundle == null) {
-			return false;
-		}
-		Map/* <X509Certificate, List<X509Certificate>> */signers = bundle
-				.getSignerCertificates(Bundle.SIGNERS_TRUSTED);
-		return !signers.isEmpty();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SynchronousBundleListener.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SynchronousBundleListener.java
deleted file mode 100644
index 9104f04..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SynchronousBundleListener.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-/**
- * A synchronous <code>BundleEvent</code> listener.
- * <code>SynchronousBundleListener</code> is a listener interface that may be
- * implemented by a bundle developer. When a <code>BundleEvent</code> is
- * fired, it is synchronously delivered to a
- * <code>SynchronousBundleListener</code>. The Framework may deliver
- * <code>BundleEvent</code> objects to a
- * <code>SynchronousBundleListener</code> out of order and may concurrently
- * call and/or reenter a <code>SynchronousBundleListener</code>.
- * <p>
- * A <code>SynchronousBundleListener</code> object is registered with the
- * Framework using the {@link BundleContext#addBundleListener} method.
- * <code>SynchronousBundleListener</code> objects are called with a
- * <code>BundleEvent</code> object when a bundle has been installed, resolved,
- * starting, started, stopping, stopped, updated, unresolved, or uninstalled.
- * <p>
- * Unlike normal <code>BundleListener</code> objects,
- * <code>SynchronousBundleListener</code>s are synchronously called during
- * bundle lifecycle processing. The bundle lifecycle processing will not proceed
- * until all <code>SynchronousBundleListener</code>s have completed.
- * <code>SynchronousBundleListener</code> objects will be called prior to
- * <code>BundleListener</code> objects.
- * <p>
- * <code>AdminPermission[bundle,LISTENER]</code> is required to add or remove
- * a <code>SynchronousBundleListener</code> object.
- * 
- * @since 1.1
- * @see BundleEvent
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-
-public interface SynchronousBundleListener extends BundleListener {
-	// This is a marker interface
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java
deleted file mode 100644
index 7317495..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework;
-
-import java.util.NoSuchElementException;
-import java.util.StringTokenizer;
-
-/**
- * Version identifier for bundles and packages.
- * 
- * <p>
- * Version identifiers have four components.
- * <ol>
- * <li>Major version. A non-negative integer.</li>
- * <li>Minor version. A non-negative integer.</li>
- * <li>Micro version. A non-negative integer.</li>
- * <li>Qualifier. A text string. See <code>Version(String)</code> for the
- * format of the qualifier string.</li>
- * </ol>
- * 
- * <p>
- * <code>Version</code> objects are immutable.
- * 
- * @since 1.3
- * @Immutable
- * @version $Revision: 6860 $
- */
-
-public class Version implements Comparable {
-	private final int			major;
-	private final int			minor;
-	private final int			micro;
-	private final String		qualifier;
-	private static final String	SEPARATOR		= ".";					//$NON-NLS-1$
-
-	/**
-	 * The empty version "0.0.0".
-	 */
-	public static final Version	emptyVersion	= new Version(0, 0, 0);
-
-	/**
-	 * Creates a version identifier from the specified numerical components.
-	 * 
-	 * <p>
-	 * The qualifier is set to the empty string.
-	 * 
-	 * @param major Major component of the version identifier.
-	 * @param minor Minor component of the version identifier.
-	 * @param micro Micro component of the version identifier.
-	 * @throws IllegalArgumentException If the numerical components are
-	 *         negative.
-	 */
-	public Version(int major, int minor, int micro) {
-		this(major, minor, micro, null);
-	}
-
-	/**
-	 * Creates a version identifier from the specified components.
-	 * 
-	 * @param major Major component of the version identifier.
-	 * @param minor Minor component of the version identifier.
-	 * @param micro Micro component of the version identifier.
-	 * @param qualifier Qualifier component of the version identifier. If
-	 *        <code>null</code> is specified, then the qualifier will be set to
-	 *        the empty string.
-	 * @throws IllegalArgumentException If the numerical components are negative
-	 *         or the qualifier string is invalid.
-	 */
-	public Version(int major, int minor, int micro, String qualifier) {
-		if (qualifier == null) {
-			qualifier = ""; //$NON-NLS-1$
-		}
-
-		this.major = major;
-		this.minor = minor;
-		this.micro = micro;
-		this.qualifier = qualifier;
-		validate();
-	}
-
-	/**
-	 * Created a version identifier from the specified string.
-	 * 
-	 * <p>
-	 * Here is the grammar for version strings.
-	 * 
-	 * <pre>
-	 * version ::= major('.'minor('.'micro('.'qualifier)?)?)?
-	 * major ::= digit+
-	 * minor ::= digit+
-	 * micro ::= digit+
-	 * qualifier ::= (alpha|digit|'_'|'-')+
-	 * digit ::= [0..9]
-	 * alpha ::= [a..zA..Z]
-	 * </pre>
-	 * 
-	 * There must be no whitespace in version.
-	 * 
-	 * @param version String representation of the version identifier.
-	 * @throws IllegalArgumentException If <code>version</code> is improperly
-	 *         formatted.
-	 */
-	public Version(String version) {
-		int maj = 0;
-		int min = 0;
-		int mic = 0;
-		String qual = ""; //$NON-NLS-1$
-
-		try {
-			StringTokenizer st = new StringTokenizer(version, SEPARATOR, true);
-			maj = Integer.parseInt(st.nextToken());
-
-			if (st.hasMoreTokens()) {
-				st.nextToken(); // consume delimiter
-				min = Integer.parseInt(st.nextToken());
-
-				if (st.hasMoreTokens()) {
-					st.nextToken(); // consume delimiter
-					mic = Integer.parseInt(st.nextToken());
-
-					if (st.hasMoreTokens()) {
-						st.nextToken(); // consume delimiter
-						qual = st.nextToken();
-
-						if (st.hasMoreTokens()) {
-							throw new IllegalArgumentException("invalid format"); //$NON-NLS-1$
-						}
-					}
-				}
-			}
-		}
-		catch (NoSuchElementException e) {
-			throw new IllegalArgumentException("invalid format"); //$NON-NLS-1$
-		}
-
-		major = maj;
-		minor = min;
-		micro = mic;
-		qualifier = qual;
-		validate();
-	}
-
-	/**
-	 * Called by the Version constructors to validate the version components.
-	 * 
-	 * @throws IllegalArgumentException If the numerical components are negative
-	 *         or the qualifier string is invalid.
-	 */
-	private void validate() {
-		if (major < 0) {
-			throw new IllegalArgumentException("negative major"); //$NON-NLS-1$
-		}
-		if (minor < 0) {
-			throw new IllegalArgumentException("negative minor"); //$NON-NLS-1$
-		}
-		if (micro < 0) {
-			throw new IllegalArgumentException("negative micro"); //$NON-NLS-1$
-		}
-		char[] chars = qualifier.toCharArray();
-		for (int i = 0, length = chars.length; i < length; i++) {
-	        char ch = chars[i];
-			if (('A' <= ch) && (ch <= 'Z')) {
-				continue;
-			}
-			if (('a' <= ch) && (ch <= 'z')) {
-				continue;
-			}
-			if (('0' <= ch) && (ch <= '9')) {
-				continue;
-			}
-			if ((ch == '_') || (ch == '-')) {
-				continue;
-			}
-			throw new IllegalArgumentException(
-					"invalid qualifier: " + qualifier); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Parses a version identifier from the specified string.
-	 * 
-	 * <p>
-	 * See <code>Version(String)</code> for the format of the version string.
-	 * 
-	 * @param version String representation of the version identifier. Leading
-	 *        and trailing whitespace will be ignored.
-	 * @return A <code>Version</code> object representing the version
-	 *         identifier. If <code>version</code> is <code>null</code> or
-	 *         the empty string then <code>emptyVersion</code> will be
-	 *         returned.
-	 * @throws IllegalArgumentException If <code>version</code> is improperly
-	 *         formatted.
-	 */
-	public static Version parseVersion(String version) {
-		if (version == null) {
-			return emptyVersion;
-		}
-
-		version = version.trim();
-		if (version.length() == 0) {
-			return emptyVersion;
-		}
-
-		return new Version(version);
-	}
-
-	/**
-	 * Returns the major component of this version identifier.
-	 * 
-	 * @return The major component.
-	 */
-	public int getMajor() {
-		return major;
-	}
-
-	/**
-	 * Returns the minor component of this version identifier.
-	 * 
-	 * @return The minor component.
-	 */
-	public int getMinor() {
-		return minor;
-	}
-
-	/**
-	 * Returns the micro component of this version identifier.
-	 * 
-	 * @return The micro component.
-	 */
-	public int getMicro() {
-		return micro;
-	}
-
-	/**
-	 * Returns the qualifier component of this version identifier.
-	 * 
-	 * @return The qualifier component.
-	 */
-	public String getQualifier() {
-		return qualifier;
-	}
-
-	/**
-	 * Returns the string representation of this version identifier.
-	 * 
-	 * <p>
-	 * The format of the version string will be <code>major.minor.micro</code>
-	 * if qualifier is the empty string or
-	 * <code>major.minor.micro.qualifier</code> otherwise.
-	 * 
-	 * @return The string representation of this version identifier.
-	 */
-	public String toString() {
-		int q = qualifier.length();
-		StringBuffer result = new StringBuffer(20 + q);
-		result.append(major);
-		result.append(SEPARATOR);
-		result.append(minor);
-		result.append(SEPARATOR);
-		result.append(micro);
-		if (q > 0) {
-			result.append(SEPARATOR);
-			result.append(qualifier);
-		}
-		return result.toString();
-	}
-
-	/**
-	 * Returns a hash code value for the object.
-	 * 
-	 * @return An integer which is a hash code value for this object.
-	 */
-	public int hashCode() {
-		return (major << 24) + (minor << 16) + (micro << 8)
-				+ qualifier.hashCode();
-	}
-
-	/**
-	 * Compares this <code>Version</code> object to another object.
-	 * 
-	 * <p>
-	 * A version is considered to be <b>equal to </b> another version if the
-	 * major, minor and micro components are equal and the qualifier component
-	 * is equal (using <code>String.equals</code>).
-	 * 
-	 * @param object The <code>Version</code> object to be compared.
-	 * @return <code>true</code> if <code>object</code> is a
-	 *         <code>Version</code> and is equal to this object;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean equals(Object object) {
-		if (object == this) { // quicktest
-			return true;
-		}
-
-		if (!(object instanceof Version)) {
-			return false;
-		}
-
-		Version other = (Version) object;
-		return (major == other.major) && (minor == other.minor)
-				&& (micro == other.micro) && qualifier.equals(other.qualifier);
-	}
-
-	/**
-	 * Compares this <code>Version</code> object to another object.
-	 * 
-	 * <p>
-	 * A version is considered to be <b>less than </b> another version if its
-	 * major component is less than the other version's major component, or the
-	 * major components are equal and its minor component is less than the other
-	 * version's minor component, or the major and minor components are equal
-	 * and its micro component is less than the other version's micro component,
-	 * or the major, minor and micro components are equal and it's qualifier
-	 * component is less than the other version's qualifier component (using
-	 * <code>String.compareTo</code>).
-	 * 
-	 * <p>
-	 * A version is considered to be <b>equal to</b> another version if the
-	 * major, minor and micro components are equal and the qualifier component
-	 * is equal (using <code>String.compareTo</code>).
-	 * 
-	 * @param object The <code>Version</code> object to be compared.
-	 * @return A negative integer, zero, or a positive integer if this object is
-	 *         less than, equal to, or greater than the specified
-	 *         <code>Version</code> object.
-	 * @throws ClassCastException If the specified object is not a
-	 *         <code>Version</code>.
-	 */
-	public int compareTo(Object object) {
-		if (object == this) { // quicktest
-			return 0;
-		}
-
-		Version other = (Version) object;
-
-		int result = major - other.major;
-		if (result != 0) {
-			return result;
-		}
-
-		result = minor - other.minor;
-		if (result != 0) {
-			return result;
-		}
-
-		result = micro - other.micro;
-		if (result != 0) {
-			return result;
-		}
-
-		return qualifier.compareTo(other.qualifier);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/EventHook.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/EventHook.java
deleted file mode 100644
index 1249493..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/EventHook.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework.hooks.service;
-
-import java.util.Collection;
-
-import org.osgi.framework.ServiceEvent;
-
-/**
- * OSGi Framework Service Event Hook Service.
- * 
- * <p>
- * Bundles registering this service will be called during framework service
- * (register, modify, and unregister service) operations.
- * 
- * @ThreadSafe
- * @version $Revision: 6967 $
- */
-
-public interface EventHook {
-	/**
-	 * Event hook method. This method is called prior to service event delivery
-	 * when a publishing bundle registers, modifies or unregisters a service.
-	 * This method can filter the bundles which receive the event.
-	 * 
-	 * @param event The service event to be delivered.
-	 * @param contexts A <code>Collection</code> of Bundle Contexts for bundles
-	 *        which have listeners to which the specified event will be
-	 *        delivered. The implementation of this method may remove bundle
-	 *        contexts from the collection to prevent the event from being
-	 *        delivered to the associated bundles. The collection supports all
-	 *        the optional <code>Collection</code> operations except
-	 *        <code>add</code> and <code>addAll</code>. Attempting to add to the
-	 *        collection will result in an
-	 *        <code>UnsupportedOperationException</code>. The collection is not
-	 *        synchronized.
-	 */
-	void event(ServiceEvent event,
-			Collection/* <BundleContext> */contexts);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/FindHook.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/FindHook.java
deleted file mode 100644
index 0de1f0b..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/FindHook.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework.hooks.service;
-
-import java.util.Collection;
-
-import org.osgi.framework.BundleContext;
-
-/**
- * OSGi Framework Service Find Hook Service.
- * 
- * <p>
- * Bundles registering this service will be called during framework service find
- * (get service references) operations.
- * 
- * @ThreadSafe
- * @version $Revision: 6967 $
- */
-
-public interface FindHook {
-	/**
-	 * Find hook method. This method is called during the service find operation
-	 * (for example, {@link BundleContext#getServiceReferences(String, String)}
-	 * ). This method can filter the result of the find operation.
-	 * 
-	 * @param context The bundle context of the bundle performing the find
-	 *        operation.
-	 * @param name The class name of the services to find or <code>null</code>
-	 *        to find all services.
-	 * @param filter The filter criteria of the services to find or
-	 *        <code>null</code> for no filter criteria.
-	 * @param allServices <code>true</code> if the find operation is the result
-	 *        of a call to
-	 *        {@link BundleContext#getAllServiceReferences(String, String)}
-	 * @param references A <code>Collection</code> of Service References to be
-	 *        returned as a result of the find operation. The implementation of
-	 *        this method may remove service references from the collection to
-	 *        prevent the references from being returned to the bundle
-	 *        performing the find operation. The collection supports all the
-	 *        optional <code>Collection</code> operations except
-	 *        <code>add</code> and <code>addAll</code>. Attempting to add to the
-	 *        collection will result in an
-	 *        <code>UnsupportedOperationException</code>. The collection is not
-	 *        synchronized.
-	 */
-	void find(BundleContext context, String name, String filter,
-			boolean allServices,
-			Collection/* <ServiceReference> */references);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/ListenerHook.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/ListenerHook.java
deleted file mode 100644
index 5934c0c..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/hooks/service/ListenerHook.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework.hooks.service;
-
-import java.util.Collection;
-
-import org.osgi.framework.BundleContext;
-
-/**
- * OSGi Framework Service Listener Hook Service.
- * 
- * <p>
- * Bundles registering this service will be called during service listener
- * addition and removal.
- * 
- * @ThreadSafe
- * @version $Revision: 6967 $
- */
-
-public interface ListenerHook {
-	/**
-	 * Added listeners hook method. This method is called to provide the hook
-	 * implementation with information on newly added service listeners. This
-	 * method will be called as service listeners are added while this hook is
-	 * registered. Also, immediately after registration of this hook, this
-	 * method will be called to provide the current collection of service
-	 * listeners which had been added prior to the hook being registered.
-	 * 
-	 * @param listeners A <code>Collection</code> of {@link ListenerInfo}s for
-	 *        newly added service listeners which are now listening to service
-	 *        events. Attempting to add to or remove from the collection will
-	 *        result in an <code>UnsupportedOperationException</code>. The
-	 *        collection is not synchronized.
-	 */
-	void added(Collection/* <ListenerInfo> */listeners);
-
-	/**
-	 * Removed listeners hook method. This method is called to provide the hook
-	 * implementation with information on newly removed service listeners. This
-	 * method will be called as service listeners are removed while this hook is
-	 * registered.
-	 * 
-	 * @param listeners A <code>Collection</code> of {@link ListenerInfo}s for
-	 *        newly removed service listeners which are no longer listening to
-	 *        service events. Attempting to add to or remove from the collection
-	 *        will result in an <code>UnsupportedOperationException</code>. The
-	 *        collection is not synchronized.
-	 */
-	void removed(Collection/* <ListenerInfo> */listeners);
-
-	/**
-	 * Information about a Service Listener. This interface describes the bundle
-	 * which added the Service Listener and the filter with which it was added.
-	 * 
-	 * @ThreadSafe
-	 */
-	public interface ListenerInfo {
-		/**
-		 * Return the context of the bundle which added the listener.
-		 * 
-		 * @return The context of the bundle which added the listener.
-		 */
-		BundleContext getBundleContext();
-
-		/**
-		 * Return the filter string with which the listener was added.
-		 * 
-		 * @return The filter string with which the listener was added. This may
-		 *         be <code>null</code> if the listener was added without a
-		 *         filter.
-		 */
-		String getFilter();
-
-		/**
-		 * Return the state of the listener for this addition and removal life
-		 * cycle. Initially this method will return <code>false</code>
-		 * indicating the listener has been added but has not been removed.
-		 * After the listener has been removed, this method must always return
-		 * <code>true</code>.
-		 * 
-		 * <p>
-		 * There is an extremely rare case in which removed notification to
-		 * {@link ListenerHook}s can be made before added notification if two
-		 * threads are racing to add and remove the same service listener.
-		 * Because {@link ListenerHook}s are called synchronously during service
-		 * listener addition and removal, the Framework cannot guarantee
-		 * in-order delivery of added and removed notification for a given
-		 * service listener. This method can be used to detect this rare
-		 * occurrence.
-		 * 
-		 * @return <code>false</code> if the listener has not been been removed,
-		 *         <code>true</code> otherwise.
-		 */
-		boolean isRemoved();
-
-		/**
-		 * Compares this <code>ListenerInfo</code> to another
-		 * <code>ListenerInfo</code>. Two <code>ListenerInfo</code>s are equals
-		 * if they refer to the same listener for a given addition and removal
-		 * life cycle. If the same listener is added again, it must have a
-		 * different <code>ListenerInfo</code> which is not equal to this
-		 * <code>ListenerInfo</code>.
-		 * 
-		 * @param obj The object to compare against this
-		 *        <code>ListenerInfo</code>.
-		 * @return <code>true</code> if the other object is a
-		 *         <code>ListenerInfo</code> object and both objects refer to
-		 *         the same listener for a given addition and removal life
-		 *         cycle.
-		 */
-		boolean equals(Object obj);
-
-		/**
-		 * Returns the hash code for this <code>ListenerInfo</code>.
-		 * 
-		 * @return The hash code of this <code>ListenerInfo</code>.
-		 */
-		int hashCode();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/Framework.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/Framework.java
deleted file mode 100644
index f7618aa..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/Framework.java
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework.launch;
-
-import java.io.InputStream;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-import org.osgi.framework.FrameworkEvent;
-
-/**
- * A Framework instance. A Framework is also known as a System Bundle.
- * 
- * <p>
- * Framework instances are created using a {@link FrameworkFactory}. The methods
- * of this interface can be used to manage and control the created framework
- * instance.
- * 
- * @ThreadSafe
- * @version $Revision: 6542 $
- */
-public interface Framework extends Bundle {
-
-	/**
-	 * Initialize this Framework. After calling this method, this Framework
-	 * must:
-	 * <ul>
-	 * <li>Be in the {@link #STARTING} state.</li>
-	 * <li>Have a valid Bundle Context.</li>
-	 * <li>Be at start level 0.</li>
-	 * <li>Have event handling enabled.</li>
-	 * <li>Have reified Bundle objects for all installed bundles.</li>
-	 * <li>Have registered any framework services. For example,
-	 * <code>PackageAdmin</code>, <code>ConditionalPermissionAdmin</code>,
-	 * <code>StartLevel</code>.</li>
-	 * </ul>
-	 * 
-	 * <p>
-	 * This Framework will not actually be started until {@link #start() start}
-	 * is called.
-	 * 
-	 * <p>
-	 * This method does nothing if called when this Framework is in the
-	 * {@link #STARTING}, {@link #ACTIVE} or {@link #STOPPING} states.
-	 * 
-	 * @throws BundleException If this Framework could not be initialized.
-	 * @throws SecurityException If the Java Runtime Environment supports
-	 *         permissions and the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code> or if there is a
-	 *         security manager already installed and the
-	 *         {@link Constants#FRAMEWORK_SECURITY} configuration property is
-	 *         set.
-	 * 
-	 */
-	void init() throws BundleException;
-
-	/**
-	 * Wait until this Framework has completely stopped. The <code>stop</code>
-	 * and <code>update</code> methods on a Framework performs an asynchronous
-	 * stop of the Framework. This method can be used to wait until the
-	 * asynchronous stop of this Framework has completed. This method will only
-	 * wait if called when this Framework is in the {@link #STARTING},
-	 * {@link #ACTIVE}, or {@link #STOPPING} states. Otherwise it will return
-	 * immediately.
-	 * <p>
-	 * A Framework Event is returned to indicate why this Framework has stopped.
-	 * 
-	 * @param timeout Maximum number of milliseconds to wait until this
-	 *        Framework has completely stopped. A value of zero will wait
-	 *        indefinitely.
-	 * @return A Framework Event indicating the reason this method returned. The
-	 *         following <code>FrameworkEvent</code> types may be returned by
-	 *         this method.
-	 *         <ul>
-	 *         <li>{@link FrameworkEvent#STOPPED STOPPED} - This Framework has
-	 *         been stopped. </li>
-	 * 
-	 *         <li>{@link FrameworkEvent#STOPPED_UPDATE STOPPED_UPDATE} - This
-	 *         Framework has been updated which has shutdown and will now
-	 *         restart.</li>
-	 * 
-	 *         <li> {@link FrameworkEvent#STOPPED_BOOTCLASSPATH_MODIFIED
-	 *         STOPPED_BOOTCLASSPATH_MODIFIED} - This Framework has been stopped
-	 *         and a bootclasspath extension bundle has been installed or
-	 *         updated. The VM must be restarted in order for the changed boot
-	 *         class path to take affect. </li>
-	 * 
-	 *         <li>{@link FrameworkEvent#ERROR ERROR} - The Framework
-	 *         encountered an error while shutting down or an error has occurred
-	 *         which forced the framework to shutdown. </li>
-	 * 
-	 *         <li> {@link FrameworkEvent#WAIT_TIMEDOUT WAIT_TIMEDOUT} - This
-	 *         method has timed out and returned before this Framework has
-	 *         stopped.</li>
-	 *         </ul>
-	 * @throws InterruptedException If another thread interrupted the current
-	 *         thread before or while the current thread was waiting for this
-	 *         Framework to completely stop. The <i>interrupted status</i> of
-	 *         the current thread is cleared when this exception is thrown.
-	 * @throws IllegalArgumentException If the value of timeout is negative.
-	 */
-	FrameworkEvent waitForStop(long timeout) throws InterruptedException;
-
-	/**
-	 * Start this Framework.
-	 * 
-	 * <p>
-	 * The following steps are taken to start this Framework:
-	 * <ol>
-	 * <li>If this Framework is not in the {@link #STARTING} state,
-	 * {@link #init() initialize} this Framework.</li>
-	 * <li>All installed bundles must be started in accordance with each
-	 * bundle's persistent <i>autostart setting</i>. This means some bundles
-	 * will not be started, some will be started with <i>eager activation</i>
-	 * and some will be started with their <i>declared activation</i> policy. If
-	 * this Framework implements the optional <i>Start Level Service
-	 * Specification</i>, then the start level of this Framework is moved to the
-	 * start level specified by the
-	 * {@link Constants#FRAMEWORK_BEGINNING_STARTLEVEL beginning start level}
-	 * framework property, as described in the <i>Start Level Service
-	 * Specification</i>. If this framework property is not specified, then the
-	 * start level of this Framework is moved to start level one (1). Any
-	 * exceptions that occur during bundle starting must be wrapped in a
-	 * {@link BundleException} and then published as a framework event of type
-	 * {@link FrameworkEvent#ERROR}</li>
-	 * <li>This Framework's state is set to {@link #ACTIVE}.</li>
-	 * <li>A framework event of type {@link FrameworkEvent#STARTED} is fired</li>
-	 * </ol>
-	 * 
-	 * @throws BundleException If this Framework could not be started.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @see "Start Level Service Specification"
-	 */
-	void start() throws BundleException;
-
-	/**
-	 * Start this Framework.
-	 * 
-	 * <p>
-	 * Calling this method is the same as calling {@link #start()}. There are no
-	 * start options for the Framework.
-	 * 
-	 * @param options Ignored. There are no start options for the Framework.
-	 * @throws BundleException If this Framework could not be started.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @see #start()
-	 */
-	void start(int options) throws BundleException;
-
-	/**
-	 * Stop this Framework.
-	 * 
-	 * <p>
-	 * The method returns immediately to the caller after initiating the
-	 * following steps to be taken on another thread.
-	 * <ol>
-	 * <li>This Framework's state is set to {@link #STOPPING}.</li>
-	 * <li>All installed bundles must be stopped without changing each bundle's
-	 * persistent <i>autostart setting</i>. If this Framework implements the
-	 * optional <i>Start Level Service Specification</i>, then the start level
-	 * of this Framework is moved to start level zero (0), as described in the
-	 * <i>Start Level Service Specification</i>. Any exceptions that occur
-	 * during bundle stopping must be wrapped in a {@link BundleException} and
-	 * then published as a framework event of type {@link FrameworkEvent#ERROR}</li>
-	 * <li>Unregister all services registered by this Framework.</li>
-	 * <li>Event handling is disabled.</li>
-	 * <li>This Framework's state is set to {@link #RESOLVED}.</li>
-	 * <li>All resources held by this Framework are released. This includes
-	 * threads, bundle class loaders, open files, etc.</li>
-	 * <li>Notify all threads that are waiting at {@link #waitForStop(long)
-	 * waitForStop} that the stop operation has completed.</li>
-	 * </ol>
-	 * <p>
-	 * After being stopped, this Framework may be discarded, initialized or
-	 * started.
-	 * 
-	 * @throws BundleException If stopping this Framework could not be
-	 *         initiated.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @see "Start Level Service Specification"
-	 */
-	void stop() throws BundleException;
-
-	/**
-	 * Stop this Framework.
-	 * 
-	 * <p>
-	 * Calling this method is the same as calling {@link #stop()}. There are no
-	 * stop options for the Framework.
-	 * 
-	 * @param options Ignored. There are no stop options for the Framework.
-	 * @throws BundleException If stopping this Framework could not be
-	 *         initiated.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,EXECUTE]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @see #stop()
-	 */
-	void stop(int options) throws BundleException;
-
-	/**
-	 * The Framework cannot be uninstalled.
-	 * 
-	 * <p>
-	 * This method always throws a BundleException.
-	 * 
-	 * @throws BundleException This Framework cannot be uninstalled.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,LIFECYCLE]</code>, and the Java
-	 *         Runtime Environment supports permissions.
-	 */
-	void uninstall() throws BundleException;
-
-	/**
-	 * Stop and restart this Framework.
-	 * 
-	 * <p>
-	 * The method returns immediately to the caller after initiating the
-	 * following steps to be taken on another thread.
-	 * <ol>
-	 * <li>Perform the steps in the {@link #stop()} method to stop this
-	 * Framework.</li>
-	 * <li>Perform the steps in the {@link #start()} method to start this
-	 * Framework.</li>
-	 * </ol>
-	 * 
-	 * @throws BundleException If stopping and restarting this Framework could
-	 *         not be initiated.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,LIFECYCLE]</code>, and the Java
-	 *         Runtime Environment supports permissions.
-	 */
-	void update() throws BundleException;
-
-	/**
-	 * Stop and restart this Framework.
-	 * 
-	 * <p>
-	 * Calling this method is the same as calling {@link #update()} except that
-	 * any provided InputStream is immediately closed.
-	 * 
-	 * @param in Any provided InputStream is immediately closed before returning
-	 *        from this method and otherwise ignored.
-	 * @throws BundleException If stopping and restarting this Framework could
-	 *         not be initiated.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,LIFECYCLE]</code>, and the Java
-	 *         Runtime Environment supports permissions.
-	 */
-	void update(InputStream in) throws BundleException;
-
-	/**
-	 * Returns the Framework unique identifier. This Framework is assigned the
-	 * unique identifier zero (0) since this Framework is also a System Bundle.
-	 * 
-	 * @return 0.
-	 * @see Bundle#getBundleId()
-	 */
-	long getBundleId();
-
-	/**
-	 * Returns the Framework location identifier. This Framework is assigned the
-	 * unique location &quot;<code>System Bundle</code>&quot; since this
-	 * Framework is also a System Bundle.
-	 * 
-	 * @return The string &quot;<code>System Bundle</code>&quot;.
-	 * @throws SecurityException If the caller does not have the appropriate
-	 *         <code>AdminPermission[this,METADATA]</code>, and the Java Runtime
-	 *         Environment supports permissions.
-	 * @see Bundle#getLocation()
-	 * @see Constants#SYSTEM_BUNDLE_LOCATION
-	 */
-	String getLocation();
-
-	/**
-	 * Returns the symbolic name of this Framework. The symbolic name is unique
-	 * for the implementation of the framework. However, the symbolic name
-	 * &quot;<code>system.bundle</code>&quot; must be recognized as an alias to
-	 * the implementation-defined symbolic name since this Framework is also a
-	 * System Bundle.
-	 * 
-	 * @return The symbolic name of this Framework.
-	 * @see Bundle#getSymbolicName()
-	 * @see Constants#SYSTEM_BUNDLE_SYMBOLICNAME
-	 */
-	String getSymbolicName();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/FrameworkFactory.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/FrameworkFactory.java
deleted file mode 100644
index bcb6da3..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/launch/FrameworkFactory.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.framework.launch;
-
-import java.util.Map;
-
-import org.osgi.framework.Bundle;
-
-/**
- * A factory for creating {@link Framework} instances.
- * 
- * <p>
- * A framework implementation jar must contain the following resource:
- * 
- * <pre>
- * /META-INF/services/org.osgi.framework.launch.FrameworkFactory
- * </pre>
- * 
- * This UTF-8 encoded resource must contain the name of the framework
- * implementation's FrameworkFactory implementation class. Space and tab
- * characters, including blank lines, in the resource must be ignored. The
- * number sign ('#' &#92;u0023) and all characters following it on each line are
- * a comment and must be ignored.
- * 
- * <p>
- * Launchers can find the name of the FrameworkFactory implementation class in
- * the resource and then load and construct a FrameworkFactory object for the
- * framework implementation. The FrameworkFactory implementation class must have
- * a public, no-argument constructor. Java&#8482; SE 6 introduced the
- * <code>ServiceLoader</code> class which can create a FrameworkFactory instance
- * from the resource.
- * 
- * @ThreadSafe
- * @version $Revision: 6888 $
- */
-public interface FrameworkFactory {
-
-	/**
-	 * Create a new {@link Framework} instance.
-	 * 
-	 * @param configuration The framework properties to configure the new
-	 *        framework instance. If framework properties are not provided by
-	 *        the configuration argument, the created framework instance must
-	 *        use some reasonable default configuration appropriate for the
-	 *        current VM. For example, the system packages for the current
-	 *        execution environment should be properly exported. The specified
-	 *        configuration argument may be <code>null</code>. The created
-	 *        framework instance must copy any information needed from the
-	 *        specified configuration argument since the configuration argument
-	 *        can be changed after the framework instance has been created.
-	 * @return A new, configured {@link Framework} instance. The framework
-	 *         instance must be in the {@link Bundle#INSTALLED} state.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>, and the Java Runtime Environment
-	 *         supports permissions.
-	 */
-	Framework newFramework(Map configuration);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
deleted file mode 100644
index 25c4ad9..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2005, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.condpermadmin;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.Hashtable;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Filter;
-import org.osgi.framework.FrameworkUtil;
-import org.osgi.framework.InvalidSyntaxException;
-
-/**
- * Condition to test if the location of a bundle matches or does not match a
- * pattern. Since the bundle's location cannot be changed, this condition is
- * immutable.
- * 
- * <p>
- * Pattern matching is done according to the filter string matching rules.
- * 
- * @ThreadSafe
- * @version $Revision: 5901 $
- */
-public class BundleLocationCondition {
-	private static final String	CONDITION_TYPE	= "org.osgi.service.condpermadmin.BundleLocationCondition";
-
-	/**
-	 * Constructs a condition that tries to match the passed Bundle's location
-	 * to the location pattern.
-	 * 
-	 * @param bundle The Bundle being evaluated.
-	 * @param info The ConditionInfo from which to construct the condition. The
-	 *        ConditionInfo must specify one or two arguments. The first
-	 *        argument of the ConditionInfo specifies the location pattern
-	 *        against which to match the bundle location. Matching is done
-	 *        according to the filter string matching rules. Any '*' characters
-	 *        in the first argument are used as wildcards when matching bundle
-	 *        locations unless they are escaped with a '\' character. The
-	 *        Condition is satisfied if the bundle location matches the pattern.
-	 *        The second argument of the ConditionInfo is optional. If a second
-	 *        argument is present and equal to "!", then the satisfaction of the
-	 *        Condition is negated. That is, the Condition is satisfied if the
-	 *        bundle location does NOT match the pattern. If the second argument
-	 *        is present but does not equal "!", then the second argument is
-	 *        ignored.
-	 * @return Condition object for the requested condition.
-	 */
-	static public Condition getCondition(final Bundle bundle,
-			final ConditionInfo info) {
-		if (!CONDITION_TYPE.equals(info.getType()))
-			throw new IllegalArgumentException(
-					"ConditionInfo must be of type \"" + CONDITION_TYPE + "\"");
-		String[] args = info.getArgs();
-		if (args.length != 1 && args.length != 2)
-			throw new IllegalArgumentException("Illegal number of args: " + args.length);
-		String bundleLocation = (String) AccessController.doPrivileged(new PrivilegedAction() {
-					public Object run() {
-						return bundle.getLocation();
-					}
-				});
-		Filter filter = null;
-		try {
-			filter = FrameworkUtil.createFilter("(location="
-					+ escapeLocation(args[0]) + ")");
-		}
-		catch (InvalidSyntaxException e) {
-			// this should never happen, but just in case
-			throw new RuntimeException("Invalid filter: " + e.getFilter(), e);
-		}
-		Hashtable matchProps = new Hashtable(2);
-		matchProps.put("location", bundleLocation);
-		boolean negate = (args.length == 2) ? "!".equals(args[1]) : false;
-		return (negate ^ filter.match(matchProps)) ? Condition.TRUE
-				: Condition.FALSE;
-	}
-
-	private BundleLocationCondition() {
-		// private constructor to prevent objects of this type
-	}
-
-	/**
-	 * Escape the value string such that '(', ')' and '\' are escaped. The '\'
-	 * char is only escaped if it is not followed by a '*'.
-	 * 
-	 * @param value unescaped value string.
-	 * @return escaped value string.
-	 */
-	private static String escapeLocation(final String value) {
-		boolean escaped = false;
-		int inlen = value.length();
-		int outlen = inlen << 1; /* inlen * 2 */
-
-		char[] output = new char[outlen];
-		value.getChars(0, inlen, output, inlen);
-
-		int cursor = 0;
-		for (int i = inlen; i < outlen; i++) {
-			char c = output[i];
-			switch (c) {
-				case '\\' :
-					if (i + 1 < outlen && output[i + 1] == '*')
-						break;
-				case '(' :
-				case ')' :
-					output[cursor] = '\\';
-					cursor++;
-					escaped = true;
-					break;
-			}
-
-			output[cursor] = c;
-			cursor++;
-		}
-
-		return escaped ? new String(output, 0, cursor) : value;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java
deleted file mode 100644
index 31b6481..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2005, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.condpermadmin;
-
-import java.security.cert.X509Certificate;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.FrameworkUtil;
-
-/**
- * Condition to test if the signer of a bundle matches or does not match a
- * pattern. Since the bundle's signer can only change when the bundle is
- * updated, this condition is immutable.
- * <p>
- * The condition expressed using a single String that specifies a Distinguished
- * Name (DN) chain to match bundle signers against. DN's are encoded using IETF
- * RFC 2253. Usually signers use certificates that are issued by certificate
- * authorities, which also have a corresponding DN and certificate. The
- * certificate authorities can form a chain of trust where the last DN and
- * certificate is known by the framework. The signer of a bundle is expressed as
- * signers DN followed by the DN of its issuer followed by the DN of the next
- * issuer until the DN of the root certificate authority. Each DN is separated
- * by a semicolon.
- * <p>
- * A bundle can satisfy this condition if one of its signers has a DN chain that
- * matches the DN chain used to construct this condition. Wildcards (`*') can be
- * used to allow greater flexibility in specifying the DN chains. Wildcards can
- * be used in place of DNs, RDNs, or the value in an RDN. If a wildcard is used
- * for a value of an RDN, the value must be exactly "*" and will match any value
- * for the corresponding type in that RDN. If a wildcard is used for a RDN, it
- * must be the first RDN and will match any number of RDNs (including zero
- * RDNs).
- * 
- * @ThreadSafe
- * @version $Revision: 6860 $
- */
-public class BundleSignerCondition {
-	private static final String	CONDITION_TYPE	= "org.osgi.service.condpermadmin.BundleSignerCondition";
-
-	/**
-	 * Constructs a Condition that tries to match the passed Bundle's location
-	 * to the location pattern.
-	 * 
-	 * @param bundle The Bundle being evaluated.
-	 * @param info The ConditionInfo from which to construct the condition. The
-	 *        ConditionInfo must specify one or two arguments. The first
-	 *        argument of the ConditionInfo specifies the chain of distinguished
-	 *        names pattern to match against the signer of the bundle. The
-	 *        Condition is satisfied if the signer of the bundle matches the
-	 *        pattern. The second argument of the ConditionInfo is optional. If
-	 *        a second argument is present and equal to "!", then the
-	 *        satisfaction of the Condition is negated. That is, the Condition
-	 *        is satisfied if the signer of the bundle does NOT match the
-	 *        pattern. If the second argument is present but does not equal "!",
-	 *        then the second argument is ignored.
-	 * @return A Condition which checks the signers of the specified bundle.
-	 */
-	public static Condition getCondition(final Bundle bundle,
-			final ConditionInfo info) {
-		if (!CONDITION_TYPE.equals(info.getType()))
-			throw new IllegalArgumentException(
-					"ConditionInfo must be of type \"" + CONDITION_TYPE + "\"");
-		String[] args = info.getArgs();
-		if (args.length != 1 && args.length != 2)
-			throw new IllegalArgumentException("Illegal number of args: "
-					+ args.length);
-
-		Map/* <X509Certificate, List<X509Certificate>> */signers = bundle
-				.getSignerCertificates(Bundle.SIGNERS_TRUSTED);
-		boolean match = false;
-		for (Iterator iSigners = signers.values().iterator(); iSigners
-				.hasNext();) {
-			List/* <X509Certificate> */signerCerts = (List) iSigners.next();
-			List/* <String> */dnChain = new ArrayList(signerCerts.size());
-			for (Iterator iCerts = signerCerts.iterator(); iCerts.hasNext();) {
-				dnChain.add(((X509Certificate) iCerts.next()).getSubjectDN()
-						.getName());
-			}
-			if (FrameworkUtil.matchDistinguishedNameChain(args[0], dnChain)) {
-				match = true;
-				break;
-			}
-		}
-
-		boolean negate = (args.length == 2) ? "!".equals(args[1]) : false;
-		return negate ^ match ? Condition.TRUE : Condition.FALSE;
-	}
-
-	private BundleSignerCondition() {
-		// private constructor to prevent objects of this type
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/Condition.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/Condition.java
deleted file mode 100644
index 63c33b4..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/Condition.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.condpermadmin;
-
-import java.util.Dictionary;
-
-/**
- * The interface implemented by a Condition. Conditions are bound to Permissions
- * using Conditional Permission Info. The Permissions of a ConditionalPermission
- * Info can only be used if the associated Conditions are satisfied.
- * 
- * @ThreadSafe
- * @version $Revision: 6464 $
- */
-public interface Condition {
-	/**
-	 * A Condition object that will always evaluate to true and that is never
-	 * postponed.
-	 */
-	public final static Condition	TRUE	= new BooleanCondition(true);
-
-	/**
-	 * A Condition object that will always evaluate to false and that is never
-	 * postponed.
-	 */
-	public final static Condition	FALSE	= new BooleanCondition(false);
-
-	/**
-	 * Returns whether the evaluation must be postponed until the end of the
-	 * permission check. If this method returns <code>false</code> (or this
-	 * Condition is immutable), then this Condition must be able to directly
-	 * answer the {@link #isSatisfied()} method. In other words, isSatisfied()
-	 * will return very quickly since no external sources, such as for example
-	 * users or networks, need to be consulted. <br/>
-	 * This method must always return the same value whenever it is called so
-	 * that the Conditional Permission Admin can cache its result.
-	 * 
-	 * @return <code>true</code> to indicate the evaluation must be postponed.
-	 *         Otherwise, <code>false</code> if the evaluation can be performed
-	 *         immediately.
-	 */
-	boolean isPostponed();
-
-	/**
-	 * Returns whether the Condition is satisfied. This method is only called
-	 * for immediate Condition objects or immutable postponed conditions, and
-	 * must always be called inside a permission check. Mutable postponed
-	 * Condition objects will be called with the grouped version
-	 * {@link #isSatisfied(Condition[],Dictionary)} at the end of the permission
-	 * check.
-	 * 
-	 * @return <code>true</code> to indicate the Conditions is satisfied.
-	 *         Otherwise, <code>false</code> if the Condition is not satisfied.
-	 */
-	boolean isSatisfied();
-
-	/**
-	 * Returns whether the Condition is mutable. A Condition can go from mutable
-	 * (<code>true</code>) to immutable (<code>false</code>) over time but never
-	 * from immutable (<code>false</code>) to mutable (<code>true</code>).
-	 * 
-	 * @return <code>true</code> {@link #isSatisfied()} can change. Otherwise,
-	 *         <code>false</code> if the value returned by
-	 *         {@link #isSatisfied()} will not change for this condition.
-	 */
-	boolean isMutable();
-
-	/**
-	 * Returns whether a the set of Condition objects are satisfied. Although
-	 * this method is not static, it must be implemented as if it were static.
-	 * All of the passed Condition objects will be of the same type and will
-	 * correspond to the class type of the object on which this method is
-	 * invoked.This method must be called inside a permission check only.
-	 * 
-	 * @param conditions The array of Condition objects, which must all be of
-	 *        the same class and mutable. The receiver must be one of those
-	 *        Condition objects.
-	 * @param context A Dictionary object that implementors can use to track
-	 *        state. If this method is invoked multiple times in the same
-	 *        permission check, the same Dictionary will be passed multiple
-	 *        times. The SecurityManager treats this Dictionary as an opaque
-	 *        object and simply creates an empty dictionary and passes it to
-	 *        subsequent invocations if multiple invocations are needed.
-	 * @return <code>true</code> if all the Condition objects are satisfied.
-	 *         Otherwise, <code>false</code> if one of the Condition objects is
-	 *         not satisfied.
-	 */
-	boolean isSatisfied(Condition conditions[], Dictionary context);
-}
-
-/**
- * Package private class used to define the {@link Condition#FALSE} and
- * {@link Condition#TRUE} constants.
- * 
- * @Immutable
- */
-final class BooleanCondition implements Condition {
-	private final boolean	satisfied;
-
-	BooleanCondition(boolean satisfied) {
-		this.satisfied = satisfied;
-	}
-
-	public boolean isPostponed() {
-		return false;
-	}
-
-	public boolean isSatisfied() {
-		return satisfied;
-	}
-
-	public boolean isMutable() {
-		return false;
-	}
-
-	public boolean isSatisfied(Condition[] conds, Dictionary context) {
-		for (int i = 0, length = conds.length; i < length; i++) {
-			if (!conds[i].isSatisfied())
-				return false;
-		}
-		return true;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
deleted file mode 100644
index 6cb235c..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.condpermadmin;
-
-import java.util.ArrayList;
-
-/**
- * Condition representation used by the Conditional Permission Admin service.
- * 
- * <p>
- * This class encapsulates two pieces of information: a Condition <i>type</i>
- * (class name), which must implement <code>Condition</code>, and the
- * arguments passed to its constructor.
- * 
- * <p>
- * In order for a Condition represented by a <code>ConditionInfo</code> to be
- * instantiated and considered during a permission check, its Condition class
- * must be available from the system classpath.
- * 
- * <p>
- * The Condition class must either:
- * <ul>
- * <li>Declare a public static <code>getCondition</code> method that takes a
- * <code>Bundle</code> object and a <code>ConditionInfo</code> object as
- * arguments. That method must return an object that implements the
- * <code>Condition</code> interface.</li>
- * <li>Implement the <code>Condition</code> interface and define a public
- * constructor that takes a <code>Bundle</code> object and a
- * <code>ConditionInfo</code> object as arguments.
- * </ul>
- * 
- * @Immutable
- * @version $Revision: 6492 $
- */
-public class ConditionInfo {
-	private final String	type;
-	private final String[]	args;
-
-	/**
-	 * Constructs a <code>ConditionInfo</code> from the specified type and args.
-	 * 
-	 * @param type The fully qualified class name of the Condition represented
-	 *        by this <code>ConditionInfo</code>.
-	 * @param args The arguments for the Condition. These arguments are
-	 *        available to the newly created Condition by calling the
-	 *        {@link #getArgs()} method.
-	 * @throws NullPointerException If <code>type</code> is <code>null</code>.
-	 */
-	public ConditionInfo(String type, String[] args) {
-		this.type = type;
-		this.args = (args != null) ? (String[]) args.clone() : new String[0];
-		if (type == null) {
-			throw new NullPointerException("type is null");
-		}
-	}
-
-	/**
-	 * Constructs a <code>ConditionInfo</code> object from the specified encoded
-	 * <code>ConditionInfo</code> string. White space in the encoded
-	 * <code>ConditionInfo</code> string is ignored.
-	 * 
-	 * @param encodedCondition The encoded <code>ConditionInfo</code>.
-	 * @see #getEncoded
-	 * @throws IllegalArgumentException If the specified
-	 *         <code>encodedCondition</code> is not properly formatted.
-	 */
-	public ConditionInfo(String encodedCondition) {
-		if (encodedCondition == null) {
-			throw new NullPointerException("missing encoded condition");
-		}
-		if (encodedCondition.length() == 0) {
-			throw new IllegalArgumentException("empty encoded condition");
-		}
-		try {
-			char[] encoded = encodedCondition.toCharArray();
-			int length = encoded.length;
-			int pos = 0;
-
-			/* skip whitespace */
-			while (Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-
-			/* the first character must be '[' */
-			if (encoded[pos] != '[') {
-				throw new IllegalArgumentException("expecting open bracket");
-			}
-			pos++;
-
-			/* skip whitespace */
-			while (Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-
-			/* type is not quoted or encoded */
-			int begin = pos;
-			while (!Character.isWhitespace(encoded[pos])
-					&& (encoded[pos] != ']')) {
-				pos++;
-			}
-			if (pos == begin || encoded[begin] == '"') {
-				throw new IllegalArgumentException("expecting type");
-			}
-			this.type = new String(encoded, begin, pos - begin);
-
-			/* skip whitespace */
-			while (Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-
-			/* type may be followed by args which are quoted and encoded */
-			ArrayList argsList = new ArrayList();
-			while (encoded[pos] == '"') {
-				pos++;
-				begin = pos;
-				while (encoded[pos] != '"') {
-					if (encoded[pos] == '\\') {
-						pos++;
-					}
-					pos++;
-				}
-				argsList.add(unescapeString(encoded, begin, pos));
-				pos++;
-
-				if (Character.isWhitespace(encoded[pos])) {
-					/* skip whitespace */
-					while (Character.isWhitespace(encoded[pos])) {
-						pos++;
-					}
-				}
-			}
-			this.args = (String[]) argsList
-					.toArray(new String[argsList.size()]);
-
-			/* the final character must be ']' */
-			char c = encoded[pos];
-			pos++;
-			while ((pos < length) && Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-			if ((c != ']') || (pos != length)) {
-				throw new IllegalArgumentException("expecting close bracket");
-			}
-		}
-		catch (ArrayIndexOutOfBoundsException e) {
-			throw new IllegalArgumentException("parsing terminated abruptly");
-		}
-	}
-
-	/**
-	 * Returns the string encoding of this <code>ConditionInfo</code> in a form
-	 * suitable for restoring this <code>ConditionInfo</code>.
-	 * 
-	 * <p>
-	 * The encoded format is:
-	 * 
-	 * <pre>
-	 *   [type &quot;arg0&quot; &quot;arg1&quot; ...]
-	 * </pre>
-	 * 
-	 * where <i>argN</i> are strings that must be encoded for proper parsing.
-	 * Specifically, the <code>&quot;</code>, <code>\</code>, carriage return,
-	 * and line feed characters must be escaped using <code>\&quot;</code>,
-	 * <code>\\</code>, <code>\r</code>, and <code>\n</code>, respectively.
-	 * 
-	 * <p>
-	 * The encoded string contains no leading or trailing whitespace characters.
-	 * A single space character is used between type and &quot;<i>arg0</i>&quot;
-	 * and between the arguments.
-	 * 
-	 * @return The string encoding of this <code>ConditionInfo</code>.
-	 */
-	public final String getEncoded() {
-		StringBuffer output = new StringBuffer();
-		output.append('[');
-		output.append(type);
-
-		for (int i = 0; i < args.length; i++) {
-			output.append(" \"");
-			escapeString(args[i], output);
-			output.append('\"');
-		}
-
-		output.append(']');
-
-		return output.toString();
-	}
-
-	/**
-	 * Returns the string representation of this <code>ConditionInfo</code>.
-	 * The string is created by calling the <code>getEncoded</code> method on
-	 * this <code>ConditionInfo</code>.
-	 * 
-	 * @return The string representation of this <code>ConditionInfo</code>.
-	 */
-	public String toString() {
-		return getEncoded();
-	}
-
-	/**
-	 * Returns the fully qualified class name of the condition represented by
-	 * this <code>ConditionInfo</code>.
-	 * 
-	 * @return The fully qualified class name of the condition represented by
-	 *         this <code>ConditionInfo</code>.
-	 */
-	public final String getType() {
-		return type;
-	}
-
-	/**
-	 * Returns arguments of this <code>ConditionInfo</code>.
-	 * 
-	 * @return The arguments of this <code>ConditionInfo</code>. An empty
-	 *         array is returned if the <code>ConditionInfo</code> has no
-	 *         arguments.
-	 */
-	public final String[] getArgs() {
-		return (String[]) args.clone();
-	}
-
-	/**
-	 * Determines the equality of two <code>ConditionInfo</code> objects.
-	 * 
-	 * This method checks that specified object has the same type and args as
-	 * this <code>ConditionInfo</code> object.
-	 * 
-	 * @param obj The object to test for equality with this
-	 *        <code>ConditionInfo</code> object.
-	 * @return <code>true</code> if <code>obj</code> is a
-	 *         <code>ConditionInfo</code>, and has the same type and args as
-	 *         this <code>ConditionInfo</code> object; <code>false</code>
-	 *         otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof ConditionInfo)) {
-			return false;
-		}
-
-		ConditionInfo other = (ConditionInfo) obj;
-
-		if (!type.equals(other.type) || args.length != other.args.length)
-			return false;
-
-		for (int i = 0; i < args.length; i++) {
-			if (!args[i].equals(other.args[i]))
-				return false;
-		}
-		return true;
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return A hash code value for this object.
-	 */
-
-	public int hashCode() {
-		int h = 31 * 17 + type.hashCode();
-		for (int i = 0; i < args.length; i++) {
-			h = 31 * h + args[i].hashCode();
-		}
-		return h;
-	}
-
-	/**
-	 * This escapes the quotes, backslashes, \n, and \r in the string using a
-	 * backslash and appends the newly escaped string to a StringBuffer.
-	 */
-	private static void escapeString(String str, StringBuffer output) {
-		int len = str.length();
-		for (int i = 0; i < len; i++) {
-			char c = str.charAt(i);
-			switch (c) {
-				case '"' :
-				case '\\' :
-					output.append('\\');
-					output.append(c);
-					break;
-				case '\r' :
-					output.append("\\r");
-					break;
-				case '\n' :
-					output.append("\\n");
-					break;
-				default :
-					output.append(c);
-					break;
-			}
-		}
-	}
-
-	/**
-	 * Takes an encoded character array and decodes it into a new String.
-	 */
-	private static String unescapeString(char[] str, int begin, int end) {
-		StringBuffer output = new StringBuffer(end - begin);
-		for (int i = begin; i < end; i++) {
-			char c = str[i];
-			if (c == '\\') {
-				i++;
-				if (i < end) {
-					c = str[i];
-					switch (c) {
-						case '"' :
-						case '\\' :
-							break;
-						case 'r' :
-							c = '\r';
-							break;
-						case 'n' :
-							c = '\n';
-							break;
-						default :
-							c = '\\';
-							i--;
-							break;
-					}
-				}
-			}
-			output.append(c);
-		}
-
-		return output.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionAdmin.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionAdmin.java
deleted file mode 100644
index 2ea7d87..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionAdmin.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2005, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.condpermadmin;
-
-import java.security.AccessControlContext;
-import java.util.Enumeration;
-
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-/**
- * Framework service to administer Conditional Permissions. Conditional
- * Permissions can be added to, retrieved from, and removed from the framework.
- * Conditional Permissions are conceptually managed in an ordered table called
- * the Conditional Permission Table.
- * 
- * @ThreadSafe
- * @version $Revision: 6782 $
- */
-public interface ConditionalPermissionAdmin {
-	/**
-	 * Create a new Conditional Permission Info in the Conditional Permission
-	 * Table.
-	 * <p>
-	 * The Conditional Permission Info will be given a unique, never reused
-	 * name. This entry will be added at the beginning of the Conditional
-	 * Permission Table with an access decision of
-	 * {@link ConditionalPermissionInfo#ALLOW ALLOW}.
-	 * <p>
-	 * Since this method changes the Conditional Permission Table any
-	 * {@link ConditionalPermissionUpdate}s that were created prior to calling
-	 * this method can no longer be committed.
-	 * 
-	 * @param conditions The conditions that need to be satisfied to enable the
-	 *        specified permissions. This argument can be <code>null</code> or
-	 *        an empty array indicating the specified permissions are not
-	 *        guarded by any conditions.
-	 * @param permissions The permissions that are enabled when the specified
-	 *        conditions, if any, are satisfied. This argument must not be
-	 *        <code>null</code> and must specify at least one permission.
-	 * @return The ConditionalPermissionInfo for the specified Conditions and
-	 *         Permissions.
-	 * @throws IllegalArgumentException If no permissions are specified.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 * @deprecated Since 1.1. Use {@link #newConditionalPermissionUpdate()}
-	 *             instead.
-	 */
-	ConditionalPermissionInfo addConditionalPermissionInfo(
-			ConditionInfo conditions[], PermissionInfo permissions[]);
-
-	/**
-	 * Set or create a Conditional Permission Info with a specified name in the
-	 * Conditional Permission Table.
-	 * <p>
-	 * If the specified name is <code>null</code>, a new Conditional Permission
-	 * Info must be created and will be given a unique, never reused name. If
-	 * there is currently no Conditional Permission Info with the specified
-	 * name, a new Conditional Permission Info must be created with the
-	 * specified name. Otherwise, the Conditional Permission Info with the
-	 * specified name must be updated with the specified Conditions and
-	 * Permissions. If a new entry was created in the Conditional Permission
-	 * Table it will be added at the beginning of the table with an access
-	 * decision of {@link ConditionalPermissionInfo#ALLOW ALLOW}.
-	 * <p>
-	 * Since this method changes the underlying permission table any
-	 * {@link ConditionalPermissionUpdate}s that were created prior to calling
-	 * this method can no longer be committed.
-	 * 
-	 * @param name The name of the Conditional Permission Info, or
-	 *        <code>null</code>.
-	 * @param conditions The conditions that need to be satisfied to enable the
-	 *        specified permissions. This argument can be <code>null</code> or
-	 *        an empty array indicating the specified permissions are not
-	 *        guarded by any conditions.
-	 * @param permissions The permissions that are enabled when the specified
-	 *        conditions, if any, are satisfied. This argument must not be
-	 *        <code>null</code> and must specify at least one permission.
-	 * @return The ConditionalPermissionInfo for the specified name, Conditions
-	 *         and Permissions.
-	 * @throws IllegalArgumentException If no permissions are specified.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 * @deprecated Since 1.1. Use {@link #newConditionalPermissionUpdate()}
-	 *             instead.
-	 */
-	ConditionalPermissionInfo setConditionalPermissionInfo(String name,
-			ConditionInfo conditions[], PermissionInfo permissions[]);
-
-	/**
-	 * Returns the Conditional Permission Infos from the Conditional Permission
-	 * Table.
-	 * <p>
-	 * The returned Enumeration will return elements in the order they are kept
-	 * in the Conditional Permission Table.
-	 * <p>
-	 * The Enumeration returned is based on a copy of the Conditional Permission
-	 * Table and therefore will not throw exceptions if the Conditional
-	 * Permission Table is changed during the course of reading elements from
-	 * the Enumeration.
-	 * 
-	 * @return An enumeration of the Conditional Permission Infos that are
-	 *         currently in the Conditional Permission Table.
-	 * @deprecated Since 1.1. Use {@link #newConditionalPermissionUpdate()}
-	 *             instead.
-	 */
-	Enumeration/* <ConditionalPermissionInfo> */getConditionalPermissionInfos();
-
-	/**
-	 * Return the Conditional Permission Info with the specified name.
-	 * 
-	 * @param name The name of the Conditional Permission Info to be returned.
-	 * @return The Conditional Permission Info with the specified name or
-	 *         <code>null</code> if no Conditional Permission Info with the
-	 *         specified name exists in the Conditional Permission Table.
-	 * @deprecated Since 1.1. Use {@link #newConditionalPermissionUpdate()}
-	 *             instead.
-	 */
-	ConditionalPermissionInfo getConditionalPermissionInfo(String name);
-
-	/**
-	 * Returns the Access Control Context that corresponds to the specified
-	 * signers.
-	 * 
-	 * The returned Access Control Context must act as if its protection domain
-	 * came from a bundle that has the following characteristics:
-	 * <ul>
-	 * <li>It is signed by all of the given signers</li>
-	 * <li>It has a bundle id of -1</li>
-	 * <li>Its location is the empty string</li>
-	 * <li>Its state is UNINSTALLED</li>
-	 * <li>It has no headers</li>
-	 * <li>It has the empty version (0.0.0)</li>
-	 * <li>Its last modified time=0</li>
-	 * <li>Many methods will throw <code>IllegalStateException</code> because the state is UNINSTALLED</li>
-	 * <li>All other methods return a <code>null</code></li>
-	 * </ul> 
-	 * @param signers The signers for which to return an Access Control Context.
-	 * @return An <code>AccessControlContext</code> that has the Permissions
-	 *         associated with the signer.
-	 */
-	AccessControlContext getAccessControlContext(String[] signers);
-
-	/**
-	 * Creates a new update for the Conditional Permission Table. The update is
-	 * a working copy of the current Conditional Permission Table. If the
-	 * running Conditional Permission Table is modified before commit is called
-	 * on the returned update, then the call to commit on the returned update
-	 * will fail. That is, the commit method will return false and no change
-	 * will be made to the running Conditional Permission Table. There is no
-	 * requirement that commit is eventually called on the returned update.
-	 * 
-	 * @return A new update for the Conditional Permission Table.
-	 * @since 1.1
-	 */
-	ConditionalPermissionUpdate newConditionalPermissionUpdate();
-
-	/**
-	 * Creates a new ConditionalPermissionInfo with the specified fields
-	 * suitable for insertion into a {@link ConditionalPermissionUpdate}. The
-	 * <code>delete</code> method on <code>ConditionalPermissionInfo</code>
-	 * objects created with this method must throw
-	 * UnsupportedOperationException.
-	 * 
-	 * @param name The name of the created
-	 *        <code>ConditionalPermissionInfo</code> or <code>null</code> to
-	 *        have a unique name generated when the returned
-	 *        <code>ConditionalPermissionInfo</code> is committed in an update
-	 *        to the Conditional Permission Table.
-	 * @param conditions The conditions that need to be satisfied to enable the
-	 *        specified permissions. This argument can be <code>null</code> or
-	 *        an empty array indicating the specified permissions are not
-	 *        guarded by any conditions.
-	 * @param permissions The permissions that are enabled when the specified
-	 *        conditions, if any, are satisfied. This argument must not be
-	 *        <code>null</code> and must specify at least one permission.
-	 * @param access Access decision. Must be one of the following values:
-	 *        <ul>
-	 *        <li>{@link ConditionalPermissionInfo#ALLOW allow}</li>
-	 *        <li>{@link ConditionalPermissionInfo#DENY deny}</li>
-	 *        </ul>
-	 *        The specified access decision value must be evaluated case
-	 *        insensitively.
-	 * @return A <code>ConditionalPermissionInfo</code> object suitable for
-	 *         insertion into a {@link ConditionalPermissionUpdate}.
-	 * @throws IllegalArgumentException If no permissions are specified or if
-	 *         the specified access decision is not a valid value.
-	 * @since 1.1
-	 */
-	ConditionalPermissionInfo newConditionalPermissionInfo(String name,
-			ConditionInfo conditions[], PermissionInfo permissions[],
-			String access);
-
-	/**
-	 * Creates a new <code>ConditionalPermissionInfo</code> from the specified
-	 * encoded <code>ConditionalPermissionInfo</code> string suitable for
-	 * insertion into a {@link ConditionalPermissionUpdate}. The
-	 * <code>delete</code> method on <code>ConditionalPermissionInfo</code>
-	 * objects created with this method must throw
-	 * UnsupportedOperationException.
-	 * 
-	 * @param encodedConditionalPermissionInfo The encoded
-	 *        <code>ConditionalPermissionInfo</code>. White space in the encoded
-	 *        <code>ConditionalPermissionInfo</code> is ignored. The access
-	 *        decision value in the encoded
-	 *        <code>ConditionalPermissionInfo</code> must be evaluated case
-	 *        insensitively. If the encoded
-	 *        <code>ConditionalPermissionInfo</code> does not contain the
-	 *        optional name, <code>null</code> must be used for the name and a
-	 *        unique name will be generated when the returned
-	 *        <code>ConditionalPermissionInfo</code> is committed in an update
-	 *        to the Conditional Permission Table.
-	 * @return A <code>ConditionalPermissionInfo</code> object suitable for
-	 *         insertion into a {@link ConditionalPermissionUpdate}.
-	 * @throws IllegalArgumentException If the specified
-	 *         <code>encodedConditionalPermissionInfo</code> is not properly
-	 *         formatted.
-	 * @see ConditionalPermissionInfo#getEncoded
-	 * @since 1.1
-	 */
-	ConditionalPermissionInfo newConditionalPermissionInfo(
-			String encodedConditionalPermissionInfo);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionInfo.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionInfo.java
deleted file mode 100644
index dbe09be..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionInfo.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2004, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.condpermadmin;
-
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-/**
- * A list of Permissions guarded by a list of conditions with an access
- * decision. Instances of this interface are obtained from the Conditional
- * Permission Admin service.
- * 
- * @Immutable
- * @version $Revision: 6492 $
- */
-public interface ConditionalPermissionInfo {
-	/**
-	 * This string is used to indicate that a row in the Conditional Permission
-	 * Table should return an access decision of &quot;allow&quot; if the
-	 * conditions are all satisfied and at least one of the permissions is
-	 * implied.
-	 * 
-	 * @since 1.1
-	 */
-	public final static String	ALLOW	= "allow";
-
-	/**
-	 * This string is used to indicate that a row in the Conditional Permission
-	 * Table should return an access decision of &quot;deny&quot; if the
-	 * conditions are all satisfied and at least one of the permissions is
-	 * implied.
-	 * 
-	 * @since 1.1
-	 */
-	public final static String	DENY	= "deny";
-
-	/**
-	 * Returns the Condition Infos for the Conditions that must be satisfied to
-	 * enable the Permissions.
-	 * 
-	 * @return The Condition Infos for the Conditions in this Conditional
-	 *         Permission Info.
-	 */
-	ConditionInfo[] getConditionInfos();
-
-	/**
-	 * Returns the Permission Infos for the Permissions in this Conditional
-	 * Permission Info.
-	 * 
-	 * @return The Permission Infos for the Permissions in this Conditional
-	 *         Permission Info.
-	 */
-	PermissionInfo[] getPermissionInfos();
-
-	/**
-	 * Removes this Conditional Permission Info from the Conditional Permission
-	 * Table.
-	 * <p>
-	 * Since this method changes the underlying permission table, any
-	 * {@link ConditionalPermissionUpdate}s that were created prior to calling
-	 * this method can no longer be committed.
-	 * 
-	 * @throws UnsupportedOperationException If this object was created by
-	 *         {@link ConditionalPermissionAdmin#newConditionalPermissionInfo}
-	 *         or obtained from a {@link ConditionalPermissionUpdate}. This
-	 *         method only functions if this object was obtained from one of the
-	 *         {@link ConditionalPermissionAdmin} methods deprecated in version
-	 *         1.1.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 * @deprecated Since 1.1. Use
-	 *             {@link ConditionalPermissionAdmin#newConditionalPermissionUpdate()}
-	 *             instead to manage the Conditional Permissions.
-	 */
-	void delete();
-
-	/**
-	 * Returns the name of this Conditional Permission Info.
-	 * 
-	 * @return The name of this Conditional Permission Info. This can be
-	 *         <code>null</code> if this Conditional Permission Info was created
-	 *         without a name.
-	 */
-	String getName();
-
-	/**
-	 * Returns the access decision for this Conditional Permission Info.
-	 * 
-	 * @return One of the following values:
-	 *         <ul>
-	 *         <li>{@link #ALLOW allow} - The access decision is
-	 *         &quot;allow&quot;.</li>
-	 *         <li>{@link #DENY deny} - The access decision is &quot;deny&quot;.
-	 *         </li>
-	 *         </ul>
-	 * @since 1.1
-	 */
-	String getAccessDecision();
-
-	/**
-	 * Returns the string encoding of this
-	 * <code>ConditionalPermissionInfo</code> in a form suitable for restoring
-	 * this <code>ConditionalPermissionInfo</code>.
-	 * 
-	 * <p>
-	 * The encoded format is:
-	 * 
-	 * <pre>
-	 *   access {conditions permissions} name
-	 * </pre>
-	 * 
-	 * where <i>access</i> is the access decision, <i>conditions</i> is zero or
-	 * more {@link ConditionInfo#getEncoded() encoded conditions},
-	 * <i>permissions</i> is one or more {@link PermissionInfo#getEncoded()
-	 * encoded permissions} and <i>name</i> is the name of the
-	 * <code>ConditionalPermissionInfo</code>.
-	 * 
-	 * <p>
-	 * <i>name</i> is optional. If <i>name</i> is present in the encoded string,
-	 * it must quoted, beginning and ending with <code>&quot;</code>. The
-	 * <i>name</i> value must be encoded for proper parsing. Specifically, the
-	 * <code>&quot;</code>, <code>\</code>, carriage return, and line feed
-	 * characters must be escaped using <code>\&quot;</code>, <code>\\</code>,
-	 * <code>\r</code>, and <code>\n</code>, respectively.
-	 * 
-	 * <p>
-	 * The encoded string contains no leading or trailing whitespace characters.
-	 * A single space character is used between <i>access</i> and <code>{</code>
-	 * and between <code>}</code> and <i>name</i>, if <i>name</i> is present.
-	 * All encoded conditions and permissions are separated by a single space
-	 * character.
-	 * 
-	 * @return The string encoding of this
-	 *         <code>ConditionalPermissionInfo</code>.
-	 * @since 1.1
-	 */
-	String getEncoded();
-
-	/**
-	 * Returns the string representation of this
-	 * <code>ConditionalPermissionInfo</code>. The string is created by calling
-	 * the <code>getEncoded</code> method on this
-	 * <code>ConditionalPermissionInfo</code>.
-	 * 
-	 * @return The string representation of this
-	 *         <code>ConditionalPermissionInfo</code>.
-	 * @since 1.1
-	 */
-	String toString();
-
-	/**
-	 * Determines the equality of two <code>ConditionalPermissionInfo</code>
-	 * objects.
-	 * 
-	 * This method checks that specified object has the same access decision,
-	 * conditions, permissions and name as this
-	 * <code>ConditionalPermissionInfo</code> object.
-	 * 
-	 * @param obj The object to test for equality with this
-	 *        <code>ConditionalPermissionInfo</code> object.
-	 * @return <code>true</code> if <code>obj</code> is a
-	 *         <code>ConditionalPermissionInfo</code>, and has the same access
-	 *         decision, conditions, permissions and name as this
-	 *         <code>ConditionalPermissionInfo</code> object; <code>false</code>
-	 *         otherwise.
-	 * @since 1.1
-	 */
-	 boolean equals(Object obj);
- 
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return A hash code value for this object.
-	 * @since 1.1
-	 */
-	int hashCode();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionUpdate.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionUpdate.java
deleted file mode 100644
index b116cf9..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionUpdate.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.condpermadmin;
-
-import java.util.List;
-
-/**
- * Update the Conditional Permission Table. There may be many update objects in
- * the system at one time. If commit is called and the Conditional Permission
- * Table has been modified since this update was created, then the call to
- * commit will fail and this object should be discarded.
- * 
- * @ThreadSafe
- * @version $Revision: 6492 $
- * @since 1.1
- */
-public interface ConditionalPermissionUpdate {
-	/**
-	 * This method returns the list of {@link ConditionalPermissionInfo}s for
-	 * this update. This list is originally based on the Conditional Permission
-	 * Table at the time this update was created. The list returned by this
-	 * method will be replace the Conditional Permission Table if commit is
-	 * called and is successful.
-	 * <p>
-	 * The {@link ConditionalPermissionInfo#delete delete} method of the
-	 * ConditionalPermissionInfos in the list must throw
-	 * UnsupportedOperationException.
-	 * <p>
-	 * The list returned by this method is ordered and the most significant
-	 * table entry is the first entry in the list.
-	 * 
-	 * @return A <code>List</code> of the {@link ConditionalPermissionInfo}s
-	 *         which represent the Conditional Permissions maintained by this
-	 *         update. Modifications to this list will not affect the
-	 *         Conditional Permission Table until successfully committed. The
-	 *         list may be empty if the Conditional Permission Table was empty
-	 *         when this update was created.
-	 */
-	List /* <ConditionalPermissionInfo> */getConditionalPermissionInfos();
-
-	/**
-	 * Commit this update. If no changes have been made to the Conditional
-	 * Permission Table since this update was created, then this method will
-	 * replace the Conditional Permission Table with this update's Conditional
-	 * Permissions. This method may only be successfully called once on this
-	 * object.
-	 * <p>
-	 * If any of the {@link ConditionalPermissionInfo}s in the update list has
-	 * <code>null</code> as a name it will be replaced with a new
-	 * {@link ConditionalPermissionInfo} object that has a generated name which
-	 * is unique within the list.
-	 * <p>
-	 * No two entries in this update's Conditional Permissions may have the same
-	 * name. Other consistency checks may also be performed. If this update's
-	 * Conditional Permissions are determined to be inconsistent in some way
-	 * then an <code>IllegalStateException</code> will be thrown.
-	 * <p>
-	 * This method returns <code>false</code> if the commit did not occur
-	 * because the Conditional Permission Table has been modified since the
-	 * creation of this update.
-	 * 
-	 * @return <code>true</code> if the commit was successful.
-	 *         <code>false</code> if the commit did not occur because the
-	 *         Conditional Permission Table has been modified since the creation
-	 *         of this update.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 * @throws IllegalStateException If this update's Conditional Permissions
-	 *         are not valid or inconsistent. For example, this update has two
-	 *         Conditional Permissions in it with the same name.
-	 */
-	boolean commit();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundle.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundle.java
deleted file mode 100644
index f50b7c8..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundle.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.osgi.service.framework;
-
-import java.io.InputStream;
-import java.util.Map;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.launch.Framework;
-
-/**
- * Composite bundles are composed of other bundles. The component bundles which
- * make up the content of a composite bundle are installed into a child
- * framework. Like a normal bundle, a composite bundle may import packages and
- * use services from other bundles which are installed in the same framework as
- * the composite bundle. The packages imported and the services used by a
- * composite bundle are shared with the components of a composite bundle through
- * a surrogate bundle installed in the child framework. Also like a normal
- * bundle, a composite bundle may export packages and register services which
- * can be used by bundles installed in the same framework as the composite
- * bundle. The packages exported and the services registered by a composite
- * bundle are acquired from the components of a composite bundle by the
- * surrogate bundle installed in the child framework
- * <p>
- * A framework has one composite bundle for each of its child frameworks. A
- * framework can have zero or more composite bundles installed. A child
- * framework must have one and only one surrogate bundle which represents the
- * composite bundle in the parent framework. In other words, a parent framework
- * can have many child frameworks but a child framework can have only one
- * parent.
- * <p>
- * A composite bundle does the following as specified by the composite manifest
- * map:
- * <ul>
- * <li>Exports packages to the parent framework from the child framework. These
- * packages are imported by the surrogate bundle installed in the child
- * framework.</li>
- * <li>Imports packages from the parent framework. These packages are exported
- * by the surrogate bundle installed in the child framework.</li>
- * <li>Registers services to the parent framework from the child framework.
- * These services are acquired by the surrogate bundle installed in the child
- * framework.</li>
- * <li>Acquires services from the parent framework. These services are
- * registered by the surrogate bundle installed in the child framework.</li>
- * </ul>
- * 
- * A newly created child <code>Framework</code> will be in the
- * {@link Bundle#STARTING STARTING} state. This child <code>Framework</code> can
- * then be used to manage and control the child framework instance. The child
- * framework instance is persistent and uses a storage area associated with the
- * installed composite bundle. The child framework's lifecycle is tied to its
- * composite bundle's lifecycle in the following ways:
- * <p>
- * <ul>
- * <li>If the composite bundle is marked to be persistently started (see
- * StartLevel.isBundlePersistentlyStarted(Bundle)) then the child framework
- * instance will automatically be started when the composite bundle's
- * start-level is met.</li>
- * <li>The child framework instance will be stopped if the composite bundle is
- * persistently stopped or its start level is no longer met. Performing
- * operations which transiently stop a composite bundle do not cause the child
- * framework to stop (e.g. {@link Bundle#stop(int) stop(Bundle.STOP_TRANSIENT)},
- * {@link Bundle#update() update}, refreshPackages etc.).</li>
- * <li>If the composite bundle is uninstalled, the child framework's persistent
- * storage area is also uninstalled.</li>
- * </ul>
- * <p>
- * The child framework may be persistently started and stopped by persistently
- * starting and stopping the composite bundle, but it is still possible to
- * initialize and start the child framework explicitly while the composite
- * bundle is not persistently started. This allows for the child framework to be
- * initialized and populated with a set of bundles before starting the composite
- * bundle. The set of bundles installed into the child framework are the
- * component bundles which comprise the composite bundle.
- * <p>
- * The child framework's lifecycle is also tied to the lifecycle of its
- * parent framework. When the parent <code>Framework</code> enters the
- * {@link Bundle#STOPPING STOPPING} state, all active child frameworks of that
- * parent are shutdown using the {@link Framework#stop()} method. The parent
- * framework must not enter the {@link Bundle#RESOLVED} state until all the
- * child frameworks have completed their shutdown process. Just as with other
- * Bundles, references to child frameworks (or the associated composite and
- * surrogate bundles) become invalid after the parent framework has completed
- * the shutdown process, and must not be allowed to re-initialize or re-start
- * the child framework.
- * 
- * @see SurrogateBundle
- * @deprecated This is proposed API. As a result, this API may never be published 
- * or the final API may change substantially by the time of final publication. 
- * You are cautioned against relying upon this API.
- * @ThreadSafe
- * @version $Revision: 6860 $
- */
-public interface CompositeBundle extends Bundle {
-	/**
-	 * Returns the child framework associated with this composite bundle.
-	 * 
-	 * @return the child framework.
-	 */
-	Framework getCompositeFramework();
-
-	/**
-	 * Returns the surrogate bundle associated with this composite bundle. The
-	 * surrogate bundle is installed in the child framework.
-	 * 
-	 * @return the surrogate bundle.
-	 */
-	SurrogateBundle getSurrogateBundle();
-
-	/**
-	 * Updates this composite bundle with the specified manifest.
-	 * <p>
-	 * Similar to normal bundle updates, the packages exported by a composite or
-	 * surrogate bundle can not change as a result of calling update: the
-	 * previous package exports must be available to other consuming bundles (in
-	 * either the parent or child framework) until the
-	 * PackageAdmin.refreshPackages method has been called to refresh the
-	 * composite, or the parent Framework is re-launched.
-	 * 
-	 * @param compositeManifest
-	 *            the new composite manifest.
-	 * @throws BundleException
-	 *             If the update fails.
-	 * @see CompositeBundleFactory#installCompositeBundle(Map, String, Map)
-	 */
-	void update(Map /* <String, String> */compositeManifest)
-			throws BundleException;
-
-	/**
-	 * This operation is not supported for composite bundles. A
-	 * <code>BundleException</code> of type
-	 * {@link BundleException#INVALID_OPERATION invalid operation} must be
-	 * thrown.
-	 */
-	void update() throws BundleException;
-
-	/**
-	 * This operation is not supported for composite bundles. A
-	 * <code>BundleException</code> of type
-	 * {@link BundleException#INVALID_OPERATION invalid operation} must be
-	 * thrown.
-	 */
-	void update(InputStream input) throws BundleException;
-
-	/**
-	 * Uninstalls this composite bundle. The associated child framework
-	 * is shutdown, and its persistent storage area is deleted.
-	 */
-	void uninstall() throws BundleException;
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundleFactory.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundleFactory.java
deleted file mode 100644
index a2b58ec..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/CompositeBundleFactory.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.osgi.service.framework;
-
-import java.util.Map;
-
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Constants;
-import org.osgi.framework.launch.Framework;
-
-/**
- * Framework service that is used to create composite bundles.
- * <p>
- * If present, there will only be a single instance of this service registered
- * with the Framework.
- * 
- * @deprecated This is proposed API. As a result, this API may never be published 
- * or the final API may change substantially by the time of final publication. 
- * You are cautioned against relying upon this API.
- * @ThreadSafe
- * @version $Revision: 6860 $
- */
-// TODO javadoc needs review
-public interface CompositeBundleFactory {
-	/**
-	 * Manifest header (named &quot;CompositeServiceFilter-Import&quot;)
-	 * identifying the service filters that are used by a composite bundle
-	 * to select services that will be registered into a child framework by its
-	 * associated surrogate bundle.
-	 */
-	public static final String	COMPOSITE_SERVICE_FILTER_IMPORT	= "CompositeServiceFilter-Import";
-
-	/**
-	 * Manifest header (named &quot;CompositeServiceFilter-Export&quot;)
-	 * identifying the service filters that are used by a surrogate
-	 * bundle to select services that will be registered into a parent framework
-	 * by its associated composite bundle.
-	 */
-	public static final String	COMPOSITE_SERVICE_FILTER_EXPORT	= "CompositeServiceFilter-Export";
-
-	/**
-	 * Installs a <code>CompositeBundle</code>. The composite bundle has a new
-	 * child <code>Framework</code> associated with it and a surrogate bundle
-	 * which is installed in the child framework. Composite bundles share
-	 * packages and services between the parent framework they are installed in and
-	 * the child framework.
-	 * <p>
-	 * The following steps are required to create a composite bundle:
-	 * <ol>
-	 * <li>If a bundle containing the same location string is already installed
-	 * and the Bundle object is a <code>CompositeBundle</code>, then that
-	 * composite bundle is returned; otherwise a <code>BundleException</code> 
-	 * is thrown indicating that an incompatible bundle is already installed at the
-	 * specified location.</li>
-	 * <li>The composite bundle's associated resources are allocated. The
-	 * associated resources minimally consist of a unique identifier and a
-	 * persistent storage area. If this step fails, a <code>BundleException</code> 
-	 * is thrown.</li>
-	 * <li>The <code>compositeManifest</code> map is used to provide the headers for the
-	 * composite bundle and its surrogate bundle.
-	 * <p>
-	 * If composite manifest map does not contain the following header(s) then a
-	 * BundleException is thrown:
-	 * <ul>
-	 * <li> {@link Constants#BUNDLE_SYMBOLICNAME Bundle-SymbolicName} the
-	 * symbolic name used for the composite bundle and its surrogate bundle.
-	 * </ul>
-	 * </p><p>
-	 * The composite manifest map may optionally contain the following
-	 * header(s):
-	 * <ul>
-	 * <li> {@link Constants#BUNDLE_VERSION Bundle-Version} the bundle version
-	 * used for the composite bundle and its surrogate bundle.</li>
-	 * <li> {@link Constants#IMPORT_PACKAGE Import-Package} the packages which
-	 * are imported from the parent framework by the composite bundle and are
-	 * exported to the child framework by the surrogate bundle.</li>
-	 * <li>{@link Constants#EXPORT_PACKAGE Export-Package} the packages which
-	 * are imported from the child framework by the surrogate bundle and are
-	 * exported to the parent framework by the composite bundle.</li>
-	 * <li>{@link #COMPOSITE_SERVICE_FILTER_IMPORT
-	 * CompositeServiceFilter-Import} the service filters which are acquired
-	 * from the parent framework by the composite bundle and are registered in
-	 * the child framework by the surrogate bundle.</li>
-	 * <li>{@link #COMPOSITE_SERVICE_FILTER_EXPORT
-	 * CompositeServiceFilter-Export} the service filters which are acquired
-	 * from the child framework by the surrogate bundle and are registered in
-	 * the parent framework by the composite bundle.</li>
-	 * <li>{@link Constants#BUNDLE_MANIFESTVERSION Bundle-ManifestVersion} the
-	 * bundle manifest version. If this header is not specified then the default
-	 * is to use version 2. A <code>BundleException</code> is thrown if this header is
-	 * specified and the version is less than 2.</li>
-	 * <li>{@link Constants#REQUIRE_BUNDLE Require-Bundle} a bundle from the parent
-	 * which is required by the child. Support for this header is experimental: a 
-	 * <code>BundleException</code> should be thrown if the header is present and
-	 * the framework doesn't support it.
-	 * </ul>
-	 * </p><p>
-	 * The composite manifest map must not contain the following headers. If a
-	 * composite manifest map does contain one of the following headers then a
-	 * <code>BundleException</code> is thrown:
-	 * <br/>
-	 * {@link Constants#BUNDLE_ACTIVATIONPOLICY Bundle-ActivationPolicy}<br/>
-	 * {@link Constants#BUNDLE_ACTIVATOR Bundle-Activator}<br/>
-	 * {@link Constants#BUNDLE_CLASSPATH Bundle-ClassPath}<br/>
-	 * {@link Constants#BUNDLE_LOCALIZATION Bundle-Localization}<br/>
-	 * {@link Constants#BUNDLE_NATIVECODE Bundle-NativeCode}<br/>
-	 * {@link Constants#FRAGMENT_HOST Fragment-Host}<br/>
-	 * {@link Constants#DYNAMICIMPORT_PACKAGE DynamicImport-Package}<br/>
-	 * <br/>
-	 * </li>
-	 * <li>A child framework is created which uses a storage area associated with
-	 * the composite bundle's persistent storage. The framework configuration 
-	 * property {@link Constants#FRAMEWORK_STORAGE org.osgi.framework.storage}, 
-	 * if specified, is ignored.</li>
-	 * <li>The child framework is initialized (see {@link Framework#init()}).
-	 * <li>A surrogate bundle is created and installed into the child framework.</li>
-	 * <li>The composite bundle's state is set to INSTALLED.</li>
-	 * <li>A bundle event of type {@link BundleEvent#INSTALLED} is fired for the
-	 * composite bundle.
-	 * <li>The <code>CompositeBundle</code> object for the new composite
-	 * bundle is returned.
-	 * </ol>
-	 * <p>
-	 * 
-	 * @param frameworkConfig A map containing configuration parameters used to 
-	 *        initialize and launch the child framework.
-	 * @param location The bundle location used for the composite and surrogate bundles.
-	 * @param compositeManifest A map containing the manifest used to create the composite
-	 *        and surrogate bundles
-	 * @return A new composite bundle in INSTALLED state.
-	 * @throws BundleException If the composite manifest is invalid or there is
-	 *         some other problem with installing the composite bundle.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 * @see Framework
-	 * @see CompositeBundle
-	 */
-	CompositeBundle installCompositeBundle(
-			Map /* <String, String> */frameworkConfig, String location,
-			Map /* <String, String> */compositeManifest) throws BundleException;
-
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/SurrogateBundle.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/SurrogateBundle.java
deleted file mode 100644
index ca5a121..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/framework/SurrogateBundle.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2008, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.osgi.service.framework;
-
-import java.io.InputStream;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleException;
-
-/**
- * A surrogate bundle is installed in a child framework, and is the child-facing
- * representation of the composite bundle in the parent framework.
- * <p>  
- * A surrogate bundle does the following as specified by the composite manifest:
- * <ul>
- * <li>Exports packages to the child framework from the parent framework. These
- * packages are imported by the composite bundle installed in the parent
- * framework.</li>
- * <li>Imports packages from the child framework. These packages are exported
- * by the composite bundle installed in the parent framework.</li>
- * <li>Registers services from the parent framework with the child framework.
- * These services are acquired by the composite bundle installed in the 
- * parent framework.</li>
- * <li>Acquires services from the child framework.  These services are 
- * registered by the composite bundle installed in the parent framework.</li>
- * </ul>
- * <p>
- * @see CompositeBundle
- * @deprecated This is proposed API. As a result, this API may never be published 
- * or the final API may change substantially by the time of final publication. 
- * You are cautioned against relying upon this API.
- */
-public interface SurrogateBundle extends Bundle {
-	/**
-	 * Returns the bundle context of the associated composite bundle.
-	 * @return the bundle context of the composite bundle.  A value 
-	 * of <code>null</code> is returned if the composite bundle does 
-	 * not have a valid bundle context.
-	 */
-	BundleContext getCompositeBundleContext();
-
-	/**
-	 * This operation is not supported for surrogate bundles. A
-	 * <code>BundleException</code> of type
-	 * {@link BundleException#INVALID_OPERATION invalid operation} must be
-	 * thrown.
-	 */
-	void update() throws BundleException;
-
-	/**
-	 * This operation is not supported for surrogate bundles. A
-	 * <code>BundleException</code> of type
-	 * {@link BundleException#INVALID_OPERATION invalid operation} must be
-	 * thrown.
-	 */
-	void update(InputStream input) throws BundleException;
-
-	/**
-	 * This operation is not supported for surrogate bundles. A
-	 * <code>BundleException</code> of type
-	 * {@link BundleException#INVALID_OPERATION invalid operation} must be
-	 * thrown.
-	 */
-	void uninstall() throws BundleException;
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/ExportedPackage.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/ExportedPackage.java
deleted file mode 100644
index 67ba3e9..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/ExportedPackage.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.packageadmin;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-
-/**
- * An exported package.
- * 
- * Objects implementing this interface are created by the Package Admin service.
- * 
- * <p>
- * The term <i>exported package</i> refers to a package that has been exported
- * from a resolved bundle. This package may or may not be currently wired to
- * other bundles.
- * 
- * <p>
- * The information about an exported package provided by this object may change.
- * An <code>ExportedPackage</code> object becomes stale if the package it
- * references has been updated or removed as a result of calling
- * <code>PackageAdmin.refreshPackages()</code>.
- * 
- * If this object becomes stale, its <code>getName()</code> and
- * <code>getVersion()</code> methods continue to return their original values,
- * <code>isRemovalPending()</code> returns <code>true</code>, and
- * <code>getExportingBundle()</code> and <code>getImportingBundles()</code>
- * return <code>null</code>.
- * 
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-public interface ExportedPackage {
-	/**
-	 * Returns the name of the package associated with this exported package.
-	 * 
-	 * @return The name of this exported package.
-	 */
-	public String getName();
-
-	/**
-	 * Returns the bundle exporting the package associated with this exported
-	 * package.
-	 * 
-	 * @return The exporting bundle, or <code>null</code> if this
-	 *         <code>ExportedPackage</code> object has become stale.
-	 */
-	public Bundle getExportingBundle();
-
-	/**
-	 * Returns the resolved bundles that are currently wired to this exported
-	 * package.
-	 * 
-	 * <p>
-	 * Bundles which require the exporting bundle associated with this exported
-	 * package are considered to be wired to this exported package are included
-	 * in the returned array. See {@link RequiredBundle#getRequiringBundles()}.
-	 * 
-	 * @return The array of resolved bundles currently wired to this exported
-	 *         package, or <code>null</code> if this
-	 *         <code>ExportedPackage</code> object has become stale. The array
-	 *         will be empty if no bundles are wired to this exported package.
-	 */
-	public Bundle[] getImportingBundles();
-
-	/**
-	 * Returns the version of this exported package.
-	 * 
-	 * @return The version of this exported package, or <code>null</code> if
-	 *         no version information is available.
-	 * @deprecated As of 1.2, replaced by {@link #getVersion}.
-	 */
-	public String getSpecificationVersion();
-
-	/**
-	 * Returns the version of this exported package.
-	 * 
-	 * @return The version of this exported package, or
-	 *         {@link Version#emptyVersion} if no version information is
-	 *         available.
-	 * @since 1.2
-	 */
-	public Version getVersion();
-
-	/**
-	 * Returns <code>true</code> if the package associated with this
-	 * <code>ExportedPackage</code> object has been exported by a bundle that
-	 * has been updated or uninstalled.
-	 * 
-	 * @return <code>true</code> if the associated package is being exported
-	 *         by a bundle that has been updated or uninstalled, or if this
-	 *         <code>ExportedPackage</code> object has become stale;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean isRemovalPending();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/PackageAdmin.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/PackageAdmin.java
deleted file mode 100644
index c93cd28..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/PackageAdmin.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2001, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.packageadmin;
-
-import org.osgi.framework.Bundle;
-
-/**
- * Framework service which allows bundle programmers to inspect the package
- * wiring state of bundles in the Framework as well as other functions related
- * to the class loader network among bundles.
- * 
- * <p>
- * If present, there will only be a single instance of this service registered
- * with the Framework.
- * 
- * @ThreadSafe
- * @version $Revision: 6779 $
- * @see org.osgi.service.packageadmin.ExportedPackage
- * @see org.osgi.service.packageadmin.RequiredBundle
- */
-public interface PackageAdmin {
-	/**
-	 * Gets the exported packages for the specified bundle.
-	 * 
-	 * @param bundle The bundle whose exported packages are to be returned, or
-	 *        <code>null</code> if all exported packages are to be returned. If
-	 *        the specified bundle is the system bundle (that is, the bundle
-	 *        with id zero), this method returns all the packages known to be
-	 *        exported by the system bundle. This will include the package
-	 *        specified by the <code>org.osgi.framework.system.packages</code>
-	 *        system property as well as any other package exported by the
-	 *        framework implementation.
-	 * 
-	 * @return An array of exported packages, or <code>null</code> if the
-	 *         specified bundle has no exported packages.
-	 * @throws IllegalArgumentException If the specified <code>Bundle</code> was
-	 *         not created by the same framework instance that registered this
-	 *         <code>PackageAdmin</code> service.
-	 */
-	public ExportedPackage[] getExportedPackages(Bundle bundle);
-
-	/**
-	 * Gets the exported packages for the specified package name.
-	 * 
-	 * @param name The name of the exported packages to be returned.
-	 * 
-	 * @return An array of the exported packages, or <code>null</code> if no
-	 *         exported packages with the specified name exists.
-	 * @since 1.2
-	 */
-	public ExportedPackage[] getExportedPackages(String name);
-
-	/**
-	 * Gets the exported package for the specified package name.
-	 * 
-	 * <p>
-	 * If there are multiple exported packages with specified name, the exported
-	 * package with the highest version will be returned.
-	 * 
-	 * @param name The name of the exported package to be returned.
-	 * 
-	 * @return The exported package, or <code>null</code> if no exported
-	 *         package with the specified name exists.
-	 * @see #getExportedPackages(String)
-	 */
-	public ExportedPackage getExportedPackage(String name);
-
-	/**
-	 * Forces the update (replacement) or removal of packages exported by the
-	 * specified bundles.
-	 * 
-	 * <p>
-	 * If no bundles are specified, this method will update or remove any
-	 * packages exported by any bundles that were previously updated or
-	 * uninstalled since the last call to this method. The technique by which
-	 * this is accomplished may vary among different Framework implementations.
-	 * One permissible implementation is to stop and restart the Framework.
-	 * 
-	 * <p>
-	 * This method returns to the caller immediately and then performs the
-	 * following steps on a separate thread:
-	 * 
-	 * <ol>
-	 * <li>Compute a graph of bundles starting with the specified bundles. If no
-	 * bundles are specified, compute a graph of bundles starting with bundle
-	 * updated or uninstalled since the last call to this method. Add to the
-	 * graph any bundle that is wired to a package that is currently exported by
-	 * a bundle in the graph. The graph is fully constructed when there is no
-	 * bundle outside the graph that is wired to a bundle in the graph. The
-	 * graph may contain <code>UNINSTALLED</code> bundles that are currently
-	 * still exporting packages.
-	 * 
-	 * <li>Each bundle in the graph that is in the <code>ACTIVE</code> state
-	 * will be stopped as described in the <code>Bundle.stop</code> method.
-	 * 
-	 * <li>Each bundle in the graph that is in the <code>RESOLVED</code> state
-	 * is unresolved and thus moved to the <code>INSTALLED</code> state. The
-	 * effect of this step is that bundles in the graph are no longer
-	 * <code>RESOLVED</code>.
-	 * 
-	 * <li>Each bundle in the graph that is in the <code>UNINSTALLED</code>
-	 * state is removed from the graph and is now completely removed from the
-	 * Framework.
-	 * 
-	 * <li>Each bundle in the graph that was in the <code>ACTIVE</code> state
-	 * prior to Step 2 is started as described in the <code>Bundle.start</code>
-	 * method, causing all bundles required for the restart to be resolved. It
-	 * is possible that, as a result of the previous steps, packages that were
-	 * previously exported no longer are. Therefore, some bundles may be
-	 * unresolvable until another bundle offering a compatible package for
-	 * export has been installed in the Framework.
-	 * <li>A framework event of type
-	 * <code>FrameworkEvent.PACKAGES_REFRESHED</code> is fired.
-	 * </ol>
-	 * 
-	 * <p>
-	 * For any exceptions that are thrown during any of these steps, a
-	 * <code>FrameworkEvent</code> of type <code>ERROR</code> is fired
-	 * containing the exception. The source bundle for these events should be
-	 * the specific bundle to which the exception is related. If no specific
-	 * bundle can be associated with the exception then the System Bundle must
-	 * be used as the source bundle for the event.
-	 * 
-	 * @param bundles The bundles whose exported packages are to be updated or
-	 *        removed, or <code>null</code> for all bundles updated or
-	 *        uninstalled since the last call to this method.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AdminPermission[System Bundle,RESOLVE]</code> and the Java
-	 *         runtime environment supports permissions.
-	 * @throws IllegalArgumentException If the specified <code>Bundle</code>s
-	 *         were not created by the same framework instance that registered
-	 *         this <code>PackageAdmin</code> service.
-	 */
-	public void refreshPackages(Bundle[] bundles);
-
-	/**
-	 * Resolve the specified bundles. The Framework must attempt to resolve the
-	 * specified bundles that are unresolved. Additional bundles that are not
-	 * included in the specified bundles may be resolved as a result of calling
-	 * this method. A permissible implementation of this method is to attempt to
-	 * resolve all unresolved bundles installed in the framework.
-	 * 
-	 * <p>
-	 * If <code>null</code> is specified then the Framework will attempt to
-	 * resolve all unresolved bundles. This method must not cause any bundle to
-	 * be refreshed, stopped, or started. This method will not return until the
-	 * operation has completed.
-	 * 
-	 * @param bundles The bundles to resolve or <code>null</code> to resolve all
-	 *        unresolved bundles installed in the Framework.
-	 * @return <code>true</code> if all specified bundles are resolved;
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AdminPermission[System Bundle,RESOLVE]</code> and the Java
-	 *         runtime environment supports permissions.
-	 * @throws IllegalArgumentException If the specified <code>Bundle</code>s
-	 *         were not created by the same framework instance that registered
-	 *         this <code>PackageAdmin</code> service.
-	 * @since 1.2
-	 */
-	public boolean resolveBundles(Bundle[] bundles);
-
-	/**
-	 * Returns an array of required bundles having the specified symbolic name.
-	 * 
-	 * <p>
-	 * If <code>null</code> is specified, then all required bundles will be
-	 * returned.
-	 * 
-	 * @param symbolicName The bundle symbolic name or <code>null</code> for
-	 *        all required bundles.
-	 * @return An array of required bundles or <code>null</code> if no
-	 *         required bundles exist for the specified symbolic name.
-	 * @since 1.2
-	 */
-	public RequiredBundle[] getRequiredBundles(String symbolicName);
-
-	/**
-	 * Returns the bundles with the specified symbolic name whose bundle version
-	 * is within the specified version range. If no bundles are installed that
-	 * have the specified symbolic name, then <code>null</code> is returned.
-	 * If a version range is specified, then only the bundles that have the
-	 * specified symbolic name and whose bundle versions belong to the specified
-	 * version range are returned. The returned bundles are ordered by version
-	 * in descending version order so that the first element of the array
-	 * contains the bundle with the highest version.
-	 * 
-	 * @see org.osgi.framework.Constants#BUNDLE_VERSION_ATTRIBUTE
-	 * @param symbolicName The symbolic name of the desired bundles.
-	 * @param versionRange The version range of the desired bundles, or
-	 *        <code>null</code> if all versions are desired.
-	 * @return An array of bundles with the specified name belonging to the
-	 *         specified version range ordered in descending version order, or
-	 *         <code>null</code> if no bundles are found.
-	 * @since 1.2
-	 */
-	public Bundle[] getBundles(String symbolicName, String versionRange);
-
-	/**
-	 * Returns an array of attached fragment bundles for the specified bundle.
-	 * If the specified bundle is a fragment then <code>null</code> is returned.
-	 * If no fragments are attached to the specified bundle then
-	 * <code>null</code> is returned.
-	 * <p>
-	 * This method does not attempt to resolve the specified bundle. If the
-	 * specified bundle is not resolved then <code>null</code> is returned.
-	 * 
-	 * @param bundle The bundle whose attached fragment bundles are to be
-	 *        returned.
-	 * @return An array of fragment bundles or <code>null</code> if the bundle
-	 *         does not have any attached fragment bundles or the bundle is not
-	 *         resolved.
-	 * @throws IllegalArgumentException If the specified <code>Bundle</code> was
-	 *         not created by the same framework instance that registered this
-	 *         <code>PackageAdmin</code> service.
-	 * @since 1.2
-	 */
-	public Bundle[] getFragments(Bundle bundle);
-
-	/**
-	 * Returns the host bundles to which the specified fragment bundle is
-	 * attached.
-	 * 
-	 * @param bundle The fragment bundle whose host bundles are to be returned.
-	 * @return An array containing the host bundles to which the specified
-	 *         fragment is attached or <code>null</code> if the specified bundle
-	 *         is not a fragment or is not attached to any host bundles.
-	 * @throws IllegalArgumentException If the specified <code>Bundle</code> was
-	 *         not created by the same framework instance that registered this
-	 *         <code>PackageAdmin</code> service.
-	 * @since 1.2
-	 */
-	public Bundle[] getHosts(Bundle bundle);
-
-	/**
-	 * Returns the bundle from which the specified class is loaded. The class
-	 * loader of the returned bundle must have been used to load the specified
-	 * class. If the class was not loaded by a bundle class loader then
-	 * <code>null</code> is returned.
-	 * 
-	 * @param clazz The class object from which to locate the bundle.
-	 * @return The bundle from which the specified class is loaded or
-	 *         <code>null</code> if the class was not loaded by a bundle class
-	 *         loader created by the same framework instance that registered
-	 *         this <code>PackageAdmin</code> service.
-	 * @since 1.2
-	 */
-	public Bundle getBundle(Class clazz);
-
-	/**
-	 * Bundle type indicating the bundle is a fragment bundle.
-	 * 
-	 * <p>
-	 * The value of <code>BUNDLE_TYPE_FRAGMENT</code> is 0x00000001.
-	 * 
-	 * @since 1.2
-	 */
-	public static final int	BUNDLE_TYPE_FRAGMENT	= 0x00000001;
-
-	/**
-	 * Returns the special type of the specified bundle. The bundle type values
-	 * are:
-	 * <ul>
-	 * <li>{@link #BUNDLE_TYPE_FRAGMENT}
-	 * </ul>
-	 * 
-	 * A bundle may be more than one type at a time. A type code is used to
-	 * identify the bundle type for future extendability.
-	 * 
-	 * <p>
-	 * If a bundle is not one or more of the defined types then 0x00000000 is
-	 * returned.
-	 * 
-	 * @param bundle The bundle for which to return the special type.
-	 * @return The special type of the bundle.
-	 * @throws IllegalArgumentException If the specified <code>Bundle</code> was
-	 *         not created by the same framework instance that registered this
-	 *         <code>PackageAdmin</code> service.
-	 * @since 1.2
-	 */
-	public int getBundleType(Bundle bundle);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/RequiredBundle.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/RequiredBundle.java
deleted file mode 100644
index b15c5df..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/RequiredBundle.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2004, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.packageadmin;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.Version;
-
-/**
- * A required bundle.
- * 
- * Objects implementing this interface are created by the Package Admin service.
- * 
- * <p>
- * The term <i>required bundle</i> refers to a resolved bundle that has a
- * bundle symbolic name and is not a fragment. That is, a bundle that may be
- * required by other bundles. This bundle may or may not be currently required
- * by other bundles.
- * 
- * <p>
- * The information about a required bundle provided by this object may change. A
- * <code>RequiredBundle</code> object becomes stale if an exported package of
- * the bundle it references has been updated or removed as a result of calling
- * <code>PackageAdmin.refreshPackages()</code>).
- * 
- * If this object becomes stale, its <code>getSymbolicName()</code> and
- * <code>getVersion()</code> methods continue to return their original values,
- * <code>isRemovalPending()</code> returns true, and <code>getBundle()</code>
- * and <code>getRequiringBundles()</code> return <code>null</code>.
- * 
- * @since 1.2
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-public interface RequiredBundle {
-	/**
-	 * Returns the symbolic name of this required bundle.
-	 * 
-	 * @return The symbolic name of this required bundle.
-	 */
-	public String getSymbolicName();
-
-	/**
-	 * Returns the bundle associated with this required bundle.
-	 * 
-	 * @return The bundle, or <code>null</code> if this
-	 *         <code>RequiredBundle</code> object has become stale.
-	 */
-	public Bundle getBundle();
-
-	/**
-	 * Returns the bundles that currently require this required bundle.
-	 * 
-	 * <p>
-	 * If this required bundle is required and then re-exported by another
-	 * bundle then all the requiring bundles of the re-exporting bundle are
-	 * included in the returned array.
-	 * 
-	 * @return An array of bundles currently requiring this required bundle, or
-	 *         <code>null</code> if this <code>RequiredBundle</code> object
-	 *         has become stale. The array will be empty if no bundles require
-	 *         this required package.
-	 */
-	public Bundle[] getRequiringBundles();
-
-	/**
-	 * Returns the version of this required bundle.
-	 * 
-	 * @return The version of this required bundle, or
-	 *         {@link Version#emptyVersion} if no version information is
-	 *         available.
-	 */
-	public Version getVersion();
-
-	/**
-	 * Returns <code>true</code> if the bundle associated with this
-	 * <code>RequiredBundle</code> object has been updated or uninstalled.
-	 * 
-	 * @return <code>true</code> if the required bundle has been updated or
-	 *         uninstalled, or if the <code>RequiredBundle</code> object has
-	 *         become stale; <code>false</code> otherwise.
-	 */
-	public boolean isRemovalPending();
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionAdmin.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionAdmin.java
deleted file mode 100644
index d51a9d4..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionAdmin.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2001, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.permissionadmin;
-
-/**
- * The Permission Admin service allows management agents to manage the
- * permissions of bundles. There is at most one Permission Admin service present
- * in the OSGi environment.
- * <p>
- * Access to the Permission Admin service is protected by corresponding
- * <code>ServicePermission</code>. In addition <code>AdminPermission</code>
- * is required to actually set permissions.
- * 
- * <p>
- * Bundle permissions are managed using a permission table. A bundle's location
- * serves as the key into this permission table. The value of a table entry is
- * the set of permissions (of type <code>PermissionInfo</code>) granted to
- * the bundle named by the given location. A bundle may have an entry in the
- * permission table prior to being installed in the Framework.
- * 
- * <p>
- * The permissions specified in <code>setDefaultPermissions</code> are used as
- * the default permissions which are granted to all bundles that do not have an
- * entry in the permission table.
- * 
- * <p>
- * Any changes to a bundle's permissions in the permission table will take
- * effect no later than when bundle's
- * <code>java.security.ProtectionDomain</code> is next involved in a
- * permission check, and will be made persistent.
- * 
- * <p>
- * Only permission classes on the system classpath or from an exported package
- * are considered during a permission check. Additionally, only permission
- * classes that are subclasses of <code>java.security.Permission</code> and
- * define a 2-argument constructor that takes a <i>name </i> string and an
- * <i>actions </i> string can be used.
- * <p>
- * Permissions implicitly granted by the Framework (for example, a bundle's
- * permission to access its persistent storage area) cannot be changed, and are
- * not reflected in the permissions returned by <code>getPermissions</code>
- * and <code>getDefaultPermissions</code>.
- * 
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-public interface PermissionAdmin {
-	/**
-	 * Gets the permissions assigned to the bundle with the specified location.
-	 * 
-	 * @param location The location of the bundle whose permissions are to be
-	 *        returned.
-	 * 
-	 * @return The permissions assigned to the bundle with the specified
-	 *         location, or <code>null</code> if that bundle has not been
-	 *         assigned any permissions.
-	 */
-	PermissionInfo[] getPermissions(String location);
-
-	/**
-	 * Assigns the specified permissions to the bundle with the specified
-	 * location.
-	 * 
-	 * @param location The location of the bundle that will be assigned the
-	 *        permissions.
-	 * @param permissions The permissions to be assigned, or <code>null</code>
-	 *        if the specified location is to be removed from the permission
-	 *        table.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 */
-	void setPermissions(String location, PermissionInfo[] permissions);
-
-	/**
-	 * Returns the bundle locations that have permissions assigned to them, that
-	 * is, bundle locations for which an entry exists in the permission table.
-	 * 
-	 * @return The locations of bundles that have been assigned any permissions,
-	 *         or <code>null</code> if the permission table is empty.
-	 */
-	String[] getLocations();
-
-	/**
-	 * Gets the default permissions.
-	 * 
-	 * <p>
-	 * These are the permissions granted to any bundle that does not have
-	 * permissions assigned to its location.
-	 * 
-	 * @return The default permissions, or <code>null</code> if no default
-	 *         permissions are set.
-	 */
-	PermissionInfo[] getDefaultPermissions();
-
-	/**
-	 * Sets the default permissions.
-	 * 
-	 * <p>
-	 * These are the permissions granted to any bundle that does not have
-	 * permissions assigned to its location.
-	 * 
-	 * @param permissions The default permissions, or <code>null</code> if the
-	 *        default permissions are to be removed from the permission table.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 */
-	void setDefaultPermissions(PermissionInfo[] permissions);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java
deleted file mode 100644
index e4bfae7..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java
+++ /dev/null
@@ -1,417 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2001, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.permissionadmin;
-
-/**
- * Permission representation used by the Permission Admin service.
- * 
- * <p>
- * This class encapsulates three pieces of information: a Permission <i>type
- * </i> (class name), which must be a subclass of
- * <code>java.security.Permission</code>, and the <i>name</i> and <i>actions</i>
- * arguments passed to its constructor.
- * 
- * <p>
- * In order for a permission represented by a <code>PermissionInfo</code> to be
- * instantiated and considered during a permission check, its Permission class
- * must be available from the system classpath or an exported package. This
- * means that the instantiation of a permission represented by a
- * <code>PermissionInfo</code> may be delayed until the package containing its
- * Permission class has been exported by a bundle.
- * 
- * @Immutable
- * @version $Revision: 6492 $
- */
-public class PermissionInfo {
-	private final String	type;
-	private final String	name;
-	private final String	actions;
-
-	/**
-	 * Constructs a <code>PermissionInfo</code> from the specified type, name,
-	 * and actions.
-	 * 
-	 * @param type The fully qualified class name of the permission represented
-	 *        by this <code>PermissionInfo</code>. The class must be a subclass
-	 *        of <code>java.security.Permission</code> and must define a
-	 *        2-argument constructor that takes a <i>name</i> string and an
-	 *        <i>actions</i> string.
-	 * 
-	 * @param name The permission name that will be passed as the first argument
-	 *        to the constructor of the <code>Permission</code> class identified
-	 *        by <code>type</code>.
-	 * 
-	 * @param actions The permission actions that will be passed as the second
-	 *        argument to the constructor of the <code>Permission</code> class
-	 *        identified by <code>type</code>.
-	 * 
-	 * @throws NullPointerException If <code>type</code> is <code>null</code>.
-	 * @throws IllegalArgumentException If <code>action</code> is not
-	 *         <code>null</code> and <code>name</code> is <code>null</code>.
-	 */
-	public PermissionInfo(String type, String name, String actions) {
-		this.type = type;
-		this.name = name;
-		this.actions = actions;
-		if (type == null) {
-			throw new NullPointerException("type is null");
-		}
-		if ((name == null) && (actions != null)) {
-			throw new IllegalArgumentException("name missing");
-		}
-	}
-
-	/**
-	 * Constructs a <code>PermissionInfo</code> object from the specified
-	 * encoded <code>PermissionInfo</code> string. White space in the encoded
-	 * <code>PermissionInfo</code> string is ignored.
-	 * 
-	 * 
-	 * @param encodedPermission The encoded <code>PermissionInfo</code>.
-	 * @see #getEncoded
-	 * @throws IllegalArgumentException If the specified
-	 *         <code>encodedPermission</code> is not properly formatted.
-	 */
-	public PermissionInfo(String encodedPermission) {
-		if (encodedPermission == null) {
-			throw new NullPointerException("missing encoded permission");
-		}
-		if (encodedPermission.length() == 0) {
-			throw new IllegalArgumentException("empty encoded permission");
-		}
-		String parsedType = null;
-		String parsedName = null;
-		String parsedActions = null;
-		try {
-			char[] encoded = encodedPermission.toCharArray();
-			int length = encoded.length;
-			int pos = 0;
-
-			/* skip whitespace */
-			while (Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-
-			/* the first character must be '(' */
-			if (encoded[pos] != '(') {
-				throw new IllegalArgumentException("expecting open parenthesis");
-			}
-			pos++;
-
-			/* skip whitespace */
-			while (Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-
-			/* type is not quoted or encoded */
-			int begin = pos;
-			while (!Character.isWhitespace(encoded[pos])
-					&& (encoded[pos] != ')')) {
-				pos++;
-			}
-			if (pos == begin || encoded[begin] == '"') {
-				throw new IllegalArgumentException("expecting type");
-			}
-			parsedType = new String(encoded, begin, pos - begin);
-
-			/* skip whitespace */
-			while (Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-
-			/* type may be followed by name which is quoted and encoded */
-			if (encoded[pos] == '"') {
-				pos++;
-				begin = pos;
-				while (encoded[pos] != '"') {
-					if (encoded[pos] == '\\') {
-						pos++;
-					}
-					pos++;
-				}
-				parsedName = unescapeString(encoded, begin, pos);
-				pos++;
-
-				if (Character.isWhitespace(encoded[pos])) {
-					/* skip whitespace */
-					while (Character.isWhitespace(encoded[pos])) {
-						pos++;
-					}
-
-					/*
-					 * name may be followed by actions which is quoted and
-					 * encoded
-					 */
-					if (encoded[pos] == '"') {
-						pos++;
-						begin = pos;
-						while (encoded[pos] != '"') {
-							if (encoded[pos] == '\\') {
-								pos++;
-							}
-							pos++;
-						}
-						parsedActions = unescapeString(encoded, begin, pos);
-						pos++;
-
-						/* skip whitespace */
-						while (Character.isWhitespace(encoded[pos])) {
-							pos++;
-						}
-					}
-				}
-			}
-
-			/* the final character must be ')' */
-			char c = encoded[pos];
-			pos++;
-			while ((pos < length) && Character.isWhitespace(encoded[pos])) {
-				pos++;
-			}
-			if ((c != ')') || (pos != length)) {
-				throw new IllegalArgumentException(
-						"expecting close parenthesis");
-			}
-		}
-		catch (ArrayIndexOutOfBoundsException e) {
-			throw new IllegalArgumentException("parsing terminated abruptly");
-		}
-
-		type = parsedType;
-		name = parsedName;
-		actions = parsedActions;
-	}
-
-	/**
-	 * Returns the string encoding of this <code>PermissionInfo</code> in a form
-	 * suitable for restoring this <code>PermissionInfo</code>.
-	 * 
-	 * <p>
-	 * The encoded format is:
-	 * 
-	 * <pre>
-	 * (type)
-	 * </pre>
-	 * 
-	 * or
-	 * 
-	 * <pre>
-	 * (type &quot;name&quot;)
-	 * </pre>
-	 * 
-	 * or
-	 * 
-	 * <pre>
-	 * (type &quot;name&quot; &quot;actions&quot;)
-	 * </pre>
-	 * 
-	 * where <i>name</i> and <i>actions</i> are strings that must be encoded for
-	 * proper parsing. Specifically, the <code>&quot;</code>,<code>\</code>,
-	 * carriage return, and line feed characters must be escaped using
-	 * <code>\&quot;</code>, <code>\\</code>,<code>\r</code>, and
-	 * <code>\n</code>, respectively.
-	 * 
-	 * <p>
-	 * The encoded string contains no leading or trailing whitespace characters.
-	 * A single space character is used between <i>type</i> and
-	 * &quot;<i>name</i>&quot; and between &quot;<i>name</i>&quot; and
-	 * &quot;<i>actions</i>&quot;.
-	 * 
-	 * @return The string encoding of this <code>PermissionInfo</code>.
-	 */
-	public final String getEncoded() {
-		StringBuffer output = new StringBuffer(
-				8
-						+ type.length()
-						+ ((((name == null) ? 0 : name.length()) + ((actions == null) ? 0
-								: actions.length())) << 1));
-		output.append('(');
-		output.append(type);
-		if (name != null) {
-			output.append(" \"");
-			escapeString(name, output);
-			if (actions != null) {
-				output.append("\" \"");
-				escapeString(actions, output);
-			}
-			output.append('\"');
-		}
-		output.append(')');
-		return output.toString();
-	}
-
-	/**
-	 * Returns the string representation of this <code>PermissionInfo</code>.
-	 * The string is created by calling the <code>getEncoded</code> method on
-	 * this <code>PermissionInfo</code>.
-	 * 
-	 * @return The string representation of this <code>PermissionInfo</code>.
-	 */
-	public String toString() {
-		return getEncoded();
-	}
-
-	/**
-	 * Returns the fully qualified class name of the permission represented by
-	 * this <code>PermissionInfo</code>.
-	 * 
-	 * @return The fully qualified class name of the permission represented by
-	 *         this <code>PermissionInfo</code>.
-	 */
-	public final String getType() {
-		return type;
-	}
-
-	/**
-	 * Returns the name of the permission represented by this
-	 * <code>PermissionInfo</code>.
-	 * 
-	 * @return The name of the permission represented by this
-	 *         <code>PermissionInfo</code>, or <code>null</code> if the
-	 *         permission does not have a name.
-	 */
-	public final String getName() {
-		return name;
-	}
-
-	/**
-	 * Returns the actions of the permission represented by this
-	 * <code>PermissionInfo</code>.
-	 * 
-	 * @return The actions of the permission represented by this
-	 *         <code>PermissionInfo</code>, or <code>null</code> if the
-	 *         permission does not have any actions associated with it.
-	 */
-	public final String getActions() {
-		return actions;
-	}
-
-	/**
-	 * Determines the equality of two <code>PermissionInfo</code> objects.
-	 * 
-	 * This method checks that specified object has the same type, name and
-	 * actions as this <code>PermissionInfo</code> object.
-	 * 
-	 * @param obj The object to test for equality with this
-	 *        <code>PermissionInfo</code> object.
-	 * @return <code>true</code> if <code>obj</code> is a
-	 *         <code>PermissionInfo</code>, and has the same type, name and
-	 *         actions as this <code>PermissionInfo</code> object;
-	 *         <code>false</code> otherwise.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-		if (!(obj instanceof PermissionInfo)) {
-			return false;
-		}
-		PermissionInfo other = (PermissionInfo) obj;
-		if (!type.equals(other.type) || ((name == null) ^ (other.name == null))
-				|| ((actions == null) ^ (other.actions == null))) {
-			return false;
-		}
-		if (name != null) {
-			if (actions != null) {
-				return name.equals(other.name) && actions.equals(other.actions);
-			}
-			else {
-				return name.equals(other.name);
-			}
-		}
-		else {
-			return true;
-		}
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return A hash code value for this object.
-	 */
-	public int hashCode() {
-		int h = 31 * 17 + type.hashCode();
-		if (name != null) {
-			h = 31 * h + name.hashCode();
-			if (actions != null) {
-				h = 31 * h + actions.hashCode();
-			}
-		}
-		return h;
-	}
-
-	/**
-	 * This escapes the quotes, backslashes, \n, and \r in the string using a
-	 * backslash and appends the newly escaped string to a StringBuffer.
-	 */
-	private static void escapeString(String str, StringBuffer output) {
-		int len = str.length();
-		for (int i = 0; i < len; i++) {
-			char c = str.charAt(i);
-			switch (c) {
-				case '"' :
-				case '\\' :
-					output.append('\\');
-					output.append(c);
-					break;
-				case '\r' :
-					output.append("\\r");
-					break;
-				case '\n' :
-					output.append("\\n");
-					break;
-				default :
-					output.append(c);
-					break;
-			}
-		}
-	}
-
-	/**
-	 * Takes an encoded character array and decodes it into a new String.
-	 */
-	private static String unescapeString(char[] str, int begin, int end) {
-		StringBuffer output = new StringBuffer(end - begin);
-		for (int i = begin; i < end; i++) {
-			char c = str[i];
-			if (c == '\\') {
-				i++;
-				if (i < end) {
-					c = str[i];
-					switch (c) {
-						case '"' :
-						case '\\' :
-							break;
-						case 'r' :
-							c = '\r';
-							break;
-						case 'n' :
-							c = '\n';
-							break;
-						default :
-							c = '\\';
-							i--;
-							break;
-					}
-				}
-			}
-			output.append(c);
-		}
-
-		return output.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/StartLevel.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/StartLevel.java
deleted file mode 100644
index 8a69b03..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/StartLevel.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2002, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.startlevel;
-
-import org.osgi.framework.Bundle;
-
-/**
- * The StartLevel service allows management agents to manage a start level
- * assigned to each bundle and the active start level of the Framework. There is
- * at most one StartLevel service present in the OSGi environment.
- * 
- * <p>
- * A start level is defined to be a state of execution in which the Framework
- * exists. StartLevel values are defined as unsigned integers with 0 (zero)
- * being the state where the Framework is not launched. Progressively higher
- * integral values represent progressively higher start levels. e.g. 2 is a
- * higher start level than 1.
- * <p>
- * Access to the StartLevel service is protected by corresponding
- * <code>ServicePermission</code>. In addition <code>AdminPermission</code>
- * is required to actually modify start level information.
- * <p>
- * Start Level support in the Framework includes the ability to control the
- * beginning start level of the Framework, to modify the active start level of
- * the Framework and to assign a specific start level to a bundle. How the
- * beginning start level of a Framework is specified is implementation
- * dependent. It may be a command line argument when invoking the Framework
- * implementation.
- * <p>
- * When the Framework is first started it must be at start level zero. In this
- * state, no bundles are running. This is the initial state of the Framework
- * before it is launched.
- * 
- * When the Framework is launched, the Framework will enter start level one and
- * all bundles which are assigned to start level one and whose autostart setting
- * indicates the bundle should be started are started as described in the
- * <code>Bundle.start</code> method. The Framework will continue to increase
- * the start level, starting bundles at each start level, until the Framework
- * has reached a beginning start level. At this point the Framework has
- * completed starting bundles and will then fire a Framework event of type
- * <code>FrameworkEvent.STARTED</code> to announce it has completed its
- * launch.
- * 
- * <p>
- * Within a start level, bundles may be started in an order defined by the
- * Framework implementation. This may be something like ascending
- * <code>Bundle.getBundleId</code> order or an order based upon dependencies
- * between bundles. A similar but reversed order may be used when stopping
- * bundles within a start level.
- * 
- * <p>
- * The StartLevel service can be used by management bundles to alter the active
- * start level of the framework.
- * 
- * @ThreadSafe
- * @version $Revision: 6747 $
- */
-public interface StartLevel {
-	/**
-	 * Return the active start level value of the Framework.
-	 * 
-	 * If the Framework is in the process of changing the start level this
-	 * method must return the active start level if this differs from the
-	 * requested start level.
-	 * 
-	 * @return The active start level value of the Framework.
-	 */
-	public int getStartLevel();
-
-	/**
-	 * Modify the active start level of the Framework.
-	 * 
-	 * <p>
-	 * The Framework will move to the requested start level. This method will
-	 * return immediately to the caller and the start level change will occur
-	 * asynchronously on another thread.
-	 * 
-	 * <p>
-	 * If the specified start level is higher than the active start level, the
-	 * Framework will continue to increase the start level until the Framework
-	 * has reached the specified start level.
-	 * 
-	 * At each intermediate start level value on the way to and including the
-	 * target start level, the Framework must:
-	 * <ol>
-	 * <li>Change the active start level to the intermediate start level value.
-	 * <li>Start bundles at the intermediate start level whose autostart
-	 * setting indicate they must be started. They are started as described in
-	 * the {@link Bundle#start(int)} method using the
-	 * {@link Bundle#START_TRANSIENT} option. The
-	 * {@link Bundle#START_ACTIVATION_POLICY} option must also be used if
-	 * {@link #isBundleActivationPolicyUsed(Bundle)} returns <code>true</code>
-	 * for the bundle.
-	 * </ol>
-	 * When this process completes after the specified start level is reached,
-	 * the Framework will fire a Framework event of type
-	 * <code>FrameworkEvent.STARTLEVEL_CHANGED</code> to announce it has moved
-	 * to the specified start level.
-	 * 
-	 * <p>
-	 * If the specified start level is lower than the active start level, the
-	 * Framework will continue to decrease the start level until the Framework
-	 * has reached the specified start level.
-	 * 
-	 * At each intermediate start level value on the way to and including the
-	 * specified start level, the framework must:
-	 * <ol>
-	 * <li>Stop bundles at the intermediate start level as described in the
-	 * {@link Bundle#stop(int)} method using the {@link Bundle#STOP_TRANSIENT}
-	 * option.
-	 * <li>Change the active start level to the intermediate start level value.
-	 * </ol>
-	 * When this process completes after the specified start level is reached,
-	 * the Framework will fire a Framework event of type
-	 * <code>FrameworkEvent.STARTLEVEL_CHANGED</code> to announce it has moved
-	 * to the specified start level.
-	 * 
-	 * <p>
-	 * If the specified start level is equal to the active start level, then no
-	 * bundles are started or stopped, however, the Framework must fire a
-	 * Framework event of type <code>FrameworkEvent.STARTLEVEL_CHANGED</code>
-	 * to announce it has finished moving to the specified start level. This
-	 * event may arrive before this method return.
-	 * 
-	 * @param startlevel The requested start level for the Framework.
-	 * @throws IllegalArgumentException If the specified start level is less
-	 *         than or equal to zero.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AdminPermission[System Bundle,STARTLEVEL]</code> and the
-	 *         Java runtime environment supports permissions.
-	 */
-	public void setStartLevel(int startlevel);
-
-	/**
-	 * Return the assigned start level value for the specified Bundle.
-	 * 
-	 * @param bundle The target bundle.
-	 * @return The start level value of the specified Bundle.
-	 * @throws java.lang.IllegalArgumentException If the specified bundle has
-	 *         been uninstalled or if the specified bundle was not created by
-	 *         the same framework instance that registered this
-	 *         <code>StartLevel</code> service.
-	 */
-	public int getBundleStartLevel(Bundle bundle);
-
-	/**
-	 * Assign a start level value to the specified Bundle.
-	 * 
-	 * <p>
-	 * The specified bundle will be assigned the specified start level. The
-	 * start level value assigned to the bundle will be persistently recorded by
-	 * the Framework.
-	 * <p>
-	 * If the new start level for the bundle is lower than or equal to the
-	 * active start level of the Framework and the bundle's autostart setting
-	 * indicates the bundle must be started, the Framework will start the
-	 * specified bundle as described in the {@link Bundle#start(int)} method
-	 * using the {@link Bundle#START_TRANSIENT} option. The
-	 * {@link Bundle#START_ACTIVATION_POLICY} option must also be used if
-	 * {@link #isBundleActivationPolicyUsed(Bundle)} returns <code>true</code>
-	 * for the bundle. The actual starting of this bundle must occur
-	 * asynchronously.
-	 * <p>
-	 * If the new start level for the bundle is higher than the active start
-	 * level of the Framework, the Framework will stop the specified bundle as
-	 * described in the {@link Bundle#stop(int)} method using the
-	 * {@link Bundle#STOP_TRANSIENT} option. The actual stopping of this bundle
-	 * must occur asynchronously.
-	 * 
-	 * @param bundle The target bundle.
-	 * @param startlevel The new start level for the specified Bundle.
-	 * @throws IllegalArgumentException If the specified bundle has been
-	 *         uninstalled, or if the specified start level is less than or
-	 *         equal to zero, or if the specified bundle is the system bundle,
-	 *         or if the specified bundle was not created by the same framework
-	 *         instance that registered this <code>StartLevel</code> service.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AdminPermission[bundle,EXECUTE]</code> and the Java runtime
-	 *         environment supports permissions.
-	 */
-	public void setBundleStartLevel(Bundle bundle, int startlevel);
-
-	/**
-	 * Return the initial start level value that is assigned to a Bundle when it
-	 * is first installed.
-	 * 
-	 * @return The initial start level value for Bundles.
-	 * @see #setInitialBundleStartLevel
-	 */
-	public int getInitialBundleStartLevel();
-
-	/**
-	 * Set the initial start level value that is assigned to a Bundle when it is
-	 * first installed.
-	 * 
-	 * <p>
-	 * The initial bundle start level will be set to the specified start level.
-	 * The initial bundle start level value will be persistently recorded by the
-	 * Framework.
-	 * 
-	 * <p>
-	 * When a Bundle is installed via <code>BundleContext.installBundle</code>,
-	 * it is assigned the initial bundle start level value.
-	 * 
-	 * <p>
-	 * The default initial bundle start level value is 1 unless this method has
-	 * been called to assign a different initial bundle start level value.
-	 * 
-	 * <p>
-	 * This method does not change the start level values of installed bundles.
-	 * 
-	 * @param startlevel The initial start level for newly installed bundles.
-	 * @throws IllegalArgumentException If the specified start level is less
-	 *         than or equal to zero.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AdminPermission[System Bundle,STARTLEVEL]</code> and the
-	 *         Java runtime environment supports permissions.
-	 */
-	public void setInitialBundleStartLevel(int startlevel);
-
-	/**
-	 * Returns whether the specified bundle's autostart setting indicates the
-	 * bundle must be started.
-	 * <p>
-	 * The autostart setting of a bundle indicates whether the bundle is to be
-	 * started when its start level is reached.
-	 * 
-	 * @param bundle The bundle whose autostart setting is to be examined.
-	 * @return <code>true</code> if the autostart setting of the bundle
-	 *         indicates the bundle is to be started. <code>false</code>
-	 *         otherwise.
-	 * @throws java.lang.IllegalArgumentException If the specified bundle has
-	 *         been uninstalled or if the specified bundle was not created by
-	 *         the same framework instance that registered this
-	 *         <code>StartLevel</code> service.
-	 * @see Bundle#START_TRANSIENT
-	 */
-	public boolean isBundlePersistentlyStarted(Bundle bundle);
-
-	/**
-	 * Returns whether the specified bundle's autostart setting indicates that
-	 * the activation policy declared in the bundle's manifest must be used.
-	 * <p>
-	 * The autostart setting of a bundle indicates whether the bundle's declared
-	 * activation policy is to be used when the bundle is started.
-	 * 
-	 * @param bundle The bundle whose autostart setting is to be examined.
-	 * @return <code>true</code> if the bundle's autostart setting indicates the
-	 *         activation policy declared in the manifest must be used.
-	 *         <code>false</code> if the bundle must be eagerly activated.
-	 * @throws java.lang.IllegalArgumentException If the specified bundle has
-	 *         been uninstalled or if the specified bundle was not created by
-	 *         the same framework instance that registered this
-	 *         <code>StartLevel</code> service.
-	 * @since 1.1
-	 * @see Bundle#START_ACTIVATION_POLICY
-	 */
-	public boolean isBundleActivationPolicyUsed(Bundle bundle);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/AbstractURLStreamHandlerService.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/AbstractURLStreamHandlerService.java
deleted file mode 100644
index 1ad37a2..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/AbstractURLStreamHandlerService.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.url;
-
-import java.net.*;
-
-/**
- * Abstract implementation of the <code>URLStreamHandlerService</code>
- * interface. All the methods simply invoke the corresponding methods on
- * <code>java.net.URLStreamHandler</code> except for <code>parseURL</code>
- * and <code>setURL</code>, which use the <code>URLStreamHandlerSetter</code>
- * parameter. Subclasses of this abstract class should not need to override the
- * <code>setURL</code> and <code>parseURL(URLStreamHandlerSetter,...)</code>
- * methods.
- * 
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-public abstract class AbstractURLStreamHandlerService extends URLStreamHandler
-		implements URLStreamHandlerService {
-	/**
-	 * @see "java.net.URLStreamHandler.openConnection"
-	 */
-	public abstract URLConnection openConnection(URL u)
-			throws java.io.IOException;
-
-	/**
-	 * The <code>URLStreamHandlerSetter</code> object passed to the parseURL
-	 * method.
-	 */
-	protected volatile URLStreamHandlerSetter	realHandler;
-
-	/**
-	 * Parse a URL using the <code>URLStreamHandlerSetter</code> object. This
-	 * method sets the <code>realHandler</code> field with the specified
-	 * <code>URLStreamHandlerSetter</code> object and then calls
-	 * <code>parseURL(URL,String,int,int)</code>.
-	 * 
-	 * @param realHandler The object on which the <code>setURL</code> method
-	 *        must be invoked for the specified URL.
-	 * @see "java.net.URLStreamHandler.parseURL"
-	 */
-	public void parseURL(URLStreamHandlerSetter realHandler, URL u,
-			String spec, int start, int limit) {
-		this.realHandler = realHandler;
-		parseURL(u, spec, start, limit);
-	}
-
-	/**
-	 * This method calls <code>super.toExternalForm</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.toExternalForm"
-	 */
-	public String toExternalForm(URL u) {
-		return super.toExternalForm(u);
-	}
-
-	/**
-	 * This method calls <code>super.equals(URL,URL)</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.equals(URL,URL)"
-	 */
-	public boolean equals(URL u1, URL u2) {
-		return super.equals(u1, u2);
-	}
-
-	/**
-	 * This method calls <code>super.getDefaultPort</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.getDefaultPort"
-	 */
-	public int getDefaultPort() {
-		return super.getDefaultPort();
-	}
-
-	/**
-	 * This method calls <code>super.getHostAddress</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.getHostAddress"
-	 */
-	public InetAddress getHostAddress(URL u) {
-		return super.getHostAddress(u);
-	}
-
-	/**
-	 * This method calls <code>super.hashCode(URL)</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.hashCode(URL)"
-	 */
-	public int hashCode(URL u) {
-		return super.hashCode(u);
-	}
-
-	/**
-	 * This method calls <code>super.hostsEqual</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.hostsEqual"
-	 */
-	public boolean hostsEqual(URL u1, URL u2) {
-		return super.hostsEqual(u1, u2);
-	}
-
-	/**
-	 * This method calls <code>super.sameFile</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.sameFile"
-	 */
-	public boolean sameFile(URL u1, URL u2) {
-		return super.sameFile(u1, u2);
-	}
-
-	/**
-	 * This method calls
-	 * <code>realHandler.setURL(URL,String,String,int,String,String)</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String)"
-	 * @deprecated This method is only for compatibility with handlers written
-	 *             for JDK 1.1.
-	 */
-	protected void setURL(URL u, String proto, String host, int port,
-			String file, String ref) {
-		realHandler.setURL(u, proto, host, port, file, ref);
-	}
-
-	/**
-	 * This method calls
-	 * <code>realHandler.setURL(URL,String,String,int,String,String,String,String)</code>.
-	 * 
-	 * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String,String,String)"
-	 */
-	protected void setURL(URL u, String proto, String host, int port,
-			String auth, String user, String path, String query, String ref) {
-		realHandler.setURL(u, proto, host, port, auth, user, path, query, ref);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLConstants.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLConstants.java
deleted file mode 100644
index ae95305..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLConstants.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.url;
-
-/**
- * Defines standard names for property keys associated with
- * {@link URLStreamHandlerService} and <code>java.net.ContentHandler</code>
- * services.
- * 
- * <p>
- * The values associated with these keys are of type
- * <code>java.lang.String[]</code> or <code>java.lang.String</code>, unless
- * otherwise indicated.
- * 
- * @version $Revision: 5673 $
- */
-public interface URLConstants {
-	/**
-	 * Service property naming the protocols serviced by a
-	 * URLStreamHandlerService. The property's value is a protocol name or an
-	 * array of protocol names.
-	 */
-	public static final String	URL_HANDLER_PROTOCOL	= "url.handler.protocol";
-	/**
-	 * Service property naming the MIME types serviced by a
-	 * java.net.ContentHandler. The property's value is a MIME type or an array
-	 * of MIME types.
-	 */
-	public static final String	URL_CONTENT_MIMETYPE	= "url.content.mimetype";
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerService.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerService.java
deleted file mode 100644
index b1ff7d8..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerService.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.url;
-
-import java.net.*;
-
-/**
- * Service interface with public versions of the protected
- * <code>java.net.URLStreamHandler</code> methods.
- * <p>
- * The important differences between this interface and the
- * <code>URLStreamHandler</code> class are that the <code>setURL</code>
- * method is absent and the <code>parseURL</code> method takes a
- * {@link URLStreamHandlerSetter} object as the first argument. Classes
- * implementing this interface must call the <code>setURL</code> method on the
- * <code>URLStreamHandlerSetter</code> object received in the
- * <code>parseURL</code> method instead of
- * <code>URLStreamHandler.setURL</code> to avoid a
- * <code>SecurityException</code>.
- * 
- * @see AbstractURLStreamHandlerService
- * 
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-public interface URLStreamHandlerService {
-	/**
-	 * @see "java.net.URLStreamHandler.openConnection"
-	 */
-	public URLConnection openConnection(URL u) throws java.io.IOException;
-
-	/**
-	 * Parse a URL. This method is called by the <code>URLStreamHandler</code>
-	 * proxy, instead of <code>java.net.URLStreamHandler.parseURL</code>,
-	 * passing a <code>URLStreamHandlerSetter</code> object.
-	 * 
-	 * @param realHandler The object on which <code>setURL</code> must be
-	 *        invoked for this URL.
-	 * @see "java.net.URLStreamHandler.parseURL"
-	 */
-	public void parseURL(URLStreamHandlerSetter realHandler, URL u,
-			String spec, int start, int limit);
-
-	/**
-	 * @see "java.net.URLStreamHandler.toExternalForm"
-	 */
-	public String toExternalForm(URL u);
-
-	/**
-	 * @see "java.net.URLStreamHandler.equals(URL, URL)"
-	 */
-	public boolean equals(URL u1, URL u2);
-
-	/**
-	 * @see "java.net.URLStreamHandler.getDefaultPort"
-	 */
-	public int getDefaultPort();
-
-	/**
-	 * @see "java.net.URLStreamHandler.getHostAddress"
-	 */
-	public InetAddress getHostAddress(URL u);
-
-	/**
-	 * @see "java.net.URLStreamHandler.hashCode(URL)"
-	 */
-	public int hashCode(URL u);
-
-	/**
-	 * @see "java.net.URLStreamHandler.hostsEqual"
-	 */
-	public boolean hostsEqual(URL u1, URL u2);
-
-	/**
-	 * @see "java.net.URLStreamHandler.sameFile"
-	 */
-	public boolean sameFile(URL u1, URL u2);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerSetter.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerSetter.java
deleted file mode 100644
index 36bdce8..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerSetter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2002, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.service.url;
-
-import java.net.URL;
-
-/**
- * Interface used by <code>URLStreamHandlerService</code> objects to call the
- * <code>setURL</code> method on the proxy <code>URLStreamHandler</code>
- * object.
- * 
- * <p>
- * Objects of this type are passed to the
- * {@link URLStreamHandlerService#parseURL} method. Invoking the
- * <code>setURL</code> method on the <code>URLStreamHandlerSetter</code>
- * object will invoke the <code>setURL</code> method on the proxy
- * <code>URLStreamHandler</code> object that is actually registered with
- * <code>java.net.URL</code> for the protocol.
- * 
- * @ThreadSafe
- * @version $Revision: 5673 $
- */
-public interface URLStreamHandlerSetter {
-	/**
-	 * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String)"
-	 * 
-	 * @deprecated This method is only for compatibility with handlers written
-	 *             for JDK 1.1.
-	 */
-	public void setURL(URL u, String protocol, String host, int port,
-			String file, String ref);
-
-	/**
-	 * @see "java.net.URLStreamHandler.setURL(URL,String,String,int,String,String,String,String)"
-	 */
-	public void setURL(URL u, String protocol, String host, int port,
-			String authority, String userInfo, String path, String query,
-			String ref);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java
deleted file mode 100644
index 681148f..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/AbstractTracked.java
+++ /dev/null
@@ -1,449 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2007, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.util.tracker;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstract class to track items. If a Tracker is reused (closed then reopened),
- * then a new AbstractTracked object is used. This class acts a map of tracked
- * item -> customized object. Subclasses of this class will act as the listener
- * object for the tracker. This class is used to synchronize access to the
- * tracked items. This is not a public class. It is only for use by the
- * implementation of the Tracker class.
- * 
- * @ThreadSafe
- * @version $Revision: 5871 $
- * @since 1.4
- */
-abstract class AbstractTracked {
-	/* set this to true to compile in debug messages */
-	static final boolean		DEBUG	= false;
-
-	/**
-	 * Map of tracked items to customized objects.
-	 * 
-	 * @GuardedBy this
-	 */
-	private final Map			tracked;
-
-	/**
-	 * Modification count. This field is initialized to zero and incremented by
-	 * modified.
-	 * 
-	 * @GuardedBy this
-	 */
-	private int					trackingCount;
-
-	/**
-	 * List of items in the process of being added. This is used to deal with
-	 * nesting of events. Since events may be synchronously delivered, events
-	 * can be nested. For example, when processing the adding of a service and
-	 * the customizer causes the service to be unregistered, notification to the
-	 * nested call to untrack that the service was unregistered can be made to
-	 * the track method.
-	 * 
-	 * Since the ArrayList implementation is not synchronized, all access to
-	 * this list must be protected by the same synchronized object for
-	 * thread-safety.
-	 * 
-	 * @GuardedBy this
-	 */
-	private final List			adding;
-
-	/**
-	 * true if the tracked object is closed.
-	 * 
-	 * This field is volatile because it is set by one thread and read by
-	 * another.
-	 */
-	volatile boolean			closed;
-
-	/**
-	 * Initial list of items for the tracker. This is used to correctly process
-	 * the initial items which could be modified before they are tracked. This
-	 * is necessary since the initial set of tracked items are not "announced"
-	 * by events and therefore the event which makes the item untracked could be
-	 * delivered before we track the item.
-	 * 
-	 * An item must not be in both the initial and adding lists at the same
-	 * time. An item must be moved from the initial list to the adding list
-	 * "atomically" before we begin tracking it.
-	 * 
-	 * Since the LinkedList implementation is not synchronized, all access to
-	 * this list must be protected by the same synchronized object for
-	 * thread-safety.
-	 * 
-	 * @GuardedBy this
-	 */
-	private final LinkedList	initial;
-
-	/**
-	 * AbstractTracked constructor.
-	 */
-	AbstractTracked() {
-		tracked = new HashMap();
-		trackingCount = 0;
-		adding = new ArrayList(6);
-		initial = new LinkedList();
-		closed = false;
-	}
-
-	/**
-	 * Set initial list of items into tracker before events begin to be
-	 * received.
-	 * 
-	 * This method must be called from Tracker's open method while synchronized
-	 * on this object in the same synchronized block as the add listener call.
-	 * 
-	 * @param list The initial list of items to be tracked. <code>null</code>
-	 *        entries in the list are ignored.
-	 * @GuardedBy this
-	 */
-	void setInitial(Object[] list) {
-		if (list == null) {
-			return;
-		}
-		int size = list.length;
-		for (int i = 0; i < size; i++) {
-			Object item = list[i];
-			if (item == null) {
-				continue;
-			}
-			if (DEBUG) {
-				System.out.println("AbstractTracked.setInitial: " + item); //$NON-NLS-1$
-			}
-			initial.add(item);
-		}
-	}
-
-	/**
-	 * Track the initial list of items. This is called after events can begin to
-	 * be received.
-	 * 
-	 * This method must be called from Tracker's open method while not
-	 * synchronized on this object after the add listener call.
-	 * 
-	 */
-	void trackInitial() {
-		while (true) {
-			Object item;
-			synchronized (this) {
-				if (closed || (initial.size() == 0)) {
-					/*
-					 * if there are no more initial items
-					 */
-					return; /* we are done */
-				}
-				/*
-				 * move the first item from the initial list to the adding list
-				 * within this synchronized block.
-				 */
-				item = initial.removeFirst();
-				if (tracked.get(item) != null) {
-					/* if we are already tracking this item */
-					if (DEBUG) {
-						System.out
-								.println("AbstractTracked.trackInitial[already tracked]: " + item); //$NON-NLS-1$
-					}
-					continue; /* skip this item */
-				}
-				if (adding.contains(item)) {
-					/*
-					 * if this item is already in the process of being added.
-					 */
-					if (DEBUG) {
-						System.out
-								.println("AbstractTracked.trackInitial[already adding]: " + item); //$NON-NLS-1$
-					}
-					continue; /* skip this item */
-				}
-				adding.add(item);
-			}
-			if (DEBUG) {
-				System.out.println("AbstractTracked.trackInitial: " + item); //$NON-NLS-1$
-			}
-			trackAdding(item, null); /*
-									 * Begin tracking it. We call trackAdding
-									 * since we have already put the item in the
-									 * adding list.
-									 */
-		}
-	}
-
-	/**
-	 * Called by the owning Tracker object when it is closed.
-	 */
-	void close() {
-		closed = true;
-	}
-
-	/**
-	 * Begin to track an item.
-	 * 
-	 * @param item Item to be tracked.
-	 * @param related Action related object.
-	 */
-	void track(final Object item, final Object related) {
-		final Object object;
-		synchronized (this) {
-			if (closed) {
-				return;
-			}
-			object = tracked.get(item);
-			if (object == null) { /* we are not tracking the item */
-				if (adding.contains(item)) {
-					/* if this item is already in the process of being added. */
-					if (DEBUG) {
-						System.out
-								.println("AbstractTracked.track[already adding]: " + item); //$NON-NLS-1$
-					}
-					return;
-				}
-				adding.add(item); /* mark this item is being added */
-			}
-			else { /* we are currently tracking this item */
-				if (DEBUG) {
-					System.out
-							.println("AbstractTracked.track[modified]: " + item); //$NON-NLS-1$
-				}
-				modified(); /* increment modification count */
-			}
-		}
-
-		if (object == null) { /* we are not tracking the item */
-			trackAdding(item, related);
-		}
-		else {
-			/* Call customizer outside of synchronized region */
-			customizerModified(item, related, object);
-			/*
-			 * If the customizer throws an unchecked exception, it is safe to
-			 * let it propagate
-			 */
-		}
-	}
-
-	/**
-	 * Common logic to add an item to the tracker used by track and
-	 * trackInitial. The specified item must have been placed in the adding list
-	 * before calling this method.
-	 * 
-	 * @param item Item to be tracked.
-	 * @param related Action related object.
-	 */
-	private void trackAdding(final Object item, final Object related) {
-		if (DEBUG) {
-			System.out.println("AbstractTracked.trackAdding: " + item); //$NON-NLS-1$
-		}
-		Object object = null;
-		boolean becameUntracked = false;
-		/* Call customizer outside of synchronized region */
-		try {
-			object = customizerAdding(item, related);
-			/*
-			 * If the customizer throws an unchecked exception, it will
-			 * propagate after the finally
-			 */
-		}
-		finally {
-			synchronized (this) {
-				if (adding.remove(item) && !closed) {
-					/*
-					 * if the item was not untracked during the customizer
-					 * callback
-					 */
-					if (object != null) {
-						tracked.put(item, object);
-						modified(); /* increment modification count */
-						notifyAll(); /* notify any waiters */
-					}
-				}
-				else {
-					becameUntracked = true;
-				}
-			}
-		}
-		/*
-		 * The item became untracked during the customizer callback.
-		 */
-		if (becameUntracked && (object != null)) {
-			if (DEBUG) {
-				System.out
-						.println("AbstractTracked.trackAdding[removed]: " + item); //$NON-NLS-1$
-			}
-			/* Call customizer outside of synchronized region */
-			customizerRemoved(item, related, object);
-			/*
-			 * If the customizer throws an unchecked exception, it is safe to
-			 * let it propagate
-			 */
-		}
-	}
-
-	/**
-	 * Discontinue tracking the item.
-	 * 
-	 * @param item Item to be untracked.
-	 * @param related Action related object.
-	 */
-	void untrack(final Object item, final Object related) {
-		final Object object;
-		synchronized (this) {
-			if (initial.remove(item)) { /*
-										 * if this item is already in the list
-										 * of initial references to process
-										 */
-				if (DEBUG) {
-					System.out
-							.println("AbstractTracked.untrack[removed from initial]: " + item); //$NON-NLS-1$
-				}
-				return; /*
-						 * we have removed it from the list and it will not be
-						 * processed
-						 */
-			}
-
-			if (adding.remove(item)) { /*
-										 * if the item is in the process of
-										 * being added
-										 */
-				if (DEBUG) {
-					System.out
-							.println("AbstractTracked.untrack[being added]: " + item); //$NON-NLS-1$
-				}
-				return; /*
-						 * in case the item is untracked while in the process of
-						 * adding
-						 */
-			}
-			object = tracked.remove(item); /*
-											 * must remove from tracker before
-											 * calling customizer callback
-											 */
-			if (object == null) { /* are we actually tracking the item */
-				return;
-			}
-			modified(); /* increment modification count */
-		}
-		if (DEBUG) {
-			System.out.println("AbstractTracked.untrack[removed]: " + item); //$NON-NLS-1$
-		}
-		/* Call customizer outside of synchronized region */
-		customizerRemoved(item, related, object);
-		/*
-		 * If the customizer throws an unchecked exception, it is safe to let it
-		 * propagate
-		 */
-	}
-
-	/**
-	 * Returns the number of tracked items.
-	 * 
-	 * @return The number of tracked items.
-	 * 
-	 * @GuardedBy this
-	 */
-	int size() {
-		return tracked.size();
-	}
-
-	/**
-	 * Return the customized object for the specified item
-	 * 
-	 * @param item The item to lookup in the map
-	 * @return The customized object for the specified item.
-	 * 
-	 * @GuardedBy this
-	 */
-	Object getCustomizedObject(final Object item) {
-		return tracked.get(item);
-	}
-
-	/**
-	 * Return the list of tracked items.
-	 * 
-	 * @param list An array to contain the tracked items.
-	 * @return The specified list if it is large enough to hold the tracked
-	 *         items or a new array large enough to hold the tracked items.
-	 * @GuardedBy this
-	 */
-	Object[] getTracked(final Object[] list) {
-		return tracked.keySet().toArray(list);
-	}
-
-	/**
-	 * Increment the modification count. If this method is overridden, the
-	 * overriding method MUST call this method to increment the tracking count.
-	 * 
-	 * @GuardedBy this
-	 */
-	void modified() {
-		trackingCount++;
-	}
-
-	/**
-	 * Returns the tracking count for this <code>ServiceTracker</code> object.
-	 * 
-	 * The tracking count is initialized to 0 when this object is opened. Every
-	 * time an item is added, modified or removed from this object the tracking
-	 * count is incremented.
-	 * 
-	 * @GuardedBy this
-	 * @return The tracking count for this object.
-	 */
-	int getTrackingCount() {
-		return trackingCount;
-	}
-
-	/**
-	 * Call the specific customizer adding method. This method must not be
-	 * called while synchronized on this object.
-	 * 
-	 * @param item Item to be tracked.
-	 * @param related Action related object.
-	 * @return Customized object for the tracked item or <code>null</code> if
-	 *         the item is not to be tracked.
-	 */
-	abstract Object customizerAdding(final Object item, final Object related);
-
-	/**
-	 * Call the specific customizer modified method. This method must not be
-	 * called while synchronized on this object.
-	 * 
-	 * @param item Tracked item.
-	 * @param related Action related object.
-	 * @param object Customized object for the tracked item.
-	 */
-	abstract void customizerModified(final Object item, final Object related,
-			final Object object);
-
-	/**
-	 * Call the specific customizer removed method. This method must not be
-	 * called while synchronized on this object.
-	 * 
-	 * @param item Tracked item.
-	 * @param related Action related object.
-	 * @param object Customized object for the tracked item.
-	 */
-	abstract void customizerRemoved(final Object item, final Object related,
-			final Object object);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
deleted file mode 100644
index 8791d98..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTracker.java
+++ /dev/null
@@ -1,471 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2007, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.util.tracker;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.SynchronousBundleListener;
-
-/**
- * The <code>BundleTracker</code> class simplifies tracking bundles much like
- * the <code>ServiceTracker</code> simplifies tracking services.
- * <p>
- * A <code>BundleTracker</code> is constructed with state criteria and a
- * <code>BundleTrackerCustomizer</code> object. A <code>BundleTracker</code> can
- * use the <code>BundleTrackerCustomizer</code> to select which bundles are
- * tracked and to create a customized object to be tracked with the bundle. The
- * <code>BundleTracker</code> can then be opened to begin tracking all bundles
- * whose state matches the specified state criteria.
- * <p>
- * The <code>getBundles</code> method can be called to get the
- * <code>Bundle</code> objects of the bundles being tracked. The
- * <code>getObject</code> method can be called to get the customized object for
- * a tracked bundle.
- * <p>
- * The <code>BundleTracker</code> class is thread-safe. It does not call a
- * <code>BundleTrackerCustomizer</code> while holding any locks.
- * <code>BundleTrackerCustomizer</code> implementations must also be
- * thread-safe.
- * 
- * @ThreadSafe
- * @version $Revision: 5894 $
- * @since 1.4
- */
-public class BundleTracker implements BundleTrackerCustomizer {
-	/* set this to true to compile in debug messages */
-	static final boolean			DEBUG	= false;
-
-	/**
-	 * The Bundle Context used by this <code>BundleTracker</code>.
-	 */
-	protected final BundleContext	context;
-
-	/**
-	 * The <code>BundleTrackerCustomizer</code> object for this tracker.
-	 */
-	final BundleTrackerCustomizer	customizer;
-
-	/**
-	 * Tracked bundles: <code>Bundle</code> object -> customized Object and
-	 * <code>BundleListener</code> object
-	 */
-	private volatile Tracked		tracked;
-
-	/**
-	 * Accessor method for the current Tracked object. This method is only
-	 * intended to be used by the unsynchronized methods which do not modify the
-	 * tracked field.
-	 * 
-	 * @return The current Tracked object.
-	 */
-	private Tracked tracked() {
-		return tracked;
-	}
-
-	/**
-	 * State mask for bundles being tracked. This field contains the ORed values
-	 * of the bundle states being tracked.
-	 */
-	final int						mask;
-
-	/**
-	 * Create a <code>BundleTracker</code> for bundles whose state is present in
-	 * the specified state mask.
-	 * 
-	 * <p>
-	 * Bundles whose state is present on the specified state mask will be
-	 * tracked by this <code>BundleTracker</code>.
-	 * 
-	 * @param context The <code>BundleContext</code> against which the tracking
-	 *        is done.
-	 * @param stateMask The bit mask of the <code>OR</code>ing of the bundle
-	 *        states to be tracked.
-	 * @param customizer The customizer object to call when bundles are added,
-	 *        modified, or removed in this <code>BundleTracker</code>. If
-	 *        customizer is <code>null</code>, then this
-	 *        <code>BundleTracker</code> will be used as the
-	 *        <code>BundleTrackerCustomizer</code> and this
-	 *        <code>BundleTracker</code> will call the
-	 *        <code>BundleTrackerCustomizer</code> methods on itself.
-	 * @see Bundle#getState()
-	 */
-	public BundleTracker(BundleContext context, int stateMask,
-			BundleTrackerCustomizer customizer) {
-		this.context = context;
-		this.mask = stateMask;
-		this.customizer = (customizer == null) ? this : customizer;
-	}
-
-	/**
-	 * Open this <code>BundleTracker</code> and begin tracking bundles.
-	 * 
-	 * <p>
-	 * Bundle which match the state criteria specified when this
-	 * <code>BundleTracker</code> was created are now tracked by this
-	 * <code>BundleTracker</code>.
-	 * 
-	 * @throws java.lang.IllegalStateException If the <code>BundleContext</code>
-	 *         with which this <code>BundleTracker</code> was created is no
-	 *         longer valid.
-	 * @throws java.lang.SecurityException If the caller and this class do not
-	 *         have the appropriate
-	 *         <code>AdminPermission[context bundle,LISTENER]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 */
-	public void open() {
-		final Tracked t;
-		synchronized (this) {
-			if (tracked != null) {
-				return;
-			}
-			if (DEBUG) {
-				System.out.println("BundleTracker.open"); //$NON-NLS-1$
-			}
-			t = new Tracked();
-			synchronized (t) {
-				context.addBundleListener(t);
-				Bundle[] bundles = context.getBundles();
-				if (bundles != null) {
-					int length = bundles.length;
-					for (int i = 0; i < length; i++) {
-						int state = bundles[i].getState();
-						if ((state & mask) == 0) {
-							/* null out bundles whose states are not interesting */
-							bundles[i] = null;
-						}
-					}
-					/* set tracked with the initial bundles */
-					t.setInitial(bundles); 
-				}
-			}
-			tracked = t;
-		}
-		/* Call tracked outside of synchronized region */
-		t.trackInitial(); /* process the initial references */
-	}
-
-	/**
-	 * Close this <code>BundleTracker</code>.
-	 * 
-	 * <p>
-	 * This method should be called when this <code>BundleTracker</code> should
-	 * end the tracking of bundles.
-	 * 
-	 * <p>
-	 * This implementation calls {@link #getBundles()} to get the list of
-	 * tracked bundles to remove.
-	 */
-	public void close() {
-		final Bundle[] bundles;
-		final Tracked outgoing;
-		synchronized (this) {
-			outgoing = tracked;
-			if (outgoing == null) {
-				return;
-			}
-			if (DEBUG) {
-				System.out.println("BundleTracker.close"); //$NON-NLS-1$
-			}
-			outgoing.close();
-			bundles = getBundles();
-			tracked = null;
-			try {
-				context.removeBundleListener(outgoing);
-			}
-			catch (IllegalStateException e) {
-				/* In case the context was stopped. */
-			}
-		}
-		if (bundles != null) {
-			for (int i = 0; i < bundles.length; i++) {
-				outgoing.untrack(bundles[i], null);
-			}
-		}
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>BundleTrackerCustomizer.addingBundle</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>BundleTracker</code> has been
-	 * constructed with a <code>null BundleTrackerCustomizer</code> argument.
-	 * 
-	 * <p>
-	 * This implementation simply returns the specified <code>Bundle</code>.
-	 * 
-	 * <p>
-	 * This method can be overridden in a subclass to customize the object to be
-	 * tracked for the bundle being added.
-	 * 
-	 * @param bundle The <code>Bundle</code> being added to this
-	 *        <code>BundleTracker</code> object.
-	 * @param event The bundle event which caused this customizer method to be
-	 *        called or <code>null</code> if there is no bundle event associated
-	 *        with the call to this method.
-	 * @return The specified bundle.
-	 * @see BundleTrackerCustomizer#addingBundle(Bundle, BundleEvent)
-	 */
-	public Object addingBundle(Bundle bundle, BundleEvent event) {
-		return bundle;
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>BundleTrackerCustomizer.modifiedBundle</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>BundleTracker</code> has been
-	 * constructed with a <code>null BundleTrackerCustomizer</code> argument.
-	 * 
-	 * <p>
-	 * This implementation does nothing.
-	 * 
-	 * @param bundle The <code>Bundle</code> whose state has been modified.
-	 * @param event The bundle event which caused this customizer method to be
-	 *        called or <code>null</code> if there is no bundle event associated
-	 *        with the call to this method.
-	 * @param object The customized object for the specified Bundle.
-	 * @see BundleTrackerCustomizer#modifiedBundle(Bundle, BundleEvent, Object)
-	 */
-	public void modifiedBundle(Bundle bundle, BundleEvent event, Object object) {
-		/* do nothing */
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>BundleTrackerCustomizer.removedBundle</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>BundleTracker</code> has been
-	 * constructed with a <code>null BundleTrackerCustomizer</code> argument.
-	 * 
-	 * <p>
-	 * This implementation does nothing.
-	 * 
-	 * @param bundle The <code>Bundle</code> being removed.
-	 * @param event The bundle event which caused this customizer method to be
-	 *        called or <code>null</code> if there is no bundle event associated
-	 *        with the call to this method.
-	 * @param object The customized object for the specified bundle.
-	 * @see BundleTrackerCustomizer#removedBundle(Bundle, BundleEvent, Object)
-	 */
-	public void removedBundle(Bundle bundle, BundleEvent event, Object object) {
-		/* do nothing */
-	}
-
-	/**
-	 * Return an array of <code>Bundle</code>s for all bundles being tracked by
-	 * this <code>BundleTracker</code>.
-	 * 
-	 * @return An array of <code>Bundle</code>s or <code>null</code> if no
-	 *         bundles are being tracked.
-	 */
-	public Bundle[] getBundles() {
-		final Tracked t = tracked();
-		if (t == null) { /* if BundleTracker is not open */
-			return null;
-		}
-		synchronized (t) {
-			int length = t.size();
-			if (length == 0) {
-				return null;
-			}
-			return (Bundle[]) t.getTracked(new Bundle[length]);
-		}
-	}
-
-	/**
-	 * Returns the customized object for the specified <code>Bundle</code> if
-	 * the specified bundle is being tracked by this <code>BundleTracker</code>.
-	 * 
-	 * @param bundle The <code>Bundle</code> being tracked.
-	 * @return The customized object for the specified <code>Bundle</code> or
-	 *         <code>null</code> if the specified <code>Bundle</code> is not
-	 *         being tracked.
-	 */
-	public Object getObject(Bundle bundle) {
-		final Tracked t = tracked();
-		if (t == null) { /* if BundleTracker is not open */
-			return null;
-		}
-		synchronized (t) {
-			return t.getCustomizedObject(bundle);
-		}
-	}
-
-	/**
-	 * Remove a bundle from this <code>BundleTracker</code>.
-	 * 
-	 * The specified bundle will be removed from this <code>BundleTracker</code>
-	 * . If the specified bundle was being tracked then the
-	 * <code>BundleTrackerCustomizer.removedBundle</code> method will be called
-	 * for that bundle.
-	 * 
-	 * @param bundle The <code>Bundle</code> to be removed.
-	 */
-	public void remove(Bundle bundle) {
-		final Tracked t = tracked();
-		if (t == null) { /* if BundleTracker is not open */
-			return;
-		}
-		t.untrack(bundle, null);
-	}
-
-	/**
-	 * Return the number of bundles being tracked by this
-	 * <code>BundleTracker</code>.
-	 * 
-	 * @return The number of bundles being tracked.
-	 */
-	public int size() {
-		final Tracked t = tracked();
-		if (t == null) { /* if BundleTracker is not open */
-			return 0;
-		}
-		synchronized (t) {
-			return t.size();
-		}
-	}
-
-	/**
-	 * Returns the tracking count for this <code>BundleTracker</code>.
-	 * 
-	 * The tracking count is initialized to 0 when this
-	 * <code>BundleTracker</code> is opened. Every time a bundle is added,
-	 * modified or removed from this <code>BundleTracker</code> the tracking
-	 * count is incremented.
-	 * 
-	 * <p>
-	 * The tracking count can be used to determine if this
-	 * <code>BundleTracker</code> has added, modified or removed a bundle by
-	 * comparing a tracking count value previously collected with the current
-	 * tracking count value. If the value has not changed, then no bundle has
-	 * been added, modified or removed from this <code>BundleTracker</code>
-	 * since the previous tracking count was collected.
-	 * 
-	 * @return The tracking count for this <code>BundleTracker</code> or -1 if
-	 *         this <code>BundleTracker</code> is not open.
-	 */
-	public int getTrackingCount() {
-		final Tracked t = tracked();
-		if (t == null) { /* if BundleTracker is not open */
-			return -1;
-		}
-		synchronized (t) {
-			return t.getTrackingCount();
-		}
-	}
-
-	/**
-	 * Inner class which subclasses AbstractTracked. This class is the
-	 * <code>SynchronousBundleListener</code> object for the tracker.
-	 * 
-	 * @ThreadSafe
-	 * @since 1.4
-	 */
-	class Tracked extends AbstractTracked implements SynchronousBundleListener {
-		/**
-		 * Tracked constructor.
-		 */
-		Tracked() {
-			super();
-		}
-
-		/**
-		 * <code>BundleListener</code> method for the <code>BundleTracker</code>
-		 * class. This method must NOT be synchronized to avoid deadlock
-		 * potential.
-		 * 
-		 * @param event <code>BundleEvent</code> object from the framework.
-		 */
-		public void bundleChanged(final BundleEvent event) {
-			/*
-			 * Check if we had a delayed call (which could happen when we
-			 * close).
-			 */
-			if (closed) {
-				return;
-			}
-			final Bundle bundle = event.getBundle();
-			final int state = bundle.getState();
-			if (DEBUG) {
-				System.out
-						.println("BundleTracker.Tracked.bundleChanged[" + state + "]: " + bundle); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-
-			if ((state & mask) != 0) {
-				track(bundle, event);
-				/*
-				 * If the customizer throws an unchecked exception, it is safe
-				 * to let it propagate
-				 */
-			}
-			else {
-				untrack(bundle, event);
-				/*
-				 * If the customizer throws an unchecked exception, it is safe
-				 * to let it propagate
-				 */
-			}
-		}
-
-		/**
-		 * Call the specific customizer adding method. This method must not be
-		 * called while synchronized on this object.
-		 * 
-		 * @param item Item to be tracked.
-		 * @param related Action related object.
-		 * @return Customized object for the tracked item or <code>null</code>
-		 *         if the item is not to be tracked.
-		 */
-		Object customizerAdding(final Object item,
-				final Object related) {
-			return customizer
-					.addingBundle((Bundle) item, (BundleEvent) related);
-		}
-
-		/**
-		 * Call the specific customizer modified method. This method must not be
-		 * called while synchronized on this object.
-		 * 
-		 * @param item Tracked item.
-		 * @param related Action related object.
-		 * @param object Customized object for the tracked item.
-		 */
-		void customizerModified(final Object item,
-				final Object related, final Object object) {
-			customizer.modifiedBundle((Bundle) item, (BundleEvent) related,
-					object);
-		}
-
-		/**
-		 * Call the specific customizer removed method. This method must not be
-		 * called while synchronized on this object.
-		 * 
-		 * @param item Tracked item.
-		 * @param related Action related object.
-		 * @param object Customized object for the tracked item.
-		 */
-		void customizerRemoved(final Object item,
-				final Object related, final Object object) {
-			customizer.removedBundle((Bundle) item, (BundleEvent) related,
-					object);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTrackerCustomizer.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTrackerCustomizer.java
deleted file mode 100644
index 100c6b4..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/BundleTrackerCustomizer.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2007, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.util.tracker;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleEvent;
-
-/**
- * The <code>BundleTrackerCustomizer</code> interface allows a
- * <code>BundleTracker</code> to customize the <code>Bundle</code>s that are
- * tracked. A <code>BundleTrackerCustomizer</code> is called when a bundle is
- * being added to a <code>BundleTracker</code>. The
- * <code>BundleTrackerCustomizer</code> can then return an object for the
- * tracked bundle. A <code>BundleTrackerCustomizer</code> is also called when a
- * tracked bundle is modified or has been removed from a
- * <code>BundleTracker</code>.
- * 
- * <p>
- * The methods in this interface may be called as the result of a
- * <code>BundleEvent</code> being received by a <code>BundleTracker</code>.
- * Since <code>BundleEvent</code>s are received synchronously by the
- * <code>BundleTracker</code>, it is highly recommended that implementations of
- * these methods do not alter bundle states while being synchronized on any
- * object.
- * 
- * <p>
- * The <code>BundleTracker</code> class is thread-safe. It does not call a
- * <code>BundleTrackerCustomizer</code> while holding any locks.
- * <code>BundleTrackerCustomizer</code> implementations must also be
- * thread-safe.
- * 
- * @ThreadSafe
- * @version $Revision: 5874 $
- * @since 1.4
- */
-public interface BundleTrackerCustomizer {
-	/**
-	 * A bundle is being added to the <code>BundleTracker</code>.
-	 * 
-	 * <p>
-	 * This method is called before a bundle which matched the search parameters
-	 * of the <code>BundleTracker</code> is added to the
-	 * <code>BundleTracker</code>. This method should return the object to be
-	 * tracked for the specified <code>Bundle</code>. The returned object is
-	 * stored in the <code>BundleTracker</code> and is available from the
-	 * {@link BundleTracker#getObject(Bundle) getObject} method.
-	 * 
-	 * @param bundle The <code>Bundle</code> being added to the
-	 *        <code>BundleTracker</code>.
-	 * @param event The bundle event which caused this customizer method to be
-	 *        called or <code>null</code> if there is no bundle event associated
-	 *        with the call to this method.
-	 * @return The object to be tracked for the specified <code>Bundle</code>
-	 *         object or <code>null</code> if the specified <code>Bundle</code>
-	 *         object should not be tracked.
-	 */
-	public Object addingBundle(Bundle bundle, BundleEvent event);
-
-	/**
-	 * A bundle tracked by the <code>BundleTracker</code> has been modified.
-	 * 
-	 * <p>
-	 * This method is called when a bundle being tracked by the
-	 * <code>BundleTracker</code> has had its state modified.
-	 * 
-	 * @param bundle The <code>Bundle</code> whose state has been modified.
-	 * @param event The bundle event which caused this customizer method to be
-	 *        called or <code>null</code> if there is no bundle event associated
-	 *        with the call to this method.
-	 * @param object The tracked object for the specified bundle.
-	 */
-	public void modifiedBundle(Bundle bundle, BundleEvent event,
-			Object object);
-
-	/**
-	 * A bundle tracked by the <code>BundleTracker</code> has been removed.
-	 * 
-	 * <p>
-	 * This method is called after a bundle is no longer being tracked by the
-	 * <code>BundleTracker</code>.
-	 * 
-	 * @param bundle The <code>Bundle</code> that has been removed.
-	 * @param event The bundle event which caused this customizer method to be
-	 *        called or <code>null</code> if there is no bundle event associated
-	 *        with the call to this method.
-	 * @param object The tracked object for the specified bundle.
-	 */
-	public void removedBundle(Bundle bundle, BundleEvent event,
-			Object object);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
deleted file mode 100644
index b4e373b..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
+++ /dev/null
@@ -1,941 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2009). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.util.tracker;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-
-import org.osgi.framework.AllServiceListener;
-import org.osgi.framework.BundleContext;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.ServiceEvent;
-import org.osgi.framework.ServiceListener;
-import org.osgi.framework.ServiceReference;
-import org.osgi.framework.Version;
-
-/**
- * The <code>ServiceTracker</code> class simplifies using services from the
- * Framework's service registry.
- * <p>
- * A <code>ServiceTracker</code> object is constructed with search criteria and
- * a <code>ServiceTrackerCustomizer</code> object. A <code>ServiceTracker</code>
- * can use a <code>ServiceTrackerCustomizer</code> to customize the service
- * objects to be tracked. The <code>ServiceTracker</code> can then be opened to
- * begin tracking all services in the Framework's service registry that match
- * the specified search criteria. The <code>ServiceTracker</code> correctly
- * handles all of the details of listening to <code>ServiceEvent</code>s and
- * getting and ungetting services.
- * <p>
- * The <code>getServiceReferences</code> method can be called to get references
- * to the services being tracked. The <code>getService</code> and
- * <code>getServices</code> methods can be called to get the service objects for
- * the tracked service.
- * <p>
- * The <code>ServiceTracker</code> class is thread-safe. It does not call a
- * <code>ServiceTrackerCustomizer</code> while holding any locks.
- * <code>ServiceTrackerCustomizer</code> implementations must also be
- * thread-safe.
- * 
- * @ThreadSafe
- * @version $Revision: 6386 $
- */
-public class ServiceTracker implements ServiceTrackerCustomizer {
-	/* set this to true to compile in debug messages */
-	static final boolean				DEBUG			= false;
-	/**
-	 * The Bundle Context used by this <code>ServiceTracker</code>.
-	 */
-	protected final BundleContext		context;
-	/**
-	 * The Filter used by this <code>ServiceTracker</code> which specifies the
-	 * search criteria for the services to track.
-	 * 
-	 * @since 1.1
-	 */
-	protected final Filter				filter;
-	/**
-	 * The <code>ServiceTrackerCustomizer</code> for this tracker.
-	 */
-	final ServiceTrackerCustomizer		customizer;
-	/**
-	 * Filter string for use when adding the ServiceListener. If this field is
-	 * set, then certain optimizations can be taken since we don't have a user
-	 * supplied filter.
-	 */
-	final String						listenerFilter;
-	/**
-	 * Class name to be tracked. If this field is set, then we are tracking by
-	 * class name.
-	 */
-	private final String				trackClass;
-	/**
-	 * Reference to be tracked. If this field is set, then we are tracking a
-	 * single ServiceReference.
-	 */
-	private final ServiceReference		trackReference;
-	/**
-	 * Tracked services: <code>ServiceReference</code> -> customized Object and
-	 * <code>ServiceListener</code> object
-	 */
-	private volatile Tracked			tracked;
-
-	/**
-	 * Accessor method for the current Tracked object. This method is only
-	 * intended to be used by the unsynchronized methods which do not modify the
-	 * tracked field.
-	 * 
-	 * @return The current Tracked object.
-	 */
-	private Tracked tracked() {
-		return tracked;
-	}
-
-	/**
-	 * Cached ServiceReference for getServiceReference.
-	 * 
-	 * This field is volatile since it is accessed by multiple threads.
-	 */
-	private volatile ServiceReference	cachedReference;
-	/**
-	 * Cached service object for getService.
-	 * 
-	 * This field is volatile since it is accessed by multiple threads.
-	 */
-	private volatile Object				cachedService;
-
-	/**
-	 * org.osgi.framework package version which introduced
-	 * {@link ServiceEvent#MODIFIED_ENDMATCH}
-	 */
-	private static final Version		endMatchVersion	= new Version(1, 5, 0);
-
-	/**
-	 * Create a <code>ServiceTracker</code> on the specified
-	 * <code>ServiceReference</code>.
-	 * 
-	 * <p>
-	 * The service referenced by the specified <code>ServiceReference</code>
-	 * will be tracked by this <code>ServiceTracker</code>.
-	 * 
-	 * @param context The <code>BundleContext</code> against which the tracking
-	 *        is done.
-	 * @param reference The <code>ServiceReference</code> for the service to be
-	 *        tracked.
-	 * @param customizer The customizer object to call when services are added,
-	 *        modified, or removed in this <code>ServiceTracker</code>. If
-	 *        customizer is <code>null</code>, then this
-	 *        <code>ServiceTracker</code> will be used as the
-	 *        <code>ServiceTrackerCustomizer</code> and this
-	 *        <code>ServiceTracker</code> will call the
-	 *        <code>ServiceTrackerCustomizer</code> methods on itself.
-	 */
-	public ServiceTracker(final BundleContext context,
-			final ServiceReference reference,
-			final ServiceTrackerCustomizer customizer) {
-		this.context = context;
-		this.trackReference = reference;
-		this.trackClass = null;
-		this.customizer = (customizer == null) ? this : customizer;
-		this.listenerFilter = "(" + Constants.SERVICE_ID + "="
-				+ reference.getProperty(Constants.SERVICE_ID).toString() + ")"; 
-		try {
-			this.filter = context.createFilter(listenerFilter);
-		}
-		catch (InvalidSyntaxException e) {
-			/*
-			 * we could only get this exception if the ServiceReference was
-			 * invalid
-			 */
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"unexpected InvalidSyntaxException: " + e.getMessage());
-			iae.initCause(e);
-			throw iae;
-		}
-	}
-
-	/**
-	 * Create a <code>ServiceTracker</code> on the specified class name.
-	 * 
-	 * <p>
-	 * Services registered under the specified class name will be tracked by
-	 * this <code>ServiceTracker</code>.
-	 * 
-	 * @param context The <code>BundleContext</code> against which the tracking
-	 *        is done.
-	 * @param clazz The class name of the services to be tracked.
-	 * @param customizer The customizer object to call when services are added,
-	 *        modified, or removed in this <code>ServiceTracker</code>. If
-	 *        customizer is <code>null</code>, then this
-	 *        <code>ServiceTracker</code> will be used as the
-	 *        <code>ServiceTrackerCustomizer</code> and this
-	 *        <code>ServiceTracker</code> will call the
-	 *        <code>ServiceTrackerCustomizer</code> methods on itself.
-	 */
-	public ServiceTracker(final BundleContext context, final String clazz,
-			final ServiceTrackerCustomizer customizer) {
-		this.context = context;
-		this.trackReference = null;
-		this.trackClass = clazz;
-		this.customizer = (customizer == null) ? this : customizer;
-		// we call clazz.toString to verify clazz is non-null!
-		this.listenerFilter = "(" + Constants.OBJECTCLASS + "="
-				+ clazz.toString() + ")"; 
-		try {
-			this.filter = context.createFilter(listenerFilter);
-		}
-		catch (InvalidSyntaxException e) {
-			/*
-			 * we could only get this exception if the clazz argument was
-			 * malformed
-			 */
-			IllegalArgumentException iae = new IllegalArgumentException(
-					"unexpected InvalidSyntaxException: " + e.getMessage());
-			iae.initCause(e);
-			throw iae;
-		}
-	}
-
-	/**
-	 * Create a <code>ServiceTracker</code> on the specified <code>Filter</code>
-	 * object.
-	 * 
-	 * <p>
-	 * Services which match the specified <code>Filter</code> object will be
-	 * tracked by this <code>ServiceTracker</code>.
-	 * 
-	 * @param context The <code>BundleContext</code> against which the tracking
-	 *        is done.
-	 * @param filter The <code>Filter</code> to select the services to be
-	 *        tracked.
-	 * @param customizer The customizer object to call when services are added,
-	 *        modified, or removed in this <code>ServiceTracker</code>. If
-	 *        customizer is null, then this <code>ServiceTracker</code> will be
-	 *        used as the <code>ServiceTrackerCustomizer</code> and this
-	 *        <code>ServiceTracker</code> will call the
-	 *        <code>ServiceTrackerCustomizer</code> methods on itself.
-	 * @since 1.1
-	 */
-	public ServiceTracker(final BundleContext context, final Filter filter,
-			final ServiceTrackerCustomizer customizer) {
-		this.context = context;
-		this.trackReference = null;
-		this.trackClass = null;
-		final Version frameworkVersion = (Version) AccessController
-				.doPrivileged(new PrivilegedAction() {
-					public Object run() {
-						String version = context
-								.getProperty(Constants.FRAMEWORK_VERSION);
-						return (version == null) ? Version.emptyVersion
-								: new Version(version);
-					}
-				});
-		final boolean endMatchSupported = (frameworkVersion
-				.compareTo(endMatchVersion) >= 0);
-		this.listenerFilter = endMatchSupported ? filter.toString() : null;
-		this.filter = filter;
-		this.customizer = (customizer == null) ? this : customizer;
-		if ((context == null) || (filter == null)) {
-			/*
-			 * we throw a NPE here to be consistent with the other constructors
-			 */
-			throw new NullPointerException();
-		}
-	}
-
-	/**
-	 * Open this <code>ServiceTracker</code> and begin tracking services.
-	 * 
-	 * <p>
-	 * This implementation calls <code>open(false)</code>.
-	 * 
-	 * @throws java.lang.IllegalStateException If the <code>BundleContext</code>
-	 *         with which this <code>ServiceTracker</code> was created is no
-	 *         longer valid.
-	 * @see #open(boolean)
-	 */
-	public void open() {
-		open(false);
-	}
-
-	/**
-	 * Open this <code>ServiceTracker</code> and begin tracking services.
-	 * 
-	 * <p>
-	 * Services which match the search criteria specified when this
-	 * <code>ServiceTracker</code> was created are now tracked by this
-	 * <code>ServiceTracker</code>.
-	 * 
-	 * @param trackAllServices If <code>true</code>, then this
-	 *        <code>ServiceTracker</code> will track all matching services
-	 *        regardless of class loader accessibility. If <code>false</code>,
-	 *        then this <code>ServiceTracker</code> will only track matching
-	 *        services which are class loader accessible to the bundle whose
-	 *        <code>BundleContext</code> is used by this
-	 *        <code>ServiceTracker</code>.
-	 * @throws java.lang.IllegalStateException If the <code>BundleContext</code>
-	 *         with which this <code>ServiceTracker</code> was created is no
-	 *         longer valid.
-	 * @since 1.3
-	 */
-	public void open(boolean trackAllServices) {
-		final Tracked t;
-		synchronized (this) {
-			if (tracked != null) {
-				return;
-			}
-			if (DEBUG) {
-				System.out.println("ServiceTracker.open: " + filter); 
-			}
-			t = trackAllServices ? new AllTracked() : new Tracked();
-			synchronized (t) {
-				try {
-					context.addServiceListener(t, listenerFilter);
-					ServiceReference[] references = null;
-					if (trackClass != null) {
-						references = getInitialReferences(trackAllServices,
-								trackClass, null);
-					}
-					else {
-						if (trackReference != null) {
-							if (trackReference.getBundle() != null) {
-								references = new ServiceReference[] {trackReference};
-							}
-						}
-						else { /* user supplied filter */
-							references = getInitialReferences(trackAllServices,
-									null,
-									(listenerFilter != null) ? listenerFilter
-											: filter.toString());
-						}
-					}
-					/* set tracked with the initial references */
-					t.setInitial(references); 
-				}
-				catch (InvalidSyntaxException e) {
-					throw new RuntimeException(
-							"unexpected InvalidSyntaxException: "
-									+ e.getMessage(), e); 
-				}
-			}
-			tracked = t;
-		}
-		/* Call tracked outside of synchronized region */
-		t.trackInitial(); /* process the initial references */
-	}
-
-	/**
-	 * Returns the list of initial <code>ServiceReference</code>s that will be
-	 * tracked by this <code>ServiceTracker</code>.
-	 * 
-	 * @param trackAllServices If <code>true</code>, use
-	 *        <code>getAllServiceReferences</code>.
-	 * @param className The class name with which the service was registered, or
-	 *        <code>null</code> for all services.
-	 * @param filterString The filter criteria or <code>null</code> for all
-	 *        services.
-	 * @return The list of initial <code>ServiceReference</code>s.
-	 * @throws InvalidSyntaxException If the specified filterString has an
-	 *         invalid syntax.
-	 */
-	private ServiceReference[] getInitialReferences(boolean trackAllServices,
-			String className, String filterString)
-			throws InvalidSyntaxException {
-		if (trackAllServices) {
-			return context.getAllServiceReferences(className, filterString);
-		}
-		return context.getServiceReferences(className, filterString);
-	}
-
-	/**
-	 * Close this <code>ServiceTracker</code>.
-	 * 
-	 * <p>
-	 * This method should be called when this <code>ServiceTracker</code> should
-	 * end the tracking of services.
-	 * 
-	 * <p>
-	 * This implementation calls {@link #getServiceReferences()} to get the list
-	 * of tracked services to remove.
-	 */
-	public void close() {
-		final Tracked outgoing;
-		final ServiceReference[] references;
-		synchronized (this) {
-			outgoing = tracked;
-			if (outgoing == null) {
-				return;
-			}
-			if (DEBUG) {
-				System.out.println("ServiceTracker.close: " + filter); 
-			}
-			outgoing.close();
-			references = getServiceReferences();
-			tracked = null;
-			try {
-				context.removeServiceListener(outgoing);
-			}
-			catch (IllegalStateException e) {
-				/* In case the context was stopped. */
-			}
-		}
-		modified(); /* clear the cache */
-		synchronized (outgoing) {
-			outgoing.notifyAll(); /* wake up any waiters */
-		}
-		if (references != null) {
-			for (int i = 0; i < references.length; i++) {
-				outgoing.untrack(references[i], null);
-			}
-		}
-		if (DEBUG) {
-			if ((cachedReference == null) && (cachedService == null)) {
-				System.out
-						.println("ServiceTracker.close[cached cleared]: "
-						+ filter); 
-			}
-		}
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>ServiceTrackerCustomizer.addingService</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>ServiceTracker</code> has been
-	 * constructed with a <code>null ServiceTrackerCustomizer</code> argument.
-	 * 
-	 * <p>
-	 * This implementation returns the result of calling <code>getService</code>
-	 * on the <code>BundleContext</code> with which this
-	 * <code>ServiceTracker</code> was created passing the specified
-	 * <code>ServiceReference</code>.
-	 * <p>
-	 * This method can be overridden in a subclass to customize the service
-	 * object to be tracked for the service being added. In that case, take care
-	 * not to rely on the default implementation of
-	 * {@link #removedService(ServiceReference, Object) removedService} to unget
-	 * the service.
-	 * 
-	 * @param reference The reference to the service being added to this
-	 *        <code>ServiceTracker</code>.
-	 * @return The service object to be tracked for the service added to this
-	 *         <code>ServiceTracker</code>.
-	 * @see ServiceTrackerCustomizer#addingService(ServiceReference)
-	 */
-	public Object addingService(ServiceReference reference) {
-		return context.getService(reference);
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>ServiceTrackerCustomizer.modifiedService</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>ServiceTracker</code> has been
-	 * constructed with a <code>null ServiceTrackerCustomizer</code> argument.
-	 * 
-	 * <p>
-	 * This implementation does nothing.
-	 * 
-	 * @param reference The reference to modified service.
-	 * @param service The service object for the modified service.
-	 * @see ServiceTrackerCustomizer#modifiedService(ServiceReference, Object)
-	 */
-	public void modifiedService(ServiceReference reference, Object service) {
-		/* do nothing */
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>ServiceTrackerCustomizer.removedService</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>ServiceTracker</code> has been
-	 * constructed with a <code>null ServiceTrackerCustomizer</code> argument.
-	 * 
-	 * <p>
-	 * This implementation calls <code>ungetService</code>, on the
-	 * <code>BundleContext</code> with which this <code>ServiceTracker</code>
-	 * was created, passing the specified <code>ServiceReference</code>.
-	 * <p>
-	 * This method can be overridden in a subclass. If the default
-	 * implementation of {@link #addingService(ServiceReference) addingService}
-	 * method was used, this method must unget the service.
-	 * 
-	 * @param reference The reference to removed service.
-	 * @param service The service object for the removed service.
-	 * @see ServiceTrackerCustomizer#removedService(ServiceReference, Object)
-	 */
-	public void removedService(ServiceReference reference, Object service) {
-		context.ungetService(reference);
-	}
-
-	/**
-	 * Wait for at least one service to be tracked by this
-	 * <code>ServiceTracker</code>. This method will also return when this
-	 * <code>ServiceTracker</code> is closed.
-	 * 
-	 * <p>
-	 * It is strongly recommended that <code>waitForService</code> is not used
-	 * during the calling of the <code>BundleActivator</code> methods.
-	 * <code>BundleActivator</code> methods are expected to complete in a short
-	 * period of time.
-	 * 
-	 * <p>
-	 * This implementation calls {@link #getService()} to determine if a service
-	 * is being tracked.
-	 * 
-	 * @param timeout The time interval in milliseconds to wait. If zero, the
-	 *        method will wait indefinitely.
-	 * @return Returns the result of {@link #getService()}.
-	 * @throws InterruptedException If another thread has interrupted the
-	 *         current thread.
-	 * @throws IllegalArgumentException If the value of timeout is negative.
-	 */
-	public Object waitForService(long timeout) throws InterruptedException {
-		if (timeout < 0) {
-			throw new IllegalArgumentException("timeout value is negative"); 
-		}
-		Object object = getService(); 
-		while (object == null) {
-			final Tracked t = tracked();
-			if (t == null) { /* if ServiceTracker is not open */
-				return null;
-			}
-			synchronized (t) {
-				if (t.size() == 0) {
-					t.wait(timeout);
-				}
-			}
-			object = getService(); 
-			if (timeout > 0) {
-				return object;
-			}
-		}
-		return object;
-	}
-
-	/**
-	 * Return an array of <code>ServiceReference</code>s for all services being
-	 * tracked by this <code>ServiceTracker</code>.
-	 * 
-	 * @return Array of <code>ServiceReference</code>s or <code>null</code> if
-	 *         no services are being tracked.
-	 */
-	public ServiceReference[] getServiceReferences() {
-		final Tracked t = tracked();
-		if (t == null) { /* if ServiceTracker is not open */
-			return null;
-		}
-		synchronized (t) {
-			int length = t.size();
-			if (length == 0) {
-				return null;
-			}
-			return (ServiceReference[]) t
-					.getTracked(new ServiceReference[length]);
-		}
-	}
-
-	/**
-	 * Returns a <code>ServiceReference</code> for one of the services being
-	 * tracked by this <code>ServiceTracker</code>.
-	 * 
-	 * <p>
-	 * If multiple services are being tracked, the service with the highest
-	 * ranking (as specified in its <code>service.ranking</code> property) is
-	 * returned. If there is a tie in ranking, the service with the lowest
-	 * service ID (as specified in its <code>service.id</code> property); that
-	 * is, the service that was registered first is returned. This is the same
-	 * algorithm used by <code>BundleContext.getServiceReference</code>.
-	 * 
-	 * <p>
-	 * This implementation calls {@link #getServiceReferences()} to get the list
-	 * of references for the tracked services.
-	 * 
-	 * @return A <code>ServiceReference</code> or <code>null</code> if no
-	 *         services are being tracked.
-	 * @since 1.1
-	 */
-	public ServiceReference getServiceReference() {
-		ServiceReference reference = cachedReference;
-		if (reference != null) {
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.getServiceReference[cached]: "
-								+ filter); 
-			}
-			return reference;
-		}
-		if (DEBUG) {
-			System.out.println("ServiceTracker.getServiceReference: " + filter); 
-		}
-		ServiceReference[] references = getServiceReferences(); 
-		int length = (references == null) ? 0 : references.length;
-		if (length == 0) { /* if no service is being tracked */
-			return null;
-		}
-		int index = 0;
-		if (length > 1) { /* if more than one service, select highest ranking */
-			int rankings[] = new int[length];
-			int count = 0;
-			int maxRanking = Integer.MIN_VALUE;
-			for (int i = 0; i < length; i++) {
-				Object property = references[i]
-						.getProperty(Constants.SERVICE_RANKING);
-				int ranking = (property instanceof Integer) ? ((Integer) property)
-						.intValue()
-						: 0;
-				rankings[i] = ranking;
-				if (ranking > maxRanking) {
-					index = i;
-					maxRanking = ranking;
-					count = 1;
-				}
-				else {
-					if (ranking == maxRanking) {
-						count++;
-					}
-				}
-			}
-			if (count > 1) { /* if still more than one service, select lowest id */
-				long minId = Long.MAX_VALUE;
-				for (int i = 0; i < length; i++) {
-					if (rankings[i] == maxRanking) {
-						long id = ((Long) (references[i]
-								.getProperty(Constants.SERVICE_ID)))
-								.longValue();
-						if (id < minId) {
-							index = i;
-							minId = id;
-						}
-					}
-				}
-			}
-		}
-		return cachedReference = references[index];
-	}
-
-	/**
-	 * Returns the service object for the specified
-	 * <code>ServiceReference</code> if the specified referenced service is
-	 * being tracked by this <code>ServiceTracker</code>.
-	 * 
-	 * @param reference The reference to the desired service.
-	 * @return A service object or <code>null</code> if the service referenced
-	 *         by the specified <code>ServiceReference</code> is not being
-	 *         tracked.
-	 */
-	public Object getService(ServiceReference reference) {
-		final Tracked t = tracked();
-		if (t == null) { /* if ServiceTracker is not open */
-			return null;
-		}
-		synchronized (t) {
-			return t.getCustomizedObject(reference);
-		}
-	}
-
-	/**
-	 * Return an array of service objects for all services being tracked by this
-	 * <code>ServiceTracker</code>.
-	 * 
-	 * <p>
-	 * This implementation calls {@link #getServiceReferences()} to get the list
-	 * of references for the tracked services and then calls
-	 * {@link #getService(ServiceReference)} for each reference to get the
-	 * tracked service object.
-	 * 
-	 * @return An array of service objects or <code>null</code> if no services
-	 *         are being tracked.
-	 */
-	public Object[] getServices() {
-		final Tracked t = tracked();
-		if (t == null) { /* if ServiceTracker is not open */
-			return null;
-		}
-		synchronized (t) {
-			ServiceReference[] references = getServiceReferences(); 
-			int length = (references == null) ? 0 : references.length;
-			if (length == 0) {
-				return null;
-			}
-			Object[] objects = new Object[length];
-			for (int i = 0; i < length; i++) {
-				objects[i] = getService(references[i]); 
-			}
-			return objects;
-		}
-	}
-
-	/**
-	 * Returns a service object for one of the services being tracked by this
-	 * <code>ServiceTracker</code>.
-	 * 
-	 * <p>
-	 * If any services are being tracked, this implementation returns the result
-	 * of calling <code>getService(getServiceReference())</code>.
-	 * 
-	 * @return A service object or <code>null</code> if no services are being
-	 *         tracked.
-	 */
-	public Object getService() {
-		Object service = cachedService;
-		if (service != null) {
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.getService[cached]: "
-						+ filter); 
-			}
-			return service;
-		}
-		if (DEBUG) {
-			System.out.println("ServiceTracker.getService: " + filter); 
-		}
-		ServiceReference reference = getServiceReference(); 
-		if (reference == null) {
-			return null;
-		}
-		return cachedService = getService(reference); 
-	}
-
-	/**
-	 * Remove a service from this <code>ServiceTracker</code>.
-	 * 
-	 * The specified service will be removed from this
-	 * <code>ServiceTracker</code>. If the specified service was being tracked
-	 * then the <code>ServiceTrackerCustomizer.removedService</code> method will
-	 * be called for that service.
-	 * 
-	 * @param reference The reference to the service to be removed.
-	 */
-	public void remove(ServiceReference reference) {
-		final Tracked t = tracked();
-		if (t == null) { /* if ServiceTracker is not open */
-			return;
-		}
-		t.untrack(reference, null);
-	}
-
-	/**
-	 * Return the number of services being tracked by this
-	 * <code>ServiceTracker</code>.
-	 * 
-	 * @return The number of services being tracked.
-	 */
-	public int size() {
-		final Tracked t = tracked();
-		if (t == null) { /* if ServiceTracker is not open */
-			return 0;
-		}
-		synchronized (t) {
-			return t.size();
-		}
-	}
-
-	/**
-	 * Returns the tracking count for this <code>ServiceTracker</code>.
-	 * 
-	 * The tracking count is initialized to 0 when this
-	 * <code>ServiceTracker</code> is opened. Every time a service is added,
-	 * modified or removed from this <code>ServiceTracker</code>, the tracking
-	 * count is incremented.
-	 * 
-	 * <p>
-	 * The tracking count can be used to determine if this
-	 * <code>ServiceTracker</code> has added, modified or removed a service by
-	 * comparing a tracking count value previously collected with the current
-	 * tracking count value. If the value has not changed, then no service has
-	 * been added, modified or removed from this <code>ServiceTracker</code>
-	 * since the previous tracking count was collected.
-	 * 
-	 * @since 1.2
-	 * @return The tracking count for this <code>ServiceTracker</code> or -1 if
-	 *         this <code>ServiceTracker</code> is not open.
-	 */
-	public int getTrackingCount() {
-		final Tracked t = tracked();
-		if (t == null) { /* if ServiceTracker is not open */
-			return -1;
-		}
-		synchronized (t) {
-			return t.getTrackingCount();
-		}
-	}
-
-	/**
-	 * Called by the Tracked object whenever the set of tracked services is
-	 * modified. Clears the cache.
-	 */
-	/*
-	 * This method must not be synchronized since it is called by Tracked while
-	 * Tracked is synchronized. We don't want synchronization interactions
-	 * between the listener thread and the user thread.
-	 */
-	void modified() {
-		cachedReference = null; /* clear cached value */
-		cachedService = null; /* clear cached value */
-		if (DEBUG) {
-			System.out.println("ServiceTracker.modified: " + filter); 
-		}
-	}
-
-	/**
-	 * Inner class which subclasses AbstractTracked. This class is the
-	 * <code>ServiceListener</code> object for the tracker.
-	 * 
-	 * @ThreadSafe
-	 */
-	class Tracked extends AbstractTracked implements ServiceListener {
-		/**
-		 * Tracked constructor.
-		 */
-		Tracked() {
-			super();
-		}
-
-		/**
-		 * <code>ServiceListener</code> method for the
-		 * <code>ServiceTracker</code> class. This method must NOT be
-		 * synchronized to avoid deadlock potential.
-		 * 
-		 * @param event <code>ServiceEvent</code> object from the framework.
-		 */
-		public void serviceChanged(final ServiceEvent event) {
-			/*
-			 * Check if we had a delayed call (which could happen when we
-			 * close).
-			 */
-			if (closed) {
-				return;
-			}
-			final ServiceReference reference = event.getServiceReference();
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.Tracked.serviceChanged["
-						+ event.getType() + "]: " + reference);  
-			}
-
-			switch (event.getType()) {
-				case ServiceEvent.REGISTERED :
-				case ServiceEvent.MODIFIED :
-					if (listenerFilter != null) { // service listener added with
-						// filter
-						track(reference, event);
-						/*
-						 * If the customizer throws an unchecked exception, it
-						 * is safe to let it propagate
-						 */
-					}
-					else { // service listener added without filter
-						if (filter.match(reference)) {
-							track(reference, event);
-							/*
-							 * If the customizer throws an unchecked exception,
-							 * it is safe to let it propagate
-							 */
-						}
-						else {
-							untrack(reference, event);
-							/*
-							 * If the customizer throws an unchecked exception,
-							 * it is safe to let it propagate
-							 */
-						}
-					}
-					break;
-				case ServiceEvent.MODIFIED_ENDMATCH :
-				case ServiceEvent.UNREGISTERING :
-					untrack(reference, event);
-					/*
-					 * If the customizer throws an unchecked exception, it is
-					 * safe to let it propagate
-					 */
-					break;
-			}
-		}
-
-		/**
-		 * Increment the tracking count and tell the tracker there was a
-		 * modification.
-		 * 
-		 * @GuardedBy this
-		 */
-		void modified() {
-			super.modified(); /* increment the modification count */
-			ServiceTracker.this.modified();
-		}
-
-		/**
-		 * Call the specific customizer adding method. This method must not be
-		 * called while synchronized on this object.
-		 * 
-		 * @param item Item to be tracked.
-		 * @param related Action related object.
-		 * @return Customized object for the tracked item or <code>null</code>
-		 *         if the item is not to be tracked.
-		 */
-		Object customizerAdding(final Object item,
-				final Object related) {
-			return customizer.addingService((ServiceReference) item);
-		}
-
-		/**
-		 * Call the specific customizer modified method. This method must not be
-		 * called while synchronized on this object.
-		 * 
-		 * @param item Tracked item.
-		 * @param related Action related object.
-		 * @param object Customized object for the tracked item.
-		 */
-		void customizerModified(final Object item,
-				final Object related, final Object object) {
-			customizer.modifiedService((ServiceReference) item, object);
-		}
-
-		/**
-		 * Call the specific customizer removed method. This method must not be
-		 * called while synchronized on this object.
-		 * 
-		 * @param item Tracked item.
-		 * @param related Action related object.
-		 * @param object Customized object for the tracked item.
-		 */
-		void customizerRemoved(final Object item,
-				final Object related, final Object object) {
-			customizer.removedService((ServiceReference) item, object);
-		}
-	}
-
-	/**
-	 * Subclass of Tracked which implements the AllServiceListener interface.
-	 * This class is used by the ServiceTracker if open is called with true.
-	 * 
-	 * @since 1.3
-	 * @ThreadSafe
-	 */
-	class AllTracked extends Tracked implements AllServiceListener {
-		/**
-		 * AllTracked constructor.
-		 */
-		AllTracked() {
-			super();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTrackerCustomizer.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTrackerCustomizer.java
deleted file mode 100644
index 5c270e3..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTrackerCustomizer.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (c) OSGi Alliance (2000, 2008). All Rights Reserved.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.osgi.util.tracker;
-
-import org.osgi.framework.ServiceReference;
-
-/**
- * The <code>ServiceTrackerCustomizer</code> interface allows a
- * <code>ServiceTracker</code> to customize the service objects that are
- * tracked. A <code>ServiceTrackerCustomizer</code> is called when a service is
- * being added to a <code>ServiceTracker</code>. The
- * <code>ServiceTrackerCustomizer</code> can then return an object for the
- * tracked service. A <code>ServiceTrackerCustomizer</code> is also called when
- * a tracked service is modified or has been removed from a
- * <code>ServiceTracker</code>.
- * 
- * <p>
- * The methods in this interface may be called as the result of a
- * <code>ServiceEvent</code> being received by a <code>ServiceTracker</code>.
- * Since <code>ServiceEvent</code>s are synchronously delivered by the
- * Framework, it is highly recommended that implementations of these methods do
- * not register (<code>BundleContext.registerService</code>), modify (
- * <code>ServiceRegistration.setProperties</code>) or unregister (
- * <code>ServiceRegistration.unregister</code>) a service while being
- * synchronized on any object.
- * 
- * <p>
- * The <code>ServiceTracker</code> class is thread-safe. It does not call a
- * <code>ServiceTrackerCustomizer</code> while holding any locks.
- * <code>ServiceTrackerCustomizer</code> implementations must also be
- * thread-safe.
- * 
- * @ThreadSafe
- * @version $Revision: 5874 $
- */
-public interface ServiceTrackerCustomizer {
-	/**
-	 * A service is being added to the <code>ServiceTracker</code>.
-	 * 
-	 * <p>
-	 * This method is called before a service which matched the search
-	 * parameters of the <code>ServiceTracker</code> is added to the
-	 * <code>ServiceTracker</code>. This method should return the service object
-	 * to be tracked for the specified <code>ServiceReference</code>. The
-	 * returned service object is stored in the <code>ServiceTracker</code> and
-	 * is available from the <code>getService</code> and
-	 * <code>getServices</code> methods.
-	 * 
-	 * @param reference The reference to the service being added to the
-	 *        <code>ServiceTracker</code>.
-	 * @return The service object to be tracked for the specified referenced
-	 *         service or <code>null</code> if the specified referenced service
-	 *         should not be tracked.
-	 */
-	public Object addingService(ServiceReference reference);
-
-	/**
-	 * A service tracked by the <code>ServiceTracker</code> has been modified.
-	 * 
-	 * <p>
-	 * This method is called when a service being tracked by the
-	 * <code>ServiceTracker</code> has had it properties modified.
-	 * 
-	 * @param reference The reference to the service that has been modified.
-	 * @param service The service object for the specified referenced service.
-	 */
-	public void modifiedService(ServiceReference reference, Object service);
-
-	/**
-	 * A service tracked by the <code>ServiceTracker</code> has been removed.
-	 * 
-	 * <p>
-	 * This method is called after a service is no longer being tracked by the
-	 * <code>ServiceTracker</code>.
-	 * 
-	 * @param reference The reference to the service that has been removed.
-	 * @param service The service object for the specified referenced service.
-	 */
-	public void removedService(ServiceReference reference, Object service);
-}
diff --git a/bundles/org.eclipse.osgi/osgi/xmlParserAPIs.jar b/bundles/org.eclipse.osgi/osgi/xmlParserAPIs.jar
deleted file mode 100644
index f2b2104..0000000
--- a/bundles/org.eclipse.osgi/osgi/xmlParserAPIs.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/profile.list b/bundles/org.eclipse.osgi/profile.list
deleted file mode 100644
index 30dab6d..0000000
--- a/bundles/org.eclipse.osgi/profile.list
+++ /dev/null
@@ -1,23 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-java.profiles = \
- JavaSE-1.7.profile,\
- JavaSE-1.6.profile,\
- J2SE-1.5.profile,\
- J2SE-1.4.profile,\
- J2SE-1.3.profile,\
- J2SE-1.2.profile,\
- JRE-1.1.profile,\
- CDC-1.1_Foundation-1.1.profile,\
- CDC-1.0_Foundation-1.0.profile,\
- OSGi_Minimum-1.0.profile,\
- OSGi_Minimum-1.1.profile,\
- OSGi_Minimum-1.2.profile
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/BundleConstraint.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/BundleConstraint.java
deleted file mode 100644
index 0f933f4..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/BundleConstraint.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.*;
-
-/*
- * A companion to BundleSpecification from the state for use while resolving
- */
-public class BundleConstraint extends ResolverConstraint {
-	BundleConstraint(ResolverBundle bundle, VersionConstraint bundleConstraint) {
-		super(bundle, bundleConstraint);
-	}
-
-	boolean isOptional() {
-		if (constraint instanceof HostSpecification)
-			return false;
-		return ((BundleSpecification) constraint).isOptional();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelper.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelper.java
deleted file mode 100644
index 5f7cdba..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelper.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-
-public interface CompositeResolveHelper {
-	public boolean giveExports(ExportPackageDescription[] matchingExports);
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelperRegistry.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelperRegistry.java
deleted file mode 100644
index f4cd6fb..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/CompositeResolveHelperRegistry.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-
-public interface CompositeResolveHelperRegistry {
-	public CompositeResolveHelper getCompositeResolveHelper(BundleDescription bundle);
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericCapability.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericCapability.java
deleted file mode 100644
index daaf76a..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericCapability.java
+++ /dev/null
@@ -1,35 +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.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.BaseDescription;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-
-public class GenericCapability extends VersionSupplier {
-	ResolverBundle resolverBundle;
-
-	GenericCapability(ResolverBundle resolverBundle, BaseDescription base) {
-		super(base);
-		this.resolverBundle = resolverBundle;
-	}
-
-	public BundleDescription getBundle() {
-		return getBaseDescription().getSupplier();
-	}
-
-	public boolean isFromFragment() {
-		return resolverBundle.isFragment();
-	}
-
-	public ResolverBundle getResolverBundle() {
-		return resolverBundle;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericConstraint.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericConstraint.java
deleted file mode 100644
index 285678b..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericConstraint.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import java.util.ArrayList;
-import org.eclipse.osgi.service.resolver.VersionConstraint;
-
-public class GenericConstraint extends ResolverConstraint {
-	private ArrayList matchingCapability;
-
-	GenericConstraint(ResolverBundle bundle, VersionConstraint constraint) {
-		super(bundle, constraint);
-	}
-
-	boolean isOptional() {
-		return false;
-	}
-
-	boolean isSatisfiedBy(VersionSupplier vs) {
-		return !vs.getResolverBundle().isUninstalled() && getVersionConstraint().isSatisfiedBy(vs.getBaseDescription());
-	}
-
-	public void setMatchingCapability(GenericCapability capability) {
-		if (capability == null) {
-			matchingCapability = null;
-			return;
-		}
-		if (matchingCapability == null)
-			matchingCapability = new ArrayList(1);
-		matchingCapability.add(capability);
-	}
-
-	public GenericCapability[] getMatchingCapabilities() {
-		return matchingCapability == null || matchingCapability.size() == 0 ? null : (GenericCapability[]) matchingCapability.toArray(new GenericCapability[matchingCapability.size()]);
-	}
-
-	void removeMatchingCapability(GenericCapability capability) {
-		if (matchingCapability != null)
-			matchingCapability.remove(capability);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GroupingChecker.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GroupingChecker.java
deleted file mode 100644
index 30c5963..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GroupingChecker.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import java.util.*;
-import org.eclipse.osgi.service.resolver.BundleSpecification;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-
-/*
- * The GroupingChecker checks the 'uses' directive on exported packages for consistency
- */
-public class GroupingChecker {
-	final PackageRoots nullPackageRoots = new PackageRoots(null, null);
-	// a mapping of bundles to their package roots; keyed by
-	// ResolverBundle -> HashMap of packages; keyed by
-	// package name -> PackageRoots[]
-	private HashMap bundles = new HashMap();
-
-	/*
-	 * This method fully populates a bundles package roots for the purpose of resolving
-	 * a dynamic import.  Package roots must be fully populated because we need all the
-	 * roots to do proper uses constraint verification on a dynamic import supplier.
-	 */
-	public void populateRoots(ResolverBundle bundle) {
-		bundles.remove(bundle);
-		// process all requires
-		BundleConstraint[] requires = bundle.getRequires();
-		for (int j = 0; j < requires.length; j++) {
-			ResolverBundle selectedSupplier = (ResolverBundle) requires[j].getSelectedSupplier();
-			if (selectedSupplier != null)
-				isConsistentInternal(bundle, selectedSupplier, new ArrayList(1), true, null);
-		}
-		// process all imports
-		// must check resolved imports to get any dynamically resolved imports
-		ExportPackageDescription[] imports = bundle.getBundle().getResolvedImports();
-		for (int i = 0; i < imports.length; i++) {
-			ExportPackageDescription importPkg = imports[i];
-			Object[] exports = bundle.getResolver().getResolverExports().get(importPkg.getName());
-			for (int j = 0; j < exports.length; j++) {
-				ResolverExport export = (ResolverExport) exports[j];
-				if (export.getExportPackageDescription() == importPkg)
-					isConsistentInternal(bundle, export, true, null);
-			}
-		}
-	}
-
-	/*
-	 * Verifies the uses constraint consistency for the requiringBundle with the possible matching bundle.
-	 * If an inconsistency is found the export inconsistency is returned; otherwise null is returned
-	 */
-	public PackageRoots[][] isConsistent(ResolverBundle requiringBundle, ResolverBundle matchingBundle) {
-		ArrayList results = isConsistentInternal(requiringBundle, matchingBundle, new ArrayList(1), false, null);
-		return results == null ? null : (PackageRoots[][]) results.toArray(new PackageRoots[results.size()][]);
-	}
-
-	private ArrayList isConsistentInternal(ResolverBundle requiringBundle, ResolverBundle matchingBundle, ArrayList visited, boolean dynamicImport, ArrayList results) {
-		// needed to prevent endless cycles
-		if (visited.contains(matchingBundle))
-			return results;
-		visited.add(matchingBundle);
-		// check that the packages exported by the matching bundle are consistent
-		ResolverExport[] matchingExports = matchingBundle.getExportPackages();
-		for (int i = 0; i < matchingExports.length; i++) {
-			ResolverExport matchingExport = matchingExports[i];
-			if (matchingExports[i].getSubstitute() != null)
-				matchingExport = (ResolverExport) matchingExports[i].getSubstitute();
-			results = isConsistentInternal(requiringBundle, matchingExport, dynamicImport, results);
-		}
-		// check that the packages from reexported bundles are consistent
-		BundleConstraint[] supplierRequires = matchingBundle.getRequires();
-		for (int j = 0; j < supplierRequires.length; j++) {
-			ResolverBundle reexported = (ResolverBundle) supplierRequires[j].getSelectedSupplier();
-			if (reexported == null || !((BundleSpecification) supplierRequires[j].getVersionConstraint()).isExported())
-				continue;
-			results = isConsistentInternal(requiringBundle, reexported, visited, dynamicImport, results);
-		}
-		return results;
-	}
-
-	/*
-	 * Verifies the uses constraint consistency for the importingBundle with the possible matching export.
-	 * If an inconsistency is found the export returned; otherwise null is returned
-	 */
-	public PackageRoots[][] isConsistent(ResolverBundle importingBundle, ResolverExport matchingExport) {
-		ArrayList results = isConsistentInternal(importingBundle, matchingExport, false, null);
-		return results == null ? null : (PackageRoots[][]) results.toArray(new PackageRoots[results.size()][]);
-	}
-
-	/*
-	 * Verifies the uses constraint consistency for the importingBundle with the possible dynamic matching export.
-	 * If an inconsistency is found the export returned; otherwise null is returned.
-	 * Dynamic imports must perform extra checks to ensure that existing wires to package roots are 
-	 * consistent with the possible matching dynamic export.
-	 */
-	public PackageRoots[][] isDynamicConsistent(ResolverBundle importingBundle, ResolverExport matchingExport) {
-		ArrayList results = isConsistentInternal(importingBundle, matchingExport, true, null);
-		return results == null ? null : (PackageRoots[][]) results.toArray(new PackageRoots[results.size()][]);
-	}
-
-	private ArrayList isConsistentInternal(ResolverBundle importingBundle, ResolverExport matchingExport, boolean dyanamicImport, ArrayList results) {
-		PackageRoots exportingRoots = getPackageRoots(matchingExport.getExporter(), matchingExport.getName(), null);
-		// check that the exports uses packages are consistent with existing package roots
-		results = exportingRoots.isConsistentClassSpace(importingBundle, null, results);
-		if (!dyanamicImport)
-			return results;
-		// for dynamic imports we must check that each existing root is consistent with the possible matching export
-		PackageRoots importingRoots = getPackageRoots(importingBundle, matchingExport.getName(), null);
-		HashMap importingPackages = (HashMap) bundles.get(importingBundle);
-		if (importingPackages != null)
-			for (Iterator allImportingPackages = importingPackages.values().iterator(); allImportingPackages.hasNext();) {
-				PackageRoots roots = (PackageRoots) allImportingPackages.next();
-				if (roots != importingRoots)
-					results = roots.isConsistentClassSpace(exportingRoots, null, results);
-			}
-		return results;
-	}
-
-	/*
-	 * returns package roots for a specific package name for a specific bundle
-	 */
-	PackageRoots getPackageRoots(ResolverBundle bundle, String packageName, ArrayList visited) {
-		HashMap packages = (HashMap) bundles.get(bundle);
-		if (packages == null) {
-			packages = new HashMap(5);
-			bundles.put(bundle, packages);
-		}
-		PackageRoots packageRoots = (PackageRoots) packages.get(packageName);
-		if (packageRoots == null) {
-			packageRoots = createPackageRoots(bundle, packageName, visited == null ? new ArrayList(1) : visited);
-			packages.put(packageName, packageRoots);
-		}
-		return packageRoots != null ? packageRoots : nullPackageRoots;
-	}
-
-	private PackageRoots createPackageRoots(ResolverBundle bundle, String packageName, ArrayList visited) {
-		if (visited.contains(bundle))
-			return null;
-		visited.add(bundle); // prevent endless cycles
-		// check imports
-		if (bundle.getBundle().isResolved()) {
-			// must check resolved imports to get any dynamically resolved imports 
-			ExportPackageDescription[] imports = bundle.getBundle().getResolvedImports();
-			for (int i = 0; i < imports.length; i++) {
-				ExportPackageDescription importPkg = imports[i];
-				if (importPkg.getExporter() == bundle.getBundle() || !importPkg.getName().equals(packageName))
-					continue;
-				Object[] exports = bundle.getResolver().getResolverExports().get(packageName);
-				for (int j = 0; j < exports.length; j++) {
-					ResolverExport export = (ResolverExport) exports[j];
-					if (export.getExportPackageDescription() == importPkg)
-						return getPackageRoots(export.getExporter(), packageName, visited);
-				}
-			}
-		} else {
-			ResolverImport imported = bundle.getImport(packageName);
-			if (imported != null && imported.getSelectedSupplier() != null) {
-				// make sure we are not resolved to our own import
-				ResolverExport selectedExport = (ResolverExport) imported.getSelectedSupplier();
-				if (selectedExport.getExporter() != bundle) {
-					// found resolved import; get the roots from the resolved exporter;
-					// this is all the roots if the package is imported
-					return getPackageRoots(selectedExport.getExporter(), packageName, visited);
-				}
-			}
-		}
-		// check if the bundle exports the package
-		ResolverExport[] exports = bundle.getExports(packageName);
-		ArrayList roots = new ArrayList(0);
-		// check roots from required bundles
-		BundleConstraint[] requires = bundle.getRequires();
-		for (int i = 0; i < requires.length; i++) {
-			ResolverBundle supplier = (ResolverBundle) requires[i].getSelectedSupplier();
-			if (supplier == null)
-				continue; // no supplier, probably optional
-			if (supplier.getExport(packageName) != null) {
-				// the required bundle exports the package; get the package roots from it
-				PackageRoots requiredRoots = getPackageRoots(supplier, packageName, visited);
-				if (requiredRoots != nullPackageRoots)
-					roots.add(requiredRoots);
-			} else {
-				// the bundle does not export the package; but it may reexport another bundle that does
-				BundleConstraint[] supplierRequires = supplier.getRequires();
-				for (int j = 0; j < supplierRequires.length; j++) {
-					ResolverBundle reexported = (ResolverBundle) supplierRequires[j].getSelectedSupplier();
-					if (reexported == null || !((BundleSpecification) supplierRequires[j].getVersionConstraint()).isExported())
-						continue;
-					if (reexported.getExport(packageName) != null) {
-						// the reexported bundle exports the package; get the package roots from it
-						PackageRoots reExportedRoots = getPackageRoots(reexported, packageName, visited);
-						if (reExportedRoots != nullPackageRoots)
-							roots.add(reExportedRoots);
-					}
-				}
-			}
-		}
-		if (exports.length > 0 || roots.size() > 1) {
-			PackageRoots[] requiredRoots = (PackageRoots[]) roots.toArray(new PackageRoots[roots.size()]);
-			if (exports.length == 0) {
-				PackageRoots superSet = requiredRoots[0];
-				for (int i = 1; i < requiredRoots.length; i++) {
-					if (requiredRoots[i].superSet(superSet)) {
-						superSet = requiredRoots[i];
-					} else if (!superSet.superSet(requiredRoots[i])) {
-						superSet = null;
-						break;
-					}
-				}
-				if (superSet != null)
-					return superSet;
-			}
-			// in this case we cannot share the package roots object; must create one specific for this bundle
-			PackageRoots result = new PackageRoots(packageName, bundle);
-			// first merge all the roots from required bundles
-			for (int i = 0; i < requiredRoots.length; i++)
-				result.merge(requiredRoots[i]);
-			// always add this bundles exports to the end if it exports the package
-			for (int i = 0; i < exports.length; i++)
-				result.addRoot(exports[i]);
-			return result;
-		}
-		return (PackageRoots) (roots.size() == 0 ? nullPackageRoots : roots.get(0));
-	}
-
-	public void clear() {
-		bundles.clear();
-	}
-
-	public void clear(ResolverBundle rb) {
-		bundles.remove(rb);
-	}
-
-	class PackageRoots {
-		private String name;
-		private ResolverBundle bundle;
-		private ResolverExport[] roots;
-
-		PackageRoots(String name, ResolverBundle bundle) {
-			this.name = name;
-			this.bundle = bundle;
-		}
-
-		public boolean hasRoots() {
-			return roots != null && roots.length > 0;
-		}
-
-		public void addRoot(ResolverExport export) {
-			if (roots == null) {
-				roots = new ResolverExport[] {export};
-				return;
-			}
-			// need to do an extra check to make sure we are not adding the same package name 
-			// from multiple versions of the same bundle
-			String exportBSN = export.getExporter().getName();
-			if (exportBSN != null) {
-				// first one wins
-				for (int i = 0; i < roots.length; i++)
-					if (export.getExporter() != roots[i].getExporter() && exportBSN.equals(roots[i].getExporter().getName()))
-						return;
-			}
-			if (!contains(export, roots)) {
-				ResolverExport[] newRoots = new ResolverExport[roots.length + 1];
-				System.arraycopy(roots, 0, newRoots, 0, roots.length);
-				newRoots[roots.length] = export;
-				roots = newRoots;
-			}
-		}
-
-		private boolean contains(ResolverExport export, ResolverExport[] exports) {
-			for (int i = 0; i < exports.length; i++)
-				if (exports[i] == export)
-					return true;
-			return false;
-		}
-
-		public void merge(PackageRoots packageRoots) {
-			if (packageRoots == null || packageRoots.roots == null)
-				return;
-			int size = packageRoots.roots.length;
-			for (int i = 0; i < size; i++)
-				addRoot(packageRoots.roots[i]);
-		}
-
-		public ArrayList isConsistentClassSpace(ResolverBundle importingBundle, ArrayList visited, ArrayList results) {
-			if (roots == null)
-				return results;
-			if (visited == null)
-				visited = new ArrayList(1);
-			if (visited.contains(this))
-				return results;
-			visited.add(this);
-			int size = roots.length;
-			for (int i = 0; i < size; i++) {
-				ResolverExport root = roots[i];
-				String[] uses = root.getUsesDirective();
-				if (uses == null)
-					continue;
-				for (int j = 0; j < uses.length; j++) {
-					if (uses[j].equals(root.getName()))
-						continue;
-					PackageRoots thisUsedRoots = getPackageRoots(root.getExporter(), uses[j], null);
-					PackageRoots importingUsedRoots = getPackageRoots(importingBundle, uses[j], null);
-					if (thisUsedRoots == importingUsedRoots)
-						continue;
-					if (thisUsedRoots != nullPackageRoots && importingUsedRoots != nullPackageRoots)
-						if (!(subSet(thisUsedRoots.roots, importingUsedRoots.roots) || subSet(importingUsedRoots.roots, thisUsedRoots.roots))) {
-							if (results == null)
-								results = new ArrayList(1);
-							results.add(new PackageRoots[] {this, importingUsedRoots});
-						}
-					// need to check the usedRoots consistency for transitive closure
-					results = thisUsedRoots.isConsistentClassSpace(importingBundle, visited, results);
-				}
-			}
-			return results;
-		}
-
-		public ArrayList isConsistentClassSpace(PackageRoots exportingRoots, ArrayList visited, ArrayList results) {
-			if (roots == null)
-				return results;
-			int size = roots.length;
-			for (int i = 0; i < size; i++) {
-				ResolverExport root = roots[i];
-				String[] uses = root.getUsesDirective();
-				if (uses == null)
-					continue;
-				if (visited == null)
-					visited = new ArrayList(1);
-				if (visited.contains(this))
-					return results;
-				visited.add(this);
-				for (int j = 0; j < uses.length; j++) {
-					if (uses[j].equals(root.getName()) || !uses[j].equals(exportingRoots.name))
-						continue;
-					PackageRoots thisUsedRoots = getPackageRoots(root.getExporter(), uses[j], null);
-					PackageRoots exportingUsedRoots = getPackageRoots(exportingRoots.bundle, uses[j], null);
-					if (thisUsedRoots == exportingRoots)
-						return results;
-					if (thisUsedRoots != nullPackageRoots && exportingUsedRoots != nullPackageRoots)
-						if (!(subSet(thisUsedRoots.roots, exportingUsedRoots.roots) || subSet(exportingUsedRoots.roots, thisUsedRoots.roots))) {
-							if (results == null)
-								results = new ArrayList(1);
-							results.add(new PackageRoots[] {this, exportingUsedRoots});
-						}
-					// need to check the usedRoots consistency for transitive closure
-					results = thisUsedRoots.isConsistentClassSpace(exportingRoots, visited, results);
-				}
-			}
-			return results;
-		}
-
-		// TODO this is a behavioral change; before we only required 1 supplier to match; now roots must be subsets
-		private boolean subSet(ResolverExport[] superSet, ResolverExport[] subSet) {
-			for (int i = 0; i < subSet.length; i++) {
-				boolean found = false;
-				for (int j = 0; j < superSet.length; j++)
-					// compare by exporter in case the bundle exports the package multiple times
-					if (subSet[i].getExporter() == superSet[j].getExporter()) {
-						found = true;
-						break;
-					}
-				if (!found)
-					return false;
-			}
-			return true;
-		}
-
-		public boolean superSet(PackageRoots subSet) {
-			return subSet(roots, subSet.roots);
-		}
-
-		public String getName() {
-			return name;
-		}
-
-		public ResolverExport[] getRoots() {
-			return roots;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/MappedList.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/MappedList.java
deleted file mode 100644
index ade618a..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/MappedList.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import java.util.*;
-
-/*
- * A MappedList maps values into keyed list arrays.  All values with the same key are stored
- * into the same array.  Extending classes may override the sort method to sort the individual
- * arrays in the MappedList.  By default the MappedList appends new values to the end of the array.
- */
-public class MappedList {
-	// the mapping with key -> Object[] mapping
-	protected HashMap internal = new HashMap();
-
-	public void put(Object key, Object value) {
-		Object existing = internal.get(key);
-		if (existing == null) {
-			internal.put(key, value);
-		} else {
-			Object[] existingValues = existing.getClass().isArray() ? (Object[]) existing : new Object[] {existing};
-			// insert the new value
-			int index = insertionIndex(existingValues, value);
-			Object[] newValues = new Object[existingValues.length + 1];
-			System.arraycopy(existingValues, 0, newValues, 0, index);
-			newValues[index] = value;
-			System.arraycopy(existingValues, index, newValues, index + 1, existingValues.length - index);
-			internal.put(key, newValues); // overwrite the old values in the map
-		}
-	}
-
-	protected int insertionIndex(Object[] existing, Object value) {
-		// a MappedList is by default not sorted so just insert at the end
-		// extending classes may override this method to provide an index that retains sorted order
-		return existing.length;
-	}
-
-	// removes all values with the specified key
-	public Object[] remove(Object key) {
-		return get(key, true);
-	}
-
-	// gets all values with the specified key
-	public Object[] get(Object key) {
-		return get(key, false);
-	}
-
-	// gets all values with the specified and optionally removes them
-	private Object[] get(Object key, boolean remove) {
-		Object result = remove ? internal.remove(key) : internal.get(key);
-		if (result != null && result.getClass().isArray())
-			return (Object[]) result;
-		return result == null ? new Object[0] : new Object[] {result};
-	}
-
-	// returns the number of keyed lists
-	public int getSize() {
-		return internal.size();
-	}
-
-	// returns all values of all keys
-	public Object[] getAllValues() {
-		if (getSize() == 0)
-			return new Object[0];
-		ArrayList results = new ArrayList(getSize());
-		Iterator iter = internal.values().iterator();
-		while (iter.hasNext()) {
-			Object value = iter.next();
-			if (value.getClass().isArray()) {
-				Object[] values = (Object[]) iter.next();
-				for (int i = 0; i < values.length; i++)
-					results.add(values[i]);
-			} else
-				results.add(value);
-		}
-		return results.toArray();
-	}
-
-	// removes all keys from the map
-	public void clear() {
-		internal.clear();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/PermissionChecker.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/PermissionChecker.java
deleted file mode 100644
index 4ef1b41..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/PermissionChecker.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import java.security.Permission;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.*;
-
-public class PermissionChecker {
-	private BundleContext context;
-	private boolean checkPermissions = false;
-	private ResolverImpl resolver;
-
-	public PermissionChecker(BundleContext context, boolean checkPermissions, ResolverImpl resolver) {
-		this.context = context;
-		this.checkPermissions = checkPermissions && context != null; // only can check permissions if context is not null
-		this.resolver = resolver;
-	}
-
-	/*
-	 * checks the permission for a bundle to import/reqiure a constraint
-	 * and for a bundle to export/provide a package/BSN
-	 */
-	public boolean checkPermission(VersionConstraint vc, BaseDescription bd) {
-		if (!checkPermissions)
-			return true;
-		// TODO could optimize out the producer permission check on export package
-		boolean success = false;
-		Permission producerPermission = null, consumerPermission = null;
-		Bundle producer = null, consumer = null;
-		int errorType = 0;
-		if (vc instanceof ImportPackageSpecification) {
-			errorType = ResolverError.IMPORT_PACKAGE_PERMISSION;
-			producer = context.getBundle(((ExportPackageDescription) bd).getExporter().getBundleId());
-			producerPermission = new PackagePermission(bd.getName(), PackagePermission.EXPORTONLY);
-			consumerPermission = producer != null ? new PackagePermission(vc.getName(), producer, PackagePermission.IMPORT) : new PackagePermission(vc.getName(), PackagePermission.IMPORT);
-		} else {
-			boolean requireBundle = vc instanceof BundleSpecification;
-			errorType = requireBundle ? ResolverError.REQUIRE_BUNDLE_PERMISSION : ResolverError.FRAGMENT_BUNDLE_PERMISSION;
-			producerPermission = new BundlePermission(bd.getName(), requireBundle ? BundlePermission.PROVIDE : BundlePermission.HOST);
-			consumerPermission = new BundlePermission(vc.getName(), requireBundle ? BundlePermission.REQUIRE : BundlePermission.FRAGMENT);
-			producer = context.getBundle(((BundleDescription) bd).getBundleId());
-		}
-		consumer = context.getBundle(vc.getBundle().getBundleId());
-		if (producer != null && (producer.getState() & Bundle.UNINSTALLED) == 0) {
-			success = producer.hasPermission(producerPermission);
-			if (!success) {
-				switch (errorType) {
-					case ResolverError.IMPORT_PACKAGE_PERMISSION :
-						errorType = ResolverError.EXPORT_PACKAGE_PERMISSION;
-						break;
-					case ResolverError.REQUIRE_BUNDLE_PERMISSION :
-					case ResolverError.FRAGMENT_BUNDLE_PERMISSION :
-						errorType = errorType == ResolverError.REQUIRE_BUNDLE_PERMISSION ? ResolverError.PROVIDE_BUNDLE_PERMISSION : ResolverError.HOST_BUNDLE_PERMISSION;
-						break;
-				}
-				resolver.getState().addResolverError(vc.getBundle(), errorType, producerPermission.toString(), vc);
-			}
-		}
-		if (success && consumer != null && (consumer.getState() & Bundle.UNINSTALLED) == 0) {
-			success = consumer.hasPermission(consumerPermission);
-			if (!success)
-				resolver.getState().addResolverError(vc.getBundle(), errorType, consumerPermission.toString(), vc);
-		}
-
-		return success;
-	}
-
-	boolean checkPackagePermission(ExportPackageDescription export) {
-		if (!checkPermissions)
-			return true;
-		Bundle bundle = context.getBundle(export.getExporter().getBundleId());
-		return bundle == null ? false : bundle.hasPermission(new PackagePermission(export.getName(), PackagePermission.EXPORTONLY));
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java
deleted file mode 100644
index d44e441..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java
+++ /dev/null
@@ -1,622 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import java.util.*;
-import java.util.Map.Entry;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.Constants;
-
-/*
- * A companion to BundleDescription from the state used while resolving.
- */
-public class ResolverBundle extends VersionSupplier implements Comparable {
-	public static final int UNRESOLVED = 0;
-	public static final int RESOLVING = 1;
-	public static final int RESOLVED = 2;
-
-	private Long bundleID;
-	private BundleConstraint host;
-	private ResolverImport[] imports;
-	private ResolverExport[] exports;
-	private BundleConstraint[] requires;
-	private GenericCapability[] capabilities;
-	private GenericConstraint[] genericReqiures;
-	// Fragment support
-	private ArrayList fragments;
-	private HashMap fragmentExports;
-	private HashMap fragmentImports;
-	private HashMap fragmentRequires;
-	private HashMap fragmentGenericRequires;
-	// Flag specifying whether this bundle is resolvable
-	private boolean resolvable = true;
-	// Internal resolver state for this bundle
-	private int state = UNRESOLVED;
-	private boolean uninstalled = false;
-	private ResolverImpl resolver;
-	private boolean newFragmentExports;
-	private ArrayList refs;
-
-	ResolverBundle(BundleDescription bundle, ResolverImpl resolver) {
-		super(bundle);
-		this.bundleID = new Long(bundle.getBundleId());
-		this.resolver = resolver;
-		initialize(bundle.isResolved());
-	}
-
-	void initialize(boolean useSelectedExports) {
-		if (getBundle().isSingleton())
-			refs = new ArrayList();
-		// always add generic capabilities
-		GenericDescription[] actualCapabilities = getBundle().getGenericCapabilities();
-		capabilities = new GenericCapability[actualCapabilities.length];
-		for (int i = 0; i < capabilities.length; i++)
-			capabilities[i] = new GenericCapability(this, actualCapabilities[i]);
-		if (getBundle().getHost() != null) {
-			host = new BundleConstraint(this, getBundle().getHost());
-			exports = new ResolverExport[0];
-			imports = new ResolverImport[0];
-			requires = new BundleConstraint[0];
-			genericReqiures = new GenericConstraint[0];
-			return;
-		}
-
-		ImportPackageSpecification[] actualImports = getBundle().getImportPackages();
-		// Reorder imports so that optionals are at the end so that we wire statics before optionals
-		ArrayList importList = new ArrayList(actualImports.length);
-		for (int i = actualImports.length - 1; i >= 0; i--)
-			if (ImportPackageSpecification.RESOLUTION_OPTIONAL.equals(actualImports[i].getDirective(Constants.RESOLUTION_DIRECTIVE)))
-				importList.add(new ResolverImport(this, actualImports[i]));
-			else
-				importList.add(0, new ResolverImport(this, actualImports[i]));
-		imports = (ResolverImport[]) importList.toArray(new ResolverImport[importList.size()]);
-
-		ExportPackageDescription[] actualExports = useSelectedExports ? getBundle().getSelectedExports() : getBundle().getExportPackages();
-		exports = new ResolverExport[actualExports.length];
-		for (int i = 0; i < actualExports.length; i++)
-			exports[i] = new ResolverExport(this, actualExports[i]);
-
-		BundleSpecification[] actualRequires = getBundle().getRequiredBundles();
-		requires = new BundleConstraint[actualRequires.length];
-		for (int i = 0; i < requires.length; i++)
-			requires[i] = new BundleConstraint(this, actualRequires[i]);
-
-		GenericSpecification[] actualGenericRequires = getBundle().getGenericRequires();
-		genericReqiures = new GenericConstraint[actualGenericRequires.length];
-		for (int i = 0; i < genericReqiures.length; i++)
-			genericReqiures[i] = new GenericConstraint(this, actualGenericRequires[i]);
-
-		fragments = null;
-		fragmentExports = null;
-		fragmentImports = null;
-		fragmentRequires = null;
-		fragmentGenericRequires = null;
-	}
-
-	ResolverExport getExport(String name) {
-		ResolverExport[] allExports = getExports(name);
-		return allExports.length == 0 ? null : allExports[0];
-	}
-
-	ResolverExport[] getExports(String name) {
-		ArrayList results = new ArrayList(1); // rare to have more than one
-		// it is faster to ask the VersionHashMap for this package name and then compare the exporter to this
-		Object[] resolverExports = resolver.getResolverExports().get(name);
-		for (int i = 0; i < resolverExports.length; i++)
-			if (((ResolverExport) resolverExports[i]).getExporter() == this)
-				results.add(resolverExports[i]);
-		return (ResolverExport[]) results.toArray(new ResolverExport[results.size()]);
-	}
-
-	void clearWires() {
-		ResolverImport[] allImports = getImportPackages();
-		for (int i = 0; i < allImports.length; i++)
-			allImports[i].clearPossibleSuppliers();
-
-		if (host != null)
-			host.clearPossibleSuppliers();
-
-		BundleConstraint[] allRequires = getRequires();
-		for (int i = 0; i < allRequires.length; i++)
-			allRequires[i].clearPossibleSuppliers();
-
-		GenericConstraint[] allGenericRequires = getGenericRequires();
-		for (int i = 0; i < allGenericRequires.length; i++)
-			allGenericRequires[i].setMatchingCapability(null);
-
-		ResolverExport[] allExports = getExportPackages();
-		for (int i = 0; i < allExports.length; i++)
-			allExports[i].setSubstitute(null);
-	}
-
-	boolean isResolved() {
-		return getState() == ResolverBundle.RESOLVED;
-	}
-
-	boolean isFragment() {
-		return host != null;
-	}
-
-	int getState() {
-		return state;
-	}
-
-	void setState(int state) {
-		this.state = state;
-	}
-
-	ResolverImport[] getImportPackages() {
-		if (isFragment())
-			return new ResolverImport[0];
-		if (fragments == null || fragments.size() == 0)
-			return imports;
-		ArrayList resultList = new ArrayList(imports.length);
-		for (int i = 0; i < imports.length; i++)
-			resultList.add(imports[i]);
-		for (Iterator iter = fragments.iterator(); iter.hasNext();) {
-			ResolverBundle fragment = (ResolverBundle) iter.next();
-			ArrayList fragImports = (ArrayList) fragmentImports.get(fragment.bundleID);
-			if (fragImports != null)
-				resultList.addAll(fragImports);
-		}
-		return (ResolverImport[]) resultList.toArray(new ResolverImport[resultList.size()]);
-	}
-
-	ResolverExport[] getExportPackages() {
-		if (isFragment())
-			return new ResolverExport[0];
-		if (fragments == null || fragments.size() == 0)
-			return exports;
-		ArrayList resultList = new ArrayList(exports.length);
-		for (int i = 0; i < exports.length; i++)
-			resultList.add(exports[i]);
-		for (Iterator iter = fragments.iterator(); iter.hasNext();) {
-			ResolverBundle fragment = (ResolverBundle) iter.next();
-			ArrayList fragExports = (ArrayList) fragmentExports.get(fragment.bundleID);
-			if (fragExports != null)
-				resultList.addAll(fragExports);
-		}
-		return (ResolverExport[]) resultList.toArray(new ResolverExport[resultList.size()]);
-	}
-
-	ResolverExport[] getSelectedExports() {
-		return getExports(true);
-	}
-
-	ResolverExport[] getSubstitutedExports() {
-		return getExports(false);
-	}
-
-	private ResolverExport[] getExports(boolean selected) {
-		ResolverExport[] results = getExportPackages();
-		int removedExports = 0;
-		for (int i = 0; i < results.length; i++)
-			if (selected ? results[i].getSubstitute() != null : results[i].getSubstitute() == null)
-				removedExports++;
-		if (removedExports == 0)
-			return results;
-		ResolverExport[] selectedExports = new ResolverExport[results.length - removedExports];
-		int index = 0;
-		for (int i = 0; i < results.length; i++) {
-			if (selected ? results[i].getSubstitute() != null : results[i].getSubstitute() == null)
-				continue;
-			selectedExports[index] = results[i];
-			index++;
-		}
-		return selectedExports;
-	}
-
-	BundleConstraint getHost() {
-		return host;
-	}
-
-	GenericCapability[] getGenericCapabilities() {
-		return capabilities;
-	}
-
-	BundleConstraint[] getRequires() {
-		if (isFragment())
-			return new BundleConstraint[0];
-		if (fragments == null || fragments.size() == 0)
-			return requires;
-		ArrayList resultList = new ArrayList(requires.length);
-		for (int i = 0; i < requires.length; i++)
-			resultList.add(requires[i]);
-		for (Iterator iter = fragments.iterator(); iter.hasNext();) {
-			ResolverBundle fragment = (ResolverBundle) iter.next();
-			ArrayList fragRequires = (ArrayList) fragmentRequires.get(fragment.bundleID);
-			if (fragRequires != null)
-				resultList.addAll(fragRequires);
-		}
-		return (BundleConstraint[]) resultList.toArray(new BundleConstraint[resultList.size()]);
-	}
-
-	GenericConstraint[] getGenericRequires() {
-		if (isFragment() || fragments == null || fragments.size() == 0)
-			return genericReqiures;
-		ArrayList resultList = new ArrayList(genericReqiures.length);
-		for (int i = 0; i < genericReqiures.length; i++)
-			resultList.add(genericReqiures[i]);
-		for (Iterator iter = fragments.iterator(); iter.hasNext();) {
-			ResolverBundle fragment = (ResolverBundle) iter.next();
-			ArrayList fragGenericRegs = (ArrayList) fragmentGenericRequires.get(fragment.bundleID);
-			if (fragGenericRegs != null)
-				resultList.addAll(fragGenericRegs);
-		}
-		return (GenericConstraint[]) resultList.toArray(new GenericConstraint[resultList.size()]);
-	}
-
-	BundleConstraint getRequire(String name) {
-		BundleConstraint[] allRequires = getRequires();
-		for (int i = 0; i < allRequires.length; i++)
-			if (allRequires[i].getVersionConstraint().getName().equals(name))
-				return allRequires[i];
-		return null;
-	}
-
-	public BundleDescription getBundle() {
-		return (BundleDescription) getBaseDescription();
-	}
-
-	public ResolverBundle getResolverBundle() {
-		return this;
-	}
-
-	ResolverImport getImport(String name) {
-		ResolverImport[] allImports = getImportPackages();
-		for (int i = 0; i < allImports.length; i++) {
-			if (allImports[i].getName().equals(name)) {
-				return allImports[i];
-			}
-		}
-		return null;
-	}
-
-	public String toString() {
-		return "[" + getBundle() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	private void initFragments() {
-		if (fragments == null)
-			fragments = new ArrayList(1);
-		if (fragmentExports == null)
-			fragmentExports = new HashMap(1);
-		if (fragmentImports == null)
-			fragmentImports = new HashMap(1);
-		if (fragmentRequires == null)
-			fragmentRequires = new HashMap(1);
-		if (fragmentGenericRequires == null)
-			fragmentGenericRequires = new HashMap(1);
-	}
-
-	private boolean isImported(String packageName) {
-		ResolverImport[] allImports = getImportPackages();
-		for (int i = 0; i < allImports.length; i++)
-			if (packageName.equals(allImports[i].getName()))
-				return true;
-
-		return false;
-	}
-
-	private boolean isRequired(String bundleName) {
-		return getRequire(bundleName) != null;
-	}
-
-	ResolverExport[] attachFragment(ResolverBundle fragment, boolean dynamicAttach) {
-		if (isFragment())
-			return new ResolverExport[0]; // cannot attach to fragments;
-		if (!getBundle().attachFragments() || (isResolved() && !getBundle().dynamicFragments()))
-			return new ResolverExport[0]; // host is restricting attachment
-		if (fragment.getHost().getNumPossibleSuppliers() > 0 && !((HostSpecification) fragment.getHost().getVersionConstraint()).isMultiHost())
-			return new ResolverExport[0]; // fragment is restricting attachment
-
-		ImportPackageSpecification[] newImports = fragment.getBundle().getImportPackages();
-		BundleSpecification[] newRequires = fragment.getBundle().getRequiredBundles();
-		ExportPackageDescription[] newExports = fragment.getBundle().getExportPackages();
-		GenericSpecification[] newGenericRequires = fragment.getBundle().getGenericRequires();
-
-		// if this is not during initialization then check if constraints conflict
-		if (dynamicAttach && constraintsConflict(fragment.getBundle(), newImports, newRequires, newGenericRequires))
-			return new ResolverExport[0]; // do not allow fragments with conflicting constraints
-		if (isResolved() && newExports.length > 0)
-			fragment.setNewFragmentExports(true);
-
-		initFragments();
-		// need to make sure there is not already another version of this fragment 
-		// already attached to this host
-		for (Iterator iFragments = fragments.iterator(); iFragments.hasNext();) {
-			ResolverBundle existingFragment = (ResolverBundle) iFragments.next();
-			String bsn = existingFragment.getName();
-			if (bsn != null && bsn.equals(fragment.getName()))
-				return new ResolverExport[0];
-		}
-		if (fragments.contains(fragment))
-			return new ResolverExport[0];
-		fragments.add(fragment);
-		fragment.getHost().addPossibleSupplier(this);
-
-		if (newImports.length > 0) {
-			ArrayList hostImports = new ArrayList(newImports.length);
-			for (int i = 0; i < newImports.length; i++)
-				if (!isImported(newImports[i].getName()))
-					hostImports.add(new ResolverImport(this, newImports[i]));
-			fragmentImports.put(fragment.bundleID, hostImports);
-		}
-
-		if (newRequires.length > 0) {
-			ArrayList hostRequires = new ArrayList(newRequires.length);
-			for (int i = 0; i < newRequires.length; i++)
-				if (!isRequired(newRequires[i].getName()))
-					hostRequires.add(new BundleConstraint(this, newRequires[i]));
-			fragmentRequires.put(fragment.bundleID, hostRequires);
-		}
-
-		if (newGenericRequires.length > 0) {
-			ArrayList hostGenericRequires = new ArrayList(newGenericRequires.length);
-			for (int i = 0; i < newGenericRequires.length; i++)
-				hostGenericRequires.add(new GenericConstraint(this, newGenericRequires[i]));
-			fragmentGenericRequires.put(fragment.bundleID, hostGenericRequires);
-		}
-
-		ArrayList hostExports = new ArrayList(newExports.length);
-		if (newExports.length > 0 && dynamicAttach) {
-			StateObjectFactory factory = resolver.getState().getFactory();
-			for (int i = 0; i < newExports.length; i++) {
-				ResolverExport currentExports[] = getExports(newExports[i].getName());
-				boolean foundEquivalent = false;
-				for (int j = 0; j < currentExports.length && !foundEquivalent; j++) {
-					if (equivalentExports(currentExports[j], newExports[i]))
-						foundEquivalent = true;
-				}
-				if (!foundEquivalent) {
-					ExportPackageDescription hostExport = factory.createExportPackageDescription(newExports[i].getName(), newExports[i].getVersion(), newExports[i].getDirectives(), newExports[i].getAttributes(), newExports[i].isRoot(), getBundle());
-					hostExports.add(new ResolverExport(this, hostExport));
-				}
-			}
-			fragmentExports.put(fragment.bundleID, hostExports);
-		}
-		return (ResolverExport[]) hostExports.toArray(new ResolverExport[hostExports.size()]);
-	}
-
-	private boolean equivalentExports(ResolverExport existingExport, ExportPackageDescription newDescription) {
-		ExportPackageDescription existingDescription = existingExport.getExportPackageDescription();
-		if (!existingDescription.getName().equals(newDescription.getName()))
-			return false;
-		if (!existingDescription.getVersion().equals(newDescription.getVersion()))
-			return false;
-		if (!equivalentMaps(existingDescription.getAttributes(), newDescription.getAttributes(), true))
-			return false;
-		if (!equivalentMaps(existingDescription.getDirectives(), newDescription.getDirectives(), true))
-			return false;
-		return true;
-	}
-
-	public static boolean equivalentMaps(Map existingDirectives, Map newDirectives, boolean exactMatch) {
-		if (existingDirectives == null && newDirectives == null)
-			return true;
-		if (existingDirectives == null ? newDirectives != null : newDirectives == null)
-			return false;
-		if (exactMatch && existingDirectives.size() != newDirectives.size())
-			return false;
-		for (Iterator entries = existingDirectives.entrySet().iterator(); entries.hasNext();) {
-			Entry entry = (Entry) entries.next();
-			Object newValue = newDirectives.get(entry.getKey());
-			if (newValue == null || entry.getValue().getClass() != newValue.getClass())
-				return false;
-			if (newValue instanceof String[]) {
-				if (!Arrays.equals((Object[]) entry.getValue(), (Object[]) newValue))
-					return false;
-			} else if (!entry.getValue().equals(newValue)) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	boolean constraintsConflict(BundleDescription fragment, ImportPackageSpecification[] newImports, BundleSpecification[] newRequires, GenericSpecification[] newGenericRequires) {
-		// this method iterates over all additional constraints from a fragment
-		// if the host is resolved then the fragment is not allowed to add new constraints;
-		// if the host is resolved and it already has a constraint of the same name then ensure the supplier satisfies the fragment's constraint
-		boolean result = false;
-		for (int i = 0; i < newImports.length; i++) {
-			ResolverImport hostImport = getImport(newImports[i].getName());
-			ResolverExport resolvedExport = (ResolverExport) (hostImport == null ? null : hostImport.getSelectedSupplier());
-			if ((resolvedExport == null && isResolved()) || (resolvedExport != null && !newImports[i].isSatisfiedBy(resolvedExport.getExportPackageDescription()))) {
-				result = true;
-				resolver.getState().addResolverError(fragment, ResolverError.FRAGMENT_CONFLICT, newImports[i].toString(), newImports[i]);
-			}
-		}
-		for (int i = 0; i < newRequires.length; i++) {
-			BundleConstraint hostRequire = getRequire(newRequires[i].getName());
-			ResolverBundle resolvedRequire = (ResolverBundle) (hostRequire == null ? null : hostRequire.getSelectedSupplier());
-			if ((resolvedRequire == null && isResolved()) || (resolvedRequire != null && !newRequires[i].isSatisfiedBy(resolvedRequire.getBundle()))) {
-				result = true;
-				resolver.getState().addResolverError(fragment, ResolverError.FRAGMENT_CONFLICT, newRequires[i].toString(), newRequires[i]);
-			}
-		}
-		// generic constraints cannot conflict; 
-		// only check that a fragment does not add generics constraints to an already resolved host
-		if (isResolved() && newGenericRequires != null && newGenericRequires.length > 0)
-			result = true;
-		return result;
-	}
-
-	private void setNewFragmentExports(boolean newFragmentExports) {
-		this.newFragmentExports = newFragmentExports;
-	}
-
-	boolean isNewFragmentExports() {
-		return newFragmentExports;
-	}
-
-	ResolverExport[] detachFragment(ResolverBundle fragment, ResolverConstraint reason) {
-		if (isFragment())
-			return new ResolverExport[0];
-		initFragments();
-
-		// must save off old imports and requires before we remove the fragment;
-		// this will be used to merge the constraints of the same name from the remaining fragments 
-		ResolverImport[] oldImports = getImportPackages();
-		BundleConstraint[] oldRequires = getRequires();
-		if (!fragments.remove(fragment))
-			return new ResolverExport[0];
-
-		fragment.setNewFragmentExports(false);
-		fragment.getHost().removePossibleSupplier(this);
-		fragmentImports.remove(fragment.bundleID);
-		fragmentRequires.remove(fragment.bundleID);
-		ArrayList removedExports = (ArrayList) fragmentExports.remove(fragment.bundleID);
-		fragmentGenericRequires.remove(fragment.bundleID);
-		if (reason != null) {
-			// the fragment is being detached because one of its imports or requires cannot be resolved;
-			// we need to check the remaining fragment constraints to make sure they do not have
-			// the same unresolved constraint.
-			ResolverBundle[] remainingFrags = (ResolverBundle[]) fragments.toArray(new ResolverBundle[fragments.size()]);
-			for (int i = 0; i < remainingFrags.length; i++) {
-				ArrayList additionalImports = new ArrayList(0);
-				ArrayList additionalRequires = new ArrayList(0);
-				if (hasUnresolvedConstraint(reason, fragment, remainingFrags[i], oldImports, oldRequires, additionalImports, additionalRequires))
-					continue;
-				// merge back the additional imports or requires which the detached fragment has in common with the remaining fragment
-				if (additionalImports.size() > 0) {
-					ArrayList remainingImports = (ArrayList) fragmentImports.get(remainingFrags[i].bundleID);
-					if (remainingImports == null)
-						fragmentImports.put(remainingFrags[i].bundleID, additionalImports);
-					else
-						remainingImports.addAll(additionalImports);
-				}
-				if (additionalRequires.size() > 0) {
-					ArrayList remainingRequires = (ArrayList) fragmentRequires.get(remainingFrags[i].bundleID);
-					if (remainingRequires == null)
-						fragmentRequires.put(remainingFrags[i].bundleID, additionalRequires);
-					else
-						remainingRequires.addAll(additionalRequires);
-				}
-			}
-		}
-		ResolverExport[] results = removedExports == null ? new ResolverExport[0] : (ResolverExport[]) removedExports.toArray(new ResolverExport[removedExports.size()]);
-		for (int i = 0; i < results.length; i++)
-			// TODO this is a hack; need to figure out how to indicate that a fragment export is no longer attached
-			results[i].setSubstitute(results[i]);
-		return results;
-	}
-
-	private boolean hasUnresolvedConstraint(ResolverConstraint reason, ResolverBundle detachedFragment, ResolverBundle remainingFragment, ResolverImport[] oldImports, BundleConstraint[] oldRequires, ArrayList additionalImports, ArrayList additionalRequires) {
-		ImportPackageSpecification[] remainingFragImports = remainingFragment.getBundle().getImportPackages();
-		BundleSpecification[] remainingFragRequires = remainingFragment.getBundle().getRequiredBundles();
-		VersionConstraint[] constraints;
-		if (reason instanceof ResolverImport)
-			constraints = remainingFragImports;
-		else
-			constraints = remainingFragRequires;
-		for (int i = 0; i < constraints.length; i++)
-			if (reason.getName().equals(constraints[i].getName())) {
-				resolver.getResolverExports().remove(detachFragment(remainingFragment, null));
-				return true;
-			}
-		for (int i = 0; i < oldImports.length; i++) {
-			if (oldImports[i].getVersionConstraint().getBundle() != detachedFragment.getBundle())
-				continue; // the constraint is not from the detached fragment
-			for (int j = 0; j < remainingFragImports.length; j++) {
-				if (oldImports[i].getName().equals(remainingFragImports[j].getName())) {
-					// same constraint, must reuse the constraint object but swap out the fragment info
-					additionalImports.add(oldImports[i]);
-					oldImports[i].setVersionConstraint(remainingFragImports[j]);
-					break;
-				}
-			}
-		}
-		for (int i = 0; i < oldRequires.length; i++) {
-			if (oldRequires[i].getVersionConstraint().getBundle() != detachedFragment.getBundle())
-				continue; // the constraint is not from the detached fragment
-			for (int j = 0; j < remainingFragRequires.length; j++) {
-				if (oldRequires[i].getName().equals(remainingFragRequires[j].getName())) {
-					// same constraint, must reuse the constraint object but swap out the fragment info
-					additionalRequires.add(oldRequires[i]);
-					oldRequires[i].setVersionConstraint(remainingFragRequires[j]);
-					break;
-				}
-			}
-		}
-		return false;
-	}
-
-	void detachAllFragments() {
-		if (fragments == null)
-			return;
-		ResolverBundle[] allFragments = (ResolverBundle[]) fragments.toArray(new ResolverBundle[fragments.size()]);
-		for (int i = 0; i < allFragments.length; i++)
-			detachFragment(allFragments[i], null);
-	}
-
-	boolean isResolvable() {
-		return resolvable;
-	}
-
-	void setResolvable(boolean resolvable) {
-		this.resolvable = resolvable;
-	}
-
-	void addExport(ResolverExport re) {
-		ResolverExport[] newExports = new ResolverExport[exports.length + 1];
-		for (int i = 0; i < exports.length; i++)
-			newExports[i] = exports[i];
-		newExports[exports.length] = re;
-		exports = newExports;
-	}
-
-	ResolverImpl getResolver() {
-		return resolver;
-	}
-
-	void clearRefs() {
-		if (refs != null)
-			refs.clear();
-	}
-
-	void addRef(ResolverBundle ref) {
-		if (((BundleDescription) getBaseDescription()).isResolved())
-			return; // don't care when the bundle is already resolved
-		if (refs != null && !refs.contains(ref))
-			refs.add(ref);
-	}
-
-	int getRefs() {
-		return refs == null ? 0 : refs.size();
-	}
-
-	ResolverBundle[] getFragments() {
-		return fragments == null ? new ResolverBundle[0] : (ResolverBundle[]) fragments.toArray(new ResolverBundle[fragments.size()]);
-	}
-
-	/*
-	 * This is used to sort bundles by BSN.  This is needed to fix bug 174930
-	 * If both BSNs are null then 0 is returned
-	 * If this BSN is null the 1 is returned
-	 * If the other BSN is null then -1 is returned
-	 * otherwise String.compareTo is used
-	 */
-	public int compareTo(Object o) {
-		String bsn = getName();
-		String otherBsn = ((ResolverBundle) o).getName();
-		if (bsn == null)
-			return otherBsn == null ? 0 : 1;
-		return otherBsn == null ? -1 : bsn.compareTo(otherBsn);
-	}
-
-	void setUninstalled() {
-		uninstalled = true;
-	}
-
-	boolean isUninstalled() {
-		return uninstalled;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverConstraint.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverConstraint.java
deleted file mode 100644
index 85acb74..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverConstraint.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others. All rights reserved. This
- * program and the accompanying materials are made available under the terms of
- * the Eclipse Public License v1.0 which accompanies this distribution, and is
- * available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.VersionConstraint;
-
-/*
- * A companion to VersionConstraint from the state used while resolving
- */
-public abstract class ResolverConstraint {
-	final protected ResolverBundle bundle;
-	protected VersionConstraint constraint;
-	private VersionSupplier[] possibleSuppliers;
-	private int selectedSupplierIndex = 0;
-
-	ResolverConstraint(ResolverBundle bundle, VersionConstraint constraint) {
-		this.bundle = bundle;
-		this.constraint = constraint;
-	}
-
-	// returns the Resolver bundle requiring the ResolverConstraint
-	ResolverBundle getBundle() {
-		return bundle;
-	}
-
-	// returns the BundleDescription requiring the ResolverConstraint
-	BundleDescription getBundleDescription() {
-		return bundle.getBundle();
-	}
-
-	// returns whether this constraint is from an attached fragment
-	boolean isFromFragment() {
-		return constraint.getBundle().getHost() != null;
-	}
-
-	// Same as VersionConstraint but does additinal permission checks
-	boolean isSatisfiedBy(VersionSupplier vs) {
-		if (vs.getResolverBundle().isUninstalled() || !bundle.getResolver().getPermissionChecker().checkPermission(constraint, vs.getBaseDescription()))
-			return false;
-		return vs.getSubstitute() == null && constraint.isSatisfiedBy(vs.getBaseDescription());
-	}
-
-	// returns the companion VersionConstraint object from the State
-	VersionConstraint getVersionConstraint() {
-		return constraint;
-	}
-
-	// returns the name of this constraint
-	public String getName() {
-		return constraint.getName();
-	}
-
-	public String toString() {
-		return constraint.toString();
-	}
-
-	// returns whether this constraint is optional
-	abstract boolean isOptional();
-
-	void addPossibleSupplier(VersionSupplier supplier) {
-		if (supplier == null)
-			return;
-		// we hope multiple suppliers are rare so do simple array expansion here.
-		if (possibleSuppliers == null) {
-			possibleSuppliers = new VersionSupplier[] {supplier};
-			return;
-		}
-		VersionSupplier[] newSuppliers = new VersionSupplier[possibleSuppliers.length + 1];
-		System.arraycopy(possibleSuppliers, 0, newSuppliers, 0, possibleSuppliers.length);
-		newSuppliers[possibleSuppliers.length] = supplier;
-		possibleSuppliers = newSuppliers;
-	}
-
-	public void removePossibleSupplier(VersionSupplier supplier) {
-		if (possibleSuppliers == null || supplier == null)
-			return;
-		int index = -1;
-		for (int i = 0; i < possibleSuppliers.length; i++) {
-			if (possibleSuppliers[i] == supplier) {
-				index = i;
-				break;
-			}
-		}
-		if (index >= 0) {
-			if (possibleSuppliers.length == 1) {
-				possibleSuppliers = null;
-				return;
-			}
-			VersionSupplier[] newSuppliers = new VersionSupplier[possibleSuppliers.length - 1];
-			System.arraycopy(possibleSuppliers, 0, newSuppliers, 0, index);
-			if (index < possibleSuppliers.length - 1)
-				System.arraycopy(possibleSuppliers, index + 1, newSuppliers, index, possibleSuppliers.length - index - 1);
-			possibleSuppliers = newSuppliers;
-		}
-	}
-
-	int getNumPossibleSuppliers() {
-		if (possibleSuppliers == null)
-			return 0;
-		return possibleSuppliers.length;
-	}
-
-	boolean selectNextSupplier() {
-		if (possibleSuppliers == null || selectedSupplierIndex >= possibleSuppliers.length)
-			return false;
-		selectedSupplierIndex += 1;
-		return selectedSupplierIndex < possibleSuppliers.length;
-	}
-
-	VersionSupplier getSelectedSupplier() {
-		if (possibleSuppliers == null || selectedSupplierIndex >= possibleSuppliers.length)
-			return null;
-		return possibleSuppliers[selectedSupplierIndex];
-	}
-
-	void setSelectedSupplier(int selectedSupplier) {
-		this.selectedSupplierIndex = selectedSupplier;
-	}
-
-	int getSelectedSupplierIndex() {
-		return this.selectedSupplierIndex;
-	}
-
-	VersionSupplier[] getPossibleSuppliers() {
-		return possibleSuppliers;
-	}
-
-	void clearPossibleSuppliers() {
-		possibleSuppliers = null;
-		selectedSupplierIndex = 0;
-	}
-
-	void setVersionConstraint(VersionConstraint constraint) {
-		this.constraint = constraint;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverExport.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverExport.java
deleted file mode 100644
index 6e2a184..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverExport.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-import org.osgi.framework.Constants;
-
-/*
- * A companion to ExportPackageDescription from the state used while resolving.
- */
-public class ResolverExport extends VersionSupplier {
-	private ResolverBundle resolverBundle;
-
-	ResolverExport(ResolverBundle resolverBundle, ExportPackageDescription epd) {
-		super(epd);
-		this.resolverBundle = resolverBundle;
-	}
-
-	public ExportPackageDescription getExportPackageDescription() {
-		return (ExportPackageDescription) base;
-	}
-
-	public BundleDescription getBundle() {
-		return getExportPackageDescription().getExporter();
-	}
-
-	ResolverBundle getExporter() {
-		return resolverBundle;
-	}
-
-	ResolverBundle getResolverBundle() {
-		return getExporter();
-	}
-
-	String[] getUsesDirective() {
-		return (String[]) getExportPackageDescription().getDirective(Constants.USES_DIRECTIVE);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
deleted file mode 100644
index 24b650a..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
+++ /dev/null
@@ -1,1820 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- ******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import java.security.AccessController;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FilterImpl;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.internal.module.GroupingChecker.PackageRoots;
-import org.eclipse.osgi.internal.resolver.BundleDescriptionImpl;
-import org.eclipse.osgi.internal.resolver.ExportPackageDescriptionImpl;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-
-public class ResolverImpl implements org.eclipse.osgi.service.resolver.Resolver {
-	// Debug fields
-	private static final String RESOLVER = FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME + "/resolver"; //$NON-NLS-1$
-	private static final String OPTION_DEBUG = RESOLVER + "/debug";//$NON-NLS-1$
-	private static final String OPTION_WIRING = RESOLVER + "/wiring"; //$NON-NLS-1$
-	private static final String OPTION_IMPORTS = RESOLVER + "/imports"; //$NON-NLS-1$
-	private static final String OPTION_REQUIRES = RESOLVER + "/requires"; //$NON-NLS-1$
-	private static final String OPTION_GENERICS = RESOLVER + "/generics"; //$NON-NLS-1$
-	private static final String OPTION_USES = RESOLVER + "/uses"; //$NON-NLS-1$
-	private static final String OPTION_CYCLES = RESOLVER + "/cycles"; //$NON-NLS-1$
-	public static boolean DEBUG = false;
-	public static boolean DEBUG_WIRING = false;
-	public static boolean DEBUG_IMPORTS = false;
-	public static boolean DEBUG_REQUIRES = false;
-	public static boolean DEBUG_GENERICS = false;
-	public static boolean DEBUG_USES = false;
-	public static boolean DEBUG_CYCLES = false;
-	private static int MAX_MULTIPLE_SUPPLIERS_MERGE = 10;
-	private static int MAX_USES_TIME_BASE = 30000; // 30 seconds
-	private static int MAX_USES_TIME_LIMIT = 90000; // 90 seconds
-	static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-
-	private String[][] CURRENT_EES;
-
-	// The State associated with this resolver
-	private State state;
-	// Used to check permissions for import/export, provide/require, host/fragment
-	private final PermissionChecker permissionChecker;
-	// Set of bundles that are pending removal
-	private MappedList removalPending = new MappedList();
-	// Indicates whether this resolver has been initialized
-	private boolean initialized = false;
-
-	// Repository for exports
-	private VersionHashMap resolverExports = null;
-	// Repository for bundles
-	private VersionHashMap resolverBundles = null;
-	// Repository for generics
-	private VersionHashMap resolverGenerics = null;
-	// List of unresolved bundles
-	private HashSet unresolvedBundles = null;
-	// Keys are BundleDescriptions, values are ResolverBundles
-	private HashMap bundleMapping = null;
-	private GroupingChecker groupingChecker;
-	private Comparator selectionPolicy;
-	private boolean developmentMode = false;
-	private boolean usesCalculationTimeout = false;
-	private volatile CompositeResolveHelperRegistry compositeHelpers;
-
-	public ResolverImpl(BundleContext context, boolean checkPermissions) {
-		this.permissionChecker = new PermissionChecker(context, checkPermissions, this);
-	}
-
-	PermissionChecker getPermissionChecker() {
-		return permissionChecker;
-	}
-
-	// Initializes the resolver
-	private void initialize() {
-		resolverExports = new VersionHashMap(this);
-		resolverBundles = new VersionHashMap(this);
-		resolverGenerics = new VersionHashMap(this);
-		unresolvedBundles = new HashSet();
-		bundleMapping = new HashMap();
-		BundleDescription[] bundles = state.getBundles();
-		groupingChecker = new GroupingChecker();
-
-		ArrayList fragmentBundles = new ArrayList();
-		// Add each bundle to the resolver's internal state
-		for (int i = 0; i < bundles.length; i++)
-			initResolverBundle(bundles[i], fragmentBundles, false);
-		// Add each removal pending bundle to the resolver's internal state
-		Object[] removedBundles = removalPending.getAllValues();
-		for (int i = 0; i < removedBundles.length; i++)
-			initResolverBundle((BundleDescription) removedBundles[i], fragmentBundles, true);
-		// Iterate over the resolved fragments and attach them to their hosts
-		for (Iterator iter = fragmentBundles.iterator(); iter.hasNext();) {
-			ResolverBundle fragment = (ResolverBundle) iter.next();
-			BundleDescription[] hosts = ((HostSpecification) fragment.getHost().getVersionConstraint()).getHosts();
-			for (int i = 0; i < hosts.length; i++) {
-				ResolverBundle host = (ResolverBundle) bundleMapping.get(hosts[i]);
-				if (host != null)
-					// Do not add fragment exports here because they would have been added by the host above.
-					host.attachFragment(fragment, false);
-			}
-		}
-		rewireBundles(); // Reconstruct wirings
-		setDebugOptions();
-		initialized = true;
-	}
-
-	private void initResolverBundle(BundleDescription bundleDesc, ArrayList fragmentBundles, boolean pending) {
-		ResolverBundle bundle = new ResolverBundle(bundleDesc, this);
-		bundleMapping.put(bundleDesc, bundle);
-		if (!pending || bundleDesc.isResolved()) {
-			resolverExports.put(bundle.getExportPackages());
-			resolverBundles.put(bundle.getName(), bundle);
-			resolverGenerics.put(bundle.getGenericCapabilities());
-		}
-		if (bundleDesc.isResolved()) {
-			bundle.setState(ResolverBundle.RESOLVED);
-			if (bundleDesc.getHost() != null)
-				fragmentBundles.add(bundle);
-		} else {
-			if (!pending)
-				unresolvedBundles.add(bundle);
-		}
-	}
-
-	// Re-wire previously resolved bundles
-	private void rewireBundles() {
-		ArrayList visited = new ArrayList(bundleMapping.size());
-		for (Iterator iter = bundleMapping.values().iterator(); iter.hasNext();) {
-			ResolverBundle rb = (ResolverBundle) iter.next();
-			if (!rb.getBundle().isResolved() || rb.isFragment())
-				continue;
-			rewireBundle(rb, visited);
-		}
-	}
-
-	private void rewireBundle(ResolverBundle rb, ArrayList visited) {
-		if (visited.contains(rb))
-			return;
-		visited.add(rb);
-		// Wire requires to bundles
-		BundleConstraint[] requires = rb.getRequires();
-		for (int i = 0; i < requires.length; i++) {
-			rewireRequire(requires[i], visited);
-		}
-		// Wire imports to exports
-		ResolverImport[] imports = rb.getImportPackages();
-		for (int i = 0; i < imports.length; i++) {
-			rewireImport(imports[i], visited);
-		}
-		// Wire generics
-		GenericConstraint[] genericRequires = rb.getGenericRequires();
-		for (int i = 0; i < genericRequires.length; i++)
-			rewireGeneric(genericRequires[i], visited);
-	}
-
-	private void rewireGeneric(GenericConstraint constraint, ArrayList visited) {
-		if (constraint.getMatchingCapabilities() != null)
-			return;
-		GenericDescription[] suppliers = ((GenericSpecification) constraint.getVersionConstraint()).getSuppliers();
-		if (suppliers == null)
-			return;
-		Object[] matches = resolverGenerics.get(constraint.getName());
-		for (int i = 0; i < matches.length; i++) {
-			GenericCapability match = (GenericCapability) matches[i];
-			for (int j = 0; j < suppliers.length; j++)
-				if (match.getBaseDescription() == suppliers[j])
-					constraint.setMatchingCapability(match);
-		}
-		GenericCapability[] matchingCapabilities = constraint.getMatchingCapabilities();
-		if (matchingCapabilities != null)
-			for (int i = 0; i < matchingCapabilities.length; i++)
-				rewireBundle(matchingCapabilities[i].getResolverBundle(), visited);
-	}
-
-	private void rewireRequire(BundleConstraint req, ArrayList visited) {
-		if (req.getSelectedSupplier() != null)
-			return;
-		ResolverBundle matchingBundle = (ResolverBundle) bundleMapping.get(req.getVersionConstraint().getSupplier());
-		req.addPossibleSupplier(matchingBundle);
-		if (matchingBundle == null && !req.isOptional()) {
-			System.err.println("Could not find matching bundle for " + req.getVersionConstraint()); //$NON-NLS-1$
-			// TODO log error!!
-		}
-		if (matchingBundle != null) {
-			rewireBundle(matchingBundle, visited);
-		}
-	}
-
-	private void rewireImport(ResolverImport imp, ArrayList visited) {
-		if (imp.isDynamic() || imp.getSelectedSupplier() != null)
-			return;
-		// Re-wire 'imp'
-		ResolverExport matchingExport = null;
-		ExportPackageDescription importSupplier = (ExportPackageDescription) imp.getVersionConstraint().getSupplier();
-		ResolverBundle exporter = importSupplier == null ? null : (ResolverBundle) bundleMapping.get(importSupplier.getExporter());
-		Object[] matches = resolverExports.get(imp.getName());
-		for (int j = 0; j < matches.length; j++) {
-			ResolverExport export = (ResolverExport) matches[j];
-			if (export.getExporter() == exporter && importSupplier == export.getExportPackageDescription()) {
-				matchingExport = export;
-				break;
-			}
-		}
-		imp.addPossibleSupplier(matchingExport);
-		// If we still have a null wire and it's not optional, then we have an error
-		if (imp.getSelectedSupplier() == null && !imp.isOptional()) {
-			System.err.println("Could not find matching export for " + imp.getVersionConstraint()); //$NON-NLS-1$
-			// TODO log error!!
-		}
-		if (imp.getSelectedSupplier() != null) {
-			rewireBundle(((ResolverExport) imp.getSelectedSupplier()).getExporter(), visited);
-		}
-	}
-
-	// Checks a bundle to make sure it is valid.  If this method returns false for
-	// a given bundle, then that bundle will not even be considered for resolution
-	private boolean isResolvable(BundleDescription bundle, Dictionary[] platformProperties, ArrayList rejectedSingletons) {
-		// check if this is a rejected singleton
-		if (rejectedSingletons.contains(bundle))
-			return false;
-		// check to see if the bundle is disabled
-		DisabledInfo[] disabledInfos = state.getDisabledInfos(bundle);
-		if (disabledInfos.length > 0) {
-			StringBuffer message = new StringBuffer();
-			for (int i = 0; i < disabledInfos.length; i++) {
-				if (i > 0)
-					message.append(' ');
-				message.append('\"').append(disabledInfos[i].getPolicyName()).append(':').append(disabledInfos[i].getMessage()).append('\"');
-			}
-			state.addResolverError(bundle, ResolverError.DISABLED_BUNDLE, message.toString(), null);
-			return false; // fail because we are disable
-		}
-		// Check for singletons
-		if (bundle.isSingleton()) {
-			Object[] sameName = resolverBundles.get(bundle.getName());
-			if (sameName.length > 1) // Need to check if one is already resolved
-				for (int i = 0; i < sameName.length; i++) {
-					if (sameName[i] == bundle || !((ResolverBundle) sameName[i]).getBundle().isSingleton())
-						continue; // Ignore the bundle we are resolving and non-singletons
-					if (((ResolverBundle) sameName[i]).getBundle().isResolved()) {
-						rejectedSingletons.add(bundle);
-						return false; // Must fail since there is already a resolved bundle
-					}
-				}
-		}
-		// check the required execution environment
-		String[] ees = bundle.getExecutionEnvironments();
-		boolean matchedEE = ees.length == 0;
-		if (!matchedEE)
-			for (int i = 0; i < ees.length && !matchedEE; i++)
-				for (int j = 0; j < CURRENT_EES.length && !matchedEE; j++)
-					for (int k = 0; k < CURRENT_EES[j].length && !matchedEE; k++)
-						if (CURRENT_EES[j][k].equals(ees[i])) {
-							((BundleDescriptionImpl) bundle).setEquinoxEE(j);
-							matchedEE = true;
-						}
-		if (!matchedEE) {
-			StringBuffer bundleEE = new StringBuffer(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT.length() + 20);
-			bundleEE.append(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT).append(": "); //$NON-NLS-1$
-			for (int i = 0; i < ees.length; i++) {
-				if (i > 0)
-					bundleEE.append(","); //$NON-NLS-1$
-				bundleEE.append(ees[i]);
-			}
-			state.addResolverError(bundle, ResolverError.MISSING_EXECUTION_ENVIRONMENT, bundleEE.toString(), null);
-			return false;
-		}
-
-		// check the native code specification
-		NativeCodeSpecification nativeCode = bundle.getNativeCodeSpecification();
-		if (nativeCode != null) {
-			NativeCodeDescription[] nativeCodeSuppliers = nativeCode.getPossibleSuppliers();
-			NativeCodeDescription highestRanked = null;
-			for (int i = 0; i < nativeCodeSuppliers.length; i++)
-				if (nativeCode.isSatisfiedBy(nativeCodeSuppliers[i]) && (highestRanked == null || highestRanked.compareTo(nativeCodeSuppliers[i]) < 0))
-					highestRanked = nativeCodeSuppliers[i];
-			if (highestRanked == null) {
-				if (!nativeCode.isOptional()) {
-					state.addResolverError(bundle, ResolverError.NO_NATIVECODE_MATCH, nativeCode.toString(), nativeCode);
-					return false;
-				}
-			} else {
-				if (highestRanked.hasInvalidNativePaths()) {
-					state.addResolverError(bundle, ResolverError.INVALID_NATIVECODE_PATHS, highestRanked.toString(), nativeCode);
-					return false;
-				}
-			}
-			state.resolveConstraint(nativeCode, highestRanked);
-		}
-
-		// check the platform filter
-		String platformFilter = bundle.getPlatformFilter();
-		if (platformFilter == null)
-			return true;
-		if (platformProperties == null)
-			return false;
-		try {
-			Filter filter = FilterImpl.newInstance(platformFilter);
-			for (int i = 0; i < platformProperties.length; i++)
-				// using matchCase here in case of duplicate case invarient keys (bug 180817)
-				if (filter.matchCase(platformProperties[i]))
-					return true;
-		} catch (InvalidSyntaxException e) {
-			// return false below
-		}
-		state.addResolverError(bundle, ResolverError.PLATFORM_FILTER, platformFilter, null);
-		return false;
-	}
-
-	// Attach fragment to its host
-	private void attachFragment(ResolverBundle bundle, ArrayList rejectedSingletons, Collection processedFragments) {
-		if (processedFragments.contains(bundle.getName()))
-			return;
-		processedFragments.add(bundle.getName());
-		// we want to attach multiple versions of the same fragment
-		// from highest version to lowest to give the higher versions first pick
-		// of the available host bundles.
-		Object[] fragments = resolverBundles.get(bundle.getName());
-		for (int i = 0; i < fragments.length; i++) {
-			ResolverBundle fragment = (ResolverBundle) fragments[i];
-			if (!fragment.isResolved())
-				attachFragment0(fragment, rejectedSingletons);
-		}
-	}
-
-	private void attachFragment0(ResolverBundle bundle, ArrayList rejectedSingletons) {
-		if (!bundle.isFragment() || !bundle.isResolvable() || rejectedSingletons.contains(bundle.getBundle()))
-			return;
-		// no need to select singletons now; it will be done when we select the rest of the singleton bundles (bug 152042)
-		// find all available hosts to attach to.
-		boolean foundMatch = false;
-		BundleConstraint hostConstraint = bundle.getHost();
-		Object[] hosts = resolverBundles.get(hostConstraint.getVersionConstraint().getName());
-		for (int i = 0; i < hosts.length; i++)
-			if (((ResolverBundle) hosts[i]).isResolvable() && hostConstraint.isSatisfiedBy((ResolverBundle) hosts[i])) {
-				foundMatch = true;
-				resolverExports.put(((ResolverBundle) hosts[i]).attachFragment(bundle, true));
-			}
-		if (!foundMatch)
-			state.addResolverError(bundle.getBundle(), ResolverError.MISSING_FRAGMENT_HOST, bundle.getHost().getVersionConstraint().toString(), bundle.getHost().getVersionConstraint());
-	}
-
-	public synchronized void resolve(BundleDescription[] reRefresh, Dictionary[] platformProperties) {
-		if (DEBUG)
-			ResolverImpl.log("*** BEGIN RESOLUTION ***"); //$NON-NLS-1$
-		if (state == null)
-			throw new IllegalStateException("RESOLVER_NO_STATE"); //$NON-NLS-1$
-
-		if (!initialized)
-			initialize();
-		// set developmentMode each resolution
-		developmentMode = platformProperties.length == 0 ? false : org.eclipse.osgi.framework.internal.core.Constants.DEVELOPMENT_MODE.equals(platformProperties[0].get(org.eclipse.osgi.framework.internal.core.Constants.OSGI_RESOLVER_MODE));
-		reRefresh = addDevConstraints(reRefresh);
-		// Unresolve all the supplied bundles and their dependents
-		if (reRefresh != null)
-			for (int i = 0; i < reRefresh.length; i++) {
-				ResolverBundle rb = (ResolverBundle) bundleMapping.get(reRefresh[i]);
-				if (rb != null)
-					unresolveBundle(rb, false);
-			}
-		// reorder exports and bundles after unresolving the bundles
-		resolverExports.reorder();
-		resolverBundles.reorder();
-		resolverGenerics.reorder();
-		// always get the latest EEs
-		getCurrentEEs(platformProperties);
-		// keep a list of rejected singltons
-		ArrayList rejectedSingletons = new ArrayList();
-		boolean resolveOptional = platformProperties.length == 0 ? false : "true".equals(platformProperties[0].get("osgi.resolveOptional")); //$NON-NLS-1$//$NON-NLS-2$
-		ResolverBundle[] currentlyResolved = null;
-		if (resolveOptional) {
-			BundleDescription[] resolvedBundles = state.getResolvedBundles();
-			currentlyResolved = new ResolverBundle[resolvedBundles.length];
-			for (int i = 0; i < resolvedBundles.length; i++)
-				currentlyResolved[i] = (ResolverBundle) bundleMapping.get(resolvedBundles[i]);
-		}
-		// attempt to resolve all unresolved bundles
-		ResolverBundle[] bundles = (ResolverBundle[]) unresolvedBundles.toArray(new ResolverBundle[unresolvedBundles.size()]);
-		usesCalculationTimeout = false;
-		resolveBundles(bundles, platformProperties, rejectedSingletons);
-		if (selectSingletons(bundles, rejectedSingletons)) {
-			// a singleton was unresolved as a result of selecting a different version
-			// try to resolve unresolved bundles again; this will attempt to use the selected singleton
-			bundles = (ResolverBundle[]) unresolvedBundles.toArray(new ResolverBundle[unresolvedBundles.size()]);
-			resolveBundles(bundles, platformProperties, rejectedSingletons);
-		}
-		for (Iterator rejected = rejectedSingletons.iterator(); rejected.hasNext();) {
-			BundleDescription reject = (BundleDescription) rejected.next();
-			// need to do a bit of work to figure out which bundle got selected
-			BundleDescription[] sameNames = state.getBundles(reject.getSymbolicName());
-			BundleDescription sameName = reject;
-			for (int i = 0; i < sameNames.length; i++) {
-				if (sameNames[i] != reject && sameNames[i].isSingleton() && !rejectedSingletons.contains(sameNames[i])) {
-					sameName = sameNames[i]; // we know this one got selected
-					break;
-				}
-			}
-			state.addResolverError(reject, ResolverError.SINGLETON_SELECTION, sameName.toString(), null);
-		}
-		if (resolveOptional)
-			resolveOptionalConstraints(currentlyResolved);
-		if (DEBUG)
-			ResolverImpl.log("*** END RESOLUTION ***"); //$NON-NLS-1$
-	}
-
-	private BundleDescription[] addDevConstraints(BundleDescription[] reRefresh) {
-		if (!developmentMode)
-			return reRefresh; // we don't care about this unless we are in development mode
-		// when in develoment mode we need to reRefresh hosts  of unresolved fragments that add new constraints 
-		// and reRefresh and unresolved bundles that have dependents
-		HashSet additionalRefresh = new HashSet();
-		ResolverBundle[] unresolved = (ResolverBundle[]) unresolvedBundles.toArray(new ResolverBundle[unresolvedBundles.size()]);
-		for (int i = 0; i < unresolved.length; i++) {
-			addUnresolvedWithDependents(unresolved[i], additionalRefresh);
-			addHostsFromFragmentConstraints(unresolved[i], additionalRefresh);
-		}
-		if (additionalRefresh.size() == 0)
-			return reRefresh; // no new bundles found to refresh
-		// add the original reRefresh bundles to the set
-		if (reRefresh != null)
-			for (int i = 0; i < reRefresh.length; i++)
-				additionalRefresh.add(reRefresh[i]);
-		return (BundleDescription[]) additionalRefresh.toArray(new BundleDescription[additionalRefresh.size()]);
-	}
-
-	private void addUnresolvedWithDependents(ResolverBundle unresolved, HashSet additionalRefresh) {
-		BundleDescription[] dependents = unresolved.getBundle().getDependents();
-		if (dependents.length > 0)
-			additionalRefresh.add(unresolved.getBundle());
-	}
-
-	private void addHostsFromFragmentConstraints(ResolverBundle unresolved, Set additionalRefresh) {
-		if (!unresolved.isFragment())
-			return;
-		ImportPackageSpecification[] newImports = unresolved.getBundle().getImportPackages();
-		BundleSpecification[] newRequires = unresolved.getBundle().getRequiredBundles();
-		if (newImports.length == 0 && newRequires.length == 0)
-			return; // the fragment does not have its own constraints
-		BundleConstraint hostConstraint = unresolved.getHost();
-		Object[] hosts = resolverBundles.get(hostConstraint.getVersionConstraint().getName());
-		for (int j = 0; j < hosts.length; j++)
-			if (hostConstraint.isSatisfiedBy((ResolverBundle) hosts[j]) && ((ResolverBundle) hosts[j]).isResolved())
-				// we found a host that is resolved;
-				// add it to the set of bundle to refresh so we can ensure this fragment is allowed to resolve
-				additionalRefresh.add(((ResolverBundle) hosts[j]).getBundle());
-
-	}
-
-	private void resolveOptionalConstraints(ResolverBundle[] bundles) {
-		for (int i = 0; i < bundles.length; i++) {
-			if (bundles[i] != null)
-				resolveOptionalConstraints(bundles[i]);
-		}
-	}
-
-	// TODO this does not do proper uses constraint verification.
-	private void resolveOptionalConstraints(ResolverBundle bundle) {
-		BundleConstraint[] requires = bundle.getRequires();
-		ArrayList cycle = new ArrayList();
-		boolean resolvedOptional = false;
-		for (int i = 0; i < requires.length; i++)
-			if (requires[i].isOptional() && requires[i].getSelectedSupplier() == null) {
-				cycle.clear();
-				resolveRequire(requires[i], cycle);
-				if (requires[i].getSelectedSupplier() != null)
-					resolvedOptional = true;
-			}
-		ResolverImport[] imports = bundle.getImportPackages();
-		for (int i = 0; i < imports.length; i++)
-			if (imports[i].isOptional() && imports[i].getSelectedSupplier() == null) {
-				cycle.clear();
-				resolveImport(imports[i], cycle);
-				if (imports[i].getSelectedSupplier() != null)
-					resolvedOptional = true;
-			}
-		if (resolvedOptional) {
-			state.resolveBundle(bundle.getBundle(), false, null, null, null, null, null);
-			stateResolveConstraints(bundle);
-			stateResolveBundle(bundle);
-		}
-	}
-
-	private void getCurrentEEs(Dictionary[] platformProperties) {
-		CURRENT_EES = new String[platformProperties.length][];
-		for (int i = 0; i < platformProperties.length; i++) {
-			String eeSpecs = (String) platformProperties[i].get(Constants.FRAMEWORK_EXECUTIONENVIRONMENT);
-			CURRENT_EES[i] = ManifestElement.getArrayFromList(eeSpecs, ","); //$NON-NLS-1$
-		}
-	}
-
-	private void resolveBundles(ResolverBundle[] bundles, Dictionary[] platformProperties, ArrayList rejectedSingletons) {
-		// First check that all the meta-data is valid for each unresolved bundle
-		// This will reset the resolvable flag for each bundle
-		for (int i = 0; i < bundles.length; i++) {
-			state.removeResolverErrors(bundles[i].getBundle());
-			// if in development mode then make all bundles resolvable
-			// we still want to call isResolvable here to populate any possible ResolverErrors for the bundle
-			bundles[i].setResolvable(isResolvable(bundles[i].getBundle(), platformProperties, rejectedSingletons) || developmentMode);
-			bundles[i].clearRefs();
-		}
-		resolveBundles0(bundles, platformProperties, rejectedSingletons);
-		if (DEBUG_WIRING)
-			printWirings();
-		// set the resolved status of the bundles in the State
-		stateResolveBundles(bundles);
-	}
-
-	private void resolveBundles0(ResolverBundle[] bundles, Dictionary[] platformProperties, ArrayList rejectedSingletons) {
-		if (developmentMode)
-			// need to sort bundles to keep consistent order for fragment attachment (bug 174930)
-			Arrays.sort(bundles);
-		// First attach all fragments to the matching hosts
-		Collection processedFragments = new HashSet(bundles.length);
-		for (int i = 0; i < bundles.length; i++)
-			attachFragment(bundles[i], rejectedSingletons, processedFragments);
-
-		// Lists of cyclic dependencies recording during resolving
-		ArrayList cycle = new ArrayList(1); // start small
-		// Attempt to resolve all unresolved bundles
-		for (int i = 0; i < bundles.length; i++) {
-			if (DEBUG)
-				ResolverImpl.log("** RESOLVING " + bundles[i] + " **"); //$NON-NLS-1$ //$NON-NLS-2$
-			cycle.clear();
-			resolveBundle(bundles[i], cycle);
-			// Check for any bundles involved in a cycle.
-			// if any bundles in the cycle are not resolved then we need to resolve the resolvable ones
-			checkCycle(cycle);
-		}
-		// Resolve all fragments that are still attached to at least one host.
-		if (unresolvedBundles.size() > 0) {
-			ResolverBundle[] unresolved = (ResolverBundle[]) unresolvedBundles.toArray(new ResolverBundle[unresolvedBundles.size()]);
-			for (int i = 0; i < unresolved.length; i++)
-				resolveFragment(unresolved[i]);
-		}
-		checkUsesConstraints(bundles, platformProperties, rejectedSingletons);
-		checkComposites(bundles, platformProperties, rejectedSingletons);
-	}
-
-	private void checkComposites(ResolverBundle[] bundles, Dictionary[] platformProperties, ArrayList rejectedSingletons) {
-		CompositeResolveHelperRegistry helpers = getCompositeHelpers();
-		if (helpers == null)
-			return;
-		Set exclude = null;
-		for (int i = 0; i < bundles.length; i++) {
-			CompositeResolveHelper helper = helpers.getCompositeResolveHelper(bundles[i].getBundle());
-			if (helper == null)
-				continue;
-			if (!bundles[i].isResolved())
-				continue;
-			if (!helper.giveExports(getExportsWiredTo(bundles[i]))) {
-				state.addResolverError(bundles[i].getBundle(), ResolverError.DISABLED_BUNDLE, null, null);
-				bundles[i].setResolvable(false);
-				bundles[i].clearRefs();
-				// We pass false for keepFragmentsAttached because we need to redo the attachments (bug 272561)
-				setBundleUnresolved(bundles[i], false, false);
-				if (exclude == null)
-					exclude = new HashSet(1);
-				exclude.add(bundles[i]);
-			}
-		}
-		reResolveBundles(exclude, bundles, platformProperties, rejectedSingletons);
-	}
-
-	private void checkUsesConstraints(ResolverBundle[] bundles, Dictionary[] platformProperties, ArrayList rejectedSingletons) {
-		ArrayList conflictingConstraints = findBestCombination(bundles, platformProperties);
-		if (conflictingConstraints == null)
-			return;
-		Set conflictedBundles = null;
-		for (Iterator conflicts = conflictingConstraints.iterator(); conflicts.hasNext();) {
-			ResolverConstraint conflict = (ResolverConstraint) conflicts.next();
-			if (conflict.isOptional()) {
-				conflict.clearPossibleSuppliers();
-				continue;
-			}
-			if (conflictedBundles == null)
-				conflictedBundles = new HashSet(conflictingConstraints.size());
-			ResolverBundle conflictedBundle;
-			if (conflict.isFromFragment())
-				conflictedBundle = (ResolverBundle) bundleMapping.get(conflict.getVersionConstraint().getBundle());
-			else
-				conflictedBundle = conflict.getBundle();
-			if (conflictedBundle != null) {
-				if (DEBUG_USES)
-					System.out.println("Found conflicting constraint: " + conflict + " in bundle " + conflictedBundle); //$NON-NLS-1$//$NON-NLS-2$
-				conflictedBundles.add(conflictedBundle);
-				int type = conflict instanceof ResolverImport ? ResolverError.IMPORT_PACKAGE_USES_CONFLICT : ResolverError.REQUIRE_BUNDLE_USES_CONFLICT;
-				state.addResolverError(conflictedBundle.getBundle(), type, conflict.getVersionConstraint().toString(), conflict.getVersionConstraint());
-				conflictedBundle.setResolvable(false);
-				conflictedBundle.clearRefs();
-				// We pass false for keepFragmentsAttached because we need to redo the attachments (bug 272561)
-				setBundleUnresolved(conflictedBundle, false, false);
-			}
-		}
-		reResolveBundles(conflictedBundles, bundles, platformProperties, rejectedSingletons);
-	}
-
-	private void reResolveBundles(Set exclude, ResolverBundle[] bundles, Dictionary[] platformProperties, ArrayList rejectedSingletons) {
-		if (exclude == null || exclude.size() == 0)
-			return;
-		ArrayList remainingUnresolved = new ArrayList();
-		for (int i = 0; i < bundles.length; i++) {
-			if (!exclude.contains(bundles[i])) {
-				// We pass false for keepFragmentsAttached because we need to redo the attachments (bug 272561)
-				setBundleUnresolved(bundles[i], false, false);
-				remainingUnresolved.add(bundles[i]);
-			}
-		}
-		resolveBundles0((ResolverBundle[]) remainingUnresolved.toArray(new ResolverBundle[remainingUnresolved.size()]), platformProperties, rejectedSingletons);
-	}
-
-	private ArrayList findBestCombination(ResolverBundle[] bundles, Dictionary[] platformProperties) {
-		Object usesMode = platformProperties.length == 0 ? null : platformProperties[0].get("osgi.resolver.usesMode"); //$NON-NLS-1$
-		if (usesMode == null)
-			usesMode = secureAction.getProperty("osgi.resolver.usesMode"); //$NON-NLS-1$
-		if ("ignore".equals(usesMode) || developmentMode) //$NON-NLS-1$
-			return null;
-		HashSet bundleConstraints = new HashSet();
-		HashSet packageConstraints = new HashSet();
-		// first try out the initial selections
-		ArrayList initialConflicts = getConflicts(bundles, packageConstraints, bundleConstraints);
-		if (initialConflicts == null || "tryFirst".equals(usesMode) || usesCalculationTimeout) { //$NON-NLS-1$
-			groupingChecker.clear();
-			// the first combination have no conflicts or 
-			// we only are trying the first combination or
-			// we have timed out the calculation; return without iterating over all combinations
-			return initialConflicts;
-		}
-		ResolverConstraint[][] multipleSuppliers = getMultipleSuppliers(bundles, packageConstraints, bundleConstraints);
-		ArrayList conflicts = null;
-		int[] bestCombination = new int[multipleSuppliers.length];
-		conflicts = findBestCombination(bundles, multipleSuppliers, bestCombination, initialConflicts);
-		if (DEBUG_USES) {
-			System.out.print("Best combination found: "); //$NON-NLS-1$
-			printCombination(bestCombination);
-		}
-		for (int i = 0; i < bestCombination.length; i++) {
-			for (int j = 0; j < multipleSuppliers[i].length; j++)
-				multipleSuppliers[i][j].setSelectedSupplier(bestCombination[i]);
-		}
-
-		// do not need to keep uses data in memory
-		groupingChecker.clear();
-		return conflicts;
-	}
-
-	private int[] getCombination(ResolverConstraint[][] multipleSuppliers, int[] combination) {
-		for (int i = 0; i < combination.length; i++)
-			combination[i] = multipleSuppliers[i][0].getSelectedSupplierIndex();
-		return combination;
-	}
-
-	private ArrayList findBestCombination(ResolverBundle[] bundles, ResolverConstraint[][] multipleSuppliers, int[] bestCombination, ArrayList bestConflicts) {
-		// now iterate over every possible combination until either zero conflicts are found 
-		// or we have run out of combinations
-		// if all combinations are tried then return the combination with the lowest number of conflicts
-		long initialTime = System.currentTimeMillis();
-		long timeLimit = Math.min(MAX_USES_TIME_BASE + (bundles.length * 30), MAX_USES_TIME_LIMIT);
-		int bestConflictCount = getConflictCount(bestConflicts);
-		ResolverBundle[] bestConflictBundles = getConflictedBundles(bestConflicts);
-		while (bestConflictCount != 0 && getNextCombination(multipleSuppliers)) {
-			if ((System.currentTimeMillis() - initialTime) > timeLimit) {
-				if (DEBUG_USES)
-					System.out.println("Uses constraint check has timedout.  Using the best solution found so far."); //$NON-NLS-1$
-				usesCalculationTimeout = true;
-				break;
-			}
-			if (DEBUG_USES)
-				printCombination(getCombination(multipleSuppliers, new int[multipleSuppliers.length]));
-			// first count the conflicts for the bundles with conflicts from the best combination
-			// this significantly reduces the time it takes to populate the GroupingChecker for cases where
-			// the combination is no better.
-			ArrayList conflicts = getConflicts(bestConflictBundles, null, null);
-			int conflictCount = getConflictCount(conflicts);
-			if (conflictCount >= bestConflictCount) {
-				if (DEBUG_USES)
-					System.out.println("Combination is not better that current best: " + conflictCount + ">=" + bestConflictCount); //$NON-NLS-1$ //$NON-NLS-2$
-				// no need to test the other bundles;
-				// this combination is no better for the bundles which conflict with the current best combination
-				continue;
-			}
-			// this combination improves upon the conflicts for the bundles which conflict with the current best combination;
-			// do an complete conflict count
-			conflicts = getConflicts(bundles, null, null);
-			conflictCount = getConflictCount(conflicts);
-			if (conflictCount < bestConflictCount) {
-				// this combination is better that the current best combination; save this combination as the current best
-				bestConflictCount = conflictCount;
-				bestConflicts = conflicts;
-				getCombination(multipleSuppliers, bestCombination);
-				bestConflictBundles = getConflictedBundles(bestConflicts);
-				if (DEBUG_USES)
-					System.out.println("Combination selected as current best: number of conflicts: " + bestConflictCount); //$NON-NLS-1$
-			} else if (DEBUG_USES) {
-				System.out.println("Combination is not better that current best: " + conflictCount + ">=" + bestConflictCount); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-		}
-		return bestConflicts;
-	}
-
-	private void printCombination(int[] curCombination) {
-		StringBuffer sb = new StringBuffer();
-		sb.append('[');
-		for (int i = 0; i < curCombination.length; i++) {
-			sb.append(curCombination[i]);
-			if (i < curCombination.length - 1)
-				sb.append(',');
-		}
-		sb.append(']');
-		System.out.println(sb.toString());
-	}
-
-	private ResolverBundle[] getConflictedBundles(ArrayList bestConflicts) {
-		if (bestConflicts == null)
-			return new ResolverBundle[0];
-		ArrayList conflictedBundles = new ArrayList(bestConflicts.size());
-		for (Iterator iConflicts = bestConflicts.iterator(); iConflicts.hasNext();) {
-			ResolverConstraint constraint = (ResolverConstraint) iConflicts.next();
-			if (!conflictedBundles.contains(constraint.getBundle()))
-				conflictedBundles.add(constraint.getBundle());
-		}
-		return (ResolverBundle[]) conflictedBundles.toArray(new ResolverBundle[conflictedBundles.size()]);
-	}
-
-	private boolean getNextCombination(ResolverConstraint[][] multipleSuppliers) {
-		int current = 0;
-		while (current < multipleSuppliers.length) {
-			if (multipleSuppliers[current][0].selectNextSupplier()) {
-				for (int i = 1; i < multipleSuppliers[current].length; i++)
-					multipleSuppliers[current][i].selectNextSupplier();
-				return true; // the current slot has a next supplier
-			}
-			for (int i = 0; i < multipleSuppliers[current].length; i++)
-				multipleSuppliers[current][i].setSelectedSupplier(0); // reset the current slot
-			current++; // move to the next slot
-		}
-		return false;
-	}
-
-	// only count non-optional conflicts
-	private int getConflictCount(ArrayList conflicts) {
-		if (conflicts == null || conflicts.size() == 0)
-			return 0;
-		int result = 0;
-		for (Iterator iConflicts = conflicts.iterator(); iConflicts.hasNext();)
-			if (!((ResolverConstraint) iConflicts.next()).isOptional())
-				result += 1;
-		return result;
-	}
-
-	private ArrayList getConflicts(ResolverBundle[] bundles, HashSet packageConstraints, HashSet bundleConstraints) {
-		groupingChecker.clear();
-		ArrayList conflicts = null;
-		for (int i = 0; i < bundles.length; i++)
-			conflicts = addConflicts(bundles[i], packageConstraints, bundleConstraints, conflicts);
-		return conflicts;
-	}
-
-	private ArrayList addConflicts(ResolverBundle bundle, HashSet packageConstraints, HashSet bundleConstraints, ArrayList conflicts) {
-		boolean foundConflict = false;
-		BundleConstraint[] requires = bundle.getRequires();
-		for (int i = 0; i < requires.length; i++) {
-			ResolverBundle selectedSupplier = (ResolverBundle) requires[i].getSelectedSupplier();
-			PackageRoots[][] conflict = selectedSupplier == null ? null : groupingChecker.isConsistent(bundle, selectedSupplier);
-			if (conflict != null) {
-				addConflictNames(conflict, packageConstraints, bundleConstraints);
-				if (!foundConflict) {
-					if (conflicts == null)
-						conflicts = new ArrayList(1);
-					conflicts.add(requires[i]);
-					foundConflict = !requires[i].isOptional(); // only record the conflicts upto the first non-optional
-				}
-			}
-		}
-		ResolverImport[] imports = bundle.getImportPackages();
-		for (int i = 0; i < imports.length; i++) {
-			ResolverExport selectedSupplier = (ResolverExport) imports[i].getSelectedSupplier();
-			PackageRoots[][] conflict = selectedSupplier == null ? null : groupingChecker.isConsistent(bundle, selectedSupplier);
-			if (conflict != null) {
-				addConflictNames(conflict, packageConstraints, bundleConstraints);
-				if (!foundConflict) {
-					if (conflicts == null)
-						conflicts = new ArrayList(1);
-					conflicts.add(imports[i]);
-					foundConflict = !imports[i].isOptional(); // only record the conflicts upto the first non-optional
-				}
-			}
-		}
-		return conflicts;
-	}
-
-	// records the conflict names we can use to scope down the list of multiple suppliers
-	private void addConflictNames(PackageRoots[][] conflict, HashSet packageConstraints, HashSet bundleConstraints) {
-		if (packageConstraints == null || bundleConstraints == null)
-			return;
-		for (int i = 0; i < conflict.length; i++) {
-			packageConstraints.add(conflict[i][0].getName());
-			packageConstraints.add(conflict[i][1].getName());
-			ResolverExport[] exports0 = conflict[i][0].getRoots();
-			if (exports0 != null)
-				for (int j = 0; j < exports0.length; j++) {
-					ResolverBundle exporter = exports0[j].getExporter();
-					if (exporter != null && exporter.getName() != null)
-						bundleConstraints.add(exporter.getName());
-				}
-			ResolverExport[] exports1 = conflict[i][1].getRoots();
-			if (exports1 != null)
-				for (int j = 0; j < exports1.length; j++) {
-					ResolverBundle exporter = exports1[j].getExporter();
-					if (exporter != null && exporter.getName() != null)
-						bundleConstraints.add(exporter.getName());
-				}
-		}
-	}
-
-	// get a list of resolver constraints that have multiple suppliers
-	// a 2 demensional array is used each entry is a list of identical constraints that have identical suppliers.
-	private ResolverConstraint[][] getMultipleSuppliers(ResolverBundle[] bundles, HashSet packageConstraints, HashSet bundleConstraints) {
-		ArrayList multipleImportSupplierList = new ArrayList(1);
-		ArrayList multipleRequireSupplierList = new ArrayList(1);
-		for (int i = 0; i < bundles.length; i++) {
-			BundleConstraint[] requires = bundles[i].getRequires();
-			for (int j = 0; j < requires.length; j++)
-				if (requires[j].getNumPossibleSuppliers() > 1)
-					multipleRequireSupplierList.add(requires[j]);
-			ResolverImport[] imports = bundles[i].getImportPackages();
-			for (int j = 0; j < imports.length; j++) {
-				if (imports[j].getNumPossibleSuppliers() > 1) {
-					Integer eeProfile = (Integer) ((ResolverExport) imports[j].getSelectedSupplier()).getExportPackageDescription().getDirective(ExportPackageDescriptionImpl.EQUINOX_EE);
-					if (eeProfile.intValue() < 0) {
-						// this is a normal package; always add it
-						multipleImportSupplierList.add(imports[j]);
-					} else {
-						// this is a system bunde export
-						// If other exporters of this package also require the system bundle
-						// then this package does not need to be added to the mix
-						// this is an optimization for bundles like org.eclipse.xerces
-						// that export lots of packages also exported by the system bundle on J2SE 1.4
-						VersionSupplier[] suppliers = imports[j].getPossibleSuppliers();
-						for (int suppliersIndex = 1; suppliersIndex < suppliers.length; suppliersIndex++) {
-							Integer ee = (Integer) ((ResolverExport) suppliers[suppliersIndex]).getExportPackageDescription().getDirective(ExportPackageDescriptionImpl.EQUINOX_EE);
-							if (ee.intValue() >= 0)
-								continue;
-							if (((ResolverExport) suppliers[suppliersIndex]).getExporter().getRequire(getSystemBundle()) == null)
-								if (((ResolverExport) suppliers[suppliersIndex]).getExporter().getRequire(Constants.SYSTEM_BUNDLE_SYMBOLICNAME) == null) {
-									multipleImportSupplierList.add(imports[j]);
-									break;
-								}
-						}
-					}
-				}
-			}
-		}
-		ArrayList results = new ArrayList();
-		if (multipleImportSupplierList.size() + multipleRequireSupplierList.size() > MAX_MULTIPLE_SUPPLIERS_MERGE) {
-			// we have hit a max on the multiple suppliers in the lists without merging.
-			// first merge the identical constraints that have identical suppliers
-			HashMap multipleImportSupplierMaps = new HashMap(1);
-			for (Iterator iMultipleImportSuppliers = multipleImportSupplierList.iterator(); iMultipleImportSuppliers.hasNext();)
-				addMutipleSupplierConstraint(multipleImportSupplierMaps, (ResolverConstraint) iMultipleImportSuppliers.next());
-			HashMap multipleRequireSupplierMaps = new HashMap(1);
-			for (Iterator iMultipleRequireSuppliers = multipleRequireSupplierList.iterator(); iMultipleRequireSuppliers.hasNext();)
-				addMutipleSupplierConstraint(multipleRequireSupplierMaps, (ResolverConstraint) iMultipleRequireSuppliers.next());
-			addMergedSuppliers(results, multipleImportSupplierMaps);
-			addMergedSuppliers(results, multipleRequireSupplierMaps);
-			// check the results to see if we have reduced the number enough
-			if (results.size() > MAX_MULTIPLE_SUPPLIERS_MERGE && packageConstraints != null && bundleConstraints != null) {
-				// we still have too big of a list; filter out constraints that are not in conflict
-				Iterator iResults = results.iterator();
-				results = new ArrayList();
-				while (iResults.hasNext()) {
-					ResolverConstraint[] constraints = (ResolverConstraint[]) iResults.next();
-					ResolverConstraint constraint = constraints.length > 0 ? constraints[0] : null;
-					if (constraint instanceof ResolverImport) {
-						if (packageConstraints.contains(constraint.getName()))
-							results.add(constraints);
-					} else if (constraint instanceof BundleConstraint) {
-						if (bundleConstraints.contains(constraint.getName()))
-							results.add(constraints);
-					}
-				}
-			}
-		} else {
-			// the size is acceptable; just copy the lists as-is
-			for (Iterator iMultipleImportSuppliers = multipleImportSupplierList.iterator(); iMultipleImportSuppliers.hasNext();)
-				results.add(new ResolverConstraint[] {(ResolverConstraint) iMultipleImportSuppliers.next()});
-			for (Iterator iMultipleRequireSuppliers = multipleRequireSupplierList.iterator(); iMultipleRequireSuppliers.hasNext();)
-				results.add(new ResolverConstraint[] {(ResolverConstraint) iMultipleRequireSuppliers.next()});
-		}
-		return (ResolverConstraint[][]) results.toArray(new ResolverConstraint[results.size()][]);
-	}
-
-	String getSystemBundle() {
-		Dictionary[] platformProperties = state.getPlatformProperties();
-		String systemBundle = (String) (platformProperties.length == 0 ? null : platformProperties[0].get(Constants.STATE_SYSTEM_BUNDLE));
-		if (systemBundle == null)
-			systemBundle = Constants.getInternalSymbolicName();
-		return systemBundle;
-	}
-
-	private void addMergedSuppliers(ArrayList mergedSuppliers, HashMap constraints) {
-		for (Iterator iConstraints = constraints.values().iterator(); iConstraints.hasNext();) {
-			ArrayList mergedConstraintLists = (ArrayList) iConstraints.next();
-			for (Iterator mergedLists = mergedConstraintLists.iterator(); mergedLists.hasNext();) {
-				ArrayList constraintList = (ArrayList) mergedLists.next();
-				mergedSuppliers.add(constraintList.toArray(new ResolverConstraint[constraintList.size()]));
-			}
-		}
-	}
-
-	private void addMutipleSupplierConstraint(HashMap constraints, ResolverConstraint constraint) {
-		ArrayList mergedConstraintLists = (ArrayList) constraints.get(constraint.getName());
-		if (mergedConstraintLists == null) {
-			mergedConstraintLists = new ArrayList(1);
-			ArrayList constraintList = new ArrayList(1);
-			constraintList.add(constraint);
-			mergedConstraintLists.add(constraintList);
-			constraints.put(constraint.getName(), mergedConstraintLists);
-			return;
-		}
-		for (Iterator mergedLists = mergedConstraintLists.iterator(); mergedLists.hasNext();) {
-			ArrayList constraintList = (ArrayList) mergedLists.next();
-			ResolverConstraint mergedConstraint = (ResolverConstraint) constraintList.get(0);
-			VersionSupplier[] suppliers1 = constraint.getPossibleSuppliers();
-			VersionSupplier[] suppliers2 = mergedConstraint.getPossibleSuppliers();
-			if (suppliers1.length != suppliers2.length)
-				continue;
-			for (int i = 0; i < suppliers1.length; i++)
-				if (suppliers1[i] != suppliers2[i])
-					continue;
-			constraintList.add(constraint);
-			return;
-		}
-		ArrayList constraintList = new ArrayList(1);
-		constraintList.add(constraint);
-		mergedConstraintLists.add(constraintList);
-	}
-
-	private void checkCycle(ArrayList cycle) {
-		int cycleSize = cycle.size();
-		if (cycleSize == 0)
-			return;
-		cycleLoop: for (Iterator iCycle = cycle.iterator(); iCycle.hasNext();) {
-			ResolverBundle cycleBundle = (ResolverBundle) iCycle.next();
-			if (!cycleBundle.isResolvable()) {
-				iCycle.remove(); // remove this bundle from the list of bundles that need re-resolved
-				continue cycleLoop;
-			}
-			// Check that we haven't wired to any dropped exports
-			ResolverImport[] imports = cycleBundle.getImportPackages();
-			for (int j = 0; j < imports.length; j++) {
-				// check for dropped exports
-				while (imports[j].getSelectedSupplier() != null) {
-					ResolverExport importSupplier = (ResolverExport) imports[j].getSelectedSupplier();
-					if (importSupplier.getSubstitute() != null)
-						imports[j].selectNextSupplier();
-					else
-						break;
-				}
-				if (!imports[j].isDynamic() && !imports[j].isOptional() && imports[j].getSelectedSupplier() == null) {
-					cycleBundle.setResolvable(false);
-					cycleBundle.clearRefs();
-					state.addResolverError(imports[j].getVersionConstraint().getBundle(), ResolverError.MISSING_IMPORT_PACKAGE, imports[j].getVersionConstraint().toString(), imports[j].getVersionConstraint());
-					iCycle.remove();
-					continue cycleLoop;
-				}
-			}
-		}
-		if (cycle.size() != cycleSize) {
-			//we removed an un-resolvable bundle; must re-resolve remaining cycle
-			for (int i = 0; i < cycle.size(); i++) {
-				ResolverBundle cycleBundle = (ResolverBundle) cycle.get(i);
-				cycleBundle.clearWires();
-				cycleBundle.clearRefs();
-			}
-			ArrayList innerCycle = new ArrayList(cycle.size());
-			for (int i = 0; i < cycle.size(); i++)
-				resolveBundle((ResolverBundle) cycle.get(i), innerCycle);
-			checkCycle(innerCycle);
-		} else {
-			for (int i = 0; i < cycle.size(); i++) {
-				if (DEBUG || DEBUG_CYCLES)
-					ResolverImpl.log("Pushing " + cycle.get(i) + " to RESOLVED"); //$NON-NLS-1$ //$NON-NLS-2$
-				setBundleResolved((ResolverBundle) cycle.get(i));
-			}
-		}
-	}
-
-	private boolean selectSingletons(ResolverBundle[] bundles, ArrayList rejectedSingletons) {
-		if (developmentMode)
-			return false; // do no want to unresolve singletons in development mode
-		boolean result = false;
-		for (int i = 0; i < bundles.length; i++) {
-			BundleDescription bundleDesc = bundles[i].getBundle();
-			if (!bundleDesc.isSingleton() || !bundleDesc.isResolved() || rejectedSingletons.contains(bundleDesc))
-				continue;
-			Object[] sameName = resolverBundles.get(bundleDesc.getName());
-			if (sameName.length > 1) { // Need to make a selection based off of num dependents
-				for (int j = 0; j < sameName.length; j++) {
-					BundleDescription sameNameDesc = ((VersionSupplier) sameName[j]).getBundle();
-					ResolverBundle sameNameBundle = (ResolverBundle) sameName[j];
-					if (sameName[j] == bundles[i] || !sameNameDesc.isSingleton() || !sameNameDesc.isResolved() || rejectedSingletons.contains(sameNameDesc))
-						continue; // Ignore the bundle we are selecting, non-singletons, and non-resolved
-					result = true;
-					boolean rejectedPolicy = selectionPolicy != null ? selectionPolicy.compare(sameNameDesc, bundleDesc) < 0 : sameNameDesc.getVersion().compareTo(bundleDesc.getVersion()) > 0;
-					int sameNameRefs = sameNameBundle.getRefs();
-					int curRefs = bundles[i].getRefs();
-					// a bundle is always rejected if another bundle has more references to it;
-					// otherwise a bundle is rejected based on the selection policy (version) only if the number of references are equal
-					if ((sameNameRefs == curRefs && rejectedPolicy) || sameNameRefs > curRefs) {
-						// this bundle is not selected; add it to the rejected list
-						if (!rejectedSingletons.contains(bundles[i].getBundle()))
-							rejectedSingletons.add(bundles[i].getBundle());
-						break;
-					}
-					// we did not select the sameNameDesc; add the bundle to the rejected list
-					if (!rejectedSingletons.contains(sameNameDesc))
-						rejectedSingletons.add(sameNameDesc);
-				}
-			}
-		}
-		// clear the refs; we don't care about the refs after singlton selection
-		for (int i = 0; i < bundles.length; i++)
-			bundles[i].clearRefs();
-		// unresolve the rejected singletons
-		for (Iterator rejects = rejectedSingletons.iterator(); rejects.hasNext();)
-			unresolveBundle((ResolverBundle) bundleMapping.get(rejects.next()), false);
-		// reorder exports and bundles after unresolving the bundles
-		resolverExports.reorder();
-		resolverBundles.reorder();
-		resolverGenerics.reorder();
-		return result;
-	}
-
-	private void resolveFragment(ResolverBundle fragment) {
-		if (!fragment.isFragment())
-			return;
-		if (fragment.getHost().getNumPossibleSuppliers() > 0)
-			if (!developmentMode || state.getResolverErrors(fragment.getBundle()).length == 0)
-				setBundleResolved(fragment);
-	}
-
-	// This method will attempt to resolve the supplied bundle and any bundles that it is dependent on
-	private boolean resolveBundle(ResolverBundle bundle, ArrayList cycle) {
-		if (bundle.isFragment())
-			return false;
-		if (!bundle.isResolvable()) {
-			if (DEBUG)
-				ResolverImpl.log("  - " + bundle + " is unresolvable"); //$NON-NLS-1$ //$NON-NLS-2$
-			return false;
-		}
-		switch (bundle.getState()) {
-			case ResolverBundle.RESOLVED :
-				// 'bundle' is already resolved so just return
-				if (DEBUG)
-					ResolverImpl.log("  - " + bundle + " already resolved"); //$NON-NLS-1$ //$NON-NLS-2$
-				return true;
-			case ResolverBundle.UNRESOLVED :
-				// 'bundle' is UNRESOLVED so move to RESOLVING
-				bundle.clearWires();
-				setBundleResolving(bundle);
-				break;
-			case ResolverBundle.RESOLVING :
-				if (cycle.contains(bundle))
-					return true;
-				break;
-			default :
-				break;
-		}
-
-		boolean failed = false;
-
-		if (!failed) {
-			GenericConstraint[] genericRequires = bundle.getGenericRequires();
-			for (int i = 0; i < genericRequires.length; i++) {
-				if (!resolveGenericReq(genericRequires[i], cycle)) {
-					if (DEBUG || DEBUG_GENERICS)
-						ResolverImpl.log("** GENERICS " + genericRequires[i].getVersionConstraint().getName() + "[" + genericRequires[i].getBundleDescription() + "] failed to resolve"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					state.addResolverError(genericRequires[i].getVersionConstraint().getBundle(), ResolverError.MISSING_GENERIC_CAPABILITY, genericRequires[i].getVersionConstraint().toString(), genericRequires[i].getVersionConstraint());
-					if (genericRequires[i].isFromFragment()) {
-						if (!developmentMode) // only detach fragments when not in devmode
-							resolverExports.remove(bundle.detachFragment((ResolverBundle) bundleMapping.get(genericRequires[i].getVersionConstraint().getBundle()), null));
-						continue;
-					}
-					if (!developmentMode) {
-						// fail fast; otherwise we want to attempt to resolver other constraints in dev mode
-						failed = true;
-						break;
-					}
-				}
-			}
-		}
-
-		if (!failed) {
-			// Iterate thru required bundles of 'bundle' trying to find matching bundles.
-			BundleConstraint[] requires = bundle.getRequires();
-			for (int i = 0; i < requires.length; i++) {
-				if (!resolveRequire(requires[i], cycle)) {
-					if (DEBUG || DEBUG_REQUIRES)
-						ResolverImpl.log("** REQUIRE " + requires[i].getVersionConstraint().getName() + "[" + requires[i].getBundleDescription() + "] failed to resolve"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					state.addResolverError(requires[i].getVersionConstraint().getBundle(), ResolverError.MISSING_REQUIRE_BUNDLE, requires[i].getVersionConstraint().toString(), requires[i].getVersionConstraint());
-					// If the require has failed to resolve and it is from a fragment, then remove the fragment from the host
-					if (requires[i].isFromFragment()) {
-						if (!developmentMode) // only detach fragments when not in devmode
-							resolverExports.remove(bundle.detachFragment((ResolverBundle) bundleMapping.get(requires[i].getVersionConstraint().getBundle()), requires[i]));
-						continue;
-					}
-					if (!developmentMode) {
-						// fail fast; otherwise we want to attempt to resolver other constraints in dev mode
-						failed = true;
-						break;
-					}
-				}
-			}
-		}
-
-		if (!failed) {
-			// Iterate thru imports of 'bundle' trying to find matching exports.
-			ResolverImport[] imports = bundle.getImportPackages();
-			for (int i = 0; i < imports.length; i++) {
-				// Only resolve non-dynamic imports here
-				if (!imports[i].isDynamic() && !resolveImport(imports[i], cycle)) {
-					if (DEBUG || DEBUG_IMPORTS)
-						ResolverImpl.log("** IMPORT " + imports[i].getName() + "[" + imports[i].getBundleDescription() + "] failed to resolve"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					// If the import has failed to resolve and it is from a fragment, then remove the fragment from the host
-					state.addResolverError(imports[i].getVersionConstraint().getBundle(), ResolverError.MISSING_IMPORT_PACKAGE, imports[i].getVersionConstraint().toString(), imports[i].getVersionConstraint());
-					if (imports[i].isFromFragment()) {
-						if (!developmentMode) // only detach fragments when not in devmode
-							resolverExports.remove(bundle.detachFragment((ResolverBundle) bundleMapping.get(imports[i].getVersionConstraint().getBundle()), imports[i]));
-						continue;
-					}
-					if (!developmentMode) {
-						// fail fast; otherwise we want to attempt to resolver other constraints in dev mode
-						failed = true;
-						break;
-					}
-				}
-			}
-		}
-
-		// check that fragment constraints are met by the constraints that got resolved to the host
-		checkFragmentConstraints(bundle);
-
-		// do some extra checking when in development mode to see if other resolver error occurred
-		if (developmentMode && !failed && state.getResolverErrors(bundle.getBundle()).length > 0)
-			failed = true;
-
-		// Need to check that all mandatory imports are wired. If they are then
-		// set the bundle RESOLVED, otherwise set it back to UNRESOLVED
-		if (failed) {
-			setBundleUnresolved(bundle, false, developmentMode);
-			if (DEBUG)
-				ResolverImpl.log(bundle + " NOT RESOLVED"); //$NON-NLS-1$
-		} else if (!cycle.contains(bundle)) {
-			setBundleResolved(bundle);
-			if (DEBUG)
-				ResolverImpl.log(bundle + " RESOLVED"); //$NON-NLS-1$
-		}
-
-		if (bundle.getState() == ResolverBundle.UNRESOLVED)
-			bundle.setResolvable(false); // Set it to unresolvable so we don't attempt to resolve it again in this round
-
-		return bundle.getState() != ResolverBundle.UNRESOLVED;
-	}
-
-	private void checkFragmentConstraints(ResolverBundle bundle) {
-		// get all currently attached fragments and ensure that any constraints
-		// they have do not conflict with the constraints resolved to by the host
-		ResolverBundle[] fragments = bundle.getFragments();
-		for (int i = 0; i < fragments.length; i++) {
-			BundleDescription fragment = fragments[i].getBundle();
-			if (bundle.constraintsConflict(fragment, fragment.getImportPackages(), fragment.getRequiredBundles(), fragment.getGenericRequires()) && !developmentMode)
-				// found some conflicts; detach the fragment
-				resolverExports.remove(bundle.detachFragment(fragments[i], null));
-		}
-	}
-
-	private boolean resolveGenericReq(GenericConstraint constraint, ArrayList cycle) {
-		if (DEBUG_REQUIRES)
-			ResolverImpl.log("Trying to resolve: " + constraint.getBundle() + ", " + constraint.getVersionConstraint()); //$NON-NLS-1$ //$NON-NLS-2$
-		GenericCapability[] matchingCapabilities = constraint.getMatchingCapabilities();
-		if (matchingCapabilities != null) {
-			// Check for unrecorded cyclic dependency
-			for (int i = 0; i < matchingCapabilities.length; i++)
-				if (matchingCapabilities[i].getResolverBundle().getState() == ResolverBundle.RESOLVING)
-					if (!cycle.contains(constraint.getBundle()))
-						cycle.add(constraint.getBundle());
-			if (DEBUG_REQUIRES)
-				ResolverImpl.log("  - already wired"); //$NON-NLS-1$
-			return true; // Already wired (due to grouping dependencies) so just return
-		}
-		Object[] capabilities = resolverGenerics.get(constraint.getVersionConstraint().getName());
-		boolean result = false;
-		for (int i = 0; i < capabilities.length; i++) {
-			GenericCapability capability = (GenericCapability) capabilities[i];
-			if (DEBUG_GENERICS)
-				ResolverImpl.log("CHECKING GENERICS: " + capability.getBaseDescription()); //$NON-NLS-1$
-			// Check if capability matches
-			if (constraint.isSatisfiedBy(capability)) {
-				capability.getResolverBundle().addRef(constraint.getBundle());
-				if (result && (((GenericSpecification) constraint.getVersionConstraint()).getResolution() & GenericSpecification.RESOLUTION_MULTIPLE) == 0)
-					continue; // found a match already and this is not a multiple constraint
-				constraint.setMatchingCapability(capability); // Wire to the capability
-				if (constraint.getBundle() == capability.getResolverBundle()) {
-					result = true; // Wired to ourselves
-					continue;
-				}
-				VersionSupplier[] capabilityHosts = capability.isFromFragment() ? capability.getResolverBundle().getHost().getPossibleSuppliers() : new ResolverBundle[] {capability.getResolverBundle()};
-				boolean foundResolvedMatch = false;
-				for (int j = 0; capabilityHosts != null && j < capabilityHosts.length; j++) {
-					ResolverBundle capabilitySupplier = (ResolverBundle) capabilityHosts[j];
-					if (capabilitySupplier == constraint.getBundle()) {
-						// the capability is from a fragment attached to this host do not recursively resolve the host again
-						foundResolvedMatch = true;
-						continue;
-					}
-					// if in dev mode then allow a constraint to resolve to an unresolved bundle
-					if (capabilitySupplier.getState() == ResolverBundle.RESOLVED || (resolveBundle(capabilitySupplier, cycle) || developmentMode)) {
-						foundResolvedMatch |= !capability.isFromFragment() ? true : capability.getResolverBundle().getHost().getPossibleSuppliers() != null;
-						// Check cyclic dependencies
-						if (capabilitySupplier.getState() == ResolverBundle.RESOLVING)
-							if (!cycle.contains(capabilitySupplier))
-								cycle.add(capabilitySupplier);
-					}
-				}
-				if (!foundResolvedMatch) {
-					constraint.removeMatchingCapability(capability);
-					continue; // constraint hasn't resolved
-				}
-				if (DEBUG_GENERICS)
-					ResolverImpl.log("Found match: " + capability.getBaseDescription() + ". Wiring"); //$NON-NLS-1$ //$NON-NLS-2$
-				result = true;
-			}
-		}
-		return result ? true : (((GenericSpecification) constraint.getVersionConstraint()).getResolution() & GenericSpecification.RESOLUTION_OPTIONAL) != 0;
-	}
-
-	// Resolve the supplied import. Returns true if the import can be resolved, false otherwise
-	private boolean resolveRequire(BundleConstraint req, ArrayList cycle) {
-		if (DEBUG_REQUIRES)
-			ResolverImpl.log("Trying to resolve: " + req.getBundle() + ", " + req.getVersionConstraint()); //$NON-NLS-1$ //$NON-NLS-2$
-		if (req.getSelectedSupplier() != null) {
-			// Check for unrecorded cyclic dependency
-			if (!cycle.contains(req.getBundle())) {
-				cycle.add(req.getBundle());
-				if (DEBUG_CYCLES)
-					ResolverImpl.log("require-bundle cycle: " + req.getBundle() + " -> " + req.getSelectedSupplier()); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-			if (DEBUG_REQUIRES)
-				ResolverImpl.log("  - already wired"); //$NON-NLS-1$
-			return true; // Already wired (due to grouping dependencies) so just return
-		}
-		Object[] bundles = resolverBundles.get(req.getVersionConstraint().getName());
-		boolean result = false;
-		for (int i = 0; i < bundles.length; i++) {
-			ResolverBundle bundle = (ResolverBundle) bundles[i];
-			if (DEBUG_REQUIRES)
-				ResolverImpl.log("CHECKING: " + bundle.getBundle()); //$NON-NLS-1$
-			// Check if export matches
-			if (req.isSatisfiedBy(bundle)) {
-				bundle.addRef(req.getBundle());
-				// first add the possible supplier; this is done before resolving the supplier bundle to prevent endless cycle loops.
-				req.addPossibleSupplier(bundle);
-				if (req.getBundle() != bundle) {
-					// if in dev mode then allow a constraint to resolve to an unresolved bundle
-					if (bundle.getState() != ResolverBundle.RESOLVED && !resolveBundle(bundle, cycle) && !developmentMode) {
-						req.removePossibleSupplier(bundle);
-						continue; // Bundle hasn't resolved
-					}
-				}
-				// Check cyclic dependencies
-				if (req.getBundle() != bundle) {
-					if (bundle.getState() == ResolverBundle.RESOLVING)
-						// If the bundle is RESOLVING, we have a cyclic dependency
-						if (!cycle.contains(req.getBundle())) {
-							cycle.add(req.getBundle());
-							if (DEBUG_CYCLES)
-								ResolverImpl.log("require-bundle cycle: " + req.getBundle() + " -> " + req.getSelectedSupplier()); //$NON-NLS-1$ //$NON-NLS-2$
-						}
-				}
-				if (DEBUG_REQUIRES)
-					ResolverImpl.log("Found match: " + bundle.getBundle() + ". Wiring"); //$NON-NLS-1$ //$NON-NLS-2$
-				result = true;
-			}
-		}
-		if (result || req.isOptional())
-			return true; // If the req is optional then just return true
-
-		return false;
-	}
-
-	// Resolve the supplied import. Returns true if the import can be resolved, false otherwise
-	private boolean resolveImport(ResolverImport imp, ArrayList cycle) {
-		if (DEBUG_IMPORTS)
-			ResolverImpl.log("Trying to resolve: " + imp.getBundle() + ", " + imp.getName()); //$NON-NLS-1$ //$NON-NLS-2$
-		if (imp.getSelectedSupplier() != null) {
-			// Check for unrecorded cyclic dependency
-			if (!cycle.contains(imp.getBundle())) {
-				cycle.add(imp.getBundle());
-				if (DEBUG_CYCLES)
-					ResolverImpl.log("import-package cycle: " + imp.getBundle() + " -> " + imp.getSelectedSupplier() + " from " + imp.getSelectedSupplier().getBundle()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-			if (DEBUG_IMPORTS)
-				ResolverImpl.log("  - already wired"); //$NON-NLS-1$
-			return true; // Already wired (due to grouping dependencies) so just return
-		}
-		boolean result = false;
-		ResolverExport[] substitutableExps = imp.getBundle().getExports(imp.getName());
-		Object[] exports = resolverExports.get(imp.getName());
-		for (int i = 0; i < exports.length; i++) {
-			ResolverExport export = (ResolverExport) exports[i];
-			if (DEBUG_IMPORTS)
-				ResolverImpl.log("CHECKING: " + export.getExporter().getBundle() + ", " + export.getName()); //$NON-NLS-1$ //$NON-NLS-2$
-			// Check if export matches
-			if (imp.isSatisfiedBy(export)) {
-				int originalState = export.getExporter().getState();
-				if (imp.isDynamic() && originalState != ResolverBundle.RESOLVED)
-					continue; // Must not attempt to resolve an exporter when dynamic
-				if (imp.getSelectedSupplier() != null && ((ResolverExport) imp.getSelectedSupplier()).getExporter() == imp.getBundle())
-					break; // We wired to ourselves; nobody else matters
-				export.getExporter().addRef(imp.getBundle());
-				// first add the possible supplier; this is done before resolving the supplier bundle to prevent endless cycle loops.
-				imp.addPossibleSupplier(export);
-				if (imp.getBundle() != export.getExporter()) {
-					for (int j = 0; j < substitutableExps.length; j++)
-						if (substitutableExps[j].getSubstitute() == null)
-							substitutableExps[j].setSubstitute(export); // Import wins, drop export
-					// if in dev mode then allow a constraint to resolve to an unresolved bundle
-					if ((originalState != ResolverBundle.RESOLVED && !resolveBundle(export.getExporter(), cycle) && !developmentMode) || export.getSubstitute() != null) {
-						// remove the possible supplier
-						imp.removePossibleSupplier(export);
-						// add back the exports of this package from the importer
-						if (imp.getSelectedSupplier() == null)
-							for (int j = 0; j < substitutableExps.length; j++)
-								if (substitutableExps[j].getSubstitute() == export)
-									substitutableExps[j].setSubstitute(null);
-						continue; // Bundle hasn't resolved || export has not been selected and is unavailable
-					}
-				} else if (export.getSubstitute() != null)
-					continue; // we already found a possible import that satisifies us; our export is dropped
-
-				// Record any cyclic dependencies
-				if (imp.getBundle() != export.getExporter())
-					if (export.getExporter().getState() == ResolverBundle.RESOLVING) {
-						// If the exporter is RESOLVING, we have a cyclic dependency
-						if (!cycle.contains(imp.getBundle())) {
-							cycle.add(imp.getBundle());
-							if (DEBUG_CYCLES)
-								ResolverImpl.log("import-package cycle: " + imp.getBundle() + " -> " + imp.getSelectedSupplier() + " from " + imp.getSelectedSupplier().getBundle()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-						}
-					}
-				if (DEBUG_IMPORTS)
-					ResolverImpl.log("Found match: " + export.getExporter() + ". Wiring " + imp.getBundle() + ":" + imp.getName()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				result = true;
-			}
-		}
-
-		if (result)
-			return true;
-		if (imp.isOptional())
-			return true; // If the import is optional then just return true
-		if (substitutableExps.length > 0 && substitutableExps[0].getSubstitute() == null)
-			return true; // If we still have an export that is not substituted return true
-		return false;
-	}
-
-	// Move a bundle to UNRESOLVED
-	private void setBundleUnresolved(ResolverBundle bundle, boolean removed, boolean keepFragsAttached) {
-		if (bundle.getState() == ResolverBundle.UNRESOLVED && !developmentMode)
-			// in this case there is nothing more to do
-			return;
-		// Note that when in dev mode we only want to force the fragment detach if asked to;
-		// this would be done only when forcing a dependency chain to unresolve from unresolveBundle method
-		if (removed || !keepFragsAttached) {
-			// Force the initialization of the bundle, its exports and its capabilities.  This is needed to force proper attachment of fragments.
-			resolverExports.remove(bundle.getExportPackages());
-			resolverGenerics.remove(bundle.getGenericCapabilities());
-			bundle.detachAllFragments();
-			bundle.initialize(false);
-			if (!removed) {
-				// add back the available exports/capabilities
-				resolverExports.put(bundle.getExportPackages());
-				resolverGenerics.put(bundle.getGenericCapabilities());
-			}
-		}
-		// TODO unresolvedBundles should be a set; for now only need to do a contains check in devMode.
-		if (!removed && (!developmentMode || !unresolvedBundles.contains(bundle)))
-			unresolvedBundles.add(bundle);
-		bundle.setState(ResolverBundle.UNRESOLVED);
-	}
-
-	// Move a bundle to RESOLVED
-	private void setBundleResolved(ResolverBundle bundle) {
-		if (bundle.getState() == ResolverBundle.RESOLVED)
-			return;
-		unresolvedBundles.remove(bundle);
-		bundle.setState(ResolverBundle.RESOLVED);
-	}
-
-	// Move a bundle to RESOLVING
-	private void setBundleResolving(ResolverBundle bundle) {
-		if (bundle.getState() == ResolverBundle.RESOLVING)
-			return;
-		unresolvedBundles.remove(bundle);
-		bundle.setState(ResolverBundle.RESOLVING);
-	}
-
-	// Resolves the bundles in the State
-	private void stateResolveBundles(ResolverBundle[] resolvedBundles) {
-		for (int i = 0; i < resolvedBundles.length; i++) {
-			if (!resolvedBundles[i].getBundle().isResolved())
-				stateResolveBundle(resolvedBundles[i]);
-		}
-	}
-
-	private void stateResolveConstraints(ResolverBundle rb) {
-		ResolverImport[] imports = rb.getImportPackages();
-		for (int i = 0; i < imports.length; i++) {
-			ResolverExport export = (ResolverExport) imports[i].getSelectedSupplier();
-			BaseDescription supplier = export == null ? null : export.getExportPackageDescription();
-			state.resolveConstraint(imports[i].getVersionConstraint(), supplier);
-		}
-		BundleConstraint[] requires = rb.getRequires();
-		for (int i = 0; i < requires.length; i++) {
-			ResolverBundle bundle = (ResolverBundle) requires[i].getSelectedSupplier();
-			BaseDescription supplier = bundle == null ? null : bundle.getBundle();
-			state.resolveConstraint(requires[i].getVersionConstraint(), supplier);
-		}
-		GenericConstraint[] genericRequires = rb.getGenericRequires();
-		for (int i = 0; i < genericRequires.length; i++) {
-			GenericCapability[] matchingCapabilities = genericRequires[i].getMatchingCapabilities();
-			if (matchingCapabilities == null)
-				state.resolveConstraint(genericRequires[i].getVersionConstraint(), null);
-			else
-				for (int j = 0; j < matchingCapabilities.length; j++)
-					state.resolveConstraint(genericRequires[i].getVersionConstraint(), matchingCapabilities[j].getBaseDescription());
-		}
-	}
-
-	private void stateResolveFragConstraints(ResolverBundle rb) {
-		ResolverBundle host = (ResolverBundle) rb.getHost().getSelectedSupplier();
-		ImportPackageSpecification[] imports = rb.getBundle().getImportPackages();
-		for (int i = 0; i < imports.length; i++) {
-			ResolverImport hostImport = host == null ? null : host.getImport(imports[i].getName());
-			ResolverExport export = (ResolverExport) (hostImport == null ? null : hostImport.getSelectedSupplier());
-			BaseDescription supplier = export == null ? null : export.getExportPackageDescription();
-			state.resolveConstraint(imports[i], supplier);
-		}
-		BundleSpecification[] requires = rb.getBundle().getRequiredBundles();
-		for (int i = 0; i < requires.length; i++) {
-			BundleConstraint hostRequire = host == null ? null : host.getRequire(requires[i].getName());
-			ResolverBundle bundle = (ResolverBundle) (hostRequire == null ? null : hostRequire.getSelectedSupplier());
-			BaseDescription supplier = bundle == null ? null : bundle.getBundle();
-			state.resolveConstraint(requires[i], supplier);
-		}
-	}
-
-	private void stateResolveBundle(ResolverBundle rb) {
-		// if in dev mode then we want to tell the state about the constraints we were able to resolve
-		if (!rb.isResolved() && !developmentMode)
-			return;
-		if (rb.isFragment())
-			stateResolveFragConstraints(rb);
-		else
-			stateResolveConstraints(rb);
-		// Gather selected exports
-		ResolverExport[] exports = rb.getSelectedExports();
-		ArrayList selectedExports = new ArrayList(exports.length);
-		for (int i = 0; i < exports.length; i++) {
-			if (permissionChecker.checkPackagePermission(exports[i].getExportPackageDescription()))
-				selectedExports.add(exports[i].getExportPackageDescription());
-		}
-		ExportPackageDescription[] selectedExportsArray = (ExportPackageDescription[]) selectedExports.toArray(new ExportPackageDescription[selectedExports.size()]);
-
-		// Gather substitute exports
-		ResolverExport[] substituted = rb.getSubstitutedExports();
-		ArrayList substitutedExports = new ArrayList(substituted.length);
-		for (int i = 0; i < substituted.length; i++) {
-			substitutedExports.add(substituted[i].getExportPackageDescription());
-		}
-		ExportPackageDescription[] substitutedExportsArray = (ExportPackageDescription[]) substitutedExports.toArray(new ExportPackageDescription[substitutedExports.size()]);
-
-		// Gather exports that have been wired to
-		ExportPackageDescription[] exportsWiredToArray = getExportsWiredTo(rb);
-
-		// Gather bundles that have been wired to
-		BundleConstraint[] requires = rb.getRequires();
-		ArrayList bundlesWiredTo = new ArrayList(requires.length);
-		for (int i = 0; i < requires.length; i++)
-			if (requires[i].getSelectedSupplier() != null)
-				bundlesWiredTo.add(requires[i].getSelectedSupplier().getBaseDescription());
-		BundleDescription[] bundlesWiredToArray = (BundleDescription[]) bundlesWiredTo.toArray(new BundleDescription[bundlesWiredTo.size()]);
-
-		BundleDescription[] hostBundles = null;
-		if (rb.isFragment()) {
-			VersionSupplier[] matchingBundles = rb.getHost().getPossibleSuppliers();
-			if (matchingBundles != null && matchingBundles.length > 0) {
-				hostBundles = new BundleDescription[matchingBundles.length];
-				for (int i = 0; i < matchingBundles.length; i++) {
-					hostBundles[i] = matchingBundles[i].getBundle();
-					if (rb.isNewFragmentExports() && hostBundles[i].isResolved()) {
-						// update the host's set of selected exports
-						ResolverExport[] hostExports = ((ResolverBundle) matchingBundles[i]).getSelectedExports();
-						ExportPackageDescription[] hostExportsArray = new ExportPackageDescription[hostExports.length];
-						for (int j = 0; j < hostExports.length; j++)
-							hostExportsArray[j] = hostExports[j].getExportPackageDescription();
-						state.resolveBundle(hostBundles[i], true, null, hostExportsArray, hostBundles[i].getSubstitutedExports(), hostBundles[i].getResolvedRequires(), hostBundles[i].getResolvedImports());
-					}
-				}
-			}
-		}
-
-		// Resolve the bundle in the state
-		state.resolveBundle(rb.getBundle(), rb.isResolved(), hostBundles, selectedExportsArray, substitutedExportsArray, bundlesWiredToArray, exportsWiredToArray);
-	}
-
-	private static ExportPackageDescription[] getExportsWiredTo(ResolverBundle rb) {
-		// Gather exports that have been wired to
-		ResolverImport[] imports = rb.getImportPackages();
-		ArrayList exportsWiredTo = new ArrayList(imports.length);
-		for (int i = 0; i < imports.length; i++)
-			if (imports[i].getSelectedSupplier() != null)
-				exportsWiredTo.add(imports[i].getSelectedSupplier().getBaseDescription());
-		return (ExportPackageDescription[]) exportsWiredTo.toArray(new ExportPackageDescription[exportsWiredTo.size()]);
-	}
-
-	// Resolve dynamic import
-	public synchronized ExportPackageDescription resolveDynamicImport(BundleDescription importingBundle, String requestedPackage) {
-		if (state == null)
-			throw new IllegalStateException("RESOLVER_NO_STATE"); //$NON-NLS-1$
-
-		// Make sure the resolver is initialized
-		if (!initialized)
-			initialize();
-
-		ResolverBundle rb = (ResolverBundle) bundleMapping.get(importingBundle);
-		if (rb.getExport(requestedPackage) != null)
-			return null; // do not allow dynamic wires for packages which this bundle exports
-		ResolverImport[] resolverImports = rb.getImportPackages();
-		// Check through the ResolverImports of this bundle.
-		// If there is a matching one then pass it into resolveImport()
-		boolean found = false;
-		for (int j = 0; j < resolverImports.length; j++) {
-			// Make sure it is a dynamic import
-			if (!resolverImports[j].isDynamic())
-				continue;
-			String importName = resolverImports[j].getName();
-			// If the import uses a wildcard, then temporarily replace this with the requested package
-			if (importName.equals("*") || //$NON-NLS-1$
-					(importName.endsWith(".*") && requestedPackage.startsWith(importName.substring(0, importName.length() - 1)))) { //$NON-NLS-1$
-				resolverImports[j].setName(requestedPackage);
-			}
-			// Resolve the import
-			if (requestedPackage.equals(resolverImports[j].getName())) {
-				found = true;
-				// populate the grouping checker with current imports
-				groupingChecker.populateRoots(resolverImports[j].getBundle());
-				if (resolveImport(resolverImports[j], new ArrayList())) {
-					found = false;
-					while (!found && resolverImports[j].getSelectedSupplier() != null) {
-						if (groupingChecker.isDynamicConsistent(resolverImports[j].getBundle(), (ResolverExport) resolverImports[j].getSelectedSupplier()) != null)
-							resolverImports[j].selectNextSupplier(); // not consistent; try the next
-						else
-							found = true; // found a valid wire
-					}
-					resolverImports[j].setName(null);
-					if (!found) {
-						// not found or there was a conflict; reset the suppliers and return null
-						resolverImports[j].clearPossibleSuppliers();
-						return null;
-					}
-					// If the import resolved then return it's matching export
-					if (DEBUG_IMPORTS)
-						ResolverImpl.log("Resolved dynamic import: " + rb + ":" + resolverImports[j].getName() + " -> " + ((ResolverExport) resolverImports[j].getSelectedSupplier()).getExporter() + ":" + requestedPackage); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-					ExportPackageDescription matchingExport = ((ResolverExport) resolverImports[j].getSelectedSupplier()).getExportPackageDescription();
-					// If it is a wildcard import then clear the wire, so other
-					// exported packages can be found for it
-					if (importName.endsWith("*")) //$NON-NLS-1$
-						resolverImports[j].clearPossibleSuppliers();
-					return matchingExport;
-				}
-			}
-			// Reset the import package name
-			resolverImports[j].setName(null);
-		}
-		// this is to support adding dynamic imports on the fly.
-		if (!found) {
-			Map directives = new HashMap(1);
-			directives.put(Constants.RESOLUTION_DIRECTIVE, ImportPackageSpecification.RESOLUTION_DYNAMIC);
-			ImportPackageSpecification packageSpec = state.getFactory().createImportPackageSpecification(requestedPackage, null, null, null, directives, null, importingBundle);
-			ResolverImport newImport = new ResolverImport(rb, packageSpec);
-			if (resolveImport(newImport, new ArrayList())) {
-				while (newImport.getSelectedSupplier() != null) {
-					if (groupingChecker.isDynamicConsistent(rb, (ResolverExport) newImport.getSelectedSupplier()) != null)
-						newImport.selectNextSupplier();
-					else
-						break;
-				}
-				return ((ResolverExport) newImport.getSelectedSupplier()).getExportPackageDescription();
-			}
-		}
-		if (DEBUG || DEBUG_IMPORTS)
-			ResolverImpl.log("Failed to resolve dynamic import: " + requestedPackage); //$NON-NLS-1$
-		return null; // Couldn't resolve the import, so return null
-	}
-
-	public void bundleAdded(BundleDescription bundle) {
-		if (!initialized)
-			return;
-
-		if (bundleMapping.get(bundle) != null)
-			return; // this description already exists in the resolver
-		ResolverBundle rb = new ResolverBundle(bundle, this);
-		bundleMapping.put(bundle, rb);
-		unresolvedBundles.add(rb);
-		resolverExports.put(rb.getExportPackages());
-		resolverBundles.put(rb.getName(), rb);
-		resolverGenerics.put(rb.getGenericCapabilities());
-	}
-
-	public void bundleRemoved(BundleDescription bundle, boolean pending) {
-		ResolverBundle rb = initialized ? (ResolverBundle) bundleMapping.get(bundle) : null;
-		if (rb != null)
-			rb.setUninstalled();
-		internalBundleRemoved(bundle, pending);
-	}
-
-	private void internalBundleRemoved(BundleDescription bundle, boolean pending) {
-		// check if there are any dependants
-		if (pending)
-			removalPending.put(new Long(bundle.getBundleId()), bundle);
-		if (!initialized)
-			return;
-		ResolverBundle rb = (ResolverBundle) bundleMapping.get(bundle);
-		if (rb == null)
-			return;
-
-		if (!pending) {
-			bundleMapping.remove(bundle);
-			groupingChecker.clear(rb);
-		}
-		if (!pending || !bundle.isResolved()) {
-			resolverExports.remove(rb.getExportPackages());
-			resolverBundles.remove(rb);
-			resolverGenerics.remove(rb.getGenericCapabilities());
-		}
-		unresolvedBundles.remove(rb);
-	}
-
-	private void unresolveBundle(ResolverBundle bundle, boolean removed) {
-		if (bundle == null)
-			return;
-		// check the removed list if unresolving then remove from the removed list
-		Object[] removedBundles = removalPending.remove(new Long(bundle.getBundle().getBundleId()));
-		for (int i = 0; i < removedBundles.length; i++) {
-			ResolverBundle re = (ResolverBundle) bundleMapping.get(removedBundles[i]);
-			unresolveBundle(re, true);
-			state.removeBundleComplete((BundleDescription) removedBundles[i]);
-			resolverExports.remove(re.getExportPackages());
-			resolverBundles.remove(re);
-			resolverGenerics.remove(re.getGenericCapabilities());
-			bundleMapping.remove(removedBundles[i]);
-			groupingChecker.clear(re);
-			// the bundle is removed
-			if (removedBundles[i] == bundle.getBundle())
-				removed = true;
-		}
-
-		if (!bundle.getBundle().isResolved() && !developmentMode)
-			return;
-		CompositeResolveHelperRegistry currentLinks = compositeHelpers;
-		if (currentLinks != null) {
-			CompositeResolveHelper helper = currentLinks.getCompositeResolveHelper(bundle.getBundle());
-			if (helper != null)
-				helper.giveExports(null);
-		}
-		// if not removed then add to the list of unresolvedBundles,
-		// passing false for devmode because we need all fragments detached
-		setBundleUnresolved(bundle, removed, false);
-		// Get bundles dependent on 'bundle'
-		BundleDescription[] dependents = bundle.getBundle().getDependents();
-		state.resolveBundle(bundle.getBundle(), false, null, null, null, null, null);
-		// Unresolve dependents of 'bundle'
-		for (int i = 0; i < dependents.length; i++)
-			unresolveBundle((ResolverBundle) bundleMapping.get(dependents[i]), false);
-	}
-
-	public void bundleUpdated(BundleDescription newDescription, BundleDescription existingDescription, boolean pending) {
-		internalBundleRemoved(existingDescription, pending);
-		bundleAdded(newDescription);
-	}
-
-	public void flush() {
-		resolverExports = null;
-		resolverBundles = null;
-		resolverGenerics = null;
-		unresolvedBundles = null;
-		bundleMapping = null;
-		Object[] removed = removalPending.getAllValues();
-		for (int i = 0; i < removed.length; i++)
-			state.removeBundleComplete((BundleDescription) removed[i]);
-		removalPending.clear();
-		initialized = false;
-	}
-
-	public State getState() {
-		return state;
-	}
-
-	public void setState(State newState) {
-		if (this.state != null) {
-			throw new IllegalStateException("Cannot change the State of a Resolver"); //$NON-NLS-1$
-		}
-		state = newState;
-		flush();
-	}
-
-	private void setDebugOptions() {
-		FrameworkDebugOptions options = FrameworkDebugOptions.getDefault();
-		// may be null if debugging is not enabled
-		if (options == null)
-			return;
-		DEBUG = options.getBooleanOption(OPTION_DEBUG, false);
-		DEBUG_WIRING = options.getBooleanOption(OPTION_WIRING, false);
-		DEBUG_IMPORTS = options.getBooleanOption(OPTION_IMPORTS, false);
-		DEBUG_REQUIRES = options.getBooleanOption(OPTION_REQUIRES, false);
-		DEBUG_GENERICS = options.getBooleanOption(OPTION_GENERICS, false);
-		DEBUG_USES = options.getBooleanOption(OPTION_USES, false);
-		DEBUG_CYCLES = options.getBooleanOption(OPTION_CYCLES, false);
-	}
-
-	// LOGGING METHODS
-	private void printWirings() {
-		ResolverImpl.log("****** Result Wirings ******"); //$NON-NLS-1$
-		Object[] bundles = resolverBundles.getAllValues();
-		for (int j = 0; j < bundles.length; j++) {
-			ResolverBundle rb = (ResolverBundle) bundles[j];
-			if (rb.getBundle().isResolved()) {
-				continue;
-			}
-			ResolverImpl.log("    * WIRING for " + rb); //$NON-NLS-1$
-			// Require bundles
-			BundleConstraint[] requireBundles = rb.getRequires();
-			if (requireBundles.length == 0) {
-				ResolverImpl.log("        (r) no requires"); //$NON-NLS-1$
-			} else {
-				for (int i = 0; i < requireBundles.length; i++) {
-					if (requireBundles[i].getSelectedSupplier() == null) {
-						ResolverImpl.log("        (r) " + rb.getBundle() + " -> NULL!!!"); //$NON-NLS-1$ //$NON-NLS-2$
-					} else {
-						ResolverImpl.log("        (r) " + rb.getBundle() + " -> " + requireBundles[i].getSelectedSupplier()); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-				}
-			}
-			// Hosts
-			BundleConstraint hostSpec = rb.getHost();
-			if (hostSpec != null) {
-				VersionSupplier[] hosts = hostSpec.getPossibleSuppliers();
-				if (hosts != null)
-					for (int i = 0; i < hosts.length; i++) {
-						ResolverImpl.log("        (h) " + rb.getBundle() + " -> " + hosts[i].getBundle()); //$NON-NLS-1$ //$NON-NLS-2$
-					}
-			}
-			// Imports
-			ResolverImport[] imports = rb.getImportPackages();
-			if (imports.length == 0) {
-				ResolverImpl.log("        (w) no imports"); //$NON-NLS-1$
-				continue;
-			}
-			for (int i = 0; i < imports.length; i++) {
-				if (imports[i].isDynamic() && imports[i].getSelectedSupplier() == null) {
-					ResolverImpl.log("        (w) " + imports[i].getBundle() + ":" + imports[i].getName() + " -> DYNAMIC"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				} else if (imports[i].isOptional() && imports[i].getSelectedSupplier() == null) {
-					ResolverImpl.log("        (w) " + imports[i].getBundle() + ":" + imports[i].getName() + " -> OPTIONAL (could not be wired)"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				} else if (imports[i].getSelectedSupplier() == null) {
-					ResolverImpl.log("        (w) " + imports[i].getBundle() + ":" + imports[i].getName() + " -> NULL!!!"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				} else {
-					ResolverImpl.log("        (w) " + imports[i].getBundle() + ":" + imports[i].getName() + " -> " + //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-							((ResolverExport) imports[i].getSelectedSupplier()).getExporter() + ":" + imports[i].getSelectedSupplier().getName()); //$NON-NLS-1$
-				}
-			}
-		}
-	}
-
-	static void log(String message) {
-		Debug.println(message);
-	}
-
-	VersionHashMap getResolverExports() {
-		return resolverExports;
-	}
-
-	public void setSelectionPolicy(Comparator selectionPolicy) {
-		this.selectionPolicy = selectionPolicy;
-	}
-
-	public Comparator getSelectionPolicy() {
-		return selectionPolicy;
-	}
-
-	public void setCompositeResolveHelperRegistry(CompositeResolveHelperRegistry compositeHelpers) {
-		this.compositeHelpers = compositeHelpers;
-	}
-
-	CompositeResolveHelperRegistry getCompositeHelpers() {
-		return compositeHelpers;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImport.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImport.java
deleted file mode 100644
index 848841b..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImport.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.ImportPackageSpecification;
-import org.osgi.framework.Constants;
-
-/*
- * A companion to ImportPackageSpecification from the state used while resolving
- */
-public class ResolverImport extends ResolverConstraint {
-	// only used for dynamic imports
-	private String name;
-
-	ResolverImport(ResolverBundle bundle, ImportPackageSpecification ips) {
-		super(bundle, ips);
-	}
-
-	boolean isOptional() {
-		return ImportPackageSpecification.RESOLUTION_OPTIONAL.equals(((ImportPackageSpecification) constraint).getDirective(Constants.RESOLUTION_DIRECTIVE));
-	}
-
-	boolean isDynamic() {
-		return ImportPackageSpecification.RESOLUTION_DYNAMIC.equals(((ImportPackageSpecification) constraint).getDirective(Constants.RESOLUTION_DIRECTIVE));
-	}
-
-	public String getName() {
-		if (name != null)
-			return name; // return the required package set for a dynamic import
-		return super.getName();
-	}
-
-	// used for dynamic import package when wildcards are used
-	void setName(String requestedPackage) {
-		this.name = requestedPackage;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java
deleted file mode 100644
index 05f18f3..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import java.util.*;
-
-public class VersionHashMap extends MappedList implements Comparator {
-	private final ResolverImpl resolver;
-	private final boolean preferSystemPackages;
-
-	public VersionHashMap(ResolverImpl resolver) {
-		this.resolver = resolver;
-		preferSystemPackages = Boolean.valueOf(ResolverImpl.secureAction.getProperty("osgi.resolver.preferSystemPackages", "true")).booleanValue(); //$NON-NLS-1$//$NON-NLS-2$
-	}
-
-	// assumes existing array is sorted
-	// finds the index where to insert the new value
-	protected int insertionIndex(Object[] existing, Object value) {
-		int index = existing.length;
-		if (compare(existing[existing.length - 1], value) > 0) {
-			index = Arrays.binarySearch(existing, value, this);
-			if (index < 0)
-				index = -index - 1;
-		}
-		return index;
-	}
-
-	public void put(VersionSupplier[] versionSuppliers) {
-		for (int i = 0; i < versionSuppliers.length; i++)
-			put(versionSuppliers[i].getName(), versionSuppliers[i]);
-	}
-
-	public boolean contains(VersionSupplier vs) {
-		return contains(vs, false) != null;
-	}
-
-	private VersionSupplier contains(VersionSupplier vs, boolean remove) {
-		Object existing = internal.get(vs.getName());
-		if (existing == null)
-			return null;
-		if (existing == vs) {
-			if (remove)
-				internal.remove(vs.getName());
-			return vs;
-		}
-		if (!existing.getClass().isArray())
-			return null;
-		Object[] existingValues = (Object[]) existing;
-		for (int i = 0; i < existingValues.length; i++)
-			if (existingValues[i] == vs) {
-				if (remove) {
-					if (existingValues.length == 2) {
-						internal.put(vs.getName(), existingValues[i == 0 ? 1 : 0]);
-						return vs;
-					}
-					Object[] newExisting = new Object[existingValues.length - 1];
-					System.arraycopy(existingValues, 0, newExisting, 0, i);
-					if (i + 1 < existingValues.length)
-						System.arraycopy(existingValues, i + 1, newExisting, i, existingValues.length - i - 1);
-					internal.put(vs.getName(), newExisting);
-				}
-				return vs;
-			}
-		return null;
-	}
-
-	public Object remove(VersionSupplier toBeRemoved) {
-		return contains(toBeRemoved, true);
-	}
-
-	public void remove(VersionSupplier[] versionSuppliers) {
-		for (int i = 0; i < versionSuppliers.length; i++)
-			remove(versionSuppliers[i]);
-	}
-
-	// Once we have resolved bundles, we need to make sure that version suppliers
-	// from the resolved bundles are ahead of those from unresolved bundles
-	void reorder() {
-		for (Iterator it = internal.values().iterator(); it.hasNext();) {
-			Object existing = it.next();
-			if (!existing.getClass().isArray())
-				continue;
-			Arrays.sort((Object[]) existing, this);
-		}
-	}
-
-	// Compares two VersionSuppliers for descending ordered sorts.
-	// The VersionSuppliers are sorted by the following priorities
-	// First the resolution status of the supplying bundle.
-	// Second is the supplier version.
-	// Third is the bundle id of the supplying bundle.
-	public int compare(Object o1, Object o2) {
-		if (!(o1 instanceof VersionSupplier) || !(o2 instanceof VersionSupplier))
-			throw new IllegalArgumentException();
-		VersionSupplier vs1 = (VersionSupplier) o1;
-		VersionSupplier vs2 = (VersionSupplier) o2;
-		// if the selection policy is set then use that
-		if (resolver.getSelectionPolicy() != null)
-			return resolver.getSelectionPolicy().compare(vs1.getBaseDescription(), vs2.getBaseDescription());
-		if (preferSystemPackages) {
-			String systemBundle = resolver.getSystemBundle();
-			if (systemBundle.equals(vs1.getBundle().getSymbolicName()) && !systemBundle.equals(vs2.getBundle().getSymbolicName()))
-				return -1;
-			else if (!systemBundle.equals(vs1.getBundle().getSymbolicName()) && systemBundle.equals(vs2.getBundle().getSymbolicName()))
-				return 1;
-		}
-		if (vs1.getBundle().isResolved() != vs2.getBundle().isResolved())
-			return vs1.getBundle().isResolved() ? -1 : 1;
-		int versionCompare = -(vs1.getVersion().compareTo(vs2.getVersion()));
-		if (versionCompare != 0)
-			return versionCompare;
-		return vs1.getBundle().getBundleId() <= vs2.getBundle().getBundleId() ? -1 : 1;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionSupplier.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionSupplier.java
deleted file mode 100644
index d4c8a2e..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionSupplier.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.module;
-
-import org.eclipse.osgi.service.resolver.BaseDescription;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.osgi.framework.Version;
-
-/*
- * A companion to BaseDescription from the state used while resolving.
- */
-public abstract class VersionSupplier {
-	protected BaseDescription base;
-	private VersionSupplier substitute;
-
-	VersionSupplier(BaseDescription base) {
-		this.base = base;
-	}
-
-	public Version getVersion() {
-		return base.getVersion();
-	}
-
-	public String getName() {
-		return base.getName();
-	}
-
-	public BaseDescription getBaseDescription() {
-		return base;
-	}
-
-	// returns true if this version supplier has been dropped and is no longer available as a wire
-	VersionSupplier getSubstitute() {
-		return substitute;
-	}
-
-	// sets the dropped status.  This should only be called by the VersionHashMap 
-	// when VersionSuppliers are removed
-	void setSubstitute(VersionSupplier substitute) {
-		this.substitute = substitute;
-	}
-
-	/*
-	 * returns the BundleDescription which supplies this VersionSupplier
-	 */
-	abstract public BundleDescription getBundle();
-
-	/*
-	 * returns the ResolverBundle which supplies this VersionSupplier 
-	 */
-	abstract ResolverBundle getResolverBundle();
-
-	public String toString() {
-		return base.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BaseDescriptionImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BaseDescriptionImpl.java
deleted file mode 100644
index d817cd3..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BaseDescriptionImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.BaseDescription;
-import org.osgi.framework.Version;
-
-abstract class BaseDescriptionImpl implements BaseDescription {
-
-	protected final Object monitor = new Object();
-
-	private volatile String name;
-
-	private volatile Version version;
-
-	public String getName() {
-		return name;
-	}
-
-	public Version getVersion() {
-		synchronized (this.monitor) {
-			if (version == null)
-				return Version.emptyVersion;
-			return version;
-		}
-	}
-
-	protected void setName(String name) {
-		this.name = name;
-	}
-
-	protected void setVersion(Version version) {
-		this.version = version;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDeltaImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDeltaImpl.java
deleted file mode 100644
index b957747..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDeltaImpl.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDelta;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-
-final class BundleDeltaImpl implements BundleDelta {
-
-	private volatile BundleDescription bundleDescription;
-	private volatile int type;
-
-	public BundleDeltaImpl(BundleDescription bundleDescription) {
-		this(bundleDescription, 0);
-	}
-
-	public BundleDeltaImpl(BundleDescription bundleDescription, int type) {
-		this.bundleDescription = bundleDescription;
-		this.type = type;
-	}
-
-	public BundleDescription getBundle() {
-		return bundleDescription;
-	}
-
-	public int getType() {
-		return type;
-	}
-
-	protected void setBundle(BundleDescription bundleDescription) {
-		this.bundleDescription = bundleDescription;
-	}
-
-	protected void setType(int type) {
-		this.type = type;
-	}
-
-	public String toString() {
-		return bundleDescription.getSymbolicName() + '_' + bundleDescription.getVersion() + " (" + toTypeString(type) + ")"; //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	private static String toTypeString(int type) {
-		StringBuffer typeStr = new StringBuffer();
-		if ((type & BundleDelta.ADDED) != 0)
-			typeStr.append("ADDED,"); //$NON-NLS-1$
-		if ((type & BundleDelta.REMOVED) != 0)
-			typeStr.append("REMOVED,"); //$NON-NLS-1$
-		if ((type & BundleDelta.RESOLVED) != 0)
-			typeStr.append("RESOLVED,"); //$NON-NLS-1$
-		if ((type & BundleDelta.UNRESOLVED) != 0)
-			typeStr.append("UNRESOLVED,"); //$NON-NLS-1$
-		if ((type & BundleDelta.LINKAGE_CHANGED) != 0)
-			typeStr.append("LINKAGE_CHANGED,"); //$NON-NLS-1$
-		if ((type & BundleDelta.UPDATED) != 0)
-			typeStr.append("UPDATED,"); //$NON-NLS-1$
-		if ((type & BundleDelta.REMOVAL_PENDING) != 0)
-			typeStr.append("REMOVAL_PENDING,"); //$NON-NLS-1$
-		if ((type & BundleDelta.REMOVAL_COMPLETE) != 0)
-			typeStr.append("REMOVAL_COMPLETE,"); //$NON-NLS-1$
-		if (typeStr.length() > 0)
-			typeStr.deleteCharAt(typeStr.length() - 1);
-		return typeStr.toString();
-	}
-
-	public int compareTo(Object obj) {
-		long idcomp = getBundle().getBundleId() - ((BundleDelta) obj).getBundle().getBundleId();
-		return (idcomp < 0L) ? -1 : ((idcomp > 0L) ? 1 : 0);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDescriptionImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDescriptionImpl.java
deleted file mode 100644
index 26e6d15..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDescriptionImpl.java
+++ /dev/null
@@ -1,682 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *     Rob Harrop - SpringSource Inc. (bug 247522 and 255520)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.io.IOException;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.eclipse.osgi.service.resolver.*;
-
-public final class BundleDescriptionImpl extends BaseDescriptionImpl implements BundleDescription, KeyedElement {
-	static final String[] EMPTY_STRING = new String[0];
-	static final ImportPackageSpecification[] EMPTY_IMPORTS = new ImportPackageSpecification[0];
-	static final BundleSpecification[] EMPTY_BUNDLESPECS = new BundleSpecification[0];
-	static final ExportPackageDescription[] EMPTY_EXPORTS = new ExportPackageDescription[0];
-	static final BundleDescription[] EMPTY_BUNDLEDESCS = new BundleDescription[0];
-	static final GenericSpecification[] EMPTY_GENERICSPECS = new GenericSpecification[0];
-	static final GenericDescription[] EMPTY_GENERICDESCS = new GenericDescription[0];
-
-	static final int RESOLVED = 0x01;
-	static final int SINGLETON = 0x02;
-	static final int REMOVAL_PENDING = 0x04;
-	static final int FULLY_LOADED = 0x08;
-	static final int LAZY_LOADED = 0x10;
-	static final int HAS_DYNAMICIMPORT = 0x20;
-	static final int ATTACH_FRAGMENTS = 0x40;
-	static final int DYNAMIC_FRAGMENTS = 0x80;
-
-	// set to fully loaded and allow dynamic fragments by default
-	private volatile int stateBits = FULLY_LOADED | ATTACH_FRAGMENTS | DYNAMIC_FRAGMENTS;
-
-	private volatile long bundleId = -1;
-	private volatile HostSpecification host; //null if the bundle is not a fragment. volatile to allow unsynchronized checks for null
-	private volatile StateImpl containingState;
-
-	private volatile Object userObject;
-	private volatile int lazyDataOffset = -1;
-	private volatile int lazyDataSize = -1;
-
-	//TODO These could be arrays
-	private ArrayList dependencies;
-	private ArrayList dependents;
-
-	private volatile LazyData lazyData;
-	private volatile int equinox_ee = -1;
-
-	public BundleDescriptionImpl() {
-		// 
-	}
-
-	public long getBundleId() {
-		return bundleId;
-	}
-
-	public String getSymbolicName() {
-		return getName();
-	}
-
-	public BundleDescription getSupplier() {
-		return this;
-	}
-
-	public String getLocation() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			return currentData.location;
-		}
-	}
-
-	public String getPlatformFilter() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			return currentData.platformFilter;
-		}
-	}
-
-	public String[] getExecutionEnvironments() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.executionEnvironments == null)
-				return EMPTY_STRING;
-			return currentData.executionEnvironments;
-		}
-	}
-
-	public ImportPackageSpecification[] getImportPackages() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.importPackages == null)
-				return EMPTY_IMPORTS;
-			return currentData.importPackages;
-		}
-	}
-
-	public BundleSpecification[] getRequiredBundles() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.requiredBundles == null)
-				return EMPTY_BUNDLESPECS;
-			return currentData.requiredBundles;
-		}
-	}
-
-	public GenericSpecification[] getGenericRequires() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.genericRequires == null)
-				return EMPTY_GENERICSPECS;
-			return currentData.genericRequires;
-		}
-	}
-
-	public GenericDescription[] getGenericCapabilities() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.genericCapabilities == null)
-				return EMPTY_GENERICDESCS;
-			return currentData.genericCapabilities;
-		}
-	}
-
-	public NativeCodeSpecification getNativeCodeSpecification() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			return currentData.nativeCode;
-		}
-	}
-
-	public ExportPackageDescription[] getExportPackages() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			return currentData.exportPackages == null ? EMPTY_EXPORTS : currentData.exportPackages;
-		}
-	}
-
-	public boolean isResolved() {
-		return (stateBits & RESOLVED) != 0;
-	}
-
-	public State getContainingState() {
-		return containingState;
-	}
-
-	public BundleDescription[] getFragments() {
-		if (host != null)
-			return EMPTY_BUNDLEDESCS;
-		StateImpl currentState = (StateImpl) getContainingState();
-		if (currentState == null)
-			throw new IllegalStateException("BundleDescription does not belong to a state."); //$NON-NLS-1$
-		return currentState.getFragments(this);
-	}
-
-	public HostSpecification getHost() {
-		return host;
-	}
-
-	public boolean isSingleton() {
-		return (stateBits & SINGLETON) != 0;
-	}
-
-	public boolean isRemovalPending() {
-		return (stateBits & REMOVAL_PENDING) != 0;
-	}
-
-	public boolean hasDynamicImports() {
-		return (stateBits & HAS_DYNAMICIMPORT) != 0;
-	}
-
-	public boolean attachFragments() {
-		return (stateBits & ATTACH_FRAGMENTS) != 0;
-	}
-
-	public boolean dynamicFragments() {
-		return (stateBits & DYNAMIC_FRAGMENTS) != 0;
-	}
-
-	public ExportPackageDescription[] getSelectedExports() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.selectedExports == null)
-				return EMPTY_EXPORTS;
-			return currentData.selectedExports;
-		}
-	}
-
-	public ExportPackageDescription[] getSubstitutedExports() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.substitutedExports == null)
-				return EMPTY_EXPORTS;
-			return currentData.substitutedExports;
-		}
-	}
-
-	public BundleDescription[] getResolvedRequires() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.resolvedRequires == null)
-				return EMPTY_BUNDLEDESCS;
-			return currentData.resolvedRequires;
-		}
-	}
-
-	public ExportPackageDescription[] getResolvedImports() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			if (currentData.resolvedImports == null)
-				return EMPTY_EXPORTS;
-			return currentData.resolvedImports;
-		}
-	}
-
-	protected void setBundleId(long bundleId) {
-		this.bundleId = bundleId;
-	}
-
-	protected void setSymbolicName(String symbolicName) {
-		setName(symbolicName);
-	}
-
-	protected void setLocation(String location) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.location = location;
-		}
-	}
-
-	protected void setPlatformFilter(String platformFilter) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.platformFilter = platformFilter;
-		}
-	}
-
-	protected void setExecutionEnvironments(String[] executionEnvironments) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.executionEnvironments = executionEnvironments;
-		}
-	}
-
-	protected void setExportPackages(ExportPackageDescription[] exportPackages) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.exportPackages = exportPackages;
-			if (exportPackages != null) {
-				for (int i = 0; i < exportPackages.length; i++) {
-					((ExportPackageDescriptionImpl) exportPackages[i]).setExporter(this);
-				}
-			}
-		}
-	}
-
-	protected void setImportPackages(ImportPackageSpecification[] importPackages) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.importPackages = importPackages;
-			if (importPackages != null) {
-				for (int i = 0; i < importPackages.length; i++) {
-					((ImportPackageSpecificationImpl) importPackages[i]).setBundle(this);
-					if (ImportPackageSpecification.RESOLUTION_DYNAMIC.equals(importPackages[i].getDirective(Constants.RESOLUTION_DIRECTIVE)))
-						stateBits |= HAS_DYNAMICIMPORT;
-				}
-			}
-		}
-	}
-
-	protected void setRequiredBundles(BundleSpecification[] requiredBundles) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.requiredBundles = requiredBundles;
-			if (requiredBundles != null)
-				for (int i = 0; i < requiredBundles.length; i++) {
-					((VersionConstraintImpl) requiredBundles[i]).setBundle(this);
-				}
-		}
-	}
-
-	protected void setGenericCapabilities(GenericDescription[] genericCapabilities) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.genericCapabilities = genericCapabilities;
-			if (genericCapabilities != null)
-				for (int i = 0; i < genericCapabilities.length; i++)
-					((GenericDescriptionImpl) genericCapabilities[i]).setSupplier(this);
-		}
-	}
-
-	protected void setGenericRequires(GenericSpecification[] genericRequires) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.genericRequires = genericRequires;
-			if (genericRequires != null)
-				for (int i = 0; i < genericRequires.length; i++)
-					((VersionConstraintImpl) genericRequires[i]).setBundle(this);
-		}
-	}
-
-	protected void setNativeCodeSpecification(NativeCodeSpecification nativeCode) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.nativeCode = nativeCode;
-			if (nativeCode != null) {
-				((NativeCodeSpecificationImpl) nativeCode).setBundle(this);
-				NativeCodeDescription[] suppliers = nativeCode.getPossibleSuppliers();
-				if (suppliers != null)
-					for (int i = 0; i < suppliers.length; i++)
-						((NativeCodeDescriptionImpl) suppliers[i]).setSupplier(this);
-			}
-		}
-	}
-
-	protected int getStateBits() {
-		return stateBits;
-	}
-
-	protected void setStateBit(int stateBit, boolean on) {
-		synchronized (this.monitor) {
-			if (on)
-				stateBits |= stateBit;
-			else
-				stateBits &= ~stateBit;
-		}
-	}
-
-	protected void setContainingState(State value) {
-		synchronized (this.monitor) {
-			containingState = (StateImpl) value;
-			if (containingState != null && containingState.getReader() != null) {
-				if (containingState.getReader().isLazyLoaded())
-					stateBits |= LAZY_LOADED;
-				else
-					stateBits &= ~LAZY_LOADED;
-			} else {
-				stateBits &= ~LAZY_LOADED;
-			}
-		}
-	}
-
-	protected void setHost(HostSpecification host) {
-		synchronized (this.monitor) {
-			this.host = host;
-			if (host != null) {
-				((VersionConstraintImpl) host).setBundle(this);
-			}
-		}
-	}
-
-	protected void setLazyLoaded(boolean lazyLoad) {
-		loadLazyData();
-		synchronized (this.monitor) {
-			if (lazyLoad)
-				stateBits |= LAZY_LOADED;
-			else
-				stateBits &= ~LAZY_LOADED;
-		}
-	}
-
-	protected void setSelectedExports(ExportPackageDescription[] selectedExports) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.selectedExports = selectedExports;
-			if (selectedExports != null) {
-				for (int i = 0; i < selectedExports.length; i++) {
-					((ExportPackageDescriptionImpl) selectedExports[i]).setExporter(this);
-				}
-			}
-		}
-	}
-
-	protected void setSubstitutedExports(ExportPackageDescription[] substitutedExports) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.substitutedExports = substitutedExports;
-		}
-	}
-
-	protected void setResolvedImports(ExportPackageDescription[] resolvedImports) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.resolvedImports = resolvedImports;
-		}
-	}
-
-	protected void setResolvedRequires(BundleDescription[] resolvedRequires) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.resolvedRequires = resolvedRequires;
-		}
-	}
-
-	public String toString() {
-		if (getSymbolicName() == null)
-			return "[" + getBundleId() + "]"; //$NON-NLS-1$ //$NON-NLS-2$
-		return getSymbolicName() + "_" + getVersion(); //$NON-NLS-1$
-	}
-
-	public Object getKey() {
-		return new Long(bundleId);
-	}
-
-	public boolean compare(KeyedElement other) {
-		if (!(other instanceof BundleDescriptionImpl))
-			return false;
-		BundleDescriptionImpl otherBundleDescription = (BundleDescriptionImpl) other;
-		return bundleId == otherBundleDescription.bundleId;
-	}
-
-	public int getKeyHashCode() {
-		return (int) (bundleId ^ (bundleId >>> 32));
-	}
-
-	/* TODO Determine if we need more than just Object ID type of hashcode.
-	 public int hashCode() {
-	 if (getSymbolicName() == null)
-	 return (int) (bundleId % Integer.MAX_VALUE);
-	 return (int) ((bundleId * (getSymbolicName().hashCode())) % Integer.MAX_VALUE);
-	 }
-	 */
-
-	protected void removeDependencies() {
-		synchronized (this.monitor) {
-			if (dependencies == null)
-				return;
-			Iterator iter = dependencies.iterator();
-			while (iter.hasNext()) {
-				((BundleDescriptionImpl) iter.next()).removeDependent(this);
-			}
-			dependencies = null;
-		}
-	}
-
-	protected void addDependencies(BaseDescription[] newDependencies, boolean checkDups) {
-		synchronized (this.monitor) {
-			if (newDependencies == null)
-				return;
-			if (!checkDups && dependencies == null)
-				dependencies = new ArrayList(newDependencies.length);
-			for (int i = 0; i < newDependencies.length; i++) {
-				addDependency((BaseDescriptionImpl) newDependencies[i], checkDups);
-			}
-		}
-	}
-
-	protected void addDependency(BaseDescriptionImpl dependency, boolean checkDups) {
-		synchronized (this.monitor) {
-			BundleDescriptionImpl bundle = (BundleDescriptionImpl) dependency.getSupplier();
-			if (bundle == this)
-				return;
-			if (dependencies == null)
-				dependencies = new ArrayList(10);
-			if (!checkDups || !dependencies.contains(bundle)) {
-				bundle.addDependent(this);
-				dependencies.add(bundle);
-			}
-		}
-	}
-
-	/*
-	 * Gets all the bundle dependencies as a result of import-package or require-bundle.
-	 * Self and fragment bundles are removed.
-	 */
-	List getBundleDependencies() {
-		synchronized (this.monitor) {
-			if (dependencies == null)
-				return new ArrayList(0);
-			ArrayList required = new ArrayList(dependencies.size());
-			for (Iterator iter = dependencies.iterator(); iter.hasNext();) {
-				Object dep = iter.next();
-				if (dep != this && dep instanceof BundleDescription && ((BundleDescription) dep).getHost() == null)
-					required.add(dep);
-			}
-			return required;
-		}
-	}
-
-	public Object getUserObject() {
-		return userObject;
-	}
-
-	public void setUserObject(Object userObject) {
-		this.userObject = userObject;
-	}
-
-	protected void addDependent(BundleDescription dependent) {
-		synchronized (this.monitor) {
-			if (dependents == null)
-				dependents = new ArrayList(10);
-			// no need to check for duplicates here; this is only called in addDepenency which already checks for dups.
-			dependents.add(dependent);
-		}
-	}
-
-	protected void removeDependent(BundleDescription dependent) {
-		synchronized (this.monitor) {
-			if (dependents == null)
-				return;
-			dependents.remove(dependent);
-		}
-	}
-
-	public BundleDescription[] getDependents() {
-		synchronized (this.monitor) {
-			if (dependents == null)
-				return EMPTY_BUNDLEDESCS;
-			return (BundleDescription[]) dependents.toArray(new BundleDescription[dependents.size()]);
-		}
-	}
-
-	void setFullyLoaded(boolean fullyLoaded) {
-		synchronized (this.monitor) {
-			if (fullyLoaded) {
-				stateBits |= FULLY_LOADED;
-			} else {
-				stateBits &= ~FULLY_LOADED;
-			}
-		}
-	}
-
-	boolean isFullyLoaded() {
-		return (stateBits & FULLY_LOADED) != 0;
-	}
-
-	void setLazyDataOffset(int lazyDataOffset) {
-		this.lazyDataOffset = lazyDataOffset;
-	}
-
-	int getLazyDataOffset() {
-		return this.lazyDataOffset;
-	}
-
-	void setLazyDataSize(int lazyDataSize) {
-		this.lazyDataSize = lazyDataSize;
-	}
-
-	int getLazyDataSize() {
-		return this.lazyDataSize;
-	}
-
-	// DO NOT call while holding this.monitor
-	private LazyData loadLazyData() {
-		// TODO add back if ee min 1.2 adds holdsLock method
-		//if (Thread.holdsLock(this.monitor)) {
-		//	throw new IllegalStateException("Should not call fullyLoad() holding monitor."); //$NON-NLS-1$
-		//}
-		if ((stateBits & LAZY_LOADED) == 0)
-			return this.lazyData;
-
-		StateImpl currentState = (StateImpl) getContainingState();
-		StateReader reader = currentState == null ? null : currentState.getReader();
-		if (reader == null)
-			throw new IllegalStateException("No valid reader for the bundle description"); //$NON-NLS-1$
-
-		synchronized (reader) {
-			if (isFullyLoaded()) {
-				reader.setAccessedFlag(true); // set reader accessed flag
-				return this.lazyData;
-			}
-			try {
-				reader.fullyLoad(this);
-				return this.lazyData;
-			} catch (IOException e) {
-				throw new RuntimeException(e.getMessage(), e); // TODO not sure what to do here!!
-			}
-		}
-	}
-
-	void addDynamicResolvedImport(ExportPackageDescriptionImpl result) {
-		synchronized (this.monitor) {
-			// mark the dependency
-			addDependency(result, true);
-			// add the export to the list of the resolvedImports
-			checkLazyData();
-			if (lazyData.resolvedImports == null) {
-				lazyData.resolvedImports = new ExportPackageDescription[] {result};
-				return;
-			}
-			ExportPackageDescription[] newImports = new ExportPackageDescription[lazyData.resolvedImports.length + 1];
-			System.arraycopy(lazyData.resolvedImports, 0, newImports, 0, lazyData.resolvedImports.length);
-			newImports[newImports.length - 1] = result;
-			lazyData.resolvedImports = newImports;
-		}
-		setLazyLoaded(false);
-	}
-
-	void unload() {
-		StateImpl currentState = (StateImpl) getContainingState();
-		StateReader reader = currentState == null ? null : currentState.getReader();
-		if (reader == null)
-			throw new IllegalStateException("BundleDescription does not belong to a reader."); //$NON-NLS-1$
-		synchronized (reader) {
-			if ((stateBits & LAZY_LOADED) == 0)
-				return;
-			if (!isFullyLoaded())
-				return;
-			synchronized (this.monitor) {
-				setFullyLoaded(false);
-				lazyData = null;
-			}
-		}
-	}
-
-	void setDynamicStamps(HashMap dynamicStamps) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			lazyData.dynamicStamps = dynamicStamps;
-		}
-	}
-
-	void setDynamicStamp(String requestedPackage, Long timestamp) {
-		synchronized (this.monitor) {
-			checkLazyData();
-			if (lazyData.dynamicStamps == null) {
-				if (timestamp == null)
-					return;
-				lazyData.dynamicStamps = new HashMap();
-			}
-			if (timestamp == null)
-				lazyData.dynamicStamps.remove(requestedPackage);
-			else
-				lazyData.dynamicStamps.put(requestedPackage, timestamp);
-		}
-	}
-
-	long getDynamicStamp(String requestedPackage) {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			Long stamp = currentData.dynamicStamps == null ? null : (Long) currentData.dynamicStamps.get(requestedPackage);
-			return stamp == null ? 0 : stamp.longValue();
-		}
-	}
-
-	HashMap getDynamicStamps() {
-		LazyData currentData = loadLazyData();
-		synchronized (this.monitor) {
-			return currentData.dynamicStamps;
-		}
-	}
-
-	public void setEquinoxEE(int equinox_ee) {
-		this.equinox_ee = equinox_ee;
-	}
-
-	public int getEquinoxEE() {
-		return equinox_ee;
-	}
-
-	private void checkLazyData() {
-		if (lazyData == null)
-			lazyData = new LazyData();
-	}
-
-	private final class LazyData {
-		String location;
-		String platformFilter;
-
-		BundleSpecification[] requiredBundles;
-		ExportPackageDescription[] exportPackages;
-		ImportPackageSpecification[] importPackages;
-		GenericDescription[] genericCapabilities;
-		GenericSpecification[] genericRequires;
-		NativeCodeSpecification nativeCode;
-
-		ExportPackageDescription[] selectedExports;
-		BundleDescription[] resolvedRequires;
-		ExportPackageDescription[] resolvedImports;
-		ExportPackageDescription[] substitutedExports;
-		String[] executionEnvironments;
-
-		HashMap dynamicStamps;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleSpecificationImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleSpecificationImpl.java
deleted file mode 100644
index 667c235..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleSpecificationImpl.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-
-public class BundleSpecificationImpl extends VersionConstraintImpl implements BundleSpecification {
-	private boolean exported;
-	private boolean optional;
-
-	protected void setExported(boolean exported) {
-		synchronized (this.monitor) {
-			this.exported = exported;
-		}
-	}
-
-	protected void setOptional(boolean optional) {
-		synchronized (this.monitor) {
-			this.optional = optional;
-		}
-	}
-
-	public boolean isExported() {
-		synchronized (this.monitor) {
-			return exported;
-		}
-	}
-
-	public boolean isOptional() {
-		synchronized (this.monitor) {
-			return optional;
-		}
-	}
-
-	public boolean isSatisfiedBy(BaseDescription supplier) {
-		if (!(supplier instanceof BundleDescription))
-			return false;
-		BundleDescription candidate = (BundleDescription) supplier;
-		if (candidate.getHost() != null)
-			return false;
-		if (getName() != null && getName().equals(candidate.getSymbolicName()) && (getVersionRange() == null || getVersionRange().isIncluded(candidate.getVersion())))
-			return true;
-		return false;
-	}
-
-	public String toString() {
-		return "Require-Bundle: " + getName() + "; bundle-version=\"" + getVersionRange() + "\""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ComputeNodeOrder.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ComputeNodeOrder.java
deleted file mode 100644
index 6b979c2..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ComputeNodeOrder.java
+++ /dev/null
@@ -1,514 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.*;
-
-/**
- * Borrowed from org.eclipse.core.internal.resources.ComputeProjectOrder 
- * to be used when computing the stop order.
- * Implementation of a sort algorithm for computing the node order. This
- * algorithm handles cycles in the node reference graph in a reasonable way.
- * 
- * @since 3.0
- */
-public class ComputeNodeOrder {
-
-	/*
-	 * Prevent class from being instantiated.
-	 */
-	private ComputeNodeOrder() {
-		// not allowed
-	}
-
-	/**
-	 * A directed graph. Once the vertexes and edges of the graph have been
-	 * defined, the graph can be queried for the depth-first finish time of each
-	 * vertex.
-	 * <p>
-	 * Ref: Cormen, Leiserson, and Rivest <it>Introduction to Algorithms</it>,
-	 * McGraw-Hill, 1990. The depth-first search algorithm is in section 23.3.
-	 * </p>
-	 */
-	private static class Digraph {
-		/**
-		 * struct-like object for representing a vertex along with various
-		 * values computed during depth-first search (DFS).
-		 */
-		public static class Vertex {
-			/**
-			 * White is for marking vertexes as unvisited.
-			 */
-			public static final String WHITE = "white"; //$NON-NLS-1$
-
-			/**
-			 * Grey is for marking vertexes as discovered but visit not yet
-			 * finished.
-			 */
-			public static final String GREY = "grey"; //$NON-NLS-1$
-
-			/**
-			 * Black is for marking vertexes as visited.
-			 */
-			public static final String BLACK = "black"; //$NON-NLS-1$
-
-			/**
-			 * Color of the vertex. One of <code>WHITE</code> (unvisited),
-			 * <code>GREY</code> (visit in progress), or <code>BLACK</code>
-			 * (visit finished). <code>WHITE</code> initially.
-			 */
-			public String color = WHITE;
-
-			/**
-			 * The DFS predecessor vertex, or <code>null</code> if there is no
-			 * predecessor. <code>null</code> initially.
-			 */
-			public Vertex predecessor = null;
-
-			/**
-			 * Timestamp indicating when the vertex was finished (became BLACK)
-			 * in the DFS. Finish times are between 1 and the number of
-			 * vertexes.
-			 */
-			public int finishTime;
-
-			/**
-			 * The id of this vertex.
-			 */
-			public Object id;
-
-			/**
-			 * Ordered list of adjacent vertexes. In other words, "this" is the
-			 * "from" vertex and the elements of this list are all "to"
-			 * vertexes.
-			 * 
-			 * Element type: <code>Vertex</code>
-			 */
-			public List adjacent = new ArrayList(3);
-
-			/**
-			 * Creates a new vertex with the given id.
-			 * 
-			 * @param id the vertex id
-			 */
-			public Vertex(Object id) {
-				this.id = id;
-			}
-		}
-
-		/**
-		 * Ordered list of all vertexes in this graph.
-		 * 
-		 * Element type: <code>Vertex</code>
-		 */
-		private List vertexList = new ArrayList(100);
-
-		/**
-		 * Map from id to vertex.
-		 * 
-		 * Key type: <code>Object</code>; value type: <code>Vertex</code>
-		 */
-		private Map vertexMap = new HashMap(100);
-
-		/**
-		 * DFS visit time. Non-negative.
-		 */
-		private int time;
-
-		/**
-		 * Indicates whether the graph has been initialized. Initially
-		 * <code>false</code>.
-		 */
-		private boolean initialized = false;
-
-		/**
-		 * Indicates whether the graph contains cycles. Initially
-		 * <code>false</code>.
-		 */
-		private boolean cycles = false;
-
-		/**
-		 * Creates a new empty directed graph object.
-		 * <p>
-		 * After this graph's vertexes and edges are defined with
-		 * <code>addVertex</code> and <code>addEdge</code>, call
-		 * <code>freeze</code> to indicate that the graph is all there, and then
-		 * call <code>idsByDFSFinishTime</code> to read off the vertexes ordered
-		 * by DFS finish time.
-		 * </p>
-		 */
-		public Digraph() {
-			super();
-		}
-
-		/**
-		 * Freezes this graph. No more vertexes or edges can be added to this
-		 * graph after this method is called. Has no effect if the graph is
-		 * already frozen.
-		 */
-		public void freeze() {
-			if (!initialized) {
-				initialized = true;
-				// only perform depth-first-search once
-				DFS();
-			}
-		}
-
-		/**
-		 * Defines a new vertex with the given id. The depth-first search is
-		 * performed in the relative order in which vertexes were added to the
-		 * graph.
-		 * 
-		 * @param id the id of the vertex
-		 * @exception IllegalArgumentException if the vertex id is
-		 * already defined or if the graph is frozen
-		 */
-		public void addVertex(Object id) throws IllegalArgumentException {
-			if (initialized) {
-				throw new IllegalArgumentException();
-			}
-			Vertex vertex = new Vertex(id);
-			Object existing = vertexMap.put(id, vertex);
-			// nip problems with duplicate vertexes in the bud
-			if (existing != null) {
-				throw new IllegalArgumentException();
-			}
-			vertexList.add(vertex);
-		}
-
-		/**
-		 * Adds a new directed edge between the vertexes with the given ids.
-		 * Vertexes for the given ids must be defined beforehand with
-		 * <code>addVertex</code>. The depth-first search is performed in the
-		 * relative order in which adjacent "to" vertexes were added to a given
-		 * "from" index.
-		 * 
-		 * @param fromId the id of the "from" vertex
-		 * @param toId the id of the "to" vertex
-		 * @exception IllegalArgumentException if either vertex is undefined or
-		 * if the graph is frozen
-		 */
-		public void addEdge(Object fromId, Object toId) throws IllegalArgumentException {
-			if (initialized) {
-				throw new IllegalArgumentException();
-			}
-			Vertex fromVertex = (Vertex) vertexMap.get(fromId);
-			Vertex toVertex = (Vertex) vertexMap.get(toId);
-			// ignore edges when one of the vertices is unknown
-			if (fromVertex == null || toVertex == null)
-				return;
-			fromVertex.adjacent.add(toVertex);
-		}
-
-		/**
-		 * Returns the ids of the vertexes in this graph ordered by depth-first
-		 * search finish time. The graph must be frozen.
-		 * 
-		 * @param increasing <code>true</code> if objects are to be arranged
-		 * into increasing order of depth-first search finish time, and
-		 * <code>false</code> if objects are to be arranged into decreasing
-		 * order of depth-first search finish time
-		 * @return the list of ids ordered by depth-first search finish time
-		 * (element type: <code>Object</code>)
-		 * @exception IllegalArgumentException if the graph is not frozen
-		 */
-		public List idsByDFSFinishTime(boolean increasing) {
-			if (!initialized) {
-				throw new IllegalArgumentException();
-			}
-			int len = vertexList.size();
-			Object[] r = new Object[len];
-			for (Iterator allV = vertexList.iterator(); allV.hasNext();) {
-				Vertex vertex = (Vertex) allV.next();
-				int f = vertex.finishTime;
-				// note that finish times start at 1, not 0
-				if (increasing) {
-					r[f - 1] = vertex.id;
-				} else {
-					r[len - f] = vertex.id;
-				}
-			}
-			return Arrays.asList(r);
-		}
-
-		/**
-		 * Returns whether the graph contains cycles. The graph must be frozen.
-		 * 
-		 * @return <code>true</code> if this graph contains at least one cycle,
-		 * and <code>false</code> if this graph is cycle free
-		 * @exception IllegalArgumentException if the graph is not frozen
-		 */
-		public boolean containsCycles() {
-			if (!initialized) {
-				throw new IllegalArgumentException();
-			}
-			return cycles;
-		}
-
-		/**
-		 * Returns the non-trivial components of this graph. A non-trivial
-		 * component is a set of 2 or more vertexes that were traversed
-		 * together. The graph must be frozen.
-		 * 
-		 * @return the possibly empty list of non-trivial components, where
-		 * each component is an array of ids (element type: 
-		 * <code>Object[]</code>)
-		 * @exception IllegalArgumentException if the graph is not frozen
-		 */
-		public List nonTrivialComponents() {
-			if (!initialized) {
-				throw new IllegalArgumentException();
-			}
-			// find the roots of each component
-			// Map<Vertex,List<Object>> components
-			Map components = new HashMap();
-			for (Iterator it = vertexList.iterator(); it.hasNext();) {
-				Vertex vertex = (Vertex) it.next();
-				if (vertex.predecessor == null) {
-					// this vertex is the root of a component
-					// if component is non-trivial we will hit a child
-				} else {
-					// find the root ancestor of this vertex
-					Vertex root = vertex;
-					while (root.predecessor != null) {
-						root = root.predecessor;
-					}
-					List component = (List) components.get(root);
-					if (component == null) {
-						component = new ArrayList(2);
-						component.add(root.id);
-						components.put(root, component);
-					}
-					component.add(vertex.id);
-				}
-			}
-			List result = new ArrayList(components.size());
-			for (Iterator it = components.values().iterator(); it.hasNext();) {
-				List component = (List) it.next();
-				if (component.size() > 1) {
-					result.add(component.toArray());
-				}
-			}
-			return result;
-		}
-
-		//		/**
-		//		 * Performs a depth-first search of this graph and records interesting
-		//		 * info with each vertex, including DFS finish time. Employs a recursive
-		//		 * helper method <code>DFSVisit</code>.
-		//		 * <p>
-		//		 * Although this method is not used, it is the basis of the
-		//		 * non-recursive <code>DFS</code> method.
-		//		 * </p>
-		//		 */
-		//		private void recursiveDFS() {
-		//			// initialize 
-		//			// all vertex.color initially Vertex.WHITE;
-		//			// all vertex.predecessor initially null;
-		//			time = 0;
-		//			for (Iterator allV = vertexList.iterator(); allV.hasNext();) {
-		//				Vertex nextVertex = (Vertex) allV.next();
-		//				if (nextVertex.color == Vertex.WHITE) {
-		//					DFSVisit(nextVertex);
-		//				}
-		//			}
-		//		}
-		//
-		//		/**
-		//		 * Helper method. Performs a depth first search of this graph.
-		//		 * 
-		//		 * @param vertex the vertex to visit
-		//		 */
-		//		private void DFSVisit(Vertex vertex) {
-		//			// mark vertex as discovered
-		//			vertex.color = Vertex.GREY;
-		//			List adj = vertex.adjacent;
-		//			for (Iterator allAdjacent=adj.iterator(); allAdjacent.hasNext();) {
-		//				Vertex adjVertex = (Vertex) allAdjacent.next();
-		//				if (adjVertex.color == Vertex.WHITE) {
-		//					// explore edge from vertex to adjVertex
-		//					adjVertex.predecessor = vertex;
-		//					DFSVisit(adjVertex);
-		//				} else if (adjVertex.color == Vertex.GREY) {
-		//                  // back edge (grey vertex means visit in progress)
-		//                  cycles = true;
-		//              }
-		//			}
-		//			// done exploring vertex
-		//			vertex.color = Vertex.BLACK;
-		//			time++;
-		//			vertex.finishTime = time;
-		//		}
-
-		/**
-		 * Performs a depth-first search of this graph and records interesting
-		 * info with each vertex, including DFS finish time. Does not employ
-		 * recursion.
-		 */
-		private void DFS() {
-			// state machine rendition of the standard recursive DFS algorithm
-			int state;
-			final int NEXT_VERTEX = 1;
-			final int START_DFS_VISIT = 2;
-			final int NEXT_ADJACENT = 3;
-			final int AFTER_NEXTED_DFS_VISIT = 4;
-			// use precomputed objects to avoid garbage
-			final Integer NEXT_VERTEX_OBJECT = new Integer(NEXT_VERTEX);
-			final Integer AFTER_NEXTED_DFS_VISIT_OBJECT = new Integer(AFTER_NEXTED_DFS_VISIT);
-			// initialize 
-			// all vertex.color initially Vertex.WHITE;
-			// all vertex.predecessor initially null;
-			time = 0;
-			// for a stack, append to the end of an array-based list
-			List stack = new ArrayList(Math.max(1, vertexList.size()));
-			Iterator allAdjacent = null;
-			Vertex vertex = null;
-			Iterator allV = vertexList.iterator();
-			state = NEXT_VERTEX;
-			nextStateLoop: while (true) {
-				switch (state) {
-					case NEXT_VERTEX :
-						// on entry, "allV" contains vertexes yet to be visited
-						if (!allV.hasNext()) {
-							// all done
-							break nextStateLoop;
-						}
-						Vertex nextVertex = (Vertex) allV.next();
-						if (nextVertex.color == Vertex.WHITE) {
-							stack.add(NEXT_VERTEX_OBJECT);
-							vertex = nextVertex;
-							state = START_DFS_VISIT;
-							continue nextStateLoop;
-						} else {
-							state = NEXT_VERTEX;
-							continue nextStateLoop;
-						}
-					case START_DFS_VISIT :
-						// on entry, "vertex" contains the vertex to be visited
-						// top of stack is return code
-						// mark the vertex as discovered
-						vertex.color = Vertex.GREY;
-						allAdjacent = vertex.adjacent.iterator();
-						state = NEXT_ADJACENT;
-						continue nextStateLoop;
-					case NEXT_ADJACENT :
-						// on entry, "allAdjacent" contains adjacent vertexes to
-						// be visited; "vertex" contains vertex being visited
-						if (allAdjacent.hasNext()) {
-							Vertex adjVertex = (Vertex) allAdjacent.next();
-							if (adjVertex.color == Vertex.WHITE) {
-								// explore edge from vertex to adjVertex
-								adjVertex.predecessor = vertex;
-								stack.add(allAdjacent);
-								stack.add(vertex);
-								stack.add(AFTER_NEXTED_DFS_VISIT_OBJECT);
-								vertex = adjVertex;
-								state = START_DFS_VISIT;
-								continue nextStateLoop;
-							}
-							if (adjVertex.color == Vertex.GREY) {
-								// back edge (grey means visit in progress)
-								cycles = true;
-							}
-							state = NEXT_ADJACENT;
-							continue nextStateLoop;
-						} else {
-							// done exploring vertex
-							vertex.color = Vertex.BLACK;
-							time++;
-							vertex.finishTime = time;
-							state = ((Integer) stack.remove(stack.size() - 1)).intValue();
-							continue nextStateLoop;
-						}
-					case AFTER_NEXTED_DFS_VISIT :
-						// on entry, stack contains "vertex" and "allAjacent"
-						vertex = (Vertex) stack.remove(stack.size() - 1);
-						allAdjacent = (Iterator) stack.remove(stack.size() - 1);
-						state = NEXT_ADJACENT;
-						continue nextStateLoop;
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * Sorts the given list of projects in a manner that honors the given
-	 * project reference relationships. That is, if project A references project
-	 * B, then the resulting order will list B before A if possible. For graphs
-	 * that do not contain cycles, the result is the same as a conventional
-	 * topological sort. For graphs containing cycles, the order is based on
-	 * ordering the strongly connected components of the graph. This has the
-	 * effect of keeping each knot of projects together without otherwise
-	 * affecting the order of projects not involved in a cycle. For a graph G,
-	 * the algorithm performs in O(|G|) space and time.
-	 * <p>
-	 * When there is an arbitrary choice, vertexes are ordered as supplied.
-	 * Arranged projects in descending alphabetical order generally results in
-	 * an order that builds "A" before "Z" when there are no other constraints.
-	 * </p>
-	 * <p> Ref: Cormen, Leiserson, and Rivest <it>Introduction to
-	 * Algorithms</it>, McGraw-Hill, 1990. The strongly-connected-components
-	 * algorithm is in section 23.5.
-	 * </p>
-	 * 
-	 * @param objects a list of projects (element type:
-	 * <code>IProject</code>)
-	 * @param references a list of project references [A,B] meaning that A
-	 * references B (element type: <code>IProject[]</code>)
-	 * @return an object describing the resulting project order
-	 */
-	public static Object[][] computeNodeOrder(Object[] objects, Object[][] references) {
-
-		// Step 1: Create the graph object.
-		final Digraph g1 = new Digraph();
-		// add vertexes
-		for (int i = 0; i < objects.length; i++)
-			g1.addVertex(objects[i]);
-		// add edges
-		for (int i = 0; i < references.length; i++)
-			// create an edge from q to p
-			// to cause q to come before p in eventual result
-			g1.addEdge(references[i][1], references[i][0]);
-		g1.freeze();
-
-		// Step 2: Create the transposed graph. This time, define the vertexes
-		// in decreasing order of depth-first finish time in g1
-		// interchange "to" and "from" to reverse edges from g1
-		final Digraph g2 = new Digraph();
-		// add vertexes
-		List resortedVertexes = g1.idsByDFSFinishTime(false);
-		for (Iterator it = resortedVertexes.iterator(); it.hasNext();)
-			g2.addVertex(it.next());
-		// add edges
-		for (int i = 0; i < references.length; i++)
-			g2.addEdge(references[i][0], references[i][1]);
-		g2.freeze();
-
-		// Step 3: Return the vertexes in increasing order of depth-first finish
-		// time in g2
-		List sortedProjectList = g2.idsByDFSFinishTime(true);
-		Object[] orderedNodes = new Object[sortedProjectList.size()];
-		sortedProjectList.toArray(orderedNodes);
-		Object[][] knots;
-		boolean hasCycles = g2.containsCycles();
-		if (hasCycles) {
-			List knotList = g2.nonTrivialComponents();
-			knots = (Object[][]) knotList.toArray(new Object[knotList.size()][]);
-		} else {
-			knots = new Object[0][];
-		}
-		for (int i = 0; i < orderedNodes.length; i++)
-			objects[i] = orderedNodes[i];
-		return knots;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ExportPackageDescriptionImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ExportPackageDescriptionImpl.java
deleted file mode 100644
index 6d70e43..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ExportPackageDescriptionImpl.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-
-public class ExportPackageDescriptionImpl extends BaseDescriptionImpl implements ExportPackageDescription {
-	public static final String EQUINOX_EE = "x-equinox-ee"; //$NON-NLS-1$
-	private static final Integer EQUINOX_EE_DEFAULT = new Integer(-1);
-	private String[] uses;
-	private Map attributes;
-	private volatile BundleDescription exporter;
-	private String exclude;
-	private String include;
-	private String[] friends;
-	private String[] mandatory;
-	private Boolean internal = Boolean.FALSE;
-	private int equinox_ee = -1;
-	private volatile int tableIndex;
-
-	public Map getDirectives() {
-		synchronized (this.monitor) {
-			Map result = new HashMap(5);
-			if (uses != null)
-				result.put(Constants.USES_DIRECTIVE, uses);
-			if (exclude != null)
-				result.put(Constants.EXCLUDE_DIRECTIVE, exclude);
-			if (include != null)
-				result.put(Constants.INCLUDE_DIRECTIVE, include);
-			if (mandatory != null)
-				result.put(Constants.MANDATORY_DIRECTIVE, mandatory);
-			if (friends != null)
-				result.put(Constants.FRIENDS_DIRECTIVE, friends);
-			result.put(Constants.INTERNAL_DIRECTIVE, internal);
-			result.put(EQUINOX_EE, equinox_ee == -1 ? EQUINOX_EE_DEFAULT : new Integer(equinox_ee));
-			return result;
-		}
-	}
-
-	public Object getDirective(String key) {
-		synchronized (this.monitor) {
-			if (key.equals(Constants.USES_DIRECTIVE))
-				return uses;
-			if (key.equals(Constants.EXCLUDE_DIRECTIVE))
-				return exclude;
-			if (key.equals(Constants.INCLUDE_DIRECTIVE))
-				return include;
-			if (key.equals(Constants.MANDATORY_DIRECTIVE))
-				return mandatory;
-			if (key.equals(Constants.FRIENDS_DIRECTIVE))
-				return friends;
-			if (key.equals(Constants.INTERNAL_DIRECTIVE))
-				return internal;
-			if (key.equals(EQUINOX_EE))
-				return equinox_ee == -1 ? EQUINOX_EE_DEFAULT : new Integer(equinox_ee);
-			return null;
-		}
-	}
-
-	public Object setDirective(String key, Object value) {
-		synchronized (this.monitor) {
-			if (key.equals(Constants.USES_DIRECTIVE))
-				return uses = (String[]) value;
-			if (key.equals(Constants.EXCLUDE_DIRECTIVE))
-				return exclude = (String) value;
-			if (key.equals(Constants.INCLUDE_DIRECTIVE))
-				return include = (String) value;
-			if (key.equals(Constants.MANDATORY_DIRECTIVE))
-				return mandatory = (String[]) value;
-			if (key.equals(Constants.FRIENDS_DIRECTIVE))
-				return friends = (String[]) value;
-			if (key.equals(Constants.INTERNAL_DIRECTIVE))
-				return internal = (Boolean) value;
-			if (key.equals(EQUINOX_EE)) {
-				equinox_ee = ((Integer) value).intValue();
-				return value;
-			}
-			return null;
-		}
-	}
-
-	public void setDirectives(Map directives) {
-		synchronized (this.monitor) {
-			if (directives == null)
-				return;
-			uses = (String[]) directives.get(Constants.USES_DIRECTIVE);
-			exclude = (String) directives.get(Constants.EXCLUDE_DIRECTIVE);
-			include = (String) directives.get(Constants.INCLUDE_DIRECTIVE);
-			mandatory = (String[]) directives.get(Constants.MANDATORY_DIRECTIVE);
-			friends = (String[]) directives.get(Constants.FRIENDS_DIRECTIVE);
-			internal = (Boolean) directives.get(Constants.INTERNAL_DIRECTIVE);
-			equinox_ee = ((Integer) directives.get(EQUINOX_EE)).intValue();
-		}
-	}
-
-	public Map getAttributes() {
-		synchronized (this.monitor) {
-			return attributes;
-		}
-	}
-
-	public BundleDescription getSupplier() {
-		return getExporter();
-	}
-
-	public BundleDescription getExporter() {
-		return exporter;
-	}
-
-	public boolean isRoot() {
-		return true;
-	}
-
-	protected void setAttributes(Map attributes) {
-		synchronized (this.monitor) {
-			this.attributes = attributes;
-		}
-	}
-
-	protected void setExporter(BundleDescription exporter) {
-		this.exporter = exporter;
-	}
-
-	public String toString() {
-		return "Export-Package: " + getName() + "; version=\"" + getVersion() + "\""; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	int getTableIndex() {
-		return tableIndex;
-	}
-
-	void setTableIndex(int tableIndex) {
-		this.tableIndex = tableIndex;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericDescriptionImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericDescriptionImpl.java
deleted file mode 100644
index 7a23502..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericDescriptionImpl.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.Dictionary;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.GenericDescription;
-import org.osgi.framework.Constants;
-
-public class GenericDescriptionImpl extends BaseDescriptionImpl implements GenericDescription {
-	private Dictionary attributes;
-	private volatile BundleDescription supplier;
-	private volatile String type = GenericDescription.DEFAULT_TYPE;
-
-	public Dictionary getAttributes() {
-		synchronized (this.monitor) {
-			return attributes;
-		}
-	}
-
-	public BundleDescription getSupplier() {
-		return supplier;
-	}
-
-	void setAttributes(Dictionary attributes) {
-		synchronized (this.monitor) {
-			this.attributes = attributes;
-			// always add/replace the version attribute with the actual Version object
-			attributes.put(Constants.VERSION_ATTRIBUTE, getVersion());
-		}
-	}
-
-	void setSupplier(BundleDescription supplier) {
-		this.supplier = supplier;
-	}
-
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		sb.append(StateBuilder.GENERIC_CAPABILITY).append(": ").append(getName()); //$NON-NLS-1$
-		if (getType() != GenericDescription.DEFAULT_TYPE)
-			sb.append(':').append(getType());
-		return sb.toString();
-	}
-
-	public String getType() {
-		return type;
-	}
-
-	void setType(String type) {
-		if (type == null || type.equals(GenericDescription.DEFAULT_TYPE))
-			this.type = GenericDescription.DEFAULT_TYPE;
-		else
-			this.type = type;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericSpecificationImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericSpecificationImpl.java
deleted file mode 100644
index 6ba83c7..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericSpecificationImpl.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.framework.internal.core.FilterImpl;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-
-public class GenericSpecificationImpl extends VersionConstraintImpl implements GenericSpecification {
-	private Filter matchingFilter;
-	private String type = GenericDescription.DEFAULT_TYPE;
-	private int resolution = 0;
-	private GenericDescription[] suppliers;
-
-	public String getMatchingFilter() {
-		synchronized (this.monitor) {
-			return matchingFilter == null ? null : matchingFilter.toString();
-		}
-	}
-
-	void setMatchingFilter(String matchingFilter) throws InvalidSyntaxException {
-		synchronized (this.monitor) {
-			this.matchingFilter = matchingFilter == null ? null : FilterImpl.newInstance(matchingFilter);
-		}
-	}
-
-	public boolean isSatisfiedBy(BaseDescription supplier) {
-		if (!(supplier instanceof GenericDescription))
-			return false;
-		GenericDescription candidate = (GenericDescription) supplier;
-		if (getName() == null || !getName().equals(candidate.getName()))
-			return false;
-		if (getType() == null || !getType().equals(candidate.getType()))
-			return false;
-		// Note that versions are only matched by including them in the filter
-		return matchingFilter == null || matchingFilter.match(candidate.getAttributes());
-	}
-
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		sb.append(StateBuilder.GENERIC_REQUIRE).append(": ").append(getName()); //$NON-NLS-1$
-		if (getType() != GenericDescription.DEFAULT_TYPE)
-			sb.append(':').append(getType());
-		if (matchingFilter != null)
-			sb.append("; ").append(getMatchingFilter()); //$NON-NLS-1$
-		return sb.toString();
-	}
-
-	public String getType() {
-		synchronized (this.monitor) {
-			return type;
-		}
-	}
-
-	void setType(String type) {
-		synchronized (this.monitor) {
-			if (type == null || type.equals(GenericDescription.DEFAULT_TYPE))
-				this.type = GenericDescription.DEFAULT_TYPE;
-			else
-				this.type = type;
-		}
-	}
-
-	public int getResolution() {
-		synchronized (this.monitor) {
-			return resolution;
-		}
-	}
-
-	public boolean isResolved() {
-		synchronized (this.monitor) {
-			return suppliers != null && suppliers.length > 0;
-		}
-	}
-
-	void setResolution(int resolution) {
-		synchronized (this.monitor) {
-			this.resolution = resolution;
-		}
-	}
-
-	public BaseDescription getSupplier() {
-		synchronized (this.monitor) {
-			return suppliers == null || suppliers.length == 0 ? null : suppliers[0];
-		}
-	}
-
-	protected void setSupplier(BaseDescription supplier) {
-		synchronized (this.monitor) {
-			if (supplier == null) {
-				suppliers = null;
-				return;
-			}
-			int len = suppliers == null ? 0 : suppliers.length;
-			GenericDescription[] temp = new GenericDescription[len + 1];
-			if (suppliers != null)
-				System.arraycopy(suppliers, 0, temp, 0, len);
-			temp[len] = (GenericDescription) supplier;
-			suppliers = temp;
-		}
-	}
-
-	public GenericDescription[] getSuppliers() {
-		synchronized (this.monitor) {
-			return suppliers;
-		}
-	}
-
-	void setSupplers(GenericDescription[] suppliers) {
-		synchronized (this.monitor) {
-			this.suppliers = suppliers;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/HostSpecificationImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/HostSpecificationImpl.java
deleted file mode 100644
index a6e1965..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/HostSpecificationImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-
-public class HostSpecificationImpl extends VersionConstraintImpl implements HostSpecification {
-
-	private BundleDescription[] hosts;
-	private boolean multihost = false;
-
-	public boolean isSatisfiedBy(BaseDescription supplier) {
-		if (!(supplier instanceof BundleDescription))
-			return false;
-		BundleDescription candidate = (BundleDescription) supplier;
-		if (candidate.getHost() != null)
-			return false;
-		if (getName() != null && getName().equals(candidate.getSymbolicName()) && (getVersionRange() == null || getVersionRange().isIncluded(candidate.getVersion())))
-			return true;
-		return false;
-	}
-
-	public BundleDescription[] getHosts() {
-		synchronized (this.monitor) {
-			return hosts == null ? BundleDescriptionImpl.EMPTY_BUNDLEDESCS : hosts;
-		}
-	}
-
-	public boolean isResolved() {
-		synchronized (this.monitor) {
-			return hosts != null && hosts.length > 0;
-		}
-	}
-
-	/*
-	 * The resolve algorithm will call this method to set the hosts.
-	 */
-	void setHosts(BundleDescription[] hosts) {
-		synchronized (this.monitor) {
-			this.hosts = hosts;
-		}
-	}
-
-	public String toString() {
-		return "Fragment-Host: " + getName() + "; bundle-version=\"" + getVersionRange() + "\""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	public BaseDescription getSupplier() {
-		synchronized (this.monitor) {
-			if (hosts == null || hosts.length == 0)
-				return null;
-			return hosts[0];
-		}
-	}
-
-	public boolean isMultiHost() {
-		synchronized (this.monitor) {
-			return multihost;
-		}
-	}
-
-	void setIsMultiHost(boolean multihost) {
-		synchronized (this.monitor) {
-			this.multihost = multihost;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ImportPackageSpecificationImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ImportPackageSpecificationImpl.java
deleted file mode 100644
index 55092c8..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ImportPackageSpecificationImpl.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.service.resolver.*;
-
-public class ImportPackageSpecificationImpl extends VersionConstraintImpl implements ImportPackageSpecification {
-	private String resolution = ImportPackageSpecification.RESOLUTION_STATIC; // the default is static
-	private String symbolicName;
-	private VersionRange bundleVersionRange;
-	private Map attributes;
-
-	public Map getDirectives() {
-		synchronized (this.monitor) {
-			Map result = new HashMap(5);
-			if (resolution != null)
-				result.put(Constants.RESOLUTION_DIRECTIVE, resolution);
-			return result;
-		}
-	}
-
-	public Object getDirective(String key) {
-		synchronized (this.monitor) {
-			if (key.equals(Constants.RESOLUTION_DIRECTIVE))
-				return resolution;
-			return null;
-		}
-	}
-
-	public Object setDirective(String key, Object value) {
-		synchronized (this.monitor) {
-			if (key.equals(Constants.RESOLUTION_DIRECTIVE))
-				return resolution = (String) value;
-			return null;
-		}
-	}
-
-	public void setDirectives(Map directives) {
-		synchronized (this.monitor) {
-			if (directives == null)
-				return;
-			resolution = (String) directives.get(Constants.RESOLUTION_DIRECTIVE);
-		}
-	}
-
-	public String getBundleSymbolicName() {
-		synchronized (this.monitor) {
-			if (Constants.SYSTEM_BUNDLE_SYMBOLICNAME.equals(symbolicName)) {
-				StateImpl state = (StateImpl) getBundle().getContainingState();
-				return state == null ? Constants.getInternalSymbolicName() : state.getSystemBundle();
-			}
-			return symbolicName;
-		}
-	}
-
-	public VersionRange getBundleVersionRange() {
-		synchronized (this.monitor) {
-			if (bundleVersionRange == null)
-				return VersionRange.emptyRange;
-			return bundleVersionRange;
-		}
-	}
-
-	public Map getAttributes() {
-		synchronized (this.monitor) {
-			return attributes;
-		}
-	}
-
-	public boolean isSatisfiedBy(BaseDescription supplier) {
-		if (!(supplier instanceof ExportPackageDescription))
-			return false;
-		ExportPackageDescriptionImpl pkgDes = (ExportPackageDescriptionImpl) supplier;
-
-		// If we are in strict mode, check to see if the export specifies friends.
-		// If it does, are we one of the friends 
-		String[] friends = (String[]) pkgDes.getDirective(Constants.FRIENDS_DIRECTIVE);
-		Boolean internal = (Boolean) pkgDes.getDirective(Constants.INTERNAL_DIRECTIVE);
-		if (internal.booleanValue() || friends != null) {
-			StateImpl state = (StateImpl) getBundle().getContainingState();
-			boolean strict = state == null ? false : state.inStrictMode();
-			if (strict) {
-				if (internal.booleanValue())
-					return false;
-				boolean found = false;
-				if (friends != null && getBundle().getSymbolicName() != null)
-					for (int i = 0; i < friends.length; i++)
-						if (getBundle().getSymbolicName().equals(friends[i]))
-							found = true;
-				if (!found)
-					return false;
-			}
-		}
-		String exporterSymbolicName = getBundleSymbolicName();
-		if (exporterSymbolicName != null) {
-			BundleDescription exporter = pkgDes.getExporter();
-			if (!exporterSymbolicName.equals(exporter.getSymbolicName()))
-				return false;
-			if (getBundleVersionRange() != null && !getBundleVersionRange().isIncluded(exporter.getVersion()))
-				return false;
-		}
-
-		String name = getName();
-		// shortcut '*'
-		// NOTE: wildcards are supported only in cases where this is a dynamic import
-		if (!"*".equals(name) && !(name.endsWith(".*") && pkgDes.getName().startsWith(name.substring(0, name.length() - 1))) && !pkgDes.getName().equals(name)) //$NON-NLS-1$ //$NON-NLS-2$
-			return false;
-		if (getVersionRange() != null && !getVersionRange().isIncluded(pkgDes.getVersion()))
-			return false;
-
-		Map importAttrs = getAttributes();
-		if (importAttrs != null) {
-			Map exportAttrs = pkgDes.getAttributes();
-			if (exportAttrs == null)
-				return false;
-			for (Iterator i = importAttrs.keySet().iterator(); i.hasNext();) {
-				String importKey = (String) i.next();
-				Object importValue = importAttrs.get(importKey);
-				Object exportValue = exportAttrs.get(importKey);
-				if (exportValue == null || !importValue.equals(exportValue))
-					return false;
-			}
-		}
-		String[] mandatory = (String[]) pkgDes.getDirective(Constants.MANDATORY_DIRECTIVE);
-		if (mandatory != null) {
-			for (int i = 0; i < mandatory.length; i++) {
-				if (Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE.equals(mandatory[i])) {
-					if (exporterSymbolicName == null)
-						return false;
-				} else if (Constants.BUNDLE_VERSION_ATTRIBUTE.equals(mandatory[i])) {
-					if (bundleVersionRange == null)
-						return false;
-				} else if (Constants.PACKAGE_SPECIFICATION_VERSION.equals(mandatory[i]) || Constants.VERSION_ATTRIBUTE.equals(mandatory[i])) {
-					if (getVersionRange() == null)
-						return false;
-				} else { // arbitrary attribute
-					if (importAttrs == null)
-						return false;
-					if (importAttrs.get(mandatory[i]) == null)
-						return false;
-				}
-			}
-		}
-		// finally check the ee index
-		if (((BundleDescriptionImpl) getBundle()).getEquinoxEE() < 0)
-			return true;
-		int eeIndex = ((Integer) pkgDes.getDirective(ExportPackageDescriptionImpl.EQUINOX_EE)).intValue();
-		return eeIndex < 0 || eeIndex == ((BundleDescriptionImpl) getBundle()).getEquinoxEE();
-	}
-
-	protected void setBundleSymbolicName(String symbolicName) {
-		synchronized (this.monitor) {
-			this.symbolicName = symbolicName;
-		}
-	}
-
-	protected void setBundleVersionRange(VersionRange bundleVersionRange) {
-		synchronized (this.monitor) {
-			this.bundleVersionRange = bundleVersionRange;
-		}
-	}
-
-	protected void setAttributes(Map attributes) {
-		synchronized (this.monitor) {
-			this.attributes = attributes;
-		}
-	}
-
-	public String toString() {
-		return "Import-Package: " + getName() + "; version=\"" + getVersionRange() + "\""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeDescriptionImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeDescriptionImpl.java
deleted file mode 100644
index 7370ac9..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeDescriptionImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.Dictionary;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FilterImpl;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.*;
-
-public class NativeCodeDescriptionImpl extends BaseDescriptionImpl implements NativeCodeDescription {
-	private static final VersionRange[] EMPTY_VERSIONRANGES = new VersionRange[0];
-
-	private volatile Filter filter;
-	private String[] languages;
-	private String[] nativePaths;
-	private String[] osNames;
-	private VersionRange[] osVersions;
-	private String[] processors;
-	private BundleDescription supplier;
-	private volatile boolean invalidNativePaths = false;
-
-	public Filter getFilter() {
-		return filter;
-	}
-
-	public String[] getLanguages() {
-		synchronized (this.monitor) {
-			if (languages == null)
-				return BundleDescriptionImpl.EMPTY_STRING;
-			return languages;
-		}
-	}
-
-	public String[] getNativePaths() {
-		synchronized (this.monitor) {
-			if (nativePaths == null)
-				return BundleDescriptionImpl.EMPTY_STRING;
-			return nativePaths;
-		}
-	}
-
-	public String[] getOSNames() {
-		synchronized (this.monitor) {
-			if (osNames == null)
-				return BundleDescriptionImpl.EMPTY_STRING;
-			return osNames;
-		}
-	}
-
-	public VersionRange[] getOSVersions() {
-		synchronized (this.monitor) {
-			if (osVersions == null)
-				return EMPTY_VERSIONRANGES;
-			return osVersions;
-		}
-	}
-
-	public String[] getProcessors() {
-		synchronized (this.monitor) {
-			if (processors == null)
-				return BundleDescriptionImpl.EMPTY_STRING;
-			return processors;
-		}
-	}
-
-	public BundleDescription getSupplier() {
-		return supplier;
-	}
-
-	public int compareTo(Object other) {
-		if (!(other instanceof NativeCodeDescription))
-			return 1;
-		State containingState = getSupplier().getContainingState();
-		if (containingState == null)
-			return 0;
-		Dictionary[] platformProps = containingState.getPlatformProperties();
-		Version osversion;
-		try {
-			osversion = Version.parseVersion((String) platformProps[0].get(Constants.FRAMEWORK_OS_VERSION));
-		} catch (Exception e) {
-			osversion = Version.emptyVersion;
-		}
-		NativeCodeDescription otherDesc = (NativeCodeDescription) other;
-		VersionRange[] thisRanges = getOSVersions();
-		VersionRange[] otherRanges = otherDesc.getOSVersions();
-		Version thisHighest = getHighestVersionMatch(osversion, thisRanges);
-		Version otherHighest = getHighestVersionMatch(osversion, otherRanges);
-		if (thisHighest.compareTo(otherHighest) < 0)
-			return -1;
-		return (getLanguages().length == 0 ? 0 : 1) - (otherDesc.getLanguages().length == 0 ? 0 : 1);
-	}
-
-	public boolean hasInvalidNativePaths() {
-		return invalidNativePaths;
-	}
-
-	private Version getHighestVersionMatch(Version version, VersionRange[] ranges) {
-		Version highest = Version.emptyVersion;
-		for (int i = 0; i < ranges.length; i++) {
-			if (ranges[i].isIncluded(version) && highest.compareTo(ranges[i].getMinimum()) < 0)
-				highest = ranges[i].getMinimum();
-		}
-		return highest;
-	}
-
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-
-		String[] paths = getNativePaths();
-		for (int i = 0; i < paths.length; i++) {
-			if (i > 0) {
-				sb.append("; "); //$NON-NLS-1$
-			}
-			sb.append(paths[i]);
-		}
-
-		String[] procs = getProcessors();
-		for (int i = 0; i < procs.length; i++) {
-			sb.append("; "); //$NON-NLS-1$
-			sb.append(Constants.BUNDLE_NATIVECODE_PROCESSOR);
-			sb.append('=');
-			sb.append(procs[i]);
-		}
-
-		String[] oses = getOSNames();
-		for (int i = 0; i < oses.length; i++) {
-			sb.append("; "); //$NON-NLS-1$
-			sb.append(Constants.BUNDLE_NATIVECODE_OSNAME);
-			sb.append('=');
-			sb.append(oses[i]);
-		}
-
-		VersionRange[] osRanges = getOSVersions();
-		for (int i = 0; i < osRanges.length; i++) {
-			sb.append("; "); //$NON-NLS-1$
-			sb.append(Constants.BUNDLE_NATIVECODE_OSVERSION);
-			sb.append("=\""); //$NON-NLS-1$
-			sb.append(osRanges[i].toString());
-			sb.append('"');
-		}
-
-		String[] langs = getLanguages();
-		for (int i = 0; i < langs.length; i++) {
-			sb.append("; "); //$NON-NLS-1$
-			sb.append(Constants.BUNDLE_NATIVECODE_LANGUAGE);
-			sb.append('=');
-			sb.append(langs[i]);
-		}
-
-		Filter f = getFilter();
-		if (f != null) {
-			sb.append("; "); //$NON-NLS-1$
-			sb.append(Constants.SELECTION_FILTER_ATTRIBUTE);
-			sb.append("=\""); //$NON-NLS-1$
-			sb.append(f.toString());
-			sb.append('"');
-		}
-		return (sb.toString());
-	}
-
-	void setInvalidNativePaths(boolean invalidNativePaths) {
-		this.invalidNativePaths = invalidNativePaths;
-	}
-
-	void setOSNames(String[] osNames) {
-		synchronized (this.monitor) {
-			this.osNames = osNames;
-		}
-	}
-
-	void setOSVersions(VersionRange[] osVersions) {
-		synchronized (this.monitor) {
-			this.osVersions = osVersions;
-		}
-	}
-
-	void setFilter(String filter) throws InvalidSyntaxException {
-		this.filter = filter == null ? null : FilterImpl.newInstance(filter);
-	}
-
-	void setLanguages(String[] languages) {
-		synchronized (this.monitor) {
-			this.languages = languages;
-		}
-	}
-
-	void setNativePaths(String[] nativePaths) {
-		synchronized (this.monitor) {
-			this.nativePaths = nativePaths;
-		}
-	}
-
-	void setProcessors(String[] processors) {
-		synchronized (this.monitor) {
-			this.processors = processors;
-		}
-	}
-
-	void setSupplier(BundleDescription supplier) {
-		this.supplier = supplier;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeSpecificationImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeSpecificationImpl.java
deleted file mode 100644
index b2401f8..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/NativeCodeSpecificationImpl.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.AliasMapper;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.Filter;
-import org.osgi.framework.Version;
-
-public class NativeCodeSpecificationImpl extends VersionConstraintImpl implements NativeCodeSpecification {
-	private static final NativeCodeDescription[] EMPTY_NATIVECODEDESCRIPTIONS = new NativeCodeDescription[0];
-	private static AliasMapper aliasMapper = new AliasMapper();
-	private NativeCodeDescription[] possibleSuppliers;
-	private boolean optional;
-
-	public NativeCodeDescription[] getPossibleSuppliers() {
-		synchronized (this.monitor) {
-			if (possibleSuppliers == null)
-				return EMPTY_NATIVECODEDESCRIPTIONS;
-			return possibleSuppliers;
-		}
-	}
-
-	void setPossibleSuppliers(NativeCodeDescription[] possibleSuppliers) {
-		synchronized (this.monitor) {
-			this.possibleSuppliers = possibleSuppliers;
-		}
-	}
-
-	public boolean isOptional() {
-		synchronized (this.monitor) {
-			return optional;
-		}
-	}
-
-	void setOptional(boolean optional) {
-		synchronized (this.monitor) {
-			this.optional = optional;
-		}
-	}
-
-	public boolean isSatisfiedBy(BaseDescription supplier) {
-		if (!(supplier instanceof NativeCodeDescription))
-			return false;
-		State containingState = getBundle().getContainingState();
-		if (containingState == null)
-			return false;
-		Dictionary[] platformProps = containingState.getPlatformProperties();
-		NativeCodeDescription nativeSupplier = (NativeCodeDescription) supplier;
-		Filter filter = nativeSupplier.getFilter();
-		boolean match = false;
-		for (int i = 0; i < platformProps.length && !match; i++) {
-			if (filter != null && !filter.matchCase(platformProps[i]))
-				continue;
-			String[] osNames = nativeSupplier.getOSNames();
-			if (osNames.length == 0)
-				match = true;
-			else {
-				Object platformOS = platformProps[i].get(Constants.FRAMEWORK_OS_NAME);
-				Object aliasedPlatformOS = platformOS == null || !(platformOS instanceof String) ? platformOS : aliasMapper.aliasOSName((String) platformOS);
-				Object[] platformOSes;
-				if (aliasedPlatformOS instanceof Collection)
-					platformOSes = ((Collection) aliasedPlatformOS).toArray();
-				else
-					platformOSes = aliasedPlatformOS == null ? new Object[0] : new Object[] {aliasedPlatformOS};
-				for (int j = 0; j < osNames.length && !match; j++) {
-					Object aliasedName = aliasMapper.aliasOSName(osNames[j]);
-					for (int k = 0; k < platformOSes.length; k++) {
-						if (aliasedName instanceof String) {
-							if (platformOSes[k].equals(aliasedName))
-								match = true;
-						} else {
-							for (Iterator iAliases = ((Collection) aliasedName).iterator(); iAliases.hasNext() && !match;)
-								if (platformOSes[k].equals(iAliases.next()))
-									match = true;
-						}
-					}
-				}
-			}
-			if (!match)
-				continue;
-			match = false;
-
-			String[] processors = nativeSupplier.getProcessors();
-			if (processors.length == 0)
-				match = true;
-			else {
-				Object platformProcessor = platformProps[i].get(Constants.FRAMEWORK_PROCESSOR);
-				Object aliasedPlatformProcessor = platformProcessor == null || !(platformProcessor instanceof String) ? platformProcessor : aliasMapper.aliasProcessor((String) platformProcessor);
-				if (aliasedPlatformProcessor != null)
-					for (int j = 0; j < processors.length && !match; j++) {
-						String aliasedProcessor = aliasMapper.aliasProcessor(processors[j]);
-						if (aliasedPlatformProcessor.equals(aliasedProcessor))
-							match = true;
-					}
-			}
-			if (!match)
-				return false;
-			match = false;
-
-			String[] languages = nativeSupplier.getLanguages();
-			if (languages.length == 0)
-				match = true;
-			else {
-				Object platformLanguage = platformProps[i].get(Constants.FRAMEWORK_LANGUAGE);
-				if (platformLanguage != null)
-					for (int j = 0; j < languages.length && !match; j++) {
-						if ((platformLanguage instanceof String) ? ((String) platformLanguage).equalsIgnoreCase(languages[j]) : platformLanguage.equals(languages[j]))
-							match = true;
-					}
-			}
-			if (!match)
-				return false;
-			match = false;
-
-			VersionRange[] osVersions = nativeSupplier.getOSVersions();
-			if (osVersions.length == 0 || platformProps[i].get(Constants.FRAMEWORK_OS_VERSION) == null)
-				match = true;
-			else {
-				Version osversion;
-				try {
-					osversion = Version.parseVersion((String) platformProps[i].get(Constants.FRAMEWORK_OS_VERSION));
-				} catch (Exception e) {
-					osversion = Version.emptyVersion;
-				}
-				for (int j = 0; j < osVersions.length && !match; j++) {
-					if (osVersions[j].isIncluded(osversion))
-						match = true;
-				}
-			}
-		}
-		return match;
-	}
-
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		NativeCodeDescription[] suppliers = getPossibleSuppliers();
-		for (int i = 0; i < suppliers.length; i++) {
-			if (i > 0)
-				sb.append(", "); //$NON-NLS-1$
-			sb.append(suppliers[i].toString());
-		}
-
-		return sb.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ReadOnlyState.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ReadOnlyState.java
deleted file mode 100644
index db8e7af..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ReadOnlyState.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.Dictionary;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Version;
-
-public final class ReadOnlyState implements State {
-	private final State target;
-
-	public ReadOnlyState(State target) {
-		this.target = target;
-	}
-
-	public boolean addBundle(BundleDescription description) {
-		throw new UnsupportedOperationException();
-	}
-
-	public StateDelta compare(State state) throws BundleException {
-		return target.compare(state);
-	}
-
-	public BundleDescription getBundle(long id) {
-		return target.getBundle(id);
-	}
-
-	public BundleDescription getBundle(String symbolicName, Version version) {
-		return target.getBundle(symbolicName, version);
-	}
-
-	public BundleDescription getBundleByLocation(String location) {
-		return target.getBundleByLocation(location);
-	}
-
-	public BundleDescription[] getBundles() {
-		return target.getBundles();
-	}
-
-	public BundleDescription[] getBundles(String symbolicName) {
-		return target.getBundles(symbolicName);
-	}
-
-	public StateDelta getChanges() {
-		return target.getChanges();
-	}
-
-	public ExportPackageDescription[] getExportedPackages() {
-		return target.getExportedPackages();
-	}
-
-	public StateObjectFactory getFactory() {
-		return target.getFactory();
-	}
-
-	public BundleDescription[] getResolvedBundles() {
-		return target.getResolvedBundles();
-	}
-
-	public long getTimeStamp() {
-		return target.getTimeStamp();
-	}
-
-	public boolean isEmpty() {
-		return target.isEmpty();
-	}
-
-	public boolean isResolved() {
-		return target.isResolved();
-	}
-
-	public boolean removeBundle(BundleDescription bundle) {
-		throw new UnsupportedOperationException();
-	}
-
-	public BundleDescription removeBundle(long bundleId) {
-		throw new UnsupportedOperationException();
-	}
-
-	public StateDelta resolve() {
-		throw new UnsupportedOperationException();
-	}
-
-	public StateDelta resolve(boolean incremental) {
-		throw new UnsupportedOperationException();
-	}
-
-	public StateDelta resolve(BundleDescription[] discard) {
-		throw new UnsupportedOperationException();
-	}
-
-	public void setOverrides(Object value) {
-		throw new UnsupportedOperationException();
-	}
-
-	public boolean updateBundle(BundleDescription newDescription) {
-		throw new UnsupportedOperationException();
-	}
-
-	public void resolveConstraint(VersionConstraint constraint, BaseDescription supplier) {
-		throw new UnsupportedOperationException();
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports) {
-		throw new UnsupportedOperationException();
-	}
-
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] host, ExportPackageDescription[] selectedExports, ExportPackageDescription[] substitutedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolveImports) {
-		throw new UnsupportedOperationException();
-	}
-
-	public void removeBundleComplete(BundleDescription bundle) {
-		throw new UnsupportedOperationException();
-	}
-
-	public Resolver getResolver() {
-		return null;
-	}
-
-	public void setResolver(Resolver value) {
-		throw new UnsupportedOperationException();
-	}
-
-	public boolean setPlatformProperties(Dictionary platformProperties) {
-		throw new UnsupportedOperationException();
-	}
-
-	public boolean setPlatformProperties(Dictionary platformProperties[]) {
-		throw new UnsupportedOperationException();
-	}
-
-	public Dictionary[] getPlatformProperties() {
-		return target.getPlatformProperties();
-	}
-
-	public ExportPackageDescription linkDynamicImport(BundleDescription importingBundle, String requestedPackage) {
-		throw new UnsupportedOperationException();
-	}
-
-	public void setTimeStamp(long timeStamp) {
-		throw new UnsupportedOperationException();
-	}
-
-	public ExportPackageDescription[] getSystemPackages() {
-		return target.getSystemPackages();
-	}
-
-	public void addResolverError(BundleDescription bundle, int type, String data, VersionConstraint unsatisfied) {
-		throw new UnsupportedOperationException();
-	}
-
-	public ResolverError[] getResolverErrors(BundleDescription bundle) {
-		return target.getResolverErrors(bundle);
-	}
-
-	public void removeResolverErrors(BundleDescription bundle) {
-		throw new UnsupportedOperationException();
-	}
-
-	public StateHelper getStateHelper() {
-		return StateHelperImpl.getInstance();
-	}
-
-	public long getHighestBundleId() {
-		return target.getHighestBundleId();
-	}
-
-	public void setNativePathsInvalid(NativeCodeDescription nativeCodeDescription, boolean hasInvalidPaths) {
-		throw new UnsupportedOperationException();
-	}
-
-	public BundleDescription[] getDisabledBundles() {
-		return target.getDisabledBundles();
-	}
-
-	public void addDisabledInfo(DisabledInfo disabledInfo) {
-		throw new UnsupportedOperationException();
-	}
-
-	public DisabledInfo[] getDisabledInfos(BundleDescription bundle) {
-		return target.getDisabledInfos(bundle);
-	}
-
-	public DisabledInfo getDisabledInfo(BundleDescription bundle, String policyName) {
-		return target.getDisabledInfo(bundle, policyName);
-	}
-
-	public void removeDisabledInfo(DisabledInfo disabledInfo) {
-		throw new UnsupportedOperationException();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ResolverErrorImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ResolverErrorImpl.java
deleted file mode 100644
index a0e2318..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ResolverErrorImpl.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-
-public final class ResolverErrorImpl implements ResolverError {
-	private final BundleDescriptionImpl bundle;
-	private final int type;
-	private final String data;
-	private final VersionConstraint unsatisfied;
-
-	public ResolverErrorImpl(BundleDescriptionImpl bundle, int type, String data, VersionConstraint unsatisfied) {
-		this.bundle = bundle;
-		this.data = data;
-		this.type = type;
-		this.unsatisfied = unsatisfied;
-	}
-
-	public BundleDescription getBundle() {
-		return bundle;
-	}
-
-	public int getType() {
-		return type;
-	}
-
-	public String getData() {
-		return data;
-	}
-
-	public VersionConstraint getUnsatisfiedConstraint() {
-		return unsatisfied;
-	}
-
-	public String toString() {
-		switch (getType()) {
-			case ResolverError.EXPORT_PACKAGE_PERMISSION :
-			case ResolverError.IMPORT_PACKAGE_PERMISSION :
-			case ResolverError.REQUIRE_BUNDLE_PERMISSION :
-			case ResolverError.PROVIDE_BUNDLE_PERMISSION :
-			case ResolverError.FRAGMENT_BUNDLE_PERMISSION :
-			case ResolverError.HOST_BUNDLE_PERMISSION :
-				return NLS.bind(StateMsg.RES_ERROR_MISSING_PERMISSION, getData());
-			case ResolverError.MISSING_IMPORT_PACKAGE :
-			case ResolverError.MISSING_REQUIRE_BUNDLE :
-			case ResolverError.MISSING_FRAGMENT_HOST :
-			case ResolverError.MISSING_EXECUTION_ENVIRONMENT :
-			case ResolverError.MISSING_GENERIC_CAPABILITY :
-				return NLS.bind(StateMsg.RES_ERROR_MISSING_CONSTRAINT, getData());
-			case ResolverError.FRAGMENT_CONFLICT :
-				return NLS.bind(StateMsg.RES_ERROR_FRAGMENT_CONFLICT, getData());
-			case ResolverError.IMPORT_PACKAGE_USES_CONFLICT :
-			case ResolverError.REQUIRE_BUNDLE_USES_CONFLICT :
-				return NLS.bind(StateMsg.RES_ERROR_USES_CONFLICT, getData());
-			case ResolverError.SINGLETON_SELECTION :
-				return NLS.bind(StateMsg.RES_ERROR_SINGLETON_CONFLICT, getData());
-			case ResolverError.PLATFORM_FILTER :
-				return NLS.bind(StateMsg.RES_ERROR_PLATFORM_FILTER, getData());
-			case ResolverError.NO_NATIVECODE_MATCH :
-				return NLS.bind(StateMsg.RES_ERROR_NO_NATIVECODE_MATCH, getData());
-			case ResolverError.INVALID_NATIVECODE_PATHS :
-				return NLS.bind(StateMsg.RES_ERROR_NATIVECODE_PATH_INVALID, getData());
-			case ResolverError.DISABLED_BUNDLE :
-				return NLS.bind(StateMsg.RES_ERROR_DISABLEDBUNDLE, getData());
-			default :
-				return StateMsg.RES_ERROR_UNKNOWN;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateBuilder.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateBuilder.java
deleted file mode 100644
index a4d3d18..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateBuilder.java
+++ /dev/null
@@ -1,615 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.lang.reflect.Constructor;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.Msg;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * This class builds bundle description objects from manifests
- */
-class StateBuilder {
-	static final String[] DEFINED_MATCHING_ATTRS = {Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE, Constants.BUNDLE_VERSION_ATTRIBUTE, Constants.PACKAGE_SPECIFICATION_VERSION, Constants.VERSION_ATTRIBUTE};
-	static final String[] DEFINED_OSGI_VALIDATE_HEADERS = {Constants.IMPORT_PACKAGE, Constants.DYNAMICIMPORT_PACKAGE, Constants.EXPORT_PACKAGE, Constants.FRAGMENT_HOST, Constants.BUNDLE_SYMBOLICNAME, Constants.REQUIRE_BUNDLE};
-	static final String GENERIC_REQUIRE = "Eclipse-GenericRequire"; //$NON-NLS-1$
-	static final String GENERIC_CAPABILITY = "Eclipse-GenericCapability"; //$NON-NLS-1$
-
-	private static final String ATTR_TYPE_STRING = "string"; //$NON-NLS-1$
-	private static final String ATTR_TYPE_VERSION = "version"; //$NON-NLS-1$
-	private static final String ATTR_TYPE_URI = "uri"; //$NON-NLS-1$
-	private static final String ATTR_TYPE_LONG = "long"; //$NON-NLS-1$
-	private static final String ATTR_TYPE_DOUBLE = "double"; //$NON-NLS-1$
-	private static final String ATTR_TYPE_SET = "set"; //$NON-NLS-1$
-	private static final String OPTIONAL_ATTR = "optional"; //$NON-NLS-1$
-	private static final String MULTIPLE_ATTR = "multiple"; //$NON-NLS-1$
-	private static final String TRUE = "true"; //$NON-NLS-1$
-
-	static BundleDescription createBundleDescription(StateImpl state, Dictionary manifest, String location) throws BundleException {
-		BundleDescriptionImpl result = new BundleDescriptionImpl();
-		String manifestVersionHeader = (String) manifest.get(Constants.BUNDLE_MANIFESTVERSION);
-		boolean jreBundle = "true".equals(manifest.get(Constants.Eclipse_JREBUNDLE)); //$NON-NLS-1$
-		int manifestVersion = 1;
-		if (manifestVersionHeader != null)
-			manifestVersion = Integer.parseInt(manifestVersionHeader);
-		if (manifestVersion >= 2)
-			validateHeaders(manifest, jreBundle);
-
-		// retrieve the symbolic-name and the singleton status
-		String symbolicNameHeader = (String) manifest.get(Constants.BUNDLE_SYMBOLICNAME);
-		if (symbolicNameHeader != null) {
-			ManifestElement[] symbolicNameElements = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, symbolicNameHeader);
-			if (symbolicNameElements.length > 0) {
-				result.setSymbolicName(symbolicNameElements[0].getValue());
-				String singleton = symbolicNameElements[0].getDirective(Constants.SINGLETON_DIRECTIVE);
-				if (singleton == null) // TODO this is for backward compatibility; need to check manifest version < 2 to allow this after everyone has converted to new syntax
-					singleton = symbolicNameElements[0].getAttribute(Constants.SINGLETON_DIRECTIVE);
-				result.setStateBit(BundleDescriptionImpl.SINGLETON, "true".equals(singleton)); //$NON-NLS-1$
-				String fragmentAttachment = symbolicNameElements[0].getDirective(Constants.FRAGMENT_ATTACHMENT_DIRECTIVE);
-				if (fragmentAttachment != null) {
-					if (fragmentAttachment.equals(Constants.FRAGMENT_ATTACHMENT_RESOLVETIME)) {
-						result.setStateBit(BundleDescriptionImpl.ATTACH_FRAGMENTS, true);
-						result.setStateBit(BundleDescriptionImpl.DYNAMIC_FRAGMENTS, false);
-					} else if (fragmentAttachment.equals(Constants.FRAGMENT_ATTACHMENT_NEVER)) {
-						result.setStateBit(BundleDescriptionImpl.ATTACH_FRAGMENTS, false);
-						result.setStateBit(BundleDescriptionImpl.DYNAMIC_FRAGMENTS, false);
-					}
-				}
-			}
-		}
-		// retrieve other headers
-		String version = (String) manifest.get(Constants.BUNDLE_VERSION);
-		try {
-			result.setVersion((version != null) ? Version.parseVersion(version) : Version.emptyVersion);
-		} catch (IllegalArgumentException ex) {
-			if (manifestVersion >= 2) {
-				String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, Constants.BUNDLE_VERSION, version);
-				throw new BundleException(message + " : " + ex.getMessage(), BundleException.MANIFEST_ERROR, ex); //$NON-NLS-1$
-			}
-			// prior to R4 the Bundle-Version header was not interpreted by the Framework;
-			// must not fail for old R3 style bundles
-		}
-		result.setLocation(location);
-		result.setPlatformFilter((String) manifest.get(Constants.ECLIPSE_PLATFORMFILTER));
-		result.setExecutionEnvironments(ManifestElement.getArrayFromList((String) manifest.get(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT)));
-		ManifestElement[] host = ManifestElement.parseHeader(Constants.FRAGMENT_HOST, (String) manifest.get(Constants.FRAGMENT_HOST));
-		if (host != null)
-			result.setHost(createHostSpecification(host[0], state));
-		ManifestElement[] exports = ManifestElement.parseHeader(Constants.EXPORT_PACKAGE, (String) manifest.get(Constants.EXPORT_PACKAGE));
-		ManifestElement[] provides = ManifestElement.parseHeader(Constants.PROVIDE_PACKAGE, (String) manifest.get(Constants.PROVIDE_PACKAGE)); // TODO this is null for now until the framwork is updated to handle the new re-export semantics
-		boolean strict = state != null && state.inStrictMode();
-		ArrayList providedExports = new ArrayList(provides == null ? 0 : provides.length);
-		result.setExportPackages(createExportPackages(exports, provides, providedExports, manifestVersion, strict));
-		ManifestElement[] imports = ManifestElement.parseHeader(Constants.IMPORT_PACKAGE, (String) manifest.get(Constants.IMPORT_PACKAGE));
-		ManifestElement[] dynamicImports = ManifestElement.parseHeader(Constants.DYNAMICIMPORT_PACKAGE, (String) manifest.get(Constants.DYNAMICIMPORT_PACKAGE));
-		result.setImportPackages(createImportPackages(result.getExportPackages(), providedExports, imports, dynamicImports, manifestVersion));
-		ManifestElement[] requires = ManifestElement.parseHeader(Constants.REQUIRE_BUNDLE, (String) manifest.get(Constants.REQUIRE_BUNDLE));
-		result.setRequiredBundles(createRequiredBundles(requires));
-		String[][] genericAliases = getGenericAliases(state);
-		ManifestElement[] genericRequires = getGenericRequires(manifest, genericAliases);
-		result.setGenericRequires(createGenericRequires(genericRequires));
-		ManifestElement[] genericCapabilities = getGenericCapabilities(manifest, genericAliases);
-		result.setGenericCapabilities(createGenericCapabilities(genericCapabilities));
-		ManifestElement[] nativeCode = ManifestElement.parseHeader(Constants.BUNDLE_NATIVECODE, (String) manifest.get(Constants.BUNDLE_NATIVECODE));
-		result.setNativeCodeSpecification(createNativeCode(nativeCode));
-		return result;
-	}
-
-	private static ManifestElement[] getGenericRequires(Dictionary manifest, String[][] genericAliases) throws BundleException {
-		ManifestElement[] genericRequires = ManifestElement.parseHeader(GENERIC_REQUIRE, (String) manifest.get(GENERIC_REQUIRE));
-		ArrayList aliasList = null;
-		if (genericAliases.length > 0) {
-			aliasList = new ArrayList(genericRequires == null ? 0 : genericRequires.length);
-			for (int i = 0; i < genericAliases.length; i++) {
-				ManifestElement[] aliasReqs = ManifestElement.parseHeader(genericAliases[i][1], (String) manifest.get(genericAliases[i][1]));
-				if (aliasReqs == null)
-					continue;
-				for (int j = 0; j < aliasReqs.length; j++) {
-					StringBuffer strBuf = new StringBuffer();
-					strBuf.append(aliasReqs[j].getValue()).append(':').append(genericAliases[i][2]);
-					String filter = aliasReqs[j].getAttribute(Constants.SELECTION_FILTER_ATTRIBUTE);
-					if (filter != null)
-						strBuf.append("; ").append(Constants.SELECTION_FILTER_ATTRIBUTE).append(filter).append("=\"").append(filter).append("\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					ManifestElement[] withType = ManifestElement.parseHeader(genericAliases[i][1], strBuf.toString());
-					aliasList.add(withType[0]);
-				}
-			}
-		}
-		if (aliasList == null || aliasList.size() == 0)
-			return genericRequires;
-		if (genericRequires != null)
-			for (int i = 0; i < genericRequires.length; i++)
-				aliasList.add(genericRequires[i]);
-		return (ManifestElement[]) aliasList.toArray(new ManifestElement[aliasList.size()]);
-	}
-
-	private static ManifestElement[] getGenericCapabilities(Dictionary manifest, String[][] genericAliases) throws BundleException {
-		ManifestElement[] genericCapabilities = ManifestElement.parseHeader(GENERIC_CAPABILITY, (String) manifest.get(GENERIC_CAPABILITY));
-		ArrayList aliasList = null;
-		if (genericAliases.length > 0) {
-			aliasList = new ArrayList(genericCapabilities == null ? 0 : genericCapabilities.length);
-			for (int i = 0; i < genericAliases.length; i++) {
-				ManifestElement[] aliasCapabilities = ManifestElement.parseHeader(genericAliases[i][0], (String) manifest.get(genericAliases[i][0]));
-				if (aliasCapabilities == null)
-					continue;
-				for (int j = 0; j < aliasCapabilities.length; j++) {
-					StringBuffer strBuf = new StringBuffer();
-					strBuf.append(aliasCapabilities[j].getValue()).append(':').append(genericAliases[i][2]);
-					for (Enumeration keys = aliasCapabilities[j].getKeys(); keys != null && keys.hasMoreElements();) {
-						String key = (String) keys.nextElement();
-						strBuf.append("; ").append(key).append("=\"").append(aliasCapabilities[j].getAttribute(key)).append("\""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					ManifestElement[] withTypes = ManifestElement.parseHeader(genericAliases[i][0], strBuf.toString());
-					aliasList.add(withTypes[0]);
-				}
-			}
-		}
-		if (aliasList == null || aliasList.size() == 0)
-			return genericCapabilities;
-		if (genericCapabilities != null)
-			for (int i = 0; i < genericCapabilities.length; i++)
-				aliasList.add(genericCapabilities[i]);
-		return (ManifestElement[]) aliasList.toArray(new ManifestElement[aliasList.size()]);
-	}
-
-	private static String[][] getGenericAliases(StateImpl state) {
-		String genericAliasesProp = getPlatformProperty(state, "osgi.genericAliases"); //$NON-NLS-1$
-		if (genericAliasesProp == null)
-			return new String[0][0];
-		String[] aliases = ManifestElement.getArrayFromList(genericAliasesProp, ","); //$NON-NLS-1$
-		String[][] result = new String[aliases.length][];
-		for (int i = 0; i < aliases.length; i++)
-			result[i] = ManifestElement.getArrayFromList(aliases[i], ":"); //$NON-NLS-1$
-		return result;
-	}
-
-	private static String getPlatformProperty(StateImpl state, String key) {
-		Dictionary[] platformProps = state == null ? null : state.getPlatformProperties();
-		return platformProps == null || platformProps.length == 0 ? null : (String) platformProps[0].get(key);
-	}
-
-	private static void validateHeaders(Dictionary manifest, boolean jreBundle) throws BundleException {
-		for (int i = 0; i < DEFINED_OSGI_VALIDATE_HEADERS.length; i++) {
-			String header = (String) manifest.get(DEFINED_OSGI_VALIDATE_HEADERS[i]);
-			if (header != null) {
-				ManifestElement[] elements = ManifestElement.parseHeader(DEFINED_OSGI_VALIDATE_HEADERS[i], header);
-				checkForDuplicateDirectivesAttributes(DEFINED_OSGI_VALIDATE_HEADERS[i], elements);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.IMPORT_PACKAGE)
-					checkImportExportSyntax(DEFINED_OSGI_VALIDATE_HEADERS[i], elements, false, false, jreBundle);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.DYNAMICIMPORT_PACKAGE)
-					checkImportExportSyntax(DEFINED_OSGI_VALIDATE_HEADERS[i], elements, false, true, jreBundle);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.EXPORT_PACKAGE)
-					checkImportExportSyntax(DEFINED_OSGI_VALIDATE_HEADERS[i], elements, true, false, jreBundle);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.FRAGMENT_HOST)
-					checkExtensionBundle(DEFINED_OSGI_VALIDATE_HEADERS[i], elements);
-			} else if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.BUNDLE_SYMBOLICNAME) {
-				throw new BundleException(NLS.bind(StateMsg.HEADER_REQUIRED, Constants.BUNDLE_SYMBOLICNAME), BundleException.MANIFEST_ERROR);
-			}
-		}
-	}
-
-	private static BundleSpecification[] createRequiredBundles(ManifestElement[] specs) {
-		if (specs == null)
-			return null;
-		BundleSpecification[] result = new BundleSpecification[specs.length];
-		for (int i = 0; i < specs.length; i++)
-			result[i] = createRequiredBundle(specs[i]);
-		return result;
-	}
-
-	private static BundleSpecification createRequiredBundle(ManifestElement spec) {
-		BundleSpecificationImpl result = new BundleSpecificationImpl();
-		result.setName(spec.getValue());
-		result.setVersionRange(getVersionRange(spec.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE)));
-		result.setExported(Constants.VISIBILITY_REEXPORT.equals(spec.getDirective(Constants.VISIBILITY_DIRECTIVE)) || "true".equals(spec.getAttribute(Constants.REPROVIDE_ATTRIBUTE))); //$NON-NLS-1$
-		result.setOptional(Constants.RESOLUTION_OPTIONAL.equals(spec.getDirective(Constants.RESOLUTION_DIRECTIVE)) || "true".equals(spec.getAttribute(Constants.OPTIONAL_ATTRIBUTE))); //$NON-NLS-1$
-		return result;
-	}
-
-	private static ImportPackageSpecification[] createImportPackages(ExportPackageDescription[] exported, ArrayList providedExports, ManifestElement[] imported, ManifestElement[] dynamicImported, int manifestVersion) throws BundleException {
-		ArrayList allImports = null;
-		if (manifestVersion < 2) {
-			// add implicit imports for each exported package if manifest verions is less than 2.
-			if (exported.length == 0 && imported == null && dynamicImported == null)
-				return null;
-			allImports = new ArrayList(exported.length + (imported == null ? 0 : imported.length));
-			for (int i = 0; i < exported.length; i++) {
-				if (providedExports.contains(exported[i].getName()))
-					continue;
-				ImportPackageSpecificationImpl result = new ImportPackageSpecificationImpl();
-				result.setName(exported[i].getName());
-				result.setVersionRange(getVersionRange(exported[i].getVersion().toString()));
-				result.setDirective(Constants.RESOLUTION_DIRECTIVE, ImportPackageSpecification.RESOLUTION_STATIC);
-				allImports.add(result);
-			}
-		} else {
-			allImports = new ArrayList(imported == null ? 0 : imported.length);
-		}
-
-		// add dynamics first so they will get overriden by static imports if
-		// the same package is dyanamically imported and statically imported.
-		if (dynamicImported != null)
-			for (int i = 0; i < dynamicImported.length; i++)
-				addImportPackages(dynamicImported[i], allImports, manifestVersion, true);
-		if (imported != null)
-			for (int i = 0; i < imported.length; i++)
-				addImportPackages(imported[i], allImports, manifestVersion, false);
-		return (ImportPackageSpecification[]) allImports.toArray(new ImportPackageSpecification[allImports.size()]);
-	}
-
-	private static void addImportPackages(ManifestElement importPackage, ArrayList allImports, int manifestVersion, boolean dynamic) throws BundleException {
-		String[] importNames = importPackage.getValueComponents();
-		for (int i = 0; i < importNames.length; i++) {
-			// do not allow for multiple imports of same package of manifest version < 2
-			if (manifestVersion < 2) {
-				Iterator iter = allImports.iterator();
-				while (iter.hasNext())
-					if (importNames[i].equals(((ImportPackageSpecification) iter.next()).getName()))
-						iter.remove();
-			}
-
-			ImportPackageSpecificationImpl result = new ImportPackageSpecificationImpl();
-			result.setName(importNames[i]);
-			// set common attributes for both dynamic and static imports
-			String versionString = importPackage.getAttribute(Constants.VERSION_ATTRIBUTE);
-			if (versionString == null) // specification-version aliases to version
-				versionString = importPackage.getAttribute(Constants.PACKAGE_SPECIFICATION_VERSION);
-			result.setVersionRange(getVersionRange(versionString));
-			result.setBundleSymbolicName(importPackage.getAttribute(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE));
-			result.setBundleVersionRange(getVersionRange(importPackage.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE)));
-			// only set the matching attributes if manfest version >= 2
-			if (manifestVersion >= 2)
-				result.setAttributes(getAttributes(importPackage, DEFINED_MATCHING_ATTRS));
-
-			if (dynamic)
-				result.setDirective(Constants.RESOLUTION_DIRECTIVE, ImportPackageSpecification.RESOLUTION_DYNAMIC);
-			else
-				result.setDirective(Constants.RESOLUTION_DIRECTIVE, getResolution(importPackage.getDirective(Constants.RESOLUTION_DIRECTIVE)));
-
-			allImports.add(result);
-		}
-	}
-
-	private static String getResolution(String resolution) {
-		String result = ImportPackageSpecification.RESOLUTION_STATIC;
-		if (Constants.RESOLUTION_OPTIONAL.equals(resolution))
-			result = ImportPackageSpecification.RESOLUTION_OPTIONAL;
-		return result;
-	}
-
-	static ExportPackageDescription[] createExportPackages(ManifestElement[] exported, ManifestElement[] provides, ArrayList providedExports, int manifestVersion, boolean strict) throws BundleException {
-		int numExports = (exported == null ? 0 : exported.length) + (provides == null ? 0 : provides.length);
-		if (numExports == 0)
-			return null;
-		ArrayList allExports = new ArrayList(numExports);
-		if (exported != null)
-			for (int i = 0; i < exported.length; i++)
-				addExportPackages(exported[i], allExports, manifestVersion, strict);
-		if (provides != null)
-			addProvidePackages(provides, allExports, providedExports);
-		return (ExportPackageDescription[]) allExports.toArray(new ExportPackageDescription[allExports.size()]);
-	}
-
-	private static void addExportPackages(ManifestElement exportPackage, ArrayList allExports, int manifestVersion, boolean strict) throws BundleException {
-		String[] exportNames = exportPackage.getValueComponents();
-		for (int i = 0; i < exportNames.length; i++) {
-			// if we are in strict mode and the package is marked as internal, skip it.
-			if (strict && "true".equals(exportPackage.getDirective(Constants.INTERNAL_DIRECTIVE))) //$NON-NLS-1$
-				continue;
-			ExportPackageDescriptionImpl result = new ExportPackageDescriptionImpl();
-			result.setName(exportNames[i]);
-			String versionString = exportPackage.getAttribute(Constants.VERSION_ATTRIBUTE);
-			if (versionString == null) // specification-version aliases to version
-				versionString = exportPackage.getAttribute(Constants.PACKAGE_SPECIFICATION_VERSION);
-			if (versionString != null)
-				result.setVersion(Version.parseVersion(versionString));
-			result.setDirective(Constants.USES_DIRECTIVE, ManifestElement.getArrayFromList(exportPackage.getDirective(Constants.USES_DIRECTIVE)));
-			result.setDirective(Constants.INCLUDE_DIRECTIVE, exportPackage.getDirective(Constants.INCLUDE_DIRECTIVE));
-			result.setDirective(Constants.EXCLUDE_DIRECTIVE, exportPackage.getDirective(Constants.EXCLUDE_DIRECTIVE));
-			result.setDirective(Constants.FRIENDS_DIRECTIVE, ManifestElement.getArrayFromList(exportPackage.getDirective(Constants.FRIENDS_DIRECTIVE)));
-			result.setDirective(Constants.INTERNAL_DIRECTIVE, Boolean.valueOf(exportPackage.getDirective(Constants.INTERNAL_DIRECTIVE)));
-			result.setDirective(Constants.MANDATORY_DIRECTIVE, ManifestElement.getArrayFromList(exportPackage.getDirective(Constants.MANDATORY_DIRECTIVE)));
-			result.setAttributes(getAttributes(exportPackage, DEFINED_MATCHING_ATTRS));
-			allExports.add(result);
-		}
-	}
-
-	private static void addProvidePackages(ManifestElement[] provides, ArrayList allExports, ArrayList providedExports) throws BundleException {
-		ExportPackageDescription[] currentExports = (ExportPackageDescription[]) allExports.toArray(new ExportPackageDescription[allExports.size()]);
-		for (int i = 0; i < provides.length; i++) {
-			boolean duplicate = false;
-			for (int j = 0; j < currentExports.length; j++)
-				if (provides[i].getValue().equals(currentExports[j].getName())) {
-					duplicate = true;
-					break;
-				}
-			if (!duplicate) {
-				ExportPackageDescriptionImpl result = new ExportPackageDescriptionImpl();
-				result.setName(provides[i].getValue());
-				allExports.add(result);
-			}
-			providedExports.add(provides[i].getValue());
-		}
-	}
-
-	private static Map getAttributes(ManifestElement exportPackage, String[] definedAttrs) {
-		Enumeration keys = exportPackage.getKeys();
-		Map arbitraryAttrs = null;
-		if (keys == null)
-			return null;
-		while (keys.hasMoreElements()) {
-			boolean definedAttr = false;
-			String key = (String) keys.nextElement();
-			for (int i = 0; i < definedAttrs.length; i++) {
-				if (definedAttrs[i].equals(key)) {
-					definedAttr = true;
-					break;
-				}
-			}
-			String value = exportPackage.getAttribute(key);
-			int colonIndex = key.indexOf(':');
-			String type = ATTR_TYPE_STRING;
-			if (colonIndex > 0) {
-				type = key.substring(colonIndex + 1);
-				key = key.substring(0, colonIndex);
-			}
-			if (!definedAttr) {
-				if (arbitraryAttrs == null)
-					arbitraryAttrs = new HashMap();
-				Object putValue = value;
-				if (ATTR_TYPE_STRING.equals(type))
-					putValue = value;
-				else if (ATTR_TYPE_DOUBLE.equals(type))
-					putValue = new Double(value);
-				else if (ATTR_TYPE_LONG.equals(type))
-					putValue = new Long(value);
-				else if (ATTR_TYPE_URI.equals(type))
-					try {
-						Class uriClazz = Class.forName("java.net.URI"); //$NON-NLS-1$
-						Constructor constructor = uriClazz.getConstructor(new Class[] {String.class});
-						putValue = constructor.newInstance(new Object[] {value});
-					} catch (ClassNotFoundException e) {
-						// oh well cannot support; just use string
-						putValue = value;
-					} catch (RuntimeException e) { // got some reflection exception
-						throw e;
-					} catch (Exception e) {
-						throw new RuntimeException(e.getMessage(), e);
-					}
-				else if (ATTR_TYPE_VERSION.equals(type))
-					putValue = new Version(value);
-				else if (ATTR_TYPE_SET.equals(type))
-					putValue = ManifestElement.getArrayFromList(value, ","); //$NON-NLS-1$
-				arbitraryAttrs.put(key, putValue);
-			}
-		}
-		return arbitraryAttrs;
-	}
-
-	private static HostSpecification createHostSpecification(ManifestElement spec, StateImpl state) {
-		if (spec == null)
-			return null;
-		HostSpecificationImpl result = new HostSpecificationImpl();
-		result.setName(spec.getValue());
-		result.setVersionRange(getVersionRange(spec.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE)));
-		String multiple = spec.getDirective("multiple-hosts"); //$NON-NLS-1$
-		if (multiple == null)
-			multiple = getPlatformProperty(state, "osgi.support.multipleHosts"); //$NON-NLS-1$
-		result.setIsMultiHost("true".equals(multiple)); //$NON-NLS-1$
-		return result;
-	}
-
-	private static GenericSpecification[] createGenericRequires(ManifestElement[] genericRequires) throws BundleException {
-		if (genericRequires == null)
-			return null;
-		ArrayList results = new ArrayList(genericRequires.length);
-		for (int i = 0; i < genericRequires.length; i++) {
-			String[] genericNames = genericRequires[i].getValueComponents();
-			for (int j = 0; j < genericNames.length; j++) {
-				GenericSpecificationImpl spec = new GenericSpecificationImpl();
-				int colonIdx = genericNames[j].indexOf(':');
-				if (colonIdx > 0) {
-					spec.setName(genericNames[j].substring(0, colonIdx));
-					spec.setType(genericNames[j].substring(colonIdx + 1));
-				} else
-					spec.setName(genericNames[j]);
-				try {
-					spec.setMatchingFilter(genericRequires[i].getAttribute(Constants.SELECTION_FILTER_ATTRIBUTE));
-				} catch (InvalidSyntaxException e) {
-					String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, GENERIC_REQUIRE, genericRequires[i].toString());
-					throw new BundleException(message + " : " + Constants.SELECTION_FILTER_ATTRIBUTE, BundleException.MANIFEST_ERROR, e); //$NON-NLS-1$
-				}
-				String optional = genericRequires[i].getAttribute(OPTIONAL_ATTR);
-				String multiple = genericRequires[i].getAttribute(MULTIPLE_ATTR);
-				int resolution = 0;
-				if (TRUE.equals(optional))
-					resolution |= GenericSpecification.RESOLUTION_OPTIONAL;
-				if (TRUE.equals(multiple))
-					resolution |= GenericSpecification.RESOLUTION_MULTIPLE;
-				spec.setResolution(resolution);
-				results.add(spec);
-			}
-		}
-		return (GenericSpecification[]) results.toArray(new GenericSpecification[results.size()]);
-	}
-
-	private static GenericDescription[] createGenericCapabilities(ManifestElement[] genericCapabilities) {
-		if (genericCapabilities == null)
-			return null;
-		ArrayList results = new ArrayList(genericCapabilities.length);
-		for (int i = 0; i < genericCapabilities.length; i++) {
-			String[] genericNames = genericCapabilities[i].getValueComponents();
-			for (int j = 0; j < genericNames.length; j++) {
-				GenericDescriptionImpl desc = new GenericDescriptionImpl();
-				int colonIdx = genericNames[j].indexOf(':');
-				if (colonIdx > 0) {
-					desc.setName(genericNames[j].substring(0, colonIdx));
-					desc.setType(genericNames[j].substring(colonIdx + 1));
-				} else
-					desc.setName(genericNames[j]);
-				String versionString = genericCapabilities[i].getAttribute(Constants.VERSION_ATTRIBUTE);
-				if (versionString != null)
-					desc.setVersion(Version.parseVersion(versionString));
-				Map mapAttrs = getAttributes(genericCapabilities[i], new String[] {Constants.VERSION_ATTRIBUTE});
-				Object version = mapAttrs == null ? null : mapAttrs.remove(Constants.VERSION_ATTRIBUTE);
-				if (version instanceof Version) // this is just incase someone uses version:version as a key
-					desc.setVersion((Version) version);
-				Dictionary attrs = new Hashtable();
-				if (mapAttrs != null) {
-					for (Iterator keys = mapAttrs.keySet().iterator(); keys.hasNext();) {
-						Object key = keys.next();
-						attrs.put(key, mapAttrs.get(key));
-					}
-				}
-				desc.setAttributes(attrs);
-				results.add(desc);
-			}
-		}
-		return (GenericDescription[]) results.toArray(new GenericDescription[results.size()]);
-	}
-
-	private static NativeCodeSpecification createNativeCode(ManifestElement[] nativeCode) throws BundleException {
-		if (nativeCode == null)
-			return null;
-		NativeCodeSpecificationImpl result = new NativeCodeSpecificationImpl();
-		result.setName(Constants.BUNDLE_NATIVECODE);
-		int length = nativeCode.length;
-		if (length > 0 && nativeCode[length - 1].getValue().equals("*")) { //$NON-NLS-1$
-			result.setOptional(true);
-			length--;
-		}
-		NativeCodeDescriptionImpl[] suppliers = new NativeCodeDescriptionImpl[length];
-		for (int i = 0; i < length; i++) {
-			suppliers[i] = createNativeCodeDescription(nativeCode[i]);
-		}
-		result.setPossibleSuppliers(suppliers);
-		return result;
-	}
-
-	private static NativeCodeDescriptionImpl createNativeCodeDescription(ManifestElement manifestElement) throws BundleException {
-		NativeCodeDescriptionImpl result = new NativeCodeDescriptionImpl();
-		result.setName(Constants.BUNDLE_NATIVECODE);
-		result.setNativePaths(manifestElement.getValueComponents());
-		result.setOSNames(manifestElement.getAttributes(Constants.BUNDLE_NATIVECODE_OSNAME));
-		result.setProcessors(manifestElement.getAttributes(Constants.BUNDLE_NATIVECODE_PROCESSOR));
-		result.setOSVersions(createVersionRanges(manifestElement.getAttributes(Constants.BUNDLE_NATIVECODE_OSVERSION)));
-		result.setLanguages(manifestElement.getAttributes(Constants.BUNDLE_NATIVECODE_LANGUAGE));
-		try {
-			result.setFilter(manifestElement.getAttribute(Constants.SELECTION_FILTER_ATTRIBUTE));
-		} catch (InvalidSyntaxException e) {
-			String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, Constants.BUNDLE_NATIVECODE, manifestElement.toString());
-			throw new BundleException(message + " : " + Constants.SELECTION_FILTER_ATTRIBUTE, BundleException.MANIFEST_ERROR, e); //$NON-NLS-1$
-		}
-		return result;
-	}
-
-	private static VersionRange[] createVersionRanges(String[] ranges) {
-		if (ranges == null)
-			return null;
-		VersionRange[] result = new VersionRange[ranges.length];
-		for (int i = 0; i < result.length; i++)
-			result[i] = new VersionRange(ranges[i]);
-		return result;
-	}
-
-	private static VersionRange getVersionRange(String versionRange) {
-		if (versionRange == null)
-			return null;
-		return new VersionRange(versionRange);
-	}
-
-	private static void checkImportExportSyntax(String headerKey, ManifestElement[] elements, boolean export, boolean dynamic, boolean jreBundle) throws BundleException {
-		if (elements == null)
-			return;
-		int length = elements.length;
-		Set packages = new HashSet(length);
-		for (int i = 0; i < length; i++) {
-			// check for duplicate imports
-			String[] packageNames = elements[i].getValueComponents();
-			for (int j = 0; j < packageNames.length; j++) {
-				if (!export && !dynamic && packages.contains(packageNames[j])) {
-					String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, headerKey, elements[i].toString());
-					throw new BundleException(message + " : " + NLS.bind(StateMsg.HEADER_PACKAGE_DUPLICATES, packageNames[j]), BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-				}
-				// check for java.*
-				if (!jreBundle && packageNames[j].startsWith("java.")) { //$NON-NLS-1$
-					String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, headerKey, elements[i].toString());
-					throw new BundleException(message + " : " + NLS.bind(StateMsg.HEADER_PACKAGE_JAVA, packageNames[j]), BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-				}
-				packages.add(packageNames[j]);
-			}
-			// check for version/specification version mismatch
-			String version = elements[i].getAttribute(Constants.VERSION_ATTRIBUTE);
-			if (version != null) {
-				String specVersion = elements[i].getAttribute(Constants.PACKAGE_SPECIFICATION_VERSION);
-				if (specVersion != null && !specVersion.equals(version))
-					throw new BundleException(NLS.bind(StateMsg.HEADER_VERSION_ERROR, Constants.VERSION_ATTRIBUTE, Constants.PACKAGE_SPECIFICATION_VERSION), BundleException.MANIFEST_ERROR);
-			}
-			// check for bundle-symbolic-name and bundle-verion attibures
-			// (failure)
-			if (export) {
-				if (elements[i].getAttribute(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE) != null) {
-					String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, headerKey, elements[i].toString());
-					throw new BundleException(message + " : " + NLS.bind(StateMsg.HEADER_EXPORT_ATTR_ERROR, Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE, Constants.EXPORT_PACKAGE), BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-				}
-				if (elements[i].getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE) != null) {
-					String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, headerKey, elements[i].toString());
-					throw new BundleException(NLS.bind(message + " : " + StateMsg.HEADER_EXPORT_ATTR_ERROR, Constants.BUNDLE_VERSION_ATTRIBUTE, Constants.EXPORT_PACKAGE), BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-				}
-			}
-		}
-	}
-
-	private static void checkForDuplicateDirectivesAttributes(String headerKey, ManifestElement[] elements) throws BundleException {
-		// check for duplicate directives
-		for (int i = 0; i < elements.length; i++) {
-			Enumeration directiveKeys = elements[i].getDirectiveKeys();
-			if (directiveKeys != null) {
-				while (directiveKeys.hasMoreElements()) {
-					String key = (String) directiveKeys.nextElement();
-					String[] directives = elements[i].getDirectives(key);
-					if (directives.length > 1) {
-						String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, headerKey, elements[i].toString());
-						throw new BundleException(NLS.bind(message + " : " + StateMsg.HEADER_DIRECTIVE_DUPLICATES, key), BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-					}
-				}
-			}
-			Enumeration attrKeys = elements[i].getKeys();
-			if (attrKeys != null) {
-				while (attrKeys.hasMoreElements()) {
-					String key = (String) attrKeys.nextElement();
-					String[] attrs = elements[i].getAttributes(key);
-					if (attrs.length > 1) {
-						String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, headerKey, elements[i].toString());
-						throw new BundleException(message + " : " + NLS.bind(StateMsg.HEADER_ATTRIBUTE_DUPLICATES, key), BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-					}
-				}
-			}
-		}
-	}
-
-	private static void checkExtensionBundle(String headerKey, ManifestElement[] elements) throws BundleException {
-		if (elements.length == 0 || elements[0].getDirective(Constants.EXTENSION_DIRECTIVE) == null)
-			return;
-		String hostName = elements[0].getValue();
-		// XXX: The extension bundle check is done against system.bundle and org.eclipse.osgi
-		if (!hostName.equals(Constants.SYSTEM_BUNDLE_SYMBOLICNAME) && !hostName.equals(Constants.getInternalSymbolicName())) {
-			String message = NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, headerKey, elements[0].toString());
-			throw new BundleException(message + " : " + NLS.bind(StateMsg.HEADER_EXTENSION_ERROR, hostName), BundleException.MANIFEST_ERROR); //$NON-NLS-1$
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateDeltaImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateDeltaImpl.java
deleted file mode 100644
index cf06fdd..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateDeltaImpl.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.*;
-import org.eclipse.osgi.service.resolver.*;
-
-/**
- * This class is threadsafe.
- *
- */
-final class StateDeltaImpl implements StateDelta {
-
-	private final State state;
-
-	private final Map changes = new HashMap();
-
-	public StateDeltaImpl(State state) {
-		this.state = state;
-	}
-
-	public BundleDelta[] getChanges() {
-		synchronized (this.changes) {
-			return (BundleDelta[]) changes.values().toArray(new BundleDelta[changes.size()]);
-		}
-	}
-
-	public BundleDelta[] getChanges(int mask, boolean exact) {
-		synchronized (this.changes) {
-			List result = new ArrayList();
-			for (Iterator changesIter = changes.values().iterator(); changesIter.hasNext();) {
-				BundleDelta change = (BundleDelta) changesIter.next();
-				if (mask == change.getType() || (!exact && (change.getType() & mask) != 0))
-					result.add(change);
-			}
-			return (BundleDelta[]) result.toArray(new BundleDelta[result.size()]);
-		}
-	}
-
-	public State getState() {
-		return state;
-	}
-
-	void recordBundleAdded(BundleDescriptionImpl added) {
-		synchronized (this.changes) {
-			BundleDeltaImpl change = (BundleDeltaImpl) changes.get(added);
-			if (change == null) {
-				changes.put(added, new BundleDeltaImpl(added, BundleDelta.ADDED));
-				return;
-			}
-			if (change.getType() == BundleDelta.REMOVED) {
-				changes.remove(added);
-				return;
-			}
-			int newType = change.getType();
-			if ((newType & BundleDelta.REMOVED) != 0)
-				newType &= ~BundleDelta.REMOVED;
-			change.setType(newType | BundleDelta.ADDED);
-			change.setBundle(added);
-		}
-	}
-
-	void recordBundleUpdated(BundleDescriptionImpl updated) {
-		synchronized (this.changes) {
-			BundleDeltaImpl change = (BundleDeltaImpl) changes.get(updated);
-			if (change == null) {
-				changes.put(updated, new BundleDeltaImpl(updated, BundleDelta.UPDATED));
-				return;
-			}
-			if ((change.getType() & (BundleDelta.ADDED | BundleDelta.REMOVED)) != 0)
-				return;
-			change.setType(change.getType() | BundleDelta.UPDATED);
-			change.setBundle(updated);
-		}
-	}
-
-	void recordBundleRemoved(BundleDescriptionImpl removed) {
-		synchronized (this.changes) {
-			BundleDeltaImpl change = (BundleDeltaImpl) changes.get(removed);
-			if (change == null) {
-				changes.put(removed, new BundleDeltaImpl(removed, BundleDelta.REMOVED));
-				return;
-			}
-			if (change.getType() == BundleDelta.ADDED) {
-				changes.remove(removed);
-				return;
-			}
-			int newType = change.getType();
-			if ((newType & BundleDelta.ADDED) != 0)
-				newType &= ~BundleDelta.ADDED;
-			change.setType(newType | BundleDelta.REMOVED);
-		}
-	}
-
-	void recordBundleRemovalPending(BundleDescriptionImpl removed) {
-		synchronized (this.changes) {
-			BundleDeltaImpl change = (BundleDeltaImpl) changes.get(removed);
-			if (change == null) {
-				changes.put(removed, new BundleDeltaImpl(removed, BundleDelta.REMOVAL_PENDING));
-				return;
-			}
-			int newType = change.getType();
-			if ((newType & BundleDelta.REMOVAL_COMPLETE) != 0)
-				newType &= ~BundleDelta.REMOVAL_COMPLETE;
-			change.setType(newType | BundleDelta.REMOVAL_PENDING);
-		}
-	}
-
-	void recordBundleRemovalComplete(BundleDescriptionImpl removed) {
-		synchronized (this.changes) {
-			BundleDeltaImpl change = (BundleDeltaImpl) changes.get(removed);
-			if (change == null) {
-				changes.put(removed, new BundleDeltaImpl(removed, BundleDelta.REMOVAL_COMPLETE));
-				return;
-			}
-			int newType = change.getType();
-			if ((newType & BundleDelta.REMOVAL_PENDING) != 0)
-				newType &= ~BundleDelta.REMOVAL_PENDING;
-			change.setType(newType | BundleDelta.REMOVAL_COMPLETE);
-		}
-	}
-
-	void recordBundleResolved(BundleDescriptionImpl resolved, boolean result) {
-		synchronized (this.changes) {
-			if (resolved.isResolved() == result)
-				return; // do not record anything if nothing has changed
-			BundleDeltaImpl change = (BundleDeltaImpl) changes.get(resolved);
-			int newType = result ? BundleDelta.RESOLVED : BundleDelta.UNRESOLVED;
-			if (change == null) {
-				change = new BundleDeltaImpl(resolved, newType);
-				changes.put(resolved, change);
-				return;
-			}
-			// new type will have only one of RESOLVED|UNRESOLVED bits set
-			newType = newType | (change.getType() & ~(BundleDelta.RESOLVED | BundleDelta.UNRESOLVED));
-			change.setType(newType);
-			change.setBundle(resolved);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java
deleted file mode 100644
index e4ee07b..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java
+++ /dev/null
@@ -1,573 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.service.resolver.*;
-
-/**
- * An implementation for the StateHelper API. Access to this implementation is
- * provided  by the PlatformAdmin. Since this helper is a general facility for
- * state manipulation, it should not be tied to any implementation details.
- */
-public final class StateHelperImpl implements StateHelper {
-	private static final StateHelper instance = new StateHelperImpl();
-
-	/**
-	 * @see StateHelper
-	 */
-	public BundleDescription[] getDependentBundles(BundleDescription[] bundles) {
-		if (bundles == null || bundles.length == 0)
-			return new BundleDescription[0];
-
-		Set reachable = new HashSet(bundles.length);
-		for (int i = 0; i < bundles.length; i++) {
-			if (!bundles[i].isResolved())
-				continue;
-			addDependentBundles(bundles[i], reachable);
-		}
-		return (BundleDescription[]) reachable.toArray(new BundleDescription[reachable.size()]);
-	}
-
-	private void addDependentBundles(BundleDescription bundle, Set reachable) {
-		if (reachable.contains(bundle))
-			return;
-		reachable.add(bundle);
-		BundleDescription[] dependents = bundle.getDependents();
-		for (int i = 0; i < dependents.length; i++)
-			addDependentBundles(dependents[i], reachable);
-	}
-
-	public BundleDescription[] getPrerequisites(BundleDescription[] bundles) {
-		if (bundles == null || bundles.length == 0)
-			return new BundleDescription[0];
-		Set reachable = new HashSet(bundles.length);
-		for (int i = 0; i < bundles.length; i++)
-			addPrerequisites(bundles[i], reachable);
-		return (BundleDescription[]) reachable.toArray(new BundleDescription[reachable.size()]);
-	}
-
-	private void addPrerequisites(BundleDescription bundle, Set reachable) {
-		if (reachable.contains(bundle))
-			return;
-		reachable.add(bundle);
-		List depList = ((BundleDescriptionImpl) bundle).getBundleDependencies();
-		BundleDescription[] dependencies = (BundleDescription[]) depList.toArray(new BundleDescription[depList.size()]);
-		for (int i = 0; i < dependencies.length; i++)
-			addPrerequisites(dependencies[i], reachable);
-	}
-
-	private Map getExportedPackageMap(State state) {
-		Map result = new HashMap(11);
-		BundleDescription[] bundles = state.getBundles();
-		for (int i = 0; i < bundles.length; i++) {
-			ExportPackageDescription[] packages = bundles[i].getExportPackages();
-			for (int j = 0; j < packages.length; j++) {
-				ExportPackageDescription description = packages[j];
-				Set exports = (Set) result.get(description.getName());
-				if (exports == null) {
-					exports = new HashSet(1);
-					result.put(description.getName(), exports);
-				}
-				exports.add(description);
-			}
-		}
-		return result;
-	}
-
-	private Map getGenericsMap(State state, boolean resolved) {
-		Map result = new HashMap(11);
-		BundleDescription[] bundles = state.getBundles();
-		for (int i = 0; i < bundles.length; i++) {
-			if (resolved && !bundles[i].isResolved())
-				continue; // discard unresolved bundles
-			GenericDescription[] generics = bundles[i].getGenericCapabilities();
-			for (int j = 0; j < generics.length; j++) {
-				GenericDescription description = generics[j];
-				Set genericSet = (Set) result.get(description.getName());
-				if (genericSet == null) {
-					genericSet = new HashSet(1);
-					result.put(description.getName(), genericSet);
-				}
-				genericSet.add(description);
-			}
-		}
-		return result;
-	}
-
-	private VersionConstraint[] getUnsatisfiedLeaves(State state, BundleDescription[] bundles) {
-		Map packages = getExportedPackageMap(state);
-		Map generics = getGenericsMap(state, false);
-		HashSet result = new HashSet(11);
-		ArrayList bundleList = new ArrayList(bundles.length);
-		for (int i = 0; i < bundles.length; i++)
-			bundleList.add(bundles[i]);
-		for (int i = 0; i < bundleList.size(); i++) {
-			BundleDescription description = (BundleDescription) bundleList.get(i);
-			VersionConstraint[] constraints = getUnsatisfiedConstraints(description);
-			for (int j = 0; j < constraints.length; j++) {
-				VersionConstraint constraint = constraints[j];
-				BaseDescription satisfied = null;
-				if (constraint instanceof BundleSpecification || constraint instanceof HostSpecification) {
-					BundleDescription[] suppliers = state.getBundles(constraint.getName());
-					for (int k = 0; k < suppliers.length && satisfied == null; k++)
-						satisfied = constraint.isSatisfiedBy(suppliers[k]) ? suppliers[k] : null;
-				} else if (constraint instanceof ImportPackageSpecification) {
-					Set exports = (Set) packages.get(constraint.getName());
-					if (exports != null)
-						for (Iterator iter = exports.iterator(); iter.hasNext() && satisfied == null;) {
-							ExportPackageDescription exportDesc = (ExportPackageDescription) iter.next();
-							satisfied = constraint.isSatisfiedBy(exportDesc) ? exportDesc : null;
-						}
-				} else if (constraint instanceof GenericSpecification) {
-					Set genericSet = (Set) generics.get(constraint.getName());
-					if (genericSet != null)
-						for (Iterator iter = genericSet.iterator(); iter.hasNext() && satisfied == null;) {
-							GenericDescription genDesc = (GenericDescription) iter.next();
-							satisfied = constraint.isSatisfiedBy(genDesc) ? genDesc : null;
-						}
-				}
-				if (satisfied == null)
-					result.add(constraint);
-				else if (!satisfied.getSupplier().isResolved() && !bundleList.contains(satisfied.getSupplier()))
-					bundleList.add(satisfied.getSupplier());
-			}
-		}
-		return (VersionConstraint[]) result.toArray(new VersionConstraint[result.size()]);
-
-	}
-
-	public VersionConstraint[] getUnsatisfiedLeaves(BundleDescription[] bundles) {
-		if (bundles.length == 0)
-			return new VersionConstraint[0];
-		State state = bundles[0].getContainingState();
-		return getUnsatisfiedLeaves(state, bundles);
-	}
-
-	/**
-	 * @see StateHelper
-	 */
-	public VersionConstraint[] getUnsatisfiedConstraints(BundleDescription bundle) {
-		State containingState = bundle.getContainingState();
-		if (containingState == null)
-			// it is a bug in the client to call this method when not attached to a state
-			throw new IllegalStateException("Does not belong to a state"); //$NON-NLS-1$		
-		List unsatisfied = new ArrayList();
-		HostSpecification host = bundle.getHost();
-		if (host != null)
-			if (!host.isResolved() && !isResolvable(host))
-				unsatisfied.add(host);
-		BundleSpecification[] requiredBundles = bundle.getRequiredBundles();
-		for (int i = 0; i < requiredBundles.length; i++)
-			if (!requiredBundles[i].isResolved() && !isResolvable(requiredBundles[i]))
-				unsatisfied.add(requiredBundles[i]);
-		ImportPackageSpecification[] packages = bundle.getImportPackages();
-		for (int i = 0; i < packages.length; i++)
-			if (!packages[i].isResolved() && !isResolvable(packages[i]))
-				unsatisfied.add(packages[i]);
-		GenericSpecification[] generics = bundle.getGenericRequires();
-		for (int i = 0; i < generics.length; i++)
-			if (!generics[i].isResolved() && !isResolvable(generics[i]))
-				unsatisfied.add(generics[i]);
-		NativeCodeSpecification nativeCode = bundle.getNativeCodeSpecification();
-		if (nativeCode != null && !nativeCode.isResolved())
-			unsatisfied.add(nativeCode);
-		return (VersionConstraint[]) unsatisfied.toArray(new VersionConstraint[unsatisfied.size()]);
-	}
-
-	/**
-	 * @see StateHelper
-	 */
-	public boolean isResolvable(ImportPackageSpecification constraint) {
-		ExportPackageDescription[] exports = constraint.getBundle().getContainingState().getExportedPackages();
-		for (int i = 0; i < exports.length; i++)
-			if (constraint.isSatisfiedBy(exports[i]))
-				return true;
-		return false;
-	}
-
-	private boolean isResolvable(GenericSpecification constraint) {
-		Map genericCapabilities = getGenericsMap(constraint.getBundle().getContainingState(), true);
-		Set genericSet = (Set) genericCapabilities.get(constraint.getName());
-		if (genericSet == null)
-			return false;
-		for (Iterator iter = genericSet.iterator(); iter.hasNext();)
-			if (constraint.isSatisfiedBy((GenericDescription) iter.next()))
-				return true;
-		return false;
-	}
-
-	/**
-	 * @see StateHelper
-	 */
-	public boolean isResolvable(BundleSpecification specification) {
-		return isBundleConstraintResolvable(specification);
-	}
-
-	/**
-	 * @see StateHelper
-	 */
-	public boolean isResolvable(HostSpecification specification) {
-		return isBundleConstraintResolvable(specification);
-	}
-
-	/*
-	 * Returns whether a bundle specification/host specification can be resolved.
-	 */
-	private boolean isBundleConstraintResolvable(VersionConstraint constraint) {
-		BundleDescription[] availableBundles = constraint.getBundle().getContainingState().getBundles(constraint.getName());
-		for (int i = 0; i < availableBundles.length; i++)
-			if (availableBundles[i].isResolved() && constraint.isSatisfiedBy(availableBundles[i]))
-				return true;
-		return false;
-	}
-
-	public Object[][] sortBundles(BundleDescription[] toSort) {
-		List references = new ArrayList(toSort.length);
-		for (int i = 0; i < toSort.length; i++)
-			if (toSort[i].isResolved())
-				buildReferences(toSort[i], references);
-		Object[][] cycles = ComputeNodeOrder.computeNodeOrder(toSort, (Object[][]) references.toArray(new Object[references.size()][]));
-		if (cycles.length == 0)
-			return cycles;
-		// fix up host/fragment orders (bug 184127)
-		for (int i = 0; i < cycles.length; i++) {
-			for (int j = 0; j < cycles[i].length; j++) {
-				BundleDescription fragment = (BundleDescription) cycles[i][j];
-				if (fragment.getHost() == null)
-					continue;
-				BundleDescription host = (BundleDescription) fragment.getHost().getSupplier();
-				if (host == null)
-					continue;
-				fixFragmentOrder(host, fragment, toSort);
-			}
-		}
-		return cycles;
-	}
-
-	private void fixFragmentOrder(BundleDescription host, BundleDescription fragment, BundleDescription[] toSort) {
-		int hostIndex = -1;
-		int fragIndex = -1;
-		for (int i = 0; i < toSort.length && (hostIndex == -1 || fragIndex == -1); i++) {
-			if (toSort[i] == host)
-				hostIndex = i;
-			else if (toSort[i] == fragment)
-				fragIndex = i;
-		}
-		if (fragIndex > -1 && fragIndex < hostIndex) {
-			for (int i = fragIndex; i < hostIndex; i++)
-				toSort[i] = toSort[i + 1];
-			toSort[hostIndex] = fragment;
-		}
-	}
-
-	private void buildReferences(BundleDescription description, List references) {
-		HostSpecification host = description.getHost();
-		// it is a fragment
-		if (host != null) {
-			// just create a dependency between fragment and host
-			if (host.getHosts() != null) {
-				BundleDescription[] hosts = host.getHosts();
-				for (int i = 0; i < hosts.length; i++)
-					if (hosts[i] != description)
-						references.add(new Object[] {description, hosts[i]});
-			}
-		} else {
-			// it is a host
-			buildReferences(description, ((BundleDescriptionImpl) description).getBundleDependencies(), references);
-		}
-	}
-
-	private void buildReferences(BundleDescription description, List dependencies, List references) {
-		for (Iterator iter = dependencies.iterator(); iter.hasNext();)
-			addReference(description, (BundleDescription) iter.next(), references);
-	}
-
-	private void addReference(BundleDescription description, BundleDescription reference, List references) {
-		// build the reference from the description
-		if (description == reference || reference == null)
-			return;
-		BundleDescription[] fragments = reference.getFragments();
-		for (int i = 0; i < fragments.length; i++) {
-			if (fragments[i].isResolved()) {
-				ExportPackageDescription[] exports = fragments[i].getExportPackages();
-				if (exports.length > 0)
-					references.add(new Object[] {description, fragments[i]});
-			}
-		}
-		references.add(new Object[] {description, reference});
-	}
-
-	public ExportPackageDescription[] getVisiblePackages(BundleDescription bundle) {
-		return getVisiblePackages(bundle, 0);
-	}
-
-	public ExportPackageDescription[] getVisiblePackages(BundleDescription bundle, int options) {
-		StateImpl state = (StateImpl) bundle.getContainingState();
-		boolean strict = false;
-		if (state != null)
-			strict = state.inStrictMode();
-		BundleDescription host = (BundleDescription) (bundle.getHost() == null ? bundle : bundle.getHost().getSupplier());
-		ArrayList orderedPkgList = new ArrayList(); // list of all ExportPackageDescriptions that are visible (ArrayList is used to keep order)
-		Set pkgSet = new HashSet();
-		Set importList = new HashSet(); // list of package names which are directly imported
-		// get the list of directly imported packages first.
-		ImportsHolder imports = new ImportsHolder(bundle, options);
-		for (int i = 0; i < imports.getSize(); i++) {
-			ExportPackageDescription pkgSupplier = imports.getSupplier(i);
-			if (pkgSupplier == null || pkgSupplier.getExporter() == host) // do not return the bundle'sr own imports
-				continue;
-			if (!isSystemExport(pkgSupplier, options) && !pkgSet.contains(pkgSupplier)) {
-				orderedPkgList.add(pkgSupplier);
-				pkgSet.add(pkgSupplier);
-			}
-			// get the sources of the required bundles of the exporter
-			BundleSpecification[] requires = pkgSupplier.getExporter().getRequiredBundles();
-			Set visited = new HashSet();
-			visited.add(bundle); // always add self to prevent recursing into self
-			Set importNames = new HashSet(1);
-			importNames.add(imports.getName(i));
-			for (int j = 0; j < requires.length; j++) {
-				BundleDescription bundleSupplier = (BundleDescription) requires[j].getSupplier();
-				if (bundleSupplier != null)
-					getPackages(bundleSupplier, bundle.getSymbolicName(), importList, orderedPkgList, pkgSet, visited, strict, importNames, options);
-			}
-			importList.add(imports.getName(i)); // be sure to add to direct import list
-
-		}
-		// now find all the packages that are visible from required bundles
-		RequiresHolder requires = new RequiresHolder(bundle, options);
-		Set visited = new HashSet(requires.getSize());
-		visited.add(bundle); // always add self to prevent recursing into self
-		for (int i = 0; i < requires.getSize(); i++) {
-			BundleDescription bundleSupplier = requires.getSupplier(i);
-			if (bundleSupplier != null)
-				getPackages(bundleSupplier, bundle.getSymbolicName(), importList, orderedPkgList, pkgSet, visited, strict, null, options);
-		}
-		return (ExportPackageDescription[]) orderedPkgList.toArray(new ExportPackageDescription[orderedPkgList.size()]);
-	}
-
-	private void getPackages(BundleDescription requiredBundle, String symbolicName, Set importList, ArrayList orderedPkgList, Set pkgSet, Set visited, boolean strict, Set pkgNames, int options) {
-		if (visited.contains(requiredBundle))
-			return; // prevent duplicate entries and infinate loops incase of cycles
-		visited.add(requiredBundle);
-		// add all the exported packages from the required bundle; take x-friends into account.
-		ExportPackageDescription[] substitutedExports = requiredBundle.getSubstitutedExports();
-		ExportPackageDescription[] imports = requiredBundle.getResolvedImports();
-		Set substituteNames = null; // a temporary set used to scope packages we get from getPackages
-		for (int i = 0; i < substitutedExports.length; i++) {
-			if ((pkgNames == null || pkgNames.contains(substitutedExports[i].getName()))) {
-				for (int j = 0; j < imports.length; j++) {
-					if (substitutedExports[i].getName().equals(imports[j].getName()) && !pkgSet.contains(imports[j])) {
-						if (substituteNames == null)
-							substituteNames = new HashSet(1);
-						else
-							substituteNames.clear();
-						// substituteNames is a set of one package containing the single substitute we are trying to get the source for
-						substituteNames.add(substitutedExports[i].getName());
-						getPackages(imports[j].getSupplier(), symbolicName, importList, orderedPkgList, pkgSet, new HashSet(0), strict, substituteNames, options);
-					}
-				}
-			}
-		}
-		importList = substitutedExports.length == 0 ? importList : new HashSet(importList);
-		for (int i = 0; i < substitutedExports.length; i++)
-			// we add the package name to the import list to prevent required bundles from adding more sources
-			importList.add(substitutedExports[i].getName());
-
-		ExportPackageDescription[] exports = requiredBundle.getSelectedExports();
-		HashSet exportNames = new HashSet(exports.length); // set is used to improve performance of duplicate check.
-		for (int i = 0; i < exports.length; i++)
-			if ((pkgNames == null || pkgNames.contains(exports[i].getName())) && !isSystemExport(exports[i], options) && isFriend(symbolicName, exports[i], strict) && !importList.contains(exports[i].getName()) && !pkgSet.contains(exports[i])) {
-				if (!exportNames.contains(exports[i].getName())) {
-					// only add the first export
-					orderedPkgList.add(exports[i]);
-					pkgSet.add(exports[i]);
-					exportNames.add(exports[i].getName());
-				}
-			}
-		// now look for exports from the required bundle.
-		RequiresHolder requiredBundles = new RequiresHolder(requiredBundle, options);
-		for (int i = 0; i < requiredBundles.getSize(); i++) {
-			if (requiredBundles.getSupplier(i) == null)
-				continue;
-			if (requiredBundles.isExported(i)) {
-				// looking for a specific package and that package is exported by this bundle or adding all packages from a reexported bundle
-				getPackages(requiredBundles.getSupplier(i), symbolicName, importList, orderedPkgList, pkgSet, visited, strict, pkgNames, options);
-			} else if (exportNames.size() > 0) {
-				// adding any exports from required bundles which we also export
-				Set tmpVisited = new HashSet();
-				getPackages(requiredBundles.getSupplier(i), symbolicName, importList, orderedPkgList, pkgSet, tmpVisited, strict, exportNames, options);
-			}
-		}
-	}
-
-	private boolean isSystemExport(ExportPackageDescription export, int options) {
-		if ((options & VISIBLE_INCLUDE_EE_PACKAGES) != 0)
-			return false;
-		return ((Integer) export.getDirective(ExportPackageDescriptionImpl.EQUINOX_EE)).intValue() >= 0;
-	}
-
-	private boolean isFriend(String consumerBSN, ExportPackageDescription export, boolean strict) {
-		if (!strict)
-			return true; // ignore friends rules if not in strict mode
-		String[] friends = (String[]) export.getDirective(Constants.FRIENDS_DIRECTIVE);
-		if (friends == null)
-			return true; // no x-friends means it is wide open
-		for (int i = 0; i < friends.length; i++)
-			if (friends[i].equals(consumerBSN))
-				return true; // the consumer is a friend
-		return false;
-	}
-
-	public int getAccessCode(BundleDescription bundle, ExportPackageDescription export) {
-		if (((Boolean) export.getDirective(Constants.INTERNAL_DIRECTIVE)).booleanValue())
-			return ACCESS_DISCOURAGED;
-		if (!isFriend(bundle.getSymbolicName(), export, true)) // pass strict here so that x-friends is processed
-			return ACCESS_DISCOURAGED;
-		return ACCESS_ENCOURAGED;
-	}
-
-	public static StateHelper getInstance() {
-		return instance;
-	}
-
-}
-
-/*
- * This class is used to encapsulate the import packages of a bundle used by getVisiblePackages(). If the method is called with the option 
- * VISIBLE_INCLUDE_ALL_HOST_WIRES, it uses resolved import packages to find all visible packages by a bundle. Called without this option, 
- * it uses imported packages instead of resolved imported packages and does not consider resolved dynamic imports. 
- * ImportsHolder serves to hide which of these is used, so that the body of getVisiblePackages() does not become full of checks.
- * 
- */
-class ImportsHolder {
-	private final ImportPackageSpecification[] importedPackages;
-	private final ExportPackageDescription[] resolvedImports;
-	private final boolean isUsingResolved;
-
-	// Depending on the options used, either importedPackages or resolvedImports is initialize, but not both. 
-	ImportsHolder(BundleDescription bundle, int options) {
-		isUsingResolved = (options & StateHelper.VISIBLE_INCLUDE_ALL_HOST_WIRES) != 0;
-		if (isUsingResolved) {
-			importedPackages = null;
-			resolvedImports = bundle.getResolvedImports();
-		} else {
-			importedPackages = bundle.getImportPackages();
-			resolvedImports = null;
-		}
-	}
-
-	ExportPackageDescription getSupplier(int index) {
-		if (isUsingResolved)
-			return resolvedImports[index];
-		return (ExportPackageDescription) importedPackages[index].getSupplier();
-	}
-
-	String getName(int index) {
-		if (isUsingResolved)
-			return resolvedImports[index].getName();
-		return importedPackages[index].getName();
-	}
-
-	int getSize() {
-		if (isUsingResolved)
-			return resolvedImports.length;
-		return importedPackages.length;
-	}
-}
-
-/*
- * This class is used to encapsulate the required bundles by a bundle, used by getVisiblePackages(). If the method is called with the option 
- * VISIBLE_INCLUDE_ALL_HOST_WIRES, it uses resolved required bundles to find all visible packages by a bundle. Called without this option, 
- * it uses required bundles instead of resolved required bundles and does not consider the constraints from fragments. 
- * RequiresHolder serves to hide which of these is used.  
- */
-class RequiresHolder {
-	private final BundleSpecification[] requiredBundles;
-	private final BundleDescription[] resolvedRequires;
-	private final boolean isUsingResolved;
-	private final Map resolvedBundlesExported;
-
-	// Depending on the options used, either requiredBundles or resolvedRequires is initialize, but not both.
-	RequiresHolder(BundleDescription bundle, int options) {
-		isUsingResolved = (options & StateHelper.VISIBLE_INCLUDE_ALL_HOST_WIRES) != 0;
-		if (isUsingResolved) {
-			requiredBundles = null;
-			resolvedBundlesExported = new HashMap();
-			resolvedRequires = bundle.getResolvedRequires();
-			determineRequiresVisibility(bundle);
-		} else {
-			requiredBundles = bundle.getRequiredBundles();
-			resolvedBundlesExported = null;
-			resolvedRequires = null;
-		}
-	}
-
-	BundleDescription getSupplier(int index) {
-		if (isUsingResolved)
-			return resolvedRequires[index];
-		return (BundleDescription) requiredBundles[index].getSupplier();
-	}
-
-	boolean isExported(int index) {
-		if (isUsingResolved)
-			return ((Boolean) resolvedBundlesExported.get(resolvedRequires[index])).booleanValue();
-		return requiredBundles[index].isExported();
-	}
-
-	int getSize() {
-		if (isUsingResolved)
-			return resolvedRequires.length;
-		return requiredBundles.length;
-	}
-
-	/*
-	 * This method determines for all resolved required bundles if they are reexported.
-	 * Fragment bundles are also considered.
-	 */
-	private void determineRequiresVisibility(BundleDescription bundle) {
-		BundleSpecification[] required = bundle.getRequiredBundles();
-		HashSet resolved = new HashSet();
-
-		for (int i = 0; i < resolvedRequires.length; i++) {
-			resolved.add(resolvedRequires[i]);
-		}
-
-		// Get the visibility of all directly required bundles
-		for (int i = 0; i < required.length; i++) {
-			if (required[i].getSupplier() != null) {
-				resolvedBundlesExported.put(required[i].getSupplier(), new Boolean(required[i].isExported()));
-				resolved.remove(required[i].getSupplier());
-			}
-		}
-
-		BundleDescription[] fragments = bundle.getFragments();
-
-		// Get the visibility of resolved required bundles, which come from fragments
-		if (resolved.size() > 0) {
-			for (int i = 0; i < fragments.length; i++) {
-				BundleSpecification[] fragmentRequiredBundles = fragments[i].getRequiredBundles();
-				for (int j = 0; j < fragmentRequiredBundles.length; j++) {
-					if (resolved.contains(fragmentRequiredBundles[j].getSupplier())) {
-						resolvedBundlesExported.put(fragmentRequiredBundles[j].getSupplier(), new Boolean(fragmentRequiredBundles[j].isExported()));
-						resolved.remove(fragmentRequiredBundles[j].getSupplier());
-					}
-				}
-				if (resolved.size() == 0) {
-					break;
-				}
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateImpl.java
deleted file mode 100644
index 327c258..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateImpl.java
+++ /dev/null
@@ -1,1065 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.debug.FrameworkDebugOptions;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FilterImpl;
-import org.eclipse.osgi.framework.util.*;
-import org.eclipse.osgi.internal.baseadaptor.StateManager;
-import org.eclipse.osgi.internal.loader.BundleLoaderProxy;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public abstract class StateImpl implements State {
-	private static final String OSGI_OS = "osgi.os"; //$NON-NLS-1$
-	private static final String OSGI_WS = "osgi.ws"; //$NON-NLS-1$
-	private static final String OSGI_NL = "osgi.nl"; //$NON-NLS-1$
-	private static final String OSGI_ARCH = "osgi.arch"; //$NON-NLS-1$
-	public static final String[] PROPS = {OSGI_OS, OSGI_WS, OSGI_NL, OSGI_ARCH, Constants.FRAMEWORK_SYSTEMPACKAGES, Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA, Constants.OSGI_RESOLVER_MODE, Constants.FRAMEWORK_EXECUTIONENVIRONMENT, "osgi.resolveOptional", "osgi.genericAliases", Constants.FRAMEWORK_OS_NAME, Constants.FRAMEWORK_OS_VERSION, Constants.FRAMEWORK_PROCESSOR, Constants.FRAMEWORK_LANGUAGE, Constants.STATE_SYSTEM_BUNDLE}; //$NON-NLS-1$ //$NON-NLS-2$
-	private static final DisabledInfo[] EMPTY_DISABLEDINFOS = new DisabledInfo[0];
-
-	transient private Resolver resolver;
-	transient private StateDeltaImpl changes;
-	transient volatile private boolean resolving = false;
-	transient private HashSet removalPendings = new HashSet();
-
-	private volatile boolean resolved = true;
-	private volatile long timeStamp = System.currentTimeMillis();
-	private final KeyedHashSet bundleDescriptions = new KeyedHashSet(false);
-	private final HashMap resolverErrors = new HashMap();
-	private StateObjectFactory factory;
-	private final KeyedHashSet resolvedBundles = new KeyedHashSet();
-	private final HashMap disabledBundles = new HashMap();
-	private volatile boolean fullyLoaded = false;
-	private boolean dynamicCacheChanged = false;
-	// only used for lazy loading of BundleDescriptions
-	private StateReader reader;
-	private Dictionary[] platformProperties = {new Hashtable(PROPS.length)}; // Dictionary here because of Filter API
-	private long highestBundleId = -1;
-	private final HashSet platformPropertyKeys = new HashSet(PROPS.length);
-
-	private static long cumulativeTime;
-
-	private final Object monitor = new Object();
-
-	// to prevent extra-package instantiation 
-	protected StateImpl() {
-		// always add the default platform property keys.
-		addPlatformPropertyKeys(PROPS);
-	}
-
-	public boolean addBundle(BundleDescription description) {
-		synchronized (this.monitor) {
-			if (!basicAddBundle(description))
-				return false;
-			String platformFilter = description.getPlatformFilter();
-			if (platformFilter != null) {
-				try {
-					// add any new platform filter propery keys this bundle is using
-					FilterImpl filter = FilterImpl.newInstance(platformFilter);
-					addPlatformPropertyKeys(filter.getAttributes());
-				} catch (InvalidSyntaxException e) {
-					// ignore this is handled in another place
-				}
-			}
-			NativeCodeSpecification nativeCode = description.getNativeCodeSpecification();
-			if (nativeCode != null) {
-				NativeCodeDescription[] suppliers = nativeCode.getPossibleSuppliers();
-				for (int i = 0; i < suppliers.length; i++) {
-					FilterImpl filter = (FilterImpl) suppliers[i].getFilter();
-					if (filter != null)
-						addPlatformPropertyKeys(filter.getAttributes());
-				}
-			}
-			resolved = false;
-			getDelta().recordBundleAdded((BundleDescriptionImpl) description);
-			if (getSystemBundle().equals(description.getSymbolicName()))
-				resetSystemExports();
-			if (resolver != null)
-				resolver.bundleAdded(description);
-			updateTimeStamp();
-			return true;
-		}
-	}
-
-	public boolean updateBundle(BundleDescription newDescription) {
-		synchronized (this.monitor) {
-			BundleDescriptionImpl existing = (BundleDescriptionImpl) bundleDescriptions.get((BundleDescriptionImpl) newDescription);
-			if (existing == null)
-				return false;
-			if (!bundleDescriptions.remove(existing))
-				return false;
-			resolvedBundles.remove(existing);
-			ArrayList infos = (ArrayList) disabledBundles.remove(existing);
-			if (infos != null) {
-				ArrayList newInfos = new ArrayList(infos.size());
-				for (Iterator iInfos = infos.iterator(); iInfos.hasNext();) {
-					DisabledInfo info = (DisabledInfo) iInfos.next();
-					newInfos.add(new DisabledInfo(info.getPolicyName(), info.getMessage(), newDescription));
-				}
-				disabledBundles.put(newDescription, newInfos);
-			}
-			existing.setStateBit(BundleDescriptionImpl.REMOVAL_PENDING, true);
-			if (!basicAddBundle(newDescription))
-				return false;
-			resolved = false;
-			getDelta().recordBundleUpdated((BundleDescriptionImpl) newDescription);
-			if (getSystemBundle().equals(newDescription.getSymbolicName()))
-				resetSystemExports();
-			if (resolver != null) {
-				boolean pending = isInUse(existing);
-				resolver.bundleUpdated(newDescription, existing, pending);
-				if (pending) {
-					getDelta().recordBundleRemovalPending(existing);
-					removalPendings.add(existing);
-				} else {
-					// an existing bundle has been updated with no dependents it can safely be unresolved now
-					try {
-						resolving = true;
-						resolverErrors.remove(existing);
-						resolveBundle(existing, false, null, null, null, null, null);
-					} finally {
-						resolving = false;
-					}
-				}
-			}
-			updateTimeStamp();
-			return true;
-		}
-	}
-
-	public BundleDescription removeBundle(long bundleId) {
-		synchronized (this.monitor) {
-			BundleDescription toRemove = getBundle(bundleId);
-			if (toRemove == null || !removeBundle(toRemove))
-				return null;
-			return toRemove;
-		}
-	}
-
-	public boolean removeBundle(BundleDescription toRemove) {
-		synchronized (this.monitor) {
-			toRemove = (BundleDescription) bundleDescriptions.get((KeyedElement) toRemove);
-			if (toRemove == null || !bundleDescriptions.remove((KeyedElement) toRemove))
-				return false;
-			resolvedBundles.remove((KeyedElement) toRemove);
-			disabledBundles.remove(toRemove);
-			resolved = false;
-			getDelta().recordBundleRemoved((BundleDescriptionImpl) toRemove);
-			((BundleDescriptionImpl) toRemove).setStateBit(BundleDescriptionImpl.REMOVAL_PENDING, true);
-			if (resolver != null) {
-				boolean pending = isInUse(toRemove);
-				resolver.bundleRemoved(toRemove, pending);
-				if (pending) {
-					getDelta().recordBundleRemovalPending((BundleDescriptionImpl) toRemove);
-					removalPendings.add(toRemove);
-				} else {
-					// a bundle has been removed with no dependents it can safely be unresolved now
-					try {
-						resolving = true;
-						resolverErrors.remove(toRemove);
-						resolveBundle(toRemove, false, null, null, null, null, null);
-					} finally {
-						resolving = false;
-					}
-				}
-			}
-			updateTimeStamp();
-			return true;
-		}
-	}
-
-	private boolean isInUse(BundleDescription bundle) {
-		Object userObject = bundle.getUserObject();
-		if (userObject instanceof BundleLoaderProxy)
-			return ((BundleLoaderProxy) userObject).inUse();
-		return bundle.getDependents().length > 0;
-	}
-
-	public StateDelta getChanges() {
-		synchronized (this.monitor) {
-			return getDelta();
-		}
-	}
-
-	private StateDeltaImpl getDelta() {
-		if (changes == null)
-			changes = new StateDeltaImpl(this);
-		return changes;
-	}
-
-	public BundleDescription[] getBundles(String symbolicName) {
-		synchronized (this.monitor) {
-			if (Constants.SYSTEM_BUNDLE_SYMBOLICNAME.equals(symbolicName))
-				symbolicName = getSystemBundle();
-			final List bundles = new ArrayList();
-			for (Iterator iter = bundleDescriptions.iterator(); iter.hasNext();) {
-				BundleDescription bundle = (BundleDescription) iter.next();
-				if (symbolicName.equals(bundle.getSymbolicName()))
-					bundles.add(bundle);
-			}
-			return (BundleDescription[]) bundles.toArray(new BundleDescription[bundles.size()]);
-		}
-	}
-
-	public BundleDescription[] getBundles() {
-		synchronized (this.monitor) {
-			return (BundleDescription[]) bundleDescriptions.elements(new BundleDescription[bundleDescriptions.size()]);
-		}
-	}
-
-	public BundleDescription getBundle(long id) {
-		synchronized (this.monitor) {
-			BundleDescription result = (BundleDescription) bundleDescriptions.getByKey(new Long(id));
-			if (result != null)
-				return result;
-			// need to look in removal pending bundles;
-			for (Iterator iter = removalPendings.iterator(); iter.hasNext();) {
-				BundleDescription removedBundle = (BundleDescription) iter.next();
-				if (removedBundle.getBundleId() == id) // just return the first matching id
-					return removedBundle;
-			}
-			return null;
-		}
-	}
-
-	public BundleDescription getBundle(String name, Version version) {
-		synchronized (this.monitor) {
-			BundleDescription[] allBundles = getBundles(name);
-			if (allBundles.length == 1)
-				return version == null || allBundles[0].getVersion().equals(version) ? allBundles[0] : null;
-			if (allBundles.length == 0)
-				return null;
-			BundleDescription unresolvedFound = null;
-			BundleDescription resolvedFound = null;
-			for (int i = 0; i < allBundles.length; i++) {
-				BundleDescription current = allBundles[i];
-				BundleDescription base;
-
-				if (current.isResolved())
-					base = resolvedFound;
-				else
-					base = unresolvedFound;
-
-				if (version == null || current.getVersion().equals(version)) {
-					if (base != null && (base.getVersion().compareTo(current.getVersion()) <= 0 || base.getBundleId() > current.getBundleId())) {
-						if (base == resolvedFound)
-							resolvedFound = current;
-						else
-							unresolvedFound = current;
-					} else {
-						if (current.isResolved())
-							resolvedFound = current;
-						else
-							unresolvedFound = current;
-					}
-
-				}
-			}
-			if (resolvedFound != null)
-				return resolvedFound;
-			return unresolvedFound;
-		}
-	}
-
-	public long getTimeStamp() {
-		synchronized (this.monitor) {
-			return timeStamp;
-		}
-	}
-
-	public boolean isResolved() {
-		synchronized (this.monitor) {
-			return resolved || isEmpty();
-		}
-	}
-
-	public void resolveConstraint(VersionConstraint constraint, BaseDescription supplier) {
-		((VersionConstraintImpl) constraint).setSupplier(supplier);
-	}
-
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports) {
-		resolveBundle(bundle, status, hosts, selectedExports, null, resolvedRequires, resolvedImports);
-	}
-
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, ExportPackageDescription[] substitutedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports) {
-		synchronized (this.monitor) {
-			if (!resolving)
-				throw new IllegalStateException(); // TODO need error message here!
-			BundleDescriptionImpl modifiable = (BundleDescriptionImpl) bundle;
-			// must record the change before setting the resolve state to 
-			// accurately record if a change has happened.
-			getDelta().recordBundleResolved(modifiable, status);
-			// force the new resolution data to stay in memory; we will not read this from disk anymore
-			modifiable.setLazyLoaded(false);
-			modifiable.setStateBit(BundleDescriptionImpl.RESOLVED, status);
-			if (status) {
-				resolverErrors.remove(modifiable);
-				resolvedBundles.add(modifiable);
-			} else {
-				// remove the bundle from the resolved pool
-				resolvedBundles.remove(modifiable);
-				modifiable.removeDependencies();
-			}
-			// to support develoment mode we will resolveConstraints even if the resolve status == false
-			// we only do this if the resolved constraints are not null
-			if (selectedExports == null || resolvedRequires == null || resolvedImports == null)
-				unresolveConstraints(modifiable);
-			else
-				resolveConstraints(modifiable, hosts, selectedExports, substitutedExports, resolvedRequires, resolvedImports);
-		}
-	}
-
-	public void removeBundleComplete(BundleDescription bundle) {
-		synchronized (this.monitor) {
-			if (!resolving)
-				throw new IllegalStateException(); // TODO need error message here!
-			getDelta().recordBundleRemovalComplete((BundleDescriptionImpl) bundle);
-			removalPendings.remove(bundle);
-		}
-	}
-
-	private void resolveConstraints(BundleDescriptionImpl bundle, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, ExportPackageDescription[] substitutedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports) {
-		HostSpecificationImpl hostSpec = (HostSpecificationImpl) bundle.getHost();
-		if (hostSpec != null) {
-			if (hosts != null) {
-				hostSpec.setHosts(hosts);
-				for (int i = 0; i < hosts.length; i++) {
-					((BundleDescriptionImpl) hosts[i]).addDependency(bundle, true);
-					checkHostForSubstitutedExports((BundleDescriptionImpl) hosts[i], bundle);
-				}
-			}
-		}
-
-		bundle.setSelectedExports(selectedExports);
-		bundle.setResolvedRequires(resolvedRequires);
-		bundle.setResolvedImports(resolvedImports);
-		bundle.setSubstitutedExports(substitutedExports);
-
-		bundle.addDependencies(hosts, true);
-		bundle.addDependencies(resolvedRequires, true);
-		bundle.addDependencies(resolvedImports, true);
-		// add dependecies for generics
-		GenericSpecification[] genericRequires = bundle.getGenericRequires();
-		if (genericRequires.length > 0) {
-			ArrayList genericSuppliers = new ArrayList(genericRequires.length);
-			for (int i = 0; i < genericRequires.length; i++) {
-				GenericDescription[] suppliers = genericRequires[i].getSuppliers();
-				if (suppliers != null)
-					for (int j = 0; j < suppliers.length; j++)
-						genericSuppliers.add(suppliers[j]);
-			}
-			bundle.addDependencies((BaseDescription[]) genericSuppliers.toArray(new BaseDescription[genericSuppliers.size()]), true);
-		}
-	}
-
-	private void checkHostForSubstitutedExports(BundleDescriptionImpl host, BundleDescriptionImpl fragment) {
-		// TODO need to handle this case where a fragment has its own export substituted
-		// there are issues here because the order in which fragments are resolved is not always the same ...
-	}
-
-	//	private void checkForSubstitutedExports(BundleDescriptionImpl bundle, ExportPackageDescription[] selectedExports) {
-	//		ExportPackageDescription[] existingSubstitutes = bundle.getSubstitutedExports();
-	//		ExportPackageDescription[] declaredExports = bundle.getExportPackages();
-	//		ArrayList substitutes = new ArrayList();
-	//		for (int i = 0; i < declaredExports.length; i++) {
-	//			boolean selected = false;
-	//			for (int j = 0; !selected && j < selectedExports.length; j++)
-	//				selected = declaredExports[i] == selectedExports[j];
-	//			if (!selected)
-	//				substitutes.add(declaredExports[i]);
-	//		}
-	//		if (substitutes.size() > 0) {
-	//			substitutes.ensureCapacity(substitutes.size() + existingSubstitutes.length);
-	//			for (int i = 0; i < existingSubstitutes.length; i++)
-	//				substitutes.add(0, existingSubstitutes[i]);
-	//			bundle.setSubstitutedExports((ExportPackageDescription[]) substitutes.toArray(new ExportPackageDescription[substitutes.size()]));
-	//		}
-	//	}
-
-	private void unresolveConstraints(BundleDescriptionImpl bundle) {
-		HostSpecificationImpl host = (HostSpecificationImpl) bundle.getHost();
-		if (host != null)
-			host.setHosts(null);
-
-		bundle.setSelectedExports(null);
-		bundle.setResolvedImports(null);
-		bundle.setResolvedRequires(null);
-		bundle.setSubstitutedExports(null);
-
-		// remove the constraint suppliers
-		NativeCodeSpecificationImpl nativeCode = (NativeCodeSpecificationImpl) bundle.getNativeCodeSpecification();
-		if (nativeCode != null)
-			nativeCode.setSupplier(null);
-		ImportPackageSpecification[] imports = bundle.getImportPackages();
-		for (int i = 0; i < imports.length; i++)
-			((ImportPackageSpecificationImpl) imports[i]).setSupplier(null);
-		BundleSpecification[] requires = bundle.getRequiredBundles();
-		for (int i = 0; i < requires.length; i++)
-			((BundleSpecificationImpl) requires[i]).setSupplier(null);
-		GenericSpecification[] genericRequires = bundle.getGenericRequires();
-		if (genericRequires.length > 0)
-			for (int i = 0; i < genericRequires.length; i++)
-				((GenericSpecificationImpl) genericRequires[i]).setSupplers(null);
-
-		bundle.removeDependencies();
-	}
-
-	private StateDelta resolve(boolean incremental, BundleDescription[] reResolve) {
-		synchronized (this.monitor) {
-			try {
-				resolving = true;
-				if (resolver == null)
-					throw new IllegalStateException("no resolver set"); //$NON-NLS-1$
-				fullyLoad();
-				long start = 0;
-				if (StateManager.DEBUG_PLATFORM_ADMIN_RESOLVER)
-					start = System.currentTimeMillis();
-				if (!incremental) {
-					resolved = false;
-					reResolve = getBundles();
-					// need to get any removal pendings before flushing
-					if (removalPendings.size() > 0) {
-						BundleDescription[] removed = getRemovalPendings();
-						reResolve = mergeBundles(reResolve, removed);
-					}
-					flush(reResolve);
-				}
-				if (resolved && reResolve == null)
-					return new StateDeltaImpl(this);
-				if (removalPendings.size() > 0) {
-					BundleDescription[] removed = getRemovalPendings();
-					reResolve = mergeBundles(reResolve, removed);
-				}
-				// use the Headers class to handle ignoring case while matching keys (bug 180817)
-				Headers[] tmpPlatformProperties = new Headers[platformProperties.length];
-				for (int i = 0; i < platformProperties.length; i++) {
-					tmpPlatformProperties[i] = new Headers(platformProperties[i].size());
-					for (Enumeration keys = platformProperties[i].keys(); keys.hasMoreElements();) {
-						Object key = keys.nextElement();
-						tmpPlatformProperties[i].put(key, platformProperties[i].get(key));
-					}
-				}
-				resolver.resolve(reResolve, tmpPlatformProperties);
-				resolved = removalPendings.size() == 0;
-
-				StateDelta savedChanges = changes == null ? new StateDeltaImpl(this) : changes;
-				changes = new StateDeltaImpl(this);
-
-				if (StateManager.DEBUG_PLATFORM_ADMIN_RESOLVER) {
-					long time = System.currentTimeMillis() - start;
-					Debug.println("Time spent resolving: " + time); //$NON-NLS-1$
-					cumulativeTime = cumulativeTime + time;
-					FrameworkDebugOptions.getDefault().setOption("org.eclipse.core.runtime.adaptor/resolver/timing/value", Long.toString(cumulativeTime)); //$NON-NLS-1$
-				}
-				if (savedChanges.getChanges().length > 0)
-					updateTimeStamp();
-				return savedChanges;
-			} finally {
-				resolving = false;
-			}
-		}
-	}
-
-	private BundleDescription[] mergeBundles(BundleDescription[] reResolve, BundleDescription[] removed) {
-		if (reResolve == null)
-			return removed; // just return all the removed bundles
-		if (reResolve.length == 0)
-			return reResolve; // if reResolve length==0 then we want to prevent pending removal
-		// merge in all removal pending bundles that are not already in the list
-		ArrayList result = new ArrayList(reResolve.length + removed.length);
-		for (int i = 0; i < reResolve.length; i++)
-			result.add(reResolve[i]);
-		for (int i = 0; i < removed.length; i++) {
-			boolean found = false;
-			for (int j = 0; j < reResolve.length; j++) {
-				if (removed[i] == reResolve[j]) {
-					found = true;
-					break;
-				}
-			}
-			if (!found)
-				result.add(removed[i]);
-		}
-		return (BundleDescription[]) result.toArray(new BundleDescription[result.size()]);
-	}
-
-	private void flush(BundleDescription[] bundles) {
-		resolver.flush();
-		resolved = false;
-		resolverErrors.clear();
-		if (resolvedBundles.isEmpty())
-			return;
-		for (int i = 0; i < bundles.length; i++) {
-			resolveBundle(bundles[i], false, null, null, null, null, null);
-		}
-		resolvedBundles.clear();
-	}
-
-	public StateDelta resolve() {
-		return resolve(true, null);
-	}
-
-	public StateDelta resolve(boolean incremental) {
-		return resolve(incremental, null);
-	}
-
-	public StateDelta resolve(BundleDescription[] reResolve) {
-		return resolve(true, reResolve);
-	}
-
-	public void setOverrides(Object value) {
-		throw new UnsupportedOperationException();
-	}
-
-	public BundleDescription[] getResolvedBundles() {
-		synchronized (this.monitor) {
-			return (BundleDescription[]) resolvedBundles.elements(new BundleDescription[resolvedBundles.size()]);
-		}
-	}
-
-	public boolean isEmpty() {
-		synchronized (this.monitor) {
-			return bundleDescriptions.isEmpty();
-		}
-	}
-
-	void setResolved(boolean resolved) {
-		synchronized (this.monitor) {
-			this.resolved = resolved;
-		}
-	}
-
-	boolean basicAddBundle(BundleDescription description) {
-		synchronized (this.monitor) {
-			StateImpl origState = (StateImpl) description.getContainingState();
-			if (origState != null && origState != this) {
-				if (origState.removalPendings.contains(description))
-					throw new IllegalStateException(NLS.bind(StateMsg.BUNDLE_PENDING_REMOVE_STATE, description.toString()));
-				if (origState.getBundle(description.getBundleId()) == description)
-					throw new IllegalStateException(NLS.bind(StateMsg.BUNDLE_IN_OTHER_STATE, description.toString()));
-			}
-			((BundleDescriptionImpl) description).setContainingState(this);
-			((BundleDescriptionImpl) description).setStateBit(BundleDescriptionImpl.REMOVAL_PENDING, false);
-			if (bundleDescriptions.add((BundleDescriptionImpl) description)) {
-				if (description.getBundleId() > getHighestBundleId())
-					highestBundleId = description.getBundleId();
-				return true;
-			}
-			return false;
-		}
-	}
-
-	void addResolvedBundle(BundleDescriptionImpl resolvedBundle) {
-		synchronized (this.monitor) {
-			resolvedBundles.add(resolvedBundle);
-		}
-	}
-
-	public ExportPackageDescription[] getExportedPackages() {
-		fullyLoad();
-		final List allExportedPackages = new ArrayList();
-		for (Iterator iter = resolvedBundles.iterator(); iter.hasNext();) {
-			BundleDescription bundle = (BundleDescription) iter.next();
-			ExportPackageDescription[] bundlePackages = bundle.getSelectedExports();
-			if (bundlePackages == null)
-				continue;
-			for (int i = 0; i < bundlePackages.length; i++)
-				allExportedPackages.add(bundlePackages[i]);
-		}
-		for (Iterator iter = removalPendings.iterator(); iter.hasNext();) {
-			BundleDescription bundle = (BundleDescription) iter.next();
-			ExportPackageDescription[] bundlePackages = bundle.getSelectedExports();
-			if (bundlePackages == null)
-				continue;
-			for (int i = 0; i < bundlePackages.length; i++)
-				allExportedPackages.add(bundlePackages[i]);
-		}
-		return (ExportPackageDescription[]) allExportedPackages.toArray(new ExportPackageDescription[allExportedPackages.size()]);
-	}
-
-	BundleDescription[] getFragments(final BundleDescription host) {
-		final List fragments = new ArrayList();
-		for (Iterator iter = bundleDescriptions.iterator(); iter.hasNext();) {
-			BundleDescription bundle = (BundleDescription) iter.next();
-			HostSpecification hostSpec = bundle.getHost();
-
-			if (hostSpec != null) {
-				BundleDescription[] hosts = hostSpec.getHosts();
-				if (hosts != null)
-					for (int i = 0; i < hosts.length; i++)
-						if (hosts[i] == host) {
-							fragments.add(bundle);
-							break;
-						}
-			}
-		}
-		return (BundleDescription[]) fragments.toArray(new BundleDescription[fragments.size()]);
-	}
-
-	public void setTimeStamp(long newTimeStamp) {
-		synchronized (this.monitor) {
-			timeStamp = newTimeStamp;
-		}
-	}
-
-	private void updateTimeStamp() {
-		synchronized (this.monitor) {
-			if (getTimeStamp() == Long.MAX_VALUE)
-				setTimeStamp(0);
-			setTimeStamp(getTimeStamp() + 1);
-		}
-	}
-
-	public StateObjectFactory getFactory() {
-		return factory;
-	}
-
-	void setFactory(StateObjectFactory factory) {
-		this.factory = factory;
-	}
-
-	public BundleDescription getBundleByLocation(String location) {
-		synchronized (this.monitor) {
-			for (Iterator i = bundleDescriptions.iterator(); i.hasNext();) {
-				BundleDescription current = (BundleDescription) i.next();
-				if (location.equals(current.getLocation()))
-					return current;
-			}
-			return null;
-		}
-	}
-
-	public Resolver getResolver() {
-		synchronized (this.monitor) {
-			return resolver;
-		}
-	}
-
-	public void setResolver(Resolver newResolver) {
-		if (resolver == newResolver)
-			return;
-		if (resolver != null) {
-			Resolver oldResolver = resolver;
-			resolver = null;
-			oldResolver.setState(null);
-		}
-		synchronized (this.monitor) {
-			resolver = newResolver;
-		}
-		if (resolver == null)
-			return;
-		resolver.setState(this);
-	}
-
-	public boolean setPlatformProperties(Dictionary platformProperties) {
-		return setPlatformProperties(new Dictionary[] {platformProperties});
-	}
-
-	public boolean setPlatformProperties(Dictionary[] platformProperties) {
-		return setPlatformProperties(platformProperties, true);
-	}
-
-	synchronized boolean setPlatformProperties(Dictionary[] platformProperties, boolean resetSystemExports) {
-		if (platformProperties.length == 0)
-			throw new IllegalArgumentException();
-		// copy the properties for our use internally;
-		// only copy String and String[] values
-		Dictionary[] newPlatformProperties = new Dictionary[platformProperties.length];
-		for (int i = 0; i < platformProperties.length; i++) {
-			newPlatformProperties[i] = new Hashtable(platformProperties[i].size());
-			synchronized (platformProperties[i]) {
-				for (Enumeration keys = platformProperties[i].keys(); keys.hasMoreElements();) {
-					Object key = keys.nextElement();
-					Object value = platformProperties[i].get(key);
-					newPlatformProperties[i].put(key, value);
-				}
-			}
-			// make sure the bundle native code osgi properties have decent defaults
-			if (newPlatformProperties[i].get(Constants.FRAMEWORK_OS_NAME) == null && newPlatformProperties[i].get(OSGI_OS) != null)
-				newPlatformProperties[i].put(Constants.FRAMEWORK_OS_NAME, newPlatformProperties[i].get(OSGI_OS));
-			if (newPlatformProperties[i].get(Constants.FRAMEWORK_PROCESSOR) == null && newPlatformProperties[i].get(OSGI_ARCH) != null)
-				newPlatformProperties[i].put(Constants.FRAMEWORK_PROCESSOR, newPlatformProperties[i].get(OSGI_ARCH));
-			if (newPlatformProperties[i].get(Constants.FRAMEWORK_LANGUAGE) == null && newPlatformProperties[i].get(OSGI_NL) instanceof String) {
-				String osgiNL = (String) newPlatformProperties[i].get(OSGI_NL);
-				int idx = osgiNL.indexOf('_');
-				if (idx >= 0)
-					osgiNL = osgiNL.substring(0, idx);
-				newPlatformProperties[i].put(Constants.FRAMEWORK_LANGUAGE, osgiNL);
-			}
-
-		}
-		boolean result = false;
-		boolean performResetSystemExports = false;
-		if (this.platformProperties.length != newPlatformProperties.length) {
-			result = true;
-			performResetSystemExports = true;
-		} else {
-			// we need to see if any of the existing filter prop keys have changed
-			String[] keys = getPlatformPropertyKeys();
-			for (int i = 0; i < newPlatformProperties.length && !result; i++) {
-				result |= changedProps(this.platformProperties[i], newPlatformProperties[i], keys);
-				if (resetSystemExports) {
-					performResetSystemExports |= checkProp(this.platformProperties[i].get(Constants.FRAMEWORK_SYSTEMPACKAGES), newPlatformProperties[i].get(Constants.FRAMEWORK_SYSTEMPACKAGES));
-					performResetSystemExports |= checkProp(this.platformProperties[i].get(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA), newPlatformProperties[i].get(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA));
-					performResetSystemExports |= checkProp(this.platformProperties[i].get(Constants.SYSTEM_BUNDLE_SYMBOLICNAME), newPlatformProperties[i].get(Constants.SYSTEM_BUNDLE_SYMBOLICNAME));
-				}
-			}
-		}
-		// always do a complete replacement of the properties in case new bundles are added that uses new filter props
-		this.platformProperties = newPlatformProperties;
-		if (performResetSystemExports)
-			resetSystemExports();
-		return result;
-	}
-
-	private void resetSystemExports() {
-		BundleDescription[] systemBundles = getBundles(Constants.SYSTEM_BUNDLE_SYMBOLICNAME);
-		for (int idx = 0; idx < systemBundles.length; idx++) {
-			BundleDescriptionImpl systemBundle = (BundleDescriptionImpl) systemBundles[idx];
-			ExportPackageDescription[] exports = systemBundle.getExportPackages();
-			ArrayList newExports = new ArrayList(exports.length);
-			for (int i = 0; i < exports.length; i++)
-				if (((Integer) exports[i].getDirective(ExportPackageDescriptionImpl.EQUINOX_EE)).intValue() < 0)
-					newExports.add(exports[i]);
-			addSystemExports(newExports);
-			systemBundle.setExportPackages((ExportPackageDescription[]) newExports.toArray(new ExportPackageDescription[newExports.size()]));
-		}
-	}
-
-	private void addSystemExports(ArrayList exports) {
-		for (int i = 0; i < platformProperties.length; i++)
-			try {
-				addSystemExports(exports, ManifestElement.parseHeader(Constants.EXPORT_PACKAGE, (String) platformProperties[i].get(Constants.FRAMEWORK_SYSTEMPACKAGES)), i);
-				addSystemExports(exports, ManifestElement.parseHeader(Constants.EXPORT_PACKAGE, (String) platformProperties[i].get(Constants.FRAMEWORK_SYSTEMPACKAGES_EXTRA)), i);
-			} catch (BundleException e) {
-				// TODO consider throwing this... 
-			}
-	}
-
-	private void addSystemExports(ArrayList exports, ManifestElement[] elements, int index) throws BundleException {
-		if (elements == null)
-			return;
-		ExportPackageDescription[] systemExports = StateBuilder.createExportPackages(elements, null, null, 2, false);
-		Integer profInx = new Integer(index);
-		for (int j = 0; j < systemExports.length; j++) {
-			((ExportPackageDescriptionImpl) systemExports[j]).setDirective(ExportPackageDescriptionImpl.EQUINOX_EE, profInx);
-			exports.add(systemExports[j]);
-		}
-	}
-
-	public Dictionary[] getPlatformProperties() {
-		return platformProperties;
-	}
-
-	private boolean checkProp(Object origObj, Object newObj) {
-		if ((origObj == null && newObj != null) || (origObj != null && newObj == null))
-			return true;
-		if (origObj == null)
-			return false;
-		if (origObj.getClass() != newObj.getClass())
-			return true;
-		if (origObj instanceof String[]) {
-			String[] origProps = (String[]) origObj;
-			String[] newProps = (String[]) newObj;
-			if (origProps.length != newProps.length)
-				return true;
-			for (int i = 0; i < origProps.length; i++) {
-				if (!origProps[i].equals(newProps[i]))
-					return true;
-			}
-			return false;
-		}
-		return !origObj.equals(newObj);
-	}
-
-	private boolean changedProps(Dictionary origProps, Dictionary newProps, String[] keys) {
-		for (int i = 0; i < keys.length; i++) {
-			Object origProp = origProps.get(keys[i]);
-			Object newProp = newProps.get(keys[i]);
-			if (checkProp(origProp, newProp))
-				return true;
-		}
-		return false;
-	}
-
-	public String getSystemBundle() {
-		String symbolicName = null;
-		if (platformProperties != null && platformProperties.length > 0)
-			symbolicName = (String) platformProperties[0].get(Constants.STATE_SYSTEM_BUNDLE);
-		return symbolicName != null ? symbolicName : Constants.getInternalSymbolicName();
-	}
-
-	/**
-	 * Returns the latest versions BundleDescriptions which have old removal pending versions.
-	 * @return the BundleDescriptions that have removal pending versions.
-	 */
-	public BundleDescription[] getRemovalPendings() {
-		synchronized (this.monitor) {
-			Iterator removed = removalPendings.iterator();
-			BundleDescription[] result = new BundleDescription[removalPendings.size()];
-			int i = 0;
-			while (removed.hasNext())
-				// we return the latest version of the description if it is still contained in the state (bug 287636)
-				result[i++] = getBundle(((BundleDescription) removed.next()).getBundleId());
-			return result;
-		}
-	}
-
-	public ExportPackageDescription linkDynamicImport(BundleDescription importingBundle, String requestedPackage) {
-		if (resolver == null)
-			throw new IllegalStateException("no resolver set"); //$NON-NLS-1$
-		BundleDescriptionImpl importer = (BundleDescriptionImpl) importingBundle;
-		if (importer.getDynamicStamp(requestedPackage) == getTimeStamp())
-			return null;
-		fullyLoad();
-		synchronized (this.monitor) {
-			try {
-				resolving = true;
-				// ask the resolver to resolve our dynamic import
-				ExportPackageDescriptionImpl result = (ExportPackageDescriptionImpl) resolver.resolveDynamicImport(importingBundle, requestedPackage);
-				if (result == null)
-					importer.setDynamicStamp(requestedPackage, new Long(getTimeStamp()));
-				else {
-					importer.setDynamicStamp(requestedPackage, null); // remove any cached timestamp
-					// need to add the result to the list of resolved imports
-					importer.addDynamicResolvedImport(result);
-				}
-				setDynamicCacheChanged(true);
-				return result;
-			} finally {
-				resolving = false;
-			}
-		}
-
-	}
-
-	void setReader(StateReader reader) {
-		synchronized (this.monitor) {
-			this.reader = reader;
-		}
-	}
-
-	StateReader getReader() {
-		synchronized (this.monitor) {
-			return reader;
-		}
-	}
-
-	// not synchronized on this to prevent deadlock
-	public final void fullyLoad() {
-		// TODO add back if ee min 1.2 adds holdsLock method
-		//if (Thread.holdsLock(this.monitor)) {
-		//	throw new IllegalStateException("Should not call fullyLoad() holding monitor."); //$NON-NLS-1$
-		//}
-		if (reader == null)
-			return;
-		synchronized (reader) {
-			if (fullyLoaded == true)
-				return;
-			if (reader.isLazyLoaded())
-				reader.fullyLoad();
-			fullyLoaded = true;
-		}
-	}
-
-	// not synchronized on this to prevent deadlock
-	public final void unloadLazyData() {
-		// make sure no other thread is trying to unload or load
-		synchronized (reader) {
-			if (reader.getAccessedFlag()) {
-				reader.setAccessedFlag(false); // reset accessed flag
-				return;
-			}
-			fullyLoaded = false;
-			BundleDescription[] bundles = getBundles();
-			for (int i = 0; i < bundles.length; i++)
-				((BundleDescriptionImpl) bundles[i]).unload();
-			reader.flushLazyObjectCache();
-		}
-	}
-
-	public ExportPackageDescription[] getSystemPackages() {
-		synchronized (this.monitor) {
-			ArrayList result = new ArrayList();
-			BundleDescription[] systemBundles = getBundles(Constants.SYSTEM_BUNDLE_SYMBOLICNAME);
-			if (systemBundles.length > 0) {
-				BundleDescriptionImpl systemBundle = (BundleDescriptionImpl) systemBundles[0];
-				ExportPackageDescription[] exports = systemBundle.getExportPackages();
-				for (int i = 0; i < exports.length; i++)
-					if (((Integer) exports[i].getDirective(ExportPackageDescriptionImpl.EQUINOX_EE)).intValue() >= 0)
-						result.add(exports[i]);
-			}
-			return (ExportPackageDescription[]) result.toArray(new ExportPackageDescription[result.size()]);
-		}
-	}
-
-	boolean inStrictMode() {
-		synchronized (this.monitor) {
-			return Constants.STRICT_MODE.equals(getPlatformProperties()[0].get(Constants.OSGI_RESOLVER_MODE));
-		}
-	}
-
-	public ResolverError[] getResolverErrors(BundleDescription bundle) {
-		synchronized (this.monitor) {
-			if (bundle.isResolved())
-				return new ResolverError[0];
-			ArrayList result = (ArrayList) resolverErrors.get(bundle);
-			return result == null ? new ResolverError[0] : (ResolverError[]) result.toArray(new ResolverError[result.size()]);
-		}
-	}
-
-	public void addResolverError(BundleDescription bundle, int type, String data, VersionConstraint unsatisfied) {
-		synchronized (this.monitor) {
-			if (!resolving)
-				throw new IllegalStateException(); // TODO need error message here!
-			ArrayList errors = (ArrayList) resolverErrors.get(bundle);
-			if (errors == null) {
-				errors = new ArrayList(1);
-				resolverErrors.put(bundle, errors);
-			}
-			errors.add(new ResolverErrorImpl((BundleDescriptionImpl) bundle, type, data, unsatisfied));
-		}
-	}
-
-	public void removeResolverErrors(BundleDescription bundle) {
-		synchronized (this.monitor) {
-			if (!resolving)
-				throw new IllegalStateException(); // TODO need error message here!
-			resolverErrors.remove(bundle);
-		}
-	}
-
-	public boolean dynamicCacheChanged() {
-		synchronized (this.monitor) {
-			return dynamicCacheChanged;
-		}
-	}
-
-	void setDynamicCacheChanged(boolean dynamicCacheChanged) {
-		synchronized (this.monitor) {
-			this.dynamicCacheChanged = dynamicCacheChanged;
-		}
-	}
-
-	public StateHelper getStateHelper() {
-		return StateHelperImpl.getInstance();
-	}
-
-	void addPlatformPropertyKeys(String[] keys) {
-		synchronized (platformPropertyKeys) {
-			for (int i = 0; i < keys.length; i++)
-				if (!platformPropertyKeys.contains(keys[i]))
-					platformPropertyKeys.add(keys[i]);
-		}
-	}
-
-	String[] getPlatformPropertyKeys() {
-		synchronized (platformPropertyKeys) {
-			return (String[]) platformPropertyKeys.toArray(new String[platformPropertyKeys.size()]);
-		}
-	}
-
-	public long getHighestBundleId() {
-		synchronized (this.monitor) {
-			return highestBundleId;
-		}
-	}
-
-	public void setNativePathsInvalid(NativeCodeDescription nativeCodeDescription, boolean hasInvalidNativePaths) {
-		((NativeCodeDescriptionImpl) nativeCodeDescription).setInvalidNativePaths(hasInvalidNativePaths);
-	}
-
-	public BundleDescription[] getDisabledBundles() {
-		synchronized (this.monitor) {
-			return (BundleDescription[]) disabledBundles.keySet().toArray(new BundleDescription[0]);
-		}
-	}
-
-	public void addDisabledInfo(DisabledInfo disabledInfo) {
-		synchronized (this.monitor) {
-			if (getBundle(disabledInfo.getBundle().getBundleId()) != disabledInfo.getBundle())
-				throw new IllegalArgumentException(NLS.bind(StateMsg.BUNDLE_NOT_IN_STATE, disabledInfo.getBundle()));
-			ArrayList currentInfos = (ArrayList) disabledBundles.get(disabledInfo.getBundle());
-			if (currentInfos == null) {
-				currentInfos = new ArrayList(1);
-				currentInfos.add(disabledInfo);
-				disabledBundles.put(disabledInfo.getBundle(), currentInfos);
-			} else {
-				Iterator it = currentInfos.iterator();
-				while (it.hasNext()) {
-					DisabledInfo currentInfo = (DisabledInfo) it.next();
-					if (disabledInfo.getPolicyName().equals(currentInfo.getPolicyName())) {
-						currentInfos.remove(currentInfo);
-						break;
-					}
-				}
-				currentInfos.add(disabledInfo);
-			}
-			updateTimeStamp();
-		}
-	}
-
-	public void removeDisabledInfo(DisabledInfo disabledInfo) {
-		synchronized (this.monitor) {
-			ArrayList currentInfos = (ArrayList) disabledBundles.get(disabledInfo.getBundle());
-			if ((currentInfos != null) && currentInfos.contains(disabledInfo)) {
-				currentInfos.remove(disabledInfo);
-				if (currentInfos.isEmpty()) {
-					disabledBundles.remove(disabledInfo.getBundle());
-				}
-			}
-			updateTimeStamp();
-		}
-	}
-
-	public DisabledInfo getDisabledInfo(BundleDescription bundle, String policyName) {
-		synchronized (this.monitor) {
-			ArrayList currentInfos = (ArrayList) disabledBundles.get(bundle);
-			if (currentInfos == null)
-				return null;
-			Iterator it = currentInfos.iterator();
-			while (it.hasNext()) {
-				DisabledInfo currentInfo = (DisabledInfo) it.next();
-				if (currentInfo.getPolicyName().equals(policyName)) {
-					return currentInfo;
-				}
-			}
-			return null;
-		}
-	}
-
-	public DisabledInfo[] getDisabledInfos(BundleDescription bundle) {
-		synchronized (this.monitor) {
-			ArrayList currentInfos = (ArrayList) disabledBundles.get(bundle);
-			return currentInfos == null ? EMPTY_DISABLEDINFOS : (DisabledInfo[]) currentInfos.toArray(new DisabledInfo[currentInfos.size()]);
-		}
-	}
-
-	/*
-	 * Used by StateWriter to get all the DisabledInfo objects to persist
-	 */
-	DisabledInfo[] getDisabledInfos() {
-		ArrayList results = new ArrayList();
-		synchronized (this.monitor) {
-			for (Iterator allDisabledInfos = disabledBundles.values().iterator(); allDisabledInfos.hasNext();)
-				results.addAll((Collection) allDisabledInfos.next());
-		}
-		return (DisabledInfo[]) results.toArray(new DisabledInfo[results.size()]);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMessages.properties b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMessages.properties
deleted file mode 100644
index f978eb0..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMessages.properties
+++ /dev/null
@@ -1,36 +0,0 @@
-###############################################################################
-# Copyright (c) 2004, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-#State/Resolver Messages for EN locale
-BUNDLE_NOT_IN_STATE=The bundle is not in the state: {0}
-BUNDLE_IN_OTHER_STATE=The bundle belongs to another state: {0}
-BUNDLE_PENDING_REMOVE_STATE = The bundle is pending remove in another state: {0}
-COMMIT_INVALID_TIMESTAMP=Cannot commit: invalid timestamp
-
-HEADER_REQUIRED=The \"{0}\" header must be specified
-HEADER_PACKAGE_DUPLICATES=Cannot import a package more than once \"{0}\"
-HEADER_PACKAGE_JAVA=Cannot specify java.* packages in Import/Export headers \"{0}\"
-HEADER_VERSION_ERROR=The attributes \"{0}\" and \"{1}\" must match
-HEADER_EXPORT_ATTR_ERROR=Specifying \"{0}\" in the \"{1}\" header is not permitted
-HEADER_DIRECTIVE_DUPLICATES=Duplicate directives are not permitted \"{0}\"
-HEADER_ATTRIBUTE_DUPLICATES=Duplicate attributes are not permitted \"{0}\"
-HEADER_EXTENSION_ERROR=Extension bundle is not a fragment to the system bundle \"{0}\"
-
-RES_ERROR_DISABLEDBUNDLE=The bundle is disabled: {0}
-RES_ERROR_MISSING_PERMISSION=Missing Permission: {0}
-RES_ERROR_MISSING_CONSTRAINT=Missing Constraint: {0}
-RES_ERROR_FRAGMENT_CONFLICT=Constraints from the fragment conflict with the host: {0}
-RES_ERROR_USES_CONFLICT=Package uses conflict: {0}
-RES_ERROR_SINGLETON_CONFLICT=Another singleton version selected: {0}
-RES_ERROR_PLATFORM_FILTER=Platform filter did not match: {0}
-RES_ERROR_NO_NATIVECODE_MATCH=No match found for native code: {0}
-RES_ERROR_NATIVECODE_PATH_INVALID=The native code paths cannot be found: {0}
-RES_ERROR_UNKNOWN=Unknown resolution error
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMsg.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMsg.java
deleted file mode 100644
index c0b4f36..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMsg.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.util.NLS;
-
-public class StateMsg extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.osgi.internal.resolver.StateMessages"; //$NON-NLS-1$
-
-	public static String BUNDLE_NOT_IN_STATE;
-	public static String BUNDLE_IN_OTHER_STATE;
-	public static String BUNDLE_PENDING_REMOVE_STATE;
-
-	public static String COMMIT_INVALID_TIMESTAMP;
-	public static String HEADER_REQUIRED;
-	public static String HEADER_PACKAGE_DUPLICATES;
-	public static String HEADER_PACKAGE_JAVA;
-	public static String HEADER_VERSION_ERROR;
-	public static String HEADER_EXPORT_ATTR_ERROR;
-	public static String HEADER_DIRECTIVE_DUPLICATES;
-	public static String HEADER_ATTRIBUTE_DUPLICATES;
-	public static String HEADER_EXTENSION_ERROR;
-
-	public static String RES_ERROR_DISABLEDBUNDLE;
-	public static String RES_ERROR_MISSING_PERMISSION;
-	public static String RES_ERROR_MISSING_CONSTRAINT;
-	public static String RES_ERROR_FRAGMENT_CONFLICT;
-	public static String RES_ERROR_USES_CONFLICT;
-	public static String RES_ERROR_SINGLETON_CONFLICT;
-	public static String RES_ERROR_PLATFORM_FILTER;
-	public static String RES_ERROR_NO_NATIVECODE_MATCH;
-	public static String RES_ERROR_NATIVECODE_PATH_INVALID;
-	public static String RES_ERROR_UNKNOWN;
-
-	static {
-		// initialize resource bundles
-		NLS.initializeMessages(BUNDLE_NAME, StateMsg.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateObjectFactoryImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateObjectFactoryImpl.java
deleted file mode 100644
index 7d2dcb5..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateObjectFactoryImpl.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.internal.module.ResolverImpl;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.storagemanager.StorageManager;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-
-public class StateObjectFactoryImpl implements StateObjectFactory {
-
-	/**
-	 * @deprecated
-	 */
-	public BundleDescription createBundleDescription(Dictionary manifest, String location, long id) throws BundleException {
-		return createBundleDescription(null, manifest, location, id);
-	}
-
-	public BundleDescription createBundleDescription(State state, Dictionary manifest, String location, long id) throws BundleException {
-		BundleDescriptionImpl result = (BundleDescriptionImpl) StateBuilder.createBundleDescription((StateImpl) state, manifest, location);
-		result.setBundleId(id);
-		return result;
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, String[] providedPackages, boolean singleton) {
-		return createBundleDescription(id, symbolicName, version, location, required, host, imports, exports, providedPackages, singleton, true, true, null, null, null, null);
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, String[] providedPackages, boolean singleton, boolean attachFragments, boolean dynamicFragments, String platformFilter, String executionEnvironment, GenericSpecification[] genericRequires, GenericDescription[] genericCapabilities) {
-		// bug 154137 we need to parse the executionEnvironment param; no need to check for null, ManifestElement does that for us.
-		return createBundleDescription(id, symbolicName, version, location, required, host, imports, exports, singleton, attachFragments, dynamicFragments, platformFilter, ManifestElement.getArrayFromList(executionEnvironment), genericRequires, genericCapabilities);
-	}
-
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, boolean singleton, boolean attachFragments, boolean dynamicFragments, String platformFilter, String[] executionEnvironments, GenericSpecification[] genericRequires, GenericDescription[] genericCapabilities) {
-		return createBundleDescription(id, symbolicName, version, location, required, host, imports, exports, singleton, attachFragments, dynamicFragments, platformFilter, executionEnvironments, genericRequires, genericCapabilities, null);
-	}
-
-	public BundleDescription createBundleDescription(long id, String symbolicName, Version version, String location, BundleSpecification[] required, HostSpecification host, ImportPackageSpecification[] imports, ExportPackageDescription[] exports, boolean singleton, boolean attachFragments, boolean dynamicFragments, String platformFilter, String[] executionEnvironments, GenericSpecification[] genericRequires, GenericDescription[] genericCapabilities, NativeCodeSpecification nativeCode) {
-		BundleDescriptionImpl bundle = new BundleDescriptionImpl();
-		bundle.setBundleId(id);
-		bundle.setSymbolicName(symbolicName);
-		bundle.setVersion(version);
-		bundle.setLocation(location);
-		bundle.setRequiredBundles(required);
-		bundle.setHost(host);
-		bundle.setImportPackages(imports);
-		bundle.setExportPackages(exports);
-		bundle.setStateBit(BundleDescriptionImpl.SINGLETON, singleton);
-		bundle.setStateBit(BundleDescriptionImpl.ATTACH_FRAGMENTS, attachFragments);
-		bundle.setStateBit(BundleDescriptionImpl.DYNAMIC_FRAGMENTS, dynamicFragments);
-		bundle.setPlatformFilter(platformFilter);
-		bundle.setExecutionEnvironments(executionEnvironments);
-		bundle.setGenericRequires(genericRequires);
-		bundle.setGenericCapabilities(genericCapabilities);
-		bundle.setNativeCodeSpecification(nativeCode);
-		return bundle;
-	}
-
-	public BundleDescription createBundleDescription(BundleDescription original) {
-		BundleDescriptionImpl bundle = new BundleDescriptionImpl();
-		bundle.setBundleId(original.getBundleId());
-		bundle.setSymbolicName(original.getSymbolicName());
-		bundle.setVersion(original.getVersion());
-		bundle.setLocation(original.getLocation());
-		BundleSpecification[] originalRequired = original.getRequiredBundles();
-		BundleSpecification[] newRequired = new BundleSpecification[originalRequired.length];
-		for (int i = 0; i < newRequired.length; i++)
-			newRequired[i] = createBundleSpecification(originalRequired[i]);
-		bundle.setRequiredBundles(newRequired);
-		ExportPackageDescription[] originalExports = original.getExportPackages();
-		ExportPackageDescription[] newExports = new ExportPackageDescription[originalExports.length];
-		for (int i = 0; i < newExports.length; i++)
-			newExports[i] = createExportPackageDescription(originalExports[i]);
-		bundle.setExportPackages(newExports);
-		ImportPackageSpecification[] originalImports = original.getImportPackages();
-		ImportPackageSpecification[] newImports = new ImportPackageSpecification[originalImports.length];
-		for (int i = 0; i < newImports.length; i++)
-			newImports[i] = createImportPackageSpecification(originalImports[i]);
-		bundle.setImportPackages(newImports);
-		if (original.getHost() != null)
-			bundle.setHost(createHostSpecification(original.getHost()));
-		bundle.setStateBit(BundleDescriptionImpl.SINGLETON, original.isSingleton());
-		bundle.setStateBit(BundleDescriptionImpl.ATTACH_FRAGMENTS, original.attachFragments());
-		bundle.setStateBit(BundleDescriptionImpl.DYNAMIC_FRAGMENTS, original.dynamicFragments());
-		bundle.setStateBit(BundleDescriptionImpl.HAS_DYNAMICIMPORT, original.hasDynamicImports());
-		bundle.setPlatformFilter(original.getPlatformFilter());
-		bundle.setExecutionEnvironments(original.getExecutionEnvironments());
-		bundle.setGenericCapabilities(createGenericCapabilities(original.getGenericCapabilities()));
-		bundle.setGenericRequires(createGenericRequires(original.getGenericRequires()));
-		bundle.setNativeCodeSpecification(createNativeCodeSpecification(original.getNativeCodeSpecification()));
-		return bundle;
-	}
-
-	private NativeCodeSpecification createNativeCodeSpecification(NativeCodeSpecification original) {
-		if (original == null)
-			return null;
-		NativeCodeSpecificationImpl result = new NativeCodeSpecificationImpl();
-		result.setName(original.getName());
-		result.setOptional(original.isOptional());
-		NativeCodeDescription[] originalDescriptions = original.getPossibleSuppliers();
-		NativeCodeDescriptionImpl[] newDescriptions = new NativeCodeDescriptionImpl[originalDescriptions.length];
-		for (int i = 0; i < originalDescriptions.length; i++) {
-			newDescriptions[i] = new NativeCodeDescriptionImpl();
-			newDescriptions[i].setName(originalDescriptions[i].getName());
-			newDescriptions[i].setNativePaths(originalDescriptions[i].getNativePaths());
-			newDescriptions[i].setProcessors(originalDescriptions[i].getProcessors());
-			newDescriptions[i].setOSNames(originalDescriptions[i].getOSNames());
-			newDescriptions[i].setOSVersions(originalDescriptions[i].getOSVersions());
-			newDescriptions[i].setLanguages(originalDescriptions[i].getLanguages());
-			try {
-				newDescriptions[i].setFilter(originalDescriptions[i].getFilter() == null ? null : originalDescriptions[i].getFilter().toString());
-			} catch (InvalidSyntaxException e) {
-				// this is already tested from the orginal filter
-			}
-		}
-		result.setPossibleSuppliers(newDescriptions);
-		return result;
-	}
-
-	private GenericDescription[] createGenericCapabilities(GenericDescription[] genericCapabilities) {
-		if (genericCapabilities == null || genericCapabilities.length == 0)
-			return null;
-		GenericDescription[] result = new GenericDescription[genericCapabilities.length];
-		for (int i = 0; i < genericCapabilities.length; i++) {
-			GenericDescriptionImpl cap = new GenericDescriptionImpl();
-			cap.setName(genericCapabilities[i].getName());
-			cap.setVersion(genericCapabilities[i].getVersion());
-			cap.setAttributes(genericCapabilities[i].getAttributes());
-			result[i] = cap;
-		}
-		return result;
-	}
-
-	private GenericSpecification[] createGenericRequires(GenericSpecification[] genericRequires) {
-		if (genericRequires == null || genericRequires.length == 0)
-			return null;
-		GenericSpecification[] result = new GenericSpecification[genericRequires.length];
-		for (int i = 0; i < genericRequires.length; i++) {
-			GenericSpecificationImpl req = new GenericSpecificationImpl();
-			req.setName(genericRequires[i].getName());
-			try {
-				req.setMatchingFilter(genericRequires[i].getMatchingFilter());
-			} catch (InvalidSyntaxException e) {
-				// do nothing; this filter should aready have been tested
-			}
-			result[i] = req;
-		}
-		return result;
-	}
-
-	public BundleSpecification createBundleSpecification(String requiredSymbolicName, VersionRange requiredVersionRange, boolean export, boolean optional) {
-		BundleSpecificationImpl bundleSpec = new BundleSpecificationImpl();
-		bundleSpec.setName(requiredSymbolicName);
-		bundleSpec.setVersionRange(requiredVersionRange);
-		bundleSpec.setExported(export);
-		bundleSpec.setOptional(optional);
-		return bundleSpec;
-	}
-
-	public BundleSpecification createBundleSpecification(BundleSpecification original) {
-		BundleSpecificationImpl bundleSpec = new BundleSpecificationImpl();
-		bundleSpec.setName(original.getName());
-		bundleSpec.setVersionRange(original.getVersionRange());
-		bundleSpec.setExported(original.isExported());
-		bundleSpec.setOptional(original.isOptional());
-		return bundleSpec;
-	}
-
-	public HostSpecification createHostSpecification(String hostSymbolicName, VersionRange versionRange) {
-		HostSpecificationImpl hostSpec = new HostSpecificationImpl();
-		hostSpec.setName(hostSymbolicName);
-		hostSpec.setVersionRange(versionRange);
-		return hostSpec;
-	}
-
-	public HostSpecification createHostSpecification(HostSpecification original) {
-		HostSpecificationImpl hostSpec = new HostSpecificationImpl();
-		hostSpec.setName(original.getName());
-		hostSpec.setVersionRange(original.getVersionRange());
-		return hostSpec;
-	}
-
-	public ImportPackageSpecification createImportPackageSpecification(String packageName, VersionRange versionRange, String bundleSymbolicName, VersionRange bundleVersionRange, Map directives, Map attributes, BundleDescription importer) {
-		ImportPackageSpecificationImpl packageSpec = new ImportPackageSpecificationImpl();
-		packageSpec.setName(packageName);
-		packageSpec.setVersionRange(versionRange);
-		packageSpec.setBundleSymbolicName(bundleSymbolicName);
-		packageSpec.setBundleVersionRange(bundleVersionRange);
-		packageSpec.setDirectives(directives);
-		packageSpec.setAttributes(attributes);
-		packageSpec.setBundle(importer);
-		return packageSpec;
-	}
-
-	public ImportPackageSpecification createImportPackageSpecification(ImportPackageSpecification original) {
-		ImportPackageSpecificationImpl packageSpec = new ImportPackageSpecificationImpl();
-		packageSpec.setName(original.getName());
-		packageSpec.setVersionRange(original.getVersionRange());
-		packageSpec.setBundleSymbolicName(original.getBundleSymbolicName());
-		packageSpec.setBundleVersionRange(original.getBundleVersionRange());
-		packageSpec.setDirectives(original.getDirectives());
-		packageSpec.setAttributes(original.getAttributes());
-		return packageSpec;
-	}
-
-	public ExportPackageDescription createExportPackageDescription(ExportPackageDescription original) {
-		return createExportPackageDescription(original.getName(), original.getVersion(), original.getDirectives(), original.getAttributes(), original.isRoot(), null);
-	}
-
-	public ExportPackageDescription createExportPackageDescription(String packageName, Version version, Map directives, Map attributes, boolean root, BundleDescription exporter) {
-		ExportPackageDescriptionImpl exportPackage = new ExportPackageDescriptionImpl();
-		exportPackage.setName(packageName);
-		exportPackage.setVersion(version);
-		exportPackage.setDirectives(directives);
-		exportPackage.setAttributes(attributes);
-		exportPackage.setExporter(exporter);
-		return exportPackage;
-	}
-
-	public GenericDescription createGenericDescription(String name, String type, Version version, Map attributes) {
-		GenericDescriptionImpl result = new GenericDescriptionImpl();
-		result.setName(name);
-		result.setType(type);
-		result.setVersion(version);
-		Object versionObj = attributes == null ? null : attributes.remove(Constants.VERSION_ATTRIBUTE);
-		if (versionObj instanceof Version) // this is just incase someone uses version:version as a key
-			result.setVersion((Version) versionObj);
-		Dictionary attrs = new Hashtable();
-		if (attributes != null)
-			for (Iterator keys = attributes.keySet().iterator(); keys.hasNext();) {
-				Object key = keys.next();
-				attrs.put(key, attributes.get(key));
-			}
-		result.setAttributes(attrs);
-		return result;
-	}
-
-	public GenericSpecification createGenericSpecification(String name, String type, String matchingFilter, boolean optional, boolean multiple) throws InvalidSyntaxException {
-		GenericSpecificationImpl result = new GenericSpecificationImpl();
-		result.setName(name);
-		result.setType(type);
-		result.setMatchingFilter(matchingFilter);
-		int resolution = 0;
-		if (optional)
-			resolution |= GenericSpecification.RESOLUTION_OPTIONAL;
-		if (multiple)
-			resolution |= GenericSpecification.RESOLUTION_MULTIPLE;
-		result.setResolution(resolution);
-		return result;
-	}
-
-	public NativeCodeDescription createNativeCodeDescription(String[] nativePaths, String[] processors, String[] osNames, VersionRange[] osVersions, String[] languages, String filter) throws InvalidSyntaxException {
-		NativeCodeDescriptionImpl result = new NativeCodeDescriptionImpl();
-		result.setName(Constants.BUNDLE_NATIVECODE);
-		result.setNativePaths(nativePaths);
-		result.setProcessors(processors);
-		result.setOSNames(osNames);
-		result.setOSVersions(osVersions);
-		result.setLanguages(languages);
-		result.setFilter(filter);
-		return result;
-	}
-
-	public NativeCodeSpecification createNativeCodeSpecification(NativeCodeDescription[] nativeCodeDescriptions, boolean optional) {
-		NativeCodeSpecificationImpl result = new NativeCodeSpecificationImpl();
-		result.setName(Constants.BUNDLE_NATIVECODE);
-		result.setOptional(optional);
-		result.setPossibleSuppliers(nativeCodeDescriptions);
-		return result;
-	}
-
-	public SystemState createSystemState() {
-		SystemState state = new SystemState();
-		state.setFactory(this);
-		return state;
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public State createState() {
-		return internalCreateState();
-	}
-
-	public State createState(boolean createResolver) {
-		State result = internalCreateState();
-		if (createResolver)
-			result.setResolver(new ResolverImpl(null, false));
-		return result;
-	}
-
-	public State createState(State original) {
-		StateImpl newState = internalCreateState();
-		newState.setTimeStamp(original.getTimeStamp());
-		BundleDescription[] bundles = original.getBundles();
-		for (int i = 0; i < bundles.length; i++) {
-			BundleDescription newBundle = createBundleDescription(bundles[i]);
-			newState.basicAddBundle(newBundle);
-			DisabledInfo[] infos = original.getDisabledInfos(bundles[i]);
-			for (int j = 0; j < infos.length; j++)
-				newState.addDisabledInfo(new DisabledInfo(infos[j].getPolicyName(), infos[j].getMessage(), newBundle));
-		}
-		newState.setResolved(false);
-		newState.setPlatformProperties(original.getPlatformProperties());
-		return newState;
-	}
-
-	private StateImpl internalCreateState() {
-		StateImpl state = new UserState();
-		state.setFactory(this);
-		return state;
-	}
-
-	public SystemState readSystemState(File stateFile, File lazyFile, boolean lazyLoad, long expectedTimeStamp) throws IOException {
-		StateReader reader = new StateReader(stateFile, lazyFile, lazyLoad);
-		SystemState restoredState = new SystemState();
-		restoredState.setReader(reader);
-		restoredState.setFactory(this);
-		if (!reader.loadState(restoredState, expectedTimeStamp))
-			return null;
-		return restoredState;
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public State readState(InputStream stream) throws IOException {
-		return internalReadStateDeprecated(internalCreateState(), new DataInputStream(stream), -1);
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public State readState(DataInputStream stream) throws IOException {
-		return internalReadStateDeprecated(internalCreateState(), stream, -1);
-	}
-
-	public State readState(File stateDirectory) throws IOException {
-		return internalReadState(internalCreateState(), stateDirectory, -1);
-	}
-
-	private State internalReadStateDeprecated(StateImpl toRestore, DataInputStream stream, long expectedTimestamp) throws IOException {
-		StateReader reader = new StateReader();
-		if (!reader.loadStateDeprecated(toRestore, stream, expectedTimestamp))
-			return null;
-		return toRestore;
-	}
-
-	private State internalReadState(StateImpl toRestore, File stateDirectory, long expectedTimestamp) throws IOException {
-		File stateFile = new File(stateDirectory, StateReader.STATE_FILE);
-		File lazyFile = new File(stateDirectory, StateReader.LAZY_FILE);
-		if (!stateFile.exists() || !lazyFile.exists()) {
-			StorageManager storageManager = new StorageManager(stateDirectory, "none", true); //$NON-NLS-1$
-			try {
-				// if the directory is pointing at the configuration directory then the base files will not exist
-				storageManager.open(true);
-				// try using the storage manager to find the managed state files (bug 143255)
-				File managedState = storageManager.lookup(StateReader.STATE_FILE, false);
-				File managedLazy = storageManager.lookup(StateReader.LAZY_FILE, false);
-				if (managedState != null && managedLazy != null) {
-					stateFile = managedState;
-					lazyFile = managedLazy;
-				}
-			} finally {
-				storageManager.close();
-			}
-		}
-		StateReader reader = new StateReader(stateFile, lazyFile, false);
-		if (!reader.loadState(toRestore, expectedTimestamp))
-			return null;
-		return toRestore;
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public void writeState(State state, DataOutputStream stream) throws IOException {
-		internalWriteStateDeprecated(state, stream);
-	}
-
-	public void writeState(State state, File stateDirectory) throws IOException {
-		if (stateDirectory == null)
-			throw new IOException();
-		StateWriter writer = new StateWriter();
-		File stateFile = new File(stateDirectory, StateReader.STATE_FILE);
-		File lazyFile = new File(stateDirectory, StateReader.LAZY_FILE);
-		writer.saveState((StateImpl) state, stateFile, lazyFile);
-	}
-
-	/**
-	 * @deprecated
-	 */
-	public void writeState(State state, OutputStream stream) throws IOException {
-		internalWriteStateDeprecated(state, new DataOutputStream(stream));
-	}
-
-	public void writeState(State state, File stateFile, File lazyFile) throws IOException {
-		StateWriter writer = new StateWriter();
-		writer.saveState((StateImpl) state, stateFile, lazyFile);
-	}
-
-	public void internalWriteStateDeprecated(State state, DataOutputStream stream) throws IOException {
-		if (state.getFactory() != this)
-			throw new IllegalArgumentException();
-		StateWriter writer = new StateWriter();
-		writer.saveStateDeprecated((StateImpl) state, stream);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateReader.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateReader.java
deleted file mode 100644
index c279938..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateReader.java
+++ /dev/null
@@ -1,726 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.io.*;
-import java.lang.reflect.Constructor;
-import java.security.AccessController;
-import java.util.*;
-import java.util.Map.Entry;
-import org.eclipse.osgi.framework.util.ObjectPool;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.Version;
-
-/**
- * This class is internally threadsafe and supports client locking. Clients must <strong>not</strong> hold the monitor for
- * any {@link StateImpl} or {@link BundleDescriptionImpl} object when calling into the public methods of this class to prevent
- * possible deadlock.
- */
-final class StateReader {
-	public static final String STATE_FILE = ".state"; //$NON-NLS-1$
-	public static final String LAZY_FILE = ".lazy"; //$NON-NLS-1$
-	private static final int BUFFER_SIZE_LAZY = 4096;
-	private static final int BUFFER_SIZE_FULLYREAD = 16384;
-	private static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-
-	// objectTable will be a hashmap of objects. The objects will be things
-	// like BundleDescription, ExportPackageDescription, Version etc.. The integer
-	// index value will be used in the cache to allow cross-references in the
-	// cached state.
-	final Map objectTable = Collections.synchronizedMap(new HashMap());
-
-	private volatile File stateFile;
-	private volatile File lazyFile;
-
-	private volatile boolean lazyLoad = true;
-	private volatile int numBundles;
-	private volatile boolean accessedFlag = false;
-
-	public static final byte STATE_CACHE_VERSION = 30;
-	public static final byte NULL = 0;
-	public static final byte OBJECT = 1;
-	public static final byte INDEX = 2;
-
-	public StateReader() //TODO - deprecated
-	{
-		lazyLoad = false;
-	}
-
-	public StateReader(File stateDirectory) {
-		if (!stateDirectory.exists())
-			stateDirectory.mkdirs();
-		this.stateFile = new File(stateDirectory, STATE_FILE);
-		this.lazyFile = new File(stateDirectory, LAZY_FILE);
-		this.lazyLoad = false;
-	}
-
-	public StateReader(File stateFile, File lazyFile, boolean lazyLoad) {
-		this.stateFile = stateFile;
-		this.lazyFile = lazyFile;
-		this.lazyLoad = lazyLoad;
-	}
-
-	private void addToObjectTable(Object object, int index) {
-		objectTable.put(new Integer(index), object);
-	}
-
-	private Object getFromObjectTable(int index) {
-		return objectTable.get(new Integer(index));
-	}
-
-	private boolean readState(StateImpl state, long expectedTimestamp) throws IOException {
-		DataInputStream in = new DataInputStream(new BufferedInputStream(secureAction.getFileInputStream(stateFile), BUFFER_SIZE_FULLYREAD));
-		DataInputStream lazyIn = null;
-		try {
-			if (in.readByte() != STATE_CACHE_VERSION)
-				return false;
-			byte tag = readTag(in);
-			if (tag != OBJECT)
-				return false;
-			int index = in.readInt();
-			long timestampRead = in.readLong();
-			if (expectedTimestamp >= 0 && timestampRead != expectedTimestamp)
-				return false;
-			addToObjectTable(state, index);
-			// read the platform property keys
-			String[] platformPropKeys = (String[]) readPlatformProp(in);
-			state.addPlatformPropertyKeys(platformPropKeys);
-			int numSets = in.readInt();
-			Dictionary[] platformProps = new Dictionary[numSets];
-			for (int i = 0; i < numSets; i++) {
-				Hashtable props = new Hashtable(platformPropKeys.length);
-				int numProps = in.readInt();
-				for (int j = 0; j < numProps; j++) {
-					Object value = readPlatformProp(in);
-					if (value != null && j < platformPropKeys.length)
-						props.put(platformPropKeys[j], value);
-				}
-				platformProps[i] = props;
-			}
-			state.setPlatformProperties(platformProps, false);
-			numBundles = in.readInt();
-			for (int i = 0; i < numBundles; i++) {
-				BundleDescriptionImpl bundle = readBundleDescription(in);
-				state.basicAddBundle(bundle);
-				if (bundle.isResolved())
-					state.addResolvedBundle(bundle);
-			}
-			// read the DisabledInfos
-			int numDisableInfos = in.readInt();
-			for (int i = 0; i < numDisableInfos; i++) {
-				DisabledInfo info = readDisabledInfo(in);
-				state.addDisabledInfo(info);
-			}
-			state.setTimeStamp(timestampRead);
-			state.setResolved(in.readBoolean());
-			if (lazyLoad)
-				return true;
-			//read in from lazy data file; using the fully read buffer size because we are reading the complete file in.
-			lazyIn = new DataInputStream(new BufferedInputStream(secureAction.getFileInputStream(lazyFile), BUFFER_SIZE_FULLYREAD));
-			for (int i = 0; i < numBundles; i++)
-				readBundleDescriptionLazyData(lazyIn, 0);
-		} finally {
-			in.close();
-			if (lazyIn != null)
-				try {
-					lazyIn.close();
-				} catch (IOException e) {
-					// ignore
-				}
-		}
-		return true;
-	}
-
-	private boolean readStateDeprecated(StateImpl state, DataInputStream in, long expectedTimestamp) throws IOException {
-		if (in.readByte() != STATE_CACHE_VERSION)
-			return false;
-		byte tag = readTag(in);
-		if (tag != OBJECT)
-			return false;
-		int index = in.readInt();
-		long timestampRead = in.readLong();
-		if (expectedTimestamp >= 0 && timestampRead != expectedTimestamp)
-			return false;
-		addToObjectTable(state, index);
-		// read the platform property keys
-		String[] platformPropKeys = (String[]) readPlatformProp(in);
-		state.addPlatformPropertyKeys(platformPropKeys);
-		int numSets = in.readInt();
-		Dictionary[] platformProps = new Dictionary[numSets];
-		for (int i = 0; i < numSets; i++) {
-			Hashtable props = new Hashtable(platformPropKeys.length);
-			int numProps = in.readInt();
-			for (int j = 0; j < numProps; j++) {
-				Object value = readPlatformProp(in);
-				if (value != null && j < platformPropKeys.length)
-					props.put(platformPropKeys[j], value);
-			}
-			platformProps[i] = props;
-		}
-		state.setPlatformProperties(platformProps);
-		numBundles = in.readInt();
-		if (numBundles == 0)
-			return true;
-		for (int i = 0; i < numBundles; i++) {
-			BundleDescriptionImpl bundle = readBundleDescription(in);
-			state.basicAddBundle(bundle);
-			if (bundle.isResolved())
-				state.addResolvedBundle(bundle);
-		}
-		state.setTimeStamp(timestampRead);
-		state.setResolved(in.readBoolean());
-		in.readInt(); // skip past the old offset
-		if (lazyLoad)
-			return true;
-		for (int i = 0; i < numBundles; i++)
-			readBundleDescriptionLazyData(in, 0);
-		return true;
-	}
-
-	private Object readPlatformProp(DataInputStream in) throws IOException {
-		byte type = in.readByte();
-		if (type == NULL)
-			return null;
-		int num = in.readInt();
-		if (num == 1)
-			return readString(in, false);
-		String[] result = new String[num];
-		for (int i = 0; i < result.length; i++)
-			result[i] = readString(in, false);
-		return result;
-	}
-
-	private BundleDescriptionImpl readBundleDescription(DataInputStream in) throws IOException {
-		byte tag = readTag(in);
-		if (tag == NULL)
-			return null;
-		if (tag == INDEX)
-			return (BundleDescriptionImpl) getFromObjectTable(in.readInt());
-		// first read in non-lazy loaded data
-		BundleDescriptionImpl result = new BundleDescriptionImpl();
-		addToObjectTable(result, in.readInt());
-
-		result.setBundleId(in.readLong());
-		readBaseDescription(result, in);
-		result.setLazyDataOffset(in.readInt());
-		result.setLazyDataSize(in.readInt());
-		result.setStateBit(BundleDescriptionImpl.RESOLVED, in.readBoolean());
-		result.setStateBit(BundleDescriptionImpl.SINGLETON, in.readBoolean());
-		result.setStateBit(BundleDescriptionImpl.HAS_DYNAMICIMPORT, in.readBoolean());
-		result.setStateBit(BundleDescriptionImpl.ATTACH_FRAGMENTS, in.readBoolean());
-		result.setStateBit(BundleDescriptionImpl.DYNAMIC_FRAGMENTS, in.readBoolean());
-		result.setHost(readHostSpec(in));
-
-		// set the bundle dependencies from imports and requires and hosts.
-		int numDeps = in.readInt();
-		if (numDeps > 0) {
-			BundleDescription[] deps = new BundleDescription[numDeps];
-			for (int i = 0; i < numDeps; i++)
-				deps[i] = readBundleDescription(in);
-			result.addDependencies(deps, false); // no need to check dups; we already know there are none when we resolved (bug 152900)
-		}
-		// No need to set the dependencies between fragment and hosts; that was already done in the above loop (bug 152900)
-		// but we do need to set the dependencies between hosts and fragment.
-		HostSpecificationImpl hostSpec = (HostSpecificationImpl) result.getHost();
-		if (hostSpec != null) {
-			BundleDescription[] hosts = hostSpec.getHosts();
-			if (hosts != null) {
-				for (int i = 0; i < hosts.length; i++)
-					((BundleDescriptionImpl) hosts[i]).addDependency(result, false);
-			}
-		}
-		// the rest is lazy loaded data
-		result.setFullyLoaded(false);
-		return result;
-	}
-
-	private BundleDescriptionImpl readBundleDescriptionLazyData(DataInputStream in, int skip) throws IOException {
-		if (skip > 0)
-			in.skipBytes(skip);
-		int index = in.readInt();
-		BundleDescriptionImpl result = (BundleDescriptionImpl) getFromObjectTable(index);
-		if (result.isFullyLoaded()) {
-			in.skipBytes(result.getLazyDataSize() - 4); // skip to the end subtract 4 for the int read already
-			return result;
-		}
-
-		result.setLocation(readString(in, false));
-		result.setPlatformFilter(readString(in, false));
-
-		int exportCount = in.readInt();
-		if (exportCount > 0) {
-			ExportPackageDescription[] exports = new ExportPackageDescription[exportCount];
-			for (int i = 0; i < exports.length; i++)
-				exports[i] = readExportPackageDesc(in);
-			result.setExportPackages(exports);
-		}
-
-		int importCount = in.readInt();
-		if (importCount > 0) {
-			ImportPackageSpecification[] imports = new ImportPackageSpecification[importCount];
-			for (int i = 0; i < imports.length; i++)
-				imports[i] = readImportPackageSpec(in);
-			result.setImportPackages(imports);
-		}
-
-		int requiredBundleCount = in.readInt();
-		if (requiredBundleCount > 0) {
-			BundleSpecification[] requiredBundles = new BundleSpecification[requiredBundleCount];
-			for (int i = 0; i < requiredBundles.length; i++)
-				requiredBundles[i] = readBundleSpec(in);
-			result.setRequiredBundles(requiredBundles);
-		}
-
-		int selectedCount = in.readInt();
-		if (selectedCount > 0) {
-			ExportPackageDescription[] selected = new ExportPackageDescription[selectedCount];
-			for (int i = 0; i < selected.length; i++)
-				selected[i] = readExportPackageDesc(in);
-			result.setSelectedExports(selected);
-		}
-
-		int substitutedCount = in.readInt();
-		if (substitutedCount > 0) {
-			ExportPackageDescription[] selected = new ExportPackageDescription[substitutedCount];
-			for (int i = 0; i < selected.length; i++)
-				selected[i] = readExportPackageDesc(in);
-			result.setSubstitutedExports(selected);
-		}
-
-		int resolvedCount = in.readInt();
-		if (resolvedCount > 0) {
-			ExportPackageDescription[] resolved = new ExportPackageDescription[resolvedCount];
-			for (int i = 0; i < resolved.length; i++)
-				resolved[i] = readExportPackageDesc(in);
-			result.setResolvedImports(resolved);
-		}
-
-		int resolvedRequiredCount = in.readInt();
-		if (resolvedRequiredCount > 0) {
-			BundleDescription[] resolved = new BundleDescription[resolvedRequiredCount];
-			for (int i = 0; i < resolved.length; i++)
-				resolved[i] = readBundleDescription(in);
-			result.setResolvedRequires(resolved);
-		}
-
-		int eeCount = in.readInt();
-		if (eeCount > 0) {
-			String[] ee = new String[eeCount];
-			for (int i = 0; i < ee.length; i++)
-				ee[i] = readString(in, false);
-			result.setExecutionEnvironments(ee);
-		}
-
-		int dynamicPkgCnt = in.readInt();
-		if (dynamicPkgCnt > 0) {
-			HashMap dynamicStamps = new HashMap(dynamicPkgCnt);
-			for (int i = 0; i < dynamicPkgCnt; i++) {
-				String pkg = readString(in, false);
-				Long stamp = new Long(in.readLong());
-				dynamicStamps.put(pkg, stamp);
-			}
-			result.setDynamicStamps(dynamicStamps);
-		}
-
-		int genericCapCnt = in.readInt();
-		if (genericCapCnt > 0) {
-			GenericDescription[] capabilities = new GenericDescription[genericCapCnt];
-			for (int i = 0; i < capabilities.length; i++)
-				capabilities[i] = readGenericDescription(in);
-			result.setGenericCapabilities(capabilities);
-		}
-
-		int genericReqCnt = in.readInt();
-		if (genericReqCnt > 0) {
-			GenericSpecification[] reqs = new GenericSpecification[genericReqCnt];
-			for (int i = 0; i < reqs.length; i++)
-				reqs[i] = readGenericSpecification(in);
-			result.setGenericRequires(reqs);
-		}
-
-		result.setNativeCodeSpecification(readNativeCode(in));
-
-		result.setFullyLoaded(true); // set fully loaded before setting the dependencies
-		// No need to add bundle dependencies for hosts, imports or requires;
-		// This is done by readBundleDescription
-		return result;
-	}
-
-	private BundleSpecificationImpl readBundleSpec(DataInputStream in) throws IOException {
-		BundleSpecificationImpl result = new BundleSpecificationImpl();
-		readVersionConstraint(result, in);
-		result.setSupplier(readBundleDescription(in));
-		result.setExported(in.readBoolean());
-		result.setOptional(in.readBoolean());
-		return result;
-	}
-
-	private ExportPackageDescriptionImpl readExportPackageDesc(DataInputStream in) throws IOException {
-		byte tag = readTag(in);
-		if (tag == NULL)
-			return null;
-		if (tag == INDEX)
-			return (ExportPackageDescriptionImpl) getFromObjectTable(in.readInt());
-		ExportPackageDescriptionImpl exportPackageDesc = new ExportPackageDescriptionImpl();
-		int tableIndex = in.readInt();
-		addToObjectTable(exportPackageDesc, tableIndex);
-		exportPackageDesc.setTableIndex(tableIndex);
-		readBaseDescription(exportPackageDesc, in);
-		exportPackageDesc.setExporter(readBundleDescription(in));
-		exportPackageDesc.setAttributes(readMap(in));
-		exportPackageDesc.setDirectives(readMap(in));
-		return exportPackageDesc;
-	}
-
-	private DisabledInfo readDisabledInfo(DataInputStream in) throws IOException {
-		return new DisabledInfo(readString(in, false), readString(in, false), readBundleDescription(in));
-	}
-
-	private Map readMap(DataInputStream in) throws IOException {
-		int count = in.readInt();
-		if (count == 0)
-			return null;
-		HashMap result = new HashMap(count);
-		for (int i = 0; i < count; i++) {
-			String key = readString(in, false);
-			Object value = null;
-			byte type = in.readByte();
-			if (type == 0)
-				value = readString(in, false);
-			else if (type == 1)
-				value = readList(in);
-			else if (type == 2)
-				value = in.readBoolean() ? Boolean.TRUE : Boolean.FALSE;
-			else if (type == 3)
-				value = new Integer(in.readInt());
-			else if (type == 4)
-				value = new Long(in.readLong());
-			else if (type == 5)
-				value = new Double(in.readDouble());
-			else if (type == 6)
-				value = readVersion(in);
-			else if (type == 7) {
-				value = readString(in, false);
-				try {
-					Class uriClazz = Class.forName("java.net.URI"); //$NON-NLS-1$
-					Constructor constructor = uriClazz.getConstructor(new Class[] {String.class});
-					value = constructor.newInstance(new Object[] {value});
-				} catch (ClassNotFoundException e) {
-					// oh well cannot support; just use the string
-				} catch (RuntimeException e) { // got some reflection exception
-					throw e;
-				} catch (Exception e) {
-					throw new RuntimeException(e.getMessage(), e);
-				}
-			}
-			result.put(key, value);
-		}
-		return result;
-	}
-
-	private String[] readList(DataInputStream in) throws IOException {
-		int count = in.readInt();
-		if (count == 0)
-			return null;
-		String[] result = new String[count];
-		for (int i = 0; i < count; i++)
-			result[i] = readString(in, false);
-		return result;
-	}
-
-	private void readBaseDescription(BaseDescriptionImpl root, DataInputStream in) throws IOException {
-		root.setName(readString(in, false));
-		root.setVersion(readVersion(in));
-	}
-
-	private ImportPackageSpecificationImpl readImportPackageSpec(DataInputStream in) throws IOException {
-		ImportPackageSpecificationImpl result = new ImportPackageSpecificationImpl();
-		readVersionConstraint(result, in);
-		result.setSupplier(readExportPackageDesc(in));
-		result.setBundleSymbolicName(readString(in, false));
-		result.setBundleVersionRange(readVersionRange(in));
-		result.setAttributes(readMap(in));
-		result.setDirectives(readMap(in));
-		return result;
-	}
-
-	private HostSpecificationImpl readHostSpec(DataInputStream in) throws IOException {
-		byte tag = readTag(in);
-		if (tag == NULL)
-			return null;
-		HostSpecificationImpl result = new HostSpecificationImpl();
-		readVersionConstraint(result, in);
-		int hostCount = in.readInt();
-		if (hostCount > 0) {
-			BundleDescription[] hosts = new BundleDescription[hostCount];
-			for (int i = 0; i < hosts.length; i++)
-				hosts[i] = readBundleDescription(in);
-			result.setHosts(hosts);
-		}
-		return result;
-	}
-
-	private GenericDescription readGenericDescription(DataInputStream in) throws IOException {
-		byte tag = readTag(in);
-		if (tag == NULL)
-			return null;
-		if (tag == INDEX)
-			return (GenericDescription) getFromObjectTable(in.readInt());
-		int tableIndex = in.readInt();
-		GenericDescriptionImpl result = new GenericDescriptionImpl();
-		addToObjectTable(result, tableIndex);
-		readBaseDescription(result, in);
-		result.setSupplier(readBundleDescription(in));
-		result.setType(readString(in, false));
-		Map mapAttrs = readMap(in);
-		Dictionary attrs = new Hashtable();
-		if (mapAttrs != null) {
-			for (Iterator keys = mapAttrs.keySet().iterator(); keys.hasNext();) {
-				Object key = keys.next();
-				attrs.put(key, mapAttrs.get(key));
-			}
-		}
-		result.setAttributes(attrs);
-		return result;
-	}
-
-	private GenericSpecification readGenericSpecification(DataInputStream in) throws IOException {
-		GenericSpecificationImpl result = new GenericSpecificationImpl();
-		readVersionConstraint(result, in);
-		result.setType(readString(in, false));
-		int num = in.readInt();
-		GenericDescription[] suppliers = num == 0 ? null : new GenericDescription[num];
-		for (int i = 0; i < num; i++)
-			suppliers[i] = readGenericDescription(in);
-		result.setSupplers(suppliers);
-		result.setResolution(in.readInt());
-		try {
-			result.setMatchingFilter(readString(in, false));
-		} catch (InvalidSyntaxException e) {
-			// do nothing this filter was tested before
-		}
-		return result;
-	}
-
-	private NativeCodeSpecification readNativeCode(DataInputStream in) throws IOException {
-		if (!in.readBoolean())
-			return null;
-		NativeCodeSpecificationImpl result = new NativeCodeSpecificationImpl();
-		result.setOptional(in.readBoolean());
-		int numNativeDesc = in.readInt();
-		NativeCodeDescriptionImpl[] nativeDescs = new NativeCodeDescriptionImpl[numNativeDesc];
-		for (int i = 0; i < numNativeDesc; i++)
-			nativeDescs[i] = readNativeCodeDescription(in);
-		result.setPossibleSuppliers(nativeDescs);
-		int supplierIndex = in.readInt();
-		if (supplierIndex >= 0)
-			result.setSupplier(nativeDescs[supplierIndex]);
-		return result;
-	}
-
-	private NativeCodeDescriptionImpl readNativeCodeDescription(DataInputStream in) throws IOException {
-		NativeCodeDescriptionImpl result = new NativeCodeDescriptionImpl();
-		readBaseDescription(result, in);
-		result.setSupplier(readBundleDescription(in));
-		try {
-			result.setFilter(readString(in, false));
-		} catch (InvalidSyntaxException e) {
-			// do nothing, this filter was tested before
-		}
-		result.setLanguages(readStringArray(in));
-		result.setNativePaths(readStringArray(in));
-		result.setOSNames(readStringArray(in));
-		result.setOSVersions(readVersionRanges(in));
-		result.setProcessors(readStringArray(in));
-		result.setInvalidNativePaths(in.readBoolean());
-		return result;
-	}
-
-	private VersionRange[] readVersionRanges(DataInputStream in) throws IOException {
-		int num = in.readInt();
-		if (num == 0)
-			return null;
-		VersionRange[] result = new VersionRange[num];
-		for (int i = 0; i < num; i++)
-			result[i] = readVersionRange(in);
-		return result;
-	}
-
-	private String[] readStringArray(DataInputStream in) throws IOException {
-		int num = in.readInt();
-		if (num == 0)
-			return null;
-		String[] result = new String[num];
-		for (int i = 0; i < num; i++)
-			result[i] = readString(in, false);
-		return result;
-	}
-
-	// called by readers for VersionConstraintImpl subclasses
-	private void readVersionConstraint(VersionConstraintImpl version, DataInputStream in) throws IOException {
-		version.setName(readString(in, false));
-		version.setVersionRange(readVersionRange(in));
-	}
-
-	private Version readVersion(DataInputStream in) throws IOException {
-		byte tag = readTag(in);
-		if (tag == NULL)
-			return Version.emptyVersion;
-		int majorComponent = in.readInt();
-		int minorComponent = in.readInt();
-		int serviceComponent = in.readInt();
-		String qualifierComponent = readString(in, false);
-		Version result = (Version) ObjectPool.intern(new Version(majorComponent, minorComponent, serviceComponent, qualifierComponent));
-		//Version result = new Version(majorComponent, minorComponent, serviceComponent, qualifierComponent);
-		return result;
-	}
-
-	private VersionRange readVersionRange(DataInputStream in) throws IOException {
-		byte tag = readTag(in);
-		if (tag == NULL)
-			return null;
-		return new VersionRange(readVersion(in), in.readBoolean(), readVersion(in), in.readBoolean());
-	}
-
-	/**
-	 * expectedTimestamp is the expected value for the timestamp. or -1, if
-	 * 	no checking should be performed 
-	 */
-	public synchronized boolean loadStateDeprecated(StateImpl state, DataInputStream input, long expectedTimestamp) throws IOException {
-		try {
-			return readStateDeprecated(state, input, expectedTimestamp);
-		} finally {
-			input.close();
-		}
-	}
-
-	/**
-	 * expectedTimestamp is the expected value for the timestamp. or -1, if
-	 * 	no checking should be performed 
-	 */
-	public synchronized boolean loadState(StateImpl state, long expectedTimestamp) throws IOException {
-		return readState(state, expectedTimestamp);
-	}
-
-	private String readString(DataInputStream in, boolean intern) throws IOException {
-		byte type = in.readByte();
-		if (type == NULL)
-			return null;
-		if (intern)
-			return in.readUTF().intern();
-		return (String) ObjectPool.intern(in.readUTF());
-	}
-
-	private byte readTag(DataInputStream in) throws IOException {
-		return in.readByte();
-	}
-
-	private DataInputStream openLazyFile() throws IOException {
-		if (lazyFile == null)
-			throw new IOException(); // TODO error message here!
-		return new DataInputStream(new BufferedInputStream(secureAction.getFileInputStream(lazyFile), BUFFER_SIZE_LAZY));
-	}
-
-	boolean isLazyLoaded() {
-		return lazyLoad;
-	}
-
-	boolean getAccessedFlag() {
-		return accessedFlag;
-	}
-
-	void setAccessedFlag(boolean accessedFlag) {
-		this.accessedFlag = accessedFlag;
-	}
-
-	synchronized void fullyLoad() {
-		setAccessedFlag(true);
-		DataInputStream in = null;
-		try {
-			in = openLazyFile();
-			for (int i = 0; i < numBundles; i++)
-				readBundleDescriptionLazyData(in, 0);
-		} catch (IOException ioe) {
-			throw new RuntimeException(ioe.getMessage(), ioe); // TODO need error message here
-		} finally {
-			if (in != null)
-				try {
-					in.close();
-				} catch (IOException e) {
-					// nothing we can do now
-				}
-		}
-	}
-
-	synchronized void fullyLoad(BundleDescriptionImpl target) throws IOException {
-		setAccessedFlag(true);
-		DataInputStream in = null;
-		try {
-			in = openLazyFile();
-			// get the set of bundles that must be loaded according to dependencies
-			ArrayList toLoad = new ArrayList();
-			addDependencies(target, toLoad);
-			int skipBytes[] = getSkipBytes(toLoad);
-			// look for the lazy data of the toLoad list
-			for (int i = 0; i < skipBytes.length; i++)
-				readBundleDescriptionLazyData(in, skipBytes[i]);
-		} finally {
-			if (in != null)
-				in.close();
-		}
-	}
-
-	private void addDependencies(BundleDescriptionImpl target, List toLoad) {
-		if (toLoad.contains(target) || target.isFullyLoaded())
-			return;
-		Iterator load = toLoad.iterator();
-		int i = 0;
-		while (load.hasNext()) {
-			// insert the target into the list sorted by lazy data offsets
-			BundleDescriptionImpl bundle = (BundleDescriptionImpl) load.next();
-			if (target.getLazyDataOffset() < bundle.getLazyDataOffset())
-				break;
-			i++;
-		}
-		if (i >= toLoad.size())
-			toLoad.add(target);
-		else
-			toLoad.add(i, target);
-		List deps = target.getBundleDependencies();
-		for (Iterator iter = deps.iterator(); iter.hasNext();)
-			addDependencies((BundleDescriptionImpl) iter.next(), toLoad);
-	}
-
-	private int[] getSkipBytes(ArrayList toLoad) {
-		int[] skipBytes = new int[toLoad.size()];
-		for (int i = 0; i < skipBytes.length; i++) {
-			BundleDescriptionImpl current = (BundleDescriptionImpl) toLoad.get(i);
-			if (i == 0) {
-				skipBytes[i] = current.getLazyDataOffset();
-				continue;
-			}
-			BundleDescriptionImpl previous = (BundleDescriptionImpl) toLoad.get(i - 1);
-			skipBytes[i] = current.getLazyDataOffset() - previous.getLazyDataOffset() - previous.getLazyDataSize();
-		}
-		return skipBytes;
-	}
-
-	void flushLazyObjectCache() {
-		for (Iterator entries = objectTable.entrySet().iterator(); entries.hasNext();) {
-			Map.Entry entry = (Entry) entries.next();
-			if (entry.getValue() instanceof ExportPackageDescription || entry.getValue() instanceof GenericDescription)
-				entries.remove();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateWriter.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateWriter.java
deleted file mode 100644
index b9c7bd8..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateWriter.java
+++ /dev/null
@@ -1,572 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.*;
-
-/**
- * This class is <strong>not</strong> thread safe. Instances must not be
- * shared across multiple threads.
- */
-class StateWriter {
-
-	// objectTable will be a hashmap of objects. The objects will be things
-	// like BundleDescription, ExportPackageDescription, Version etc.. The integer
-	// index value will be used in the cache to allow cross-references in the
-	// cached state.
-	private final Map objectTable = new HashMap();
-
-	private final ArrayList forcedWrite = new ArrayList();
-
-	private int addToObjectTable(Object object) {
-		Integer cur = (Integer) objectTable.get(object);
-		if (cur != null)
-			return cur.intValue();
-		objectTable.put(object, new Integer(objectTable.size()));
-		// return the index of the object just added (i.e. size - 1)
-		return (objectTable.size() - 1);
-	}
-
-	private int getFromObjectTable(Object object) {
-		if (objectTable != null) {
-			Object objectResult = objectTable.get(object);
-			if (objectResult != null) {
-				return ((Integer) objectResult).intValue();
-			}
-		}
-		return -1;
-	}
-
-	private boolean writePrefix(Object object, DataOutputStream out) throws IOException {
-		if (writeIndex(object, out))
-			return true;
-		// add this object to the object table first
-		int index = addToObjectTable(object);
-		out.writeByte(StateReader.OBJECT);
-		out.writeInt(index);
-		return false;
-	}
-
-	private void writeStateDeprecated(StateImpl state, DataOutputStream out) throws IOException {
-		out.write(StateReader.STATE_CACHE_VERSION);
-		if (writePrefix(state, out))
-			return;
-		out.writeLong(state.getTimeStamp());
-		// write the platform property keys
-		String[] platformPropKeys = state.getPlatformPropertyKeys();
-		writePlatformProp(platformPropKeys, out);
-		Dictionary[] propSet = state.getPlatformProperties();
-		out.writeInt(propSet.length);
-		for (int i = 0; i < propSet.length; i++) {
-			Dictionary props = propSet[i];
-			out.writeInt(platformPropKeys.length);
-			for (int j = 0; j < platformPropKeys.length; j++)
-				writePlatformProp(props.get(platformPropKeys[j]), out);
-		}
-		BundleDescription[] bundles = state.getBundles();
-		StateHelperImpl.getInstance().sortBundles(bundles);
-		out.writeInt(bundles.length);
-		if (bundles.length == 0)
-			return;
-		for (int i = 0; i < bundles.length; i++)
-			writeBundleDescription(bundles[i], out, false);
-		out.writeBoolean(state.isResolved());
-		// save the lazy data offset
-		out.writeInt(out.size());
-		for (int i = 0; i < bundles.length; i++)
-			writeBundleDescriptionLazyData(bundles[i], out);
-	}
-
-	public void saveState(StateImpl state, File stateFile, File lazyFile) throws IOException {
-		DataOutputStream outLazy = null;
-		DataOutputStream outState = null;
-		FileOutputStream fosLazy = null;
-		FileOutputStream fosState = null;
-		try {
-			BundleDescription[] bundles = state.getBundles();
-			StateHelperImpl.getInstance().sortBundles(bundles);
-			// need to prime the object table with all bundles
-			// this allows us to write only indexes to bundles in the lazy data
-			for (int i = 0; i < bundles.length; i++)
-				addToObjectTable(bundles[i]);
-			// first write the lazy data to get the offsets and sizes to the lazy data
-			fosLazy = new FileOutputStream(lazyFile);
-			outLazy = new DataOutputStream(new BufferedOutputStream(fosLazy));
-			for (int i = 0; i < bundles.length; i++)
-				writeBundleDescriptionLazyData(bundles[i], outLazy);
-			// now write the state data
-			fosState = new FileOutputStream(stateFile);
-			outState = new DataOutputStream(new BufferedOutputStream(fosState));
-			outState.write(StateReader.STATE_CACHE_VERSION);
-			if (writePrefix(state, outState))
-				return;
-			outState.writeLong(state.getTimeStamp());
-			// write the platform property keys
-			String[] platformPropKeys = state.getPlatformPropertyKeys();
-			writePlatformProp(platformPropKeys, outState);
-			// write the platform property values
-			Dictionary[] propSet = state.getPlatformProperties();
-			outState.writeInt(propSet.length);
-			for (int i = 0; i < propSet.length; i++) {
-				Dictionary props = propSet[i];
-				outState.writeInt(platformPropKeys.length);
-				for (int j = 0; j < platformPropKeys.length; j++)
-					writePlatformProp(props.get(platformPropKeys[j]), outState);
-			}
-			outState.writeInt(bundles.length);
-			for (int i = 0; i < bundles.length; i++)
-				// write out each bundle with the force flag set to make sure
-				// the data is written at least once in the non-lazy state data
-				writeBundleDescription(bundles[i], outState, true);
-			// write the DisabledInfos
-			DisabledInfo[] infos = state.getDisabledInfos();
-			outState.writeInt(infos.length);
-			for (int i = 0; i < infos.length; i++)
-				writeDisabledInfo(infos[i], outState);
-			outState.writeBoolean(state.isResolved());
-		} finally {
-			if (outLazy != null) {
-				try {
-					outLazy.flush();
-					fosLazy.getFD().sync();
-				} catch (IOException e) {
-					// do nothing, we tried
-				}
-				try {
-					outLazy.close();
-				} catch (IOException e) {
-					// do nothing
-				}
-			}
-			if (outState != null) {
-				try {
-					outState.flush();
-					fosState.getFD().sync();
-				} catch (IOException e) {
-					// do nothing, we tried
-				}
-				try {
-					outState.close();
-				} catch (IOException e) {
-					// do nothing
-				}
-			}
-		}
-	}
-
-	private void writePlatformProp(Object obj, DataOutputStream out) throws IOException {
-		if (!(obj instanceof String) && !(obj instanceof String[]))
-			out.writeByte(StateReader.NULL);
-		else {
-			out.writeByte(StateReader.OBJECT);
-			if (obj instanceof String) {
-				out.writeInt(1);
-				writeStringOrNull((String) obj, out);
-			} else {
-				String[] props = (String[]) obj;
-				out.writeInt(props.length);
-				for (int i = 0; i < props.length; i++)
-					writeStringOrNull(props[i], out);
-			}
-		}
-	}
-
-	/*
-	 * The force flag is used when writing the non-lazy state data.  This forces the data to be
-	 * written once even if the object exists in the object table.
-	 * This is needed because we want to write the lazy data first but we only want
-	 * to include indexes to the actual bundles in the lazy data.  To do this we
-	 * prime the object table with all the bundles first.  Then we write the
-	 * lazy data.  Finally we write the non-lazy data and force a write of the
-	 * bundles data once even if the bundle is in the object table.
-	 */
-	private void writeBundleDescription(BundleDescription bundle, DataOutputStream out, boolean force) throws IOException {
-		if (force && !forcedWrite.contains(bundle)) {
-			int index = addToObjectTable(bundle);
-			out.writeByte(StateReader.OBJECT);
-			out.writeInt(index);
-			forcedWrite.add(bundle);
-		} else if (writePrefix(bundle, out))
-			return;
-		// first write out non-lazy loaded data
-		out.writeLong(bundle.getBundleId()); // ID must be the first thing
-		writeBaseDescription(bundle, out);
-		out.writeInt(((BundleDescriptionImpl) bundle).getLazyDataOffset());
-		out.writeInt(((BundleDescriptionImpl) bundle).getLazyDataSize());
-		out.writeBoolean(bundle.isResolved());
-		out.writeBoolean(bundle.isSingleton());
-		out.writeBoolean(bundle.hasDynamicImports());
-		out.writeBoolean(bundle.attachFragments());
-		out.writeBoolean(bundle.dynamicFragments());
-		writeHostSpec((HostSpecificationImpl) bundle.getHost(), out, force);
-
-		List dependencies = ((BundleDescriptionImpl) bundle).getBundleDependencies();
-		out.writeInt(dependencies.size());
-		for (Iterator iter = dependencies.iterator(); iter.hasNext();)
-			writeBundleDescription((BundleDescription) iter.next(), out, force);
-		// the rest is lazy loaded data
-	}
-
-	private void writeBundleDescriptionLazyData(BundleDescription bundle, DataOutputStream out) throws IOException {
-		int dataStart = out.size(); // save the offset of lazy data start
-		int index = getFromObjectTable(bundle);
-		((BundleDescriptionImpl) bundle).setLazyDataOffset(out.size());
-		out.writeInt(index);
-
-		writeStringOrNull(bundle.getLocation(), out);
-		writeStringOrNull(bundle.getPlatformFilter(), out);
-
-		ExportPackageDescription[] exports = bundle.getExportPackages();
-		out.writeInt(exports.length);
-		for (int i = 0; i < exports.length; i++)
-			writeExportPackageDesc((ExportPackageDescriptionImpl) exports[i], out);
-
-		ImportPackageSpecification[] imports = bundle.getImportPackages();
-		out.writeInt(imports.length);
-		for (int i = 0; i < imports.length; i++)
-			writeImportPackageSpec(imports[i], out);
-
-		BundleSpecification[] requiredBundles = bundle.getRequiredBundles();
-		out.writeInt(requiredBundles.length);
-		for (int i = 0; i < requiredBundles.length; i++)
-			writeBundleSpec((BundleSpecificationImpl) requiredBundles[i], out);
-
-		ExportPackageDescription[] selectedExports = bundle.getSelectedExports();
-		if (selectedExports == null) {
-			out.writeInt(0);
-		} else {
-			out.writeInt(selectedExports.length);
-			for (int i = 0; i < selectedExports.length; i++)
-				writeExportPackageDesc((ExportPackageDescriptionImpl) selectedExports[i], out);
-		}
-
-		ExportPackageDescription[] substitutedExports = bundle.getSubstitutedExports();
-		if (substitutedExports == null) {
-			out.writeInt(0);
-		} else {
-			out.writeInt(substitutedExports.length);
-			for (int i = 0; i < substitutedExports.length; i++)
-				writeExportPackageDesc((ExportPackageDescriptionImpl) substitutedExports[i], out);
-		}
-
-		ExportPackageDescription[] resolvedImports = bundle.getResolvedImports();
-		if (resolvedImports == null) {
-			out.writeInt(0);
-		} else {
-			out.writeInt(resolvedImports.length);
-			for (int i = 0; i < resolvedImports.length; i++)
-				writeExportPackageDesc((ExportPackageDescriptionImpl) resolvedImports[i], out);
-		}
-
-		BundleDescription[] resolvedRequires = bundle.getResolvedRequires();
-		if (resolvedRequires == null) {
-			out.writeInt(0);
-		} else {
-			out.writeInt(resolvedRequires.length);
-			for (int i = 0; i < resolvedRequires.length; i++)
-				writeBundleDescription(resolvedRequires[i], out, false);
-		}
-
-		String[] ees = bundle.getExecutionEnvironments();
-		out.writeInt(ees.length);
-		for (int i = 0; i < ees.length; i++)
-			writeStringOrNull(ees[i], out);
-
-		HashMap dynamicStamps = ((BundleDescriptionImpl) bundle).getDynamicStamps();
-		if (dynamicStamps == null)
-			out.writeInt(0);
-		else {
-			out.writeInt(dynamicStamps.size());
-			for (Iterator pkgs = dynamicStamps.keySet().iterator(); pkgs.hasNext();) {
-				String pkg = (String) pkgs.next();
-				writeStringOrNull(pkg, out);
-				out.writeLong(((Long) dynamicStamps.get(pkg)).longValue());
-			}
-		}
-
-		GenericDescription[] genericCapabilities = bundle.getGenericCapabilities();
-		if (genericCapabilities == null)
-			out.writeInt(0);
-		else {
-			out.writeInt(genericCapabilities.length);
-			for (int i = 0; i < genericCapabilities.length; i++)
-				writeGenericDescription(genericCapabilities[i], out);
-		}
-
-		GenericSpecification[] genericRequires = bundle.getGenericRequires();
-		if (genericRequires == null)
-			out.writeInt(0);
-		else {
-			out.writeInt(genericRequires.length);
-			for (int i = 0; i < genericRequires.length; i++)
-				writeGenericSpecification(genericRequires[i], out);
-		}
-
-		writeNativeCode(bundle.getNativeCodeSpecification(), out);
-
-		// save the size of the lazy data
-		((BundleDescriptionImpl) bundle).setLazyDataSize(out.size() - dataStart);
-	}
-
-	private void writeDisabledInfo(DisabledInfo disabledInfo, DataOutputStream out) throws IOException {
-		writeStringOrNull(disabledInfo.getPolicyName(), out);
-		writeStringOrNull(disabledInfo.getMessage(), out);
-		writeBundleDescription(disabledInfo.getBundle(), out, false);
-	}
-
-	private void writeBundleSpec(BundleSpecificationImpl bundle, DataOutputStream out) throws IOException {
-		writeVersionConstraint(bundle, out);
-		writeBundleDescription((BundleDescription) bundle.getSupplier(), out, false);
-		out.writeBoolean(bundle.isExported());
-		out.writeBoolean(bundle.isOptional());
-	}
-
-	private void writeExportPackageDesc(ExportPackageDescriptionImpl exportPackageDesc, DataOutputStream out) throws IOException {
-		if (writePrefix(exportPackageDesc, out))
-			return;
-		writeBaseDescription(exportPackageDesc, out);
-		writeBundleDescription(exportPackageDesc.getExporter(), out, false);
-		writeMap(out, exportPackageDesc.getAttributes());
-		writeMap(out, exportPackageDesc.getDirectives());
-	}
-
-	private void writeGenericDescription(GenericDescription description, DataOutputStream out) throws IOException {
-		if (writePrefix(description, out))
-			return;
-		writeBaseDescription(description, out);
-		writeBundleDescription(description.getSupplier(), out, false);
-		writeStringOrNull(description.getType() == GenericDescription.DEFAULT_TYPE ? null : description.getType(), out);
-		Dictionary attrs = description.getAttributes();
-		Map mapAttrs = new HashMap(attrs.size());
-		for (Enumeration keys = attrs.keys(); keys.hasMoreElements();) {
-			Object key = keys.nextElement();
-			if (!Constants.VERSION_ATTRIBUTE.equals(key))
-				mapAttrs.put(key, attrs.get(key));
-		}
-		writeMap(out, mapAttrs);
-	}
-
-	private void writeGenericSpecification(GenericSpecification specification, DataOutputStream out) throws IOException {
-		writeVersionConstraint(specification, out);
-		writeStringOrNull(specification.getType() == GenericDescription.DEFAULT_TYPE ? null : specification.getType(), out);
-		GenericDescription[] suppliers = specification.getSuppliers();
-		out.writeInt(suppliers == null ? 0 : suppliers.length);
-		if (suppliers != null)
-			for (int i = 0; i < suppliers.length; i++)
-				writeGenericDescription(suppliers[i], out);
-		out.writeInt(specification.getResolution());
-		writeStringOrNull(specification.getMatchingFilter(), out);
-	}
-
-	private void writeNativeCode(NativeCodeSpecification nativeCodeSpecification, DataOutputStream out) throws IOException {
-		if (nativeCodeSpecification == null) {
-			out.writeBoolean(false);
-			return;
-		}
-		out.writeBoolean(true);
-		out.writeBoolean(nativeCodeSpecification.isOptional());
-		NativeCodeDescription[] nativeDescs = nativeCodeSpecification.getPossibleSuppliers();
-		int numDescs = nativeDescs == null ? 0 : nativeDescs.length;
-		out.writeInt(numDescs);
-		int supplierIndex = -1;
-		for (int i = 0; i < numDescs; i++) {
-			if (nativeDescs[i] == nativeCodeSpecification.getSupplier())
-				supplierIndex = i;
-			writeNativeCodeDescription(nativeDescs[i], out);
-		}
-		out.writeInt(supplierIndex);
-	}
-
-	private void writeNativeCodeDescription(NativeCodeDescription nativeCodeDescription, DataOutputStream out) throws IOException {
-		writeBaseDescription(nativeCodeDescription, out);
-		writeBundleDescription(nativeCodeDescription.getSupplier(), out, false);
-		Filter filter = nativeCodeDescription.getFilter();
-		writeStringOrNull(filter == null ? null : filter.toString(), out);
-		writeStringArray(nativeCodeDescription.getLanguages(), out);
-		writeStringArray(nativeCodeDescription.getNativePaths(), out);
-		writeStringArray(nativeCodeDescription.getOSNames(), out);
-		writeVersionRanges(nativeCodeDescription.getOSVersions(), out);
-		writeStringArray(nativeCodeDescription.getProcessors(), out);
-		out.writeBoolean(nativeCodeDescription.hasInvalidNativePaths());
-	}
-
-	private void writeVersionRanges(VersionRange[] ranges, DataOutputStream out) throws IOException {
-		out.writeInt(ranges == null ? 0 : ranges.length);
-		if (ranges == null)
-			return;
-		for (int i = 0; i < ranges.length; i++)
-			writeVersionRange(ranges[i], out);
-	}
-
-	private void writeStringArray(String[] strings, DataOutputStream out) throws IOException {
-		out.writeInt(strings == null ? 0 : strings.length);
-		if (strings == null)
-			return;
-		for (int i = 0; i < strings.length; i++)
-			writeStringOrNull(strings[i], out);
-	}
-
-	private void writeMap(DataOutputStream out, Map source) throws IOException {
-		if (source == null) {
-			out.writeInt(0);
-		} else {
-			out.writeInt(source.size());
-			Iterator iter = source.keySet().iterator();
-			while (iter.hasNext()) {
-				String key = (String) iter.next();
-				Object value = source.get(key);
-				writeStringOrNull(key, out);
-				if (value instanceof String) {
-					out.writeByte(0);
-					writeStringOrNull((String) value, out);
-				} else if (value instanceof String[]) {
-					out.writeByte(1);
-					writeList(out, (String[]) value);
-				} else if (value instanceof Boolean) {
-					out.writeByte(2);
-					out.writeBoolean(((Boolean) value).booleanValue());
-				} else if (value instanceof Integer) {
-					out.writeByte(3);
-					out.writeInt(((Integer) value).intValue());
-				} else if (value instanceof Long) {
-					out.writeByte(4);
-					out.writeLong(((Long) value).longValue());
-				} else if (value instanceof Double) {
-					out.writeByte(5);
-					out.writeDouble(((Double) value).doubleValue());
-				} else if (value instanceof Version) {
-					out.writeByte(6);
-					writeVersion((Version) value, out);
-				} else if ("java.net.URI".equals(value.getClass().getName())) { //$NON-NLS-1$
-					out.writeByte(7);
-					writeStringOrNull(value.toString(), out);
-				}
-			}
-		}
-	}
-
-	private void writeList(DataOutputStream out, String[] list) throws IOException {
-		if (list == null) {
-			out.writeInt(0);
-		} else {
-			out.writeInt(list.length);
-			for (int i = 0; i < list.length; i++)
-				writeStringOrNull(list[i], out);
-		}
-	}
-
-	private void writeBaseDescription(BaseDescription rootDesc, DataOutputStream out) throws IOException {
-		writeStringOrNull(rootDesc.getName(), out);
-		writeVersion(rootDesc.getVersion(), out);
-	}
-
-	private void writeImportPackageSpec(ImportPackageSpecification importPackageSpec, DataOutputStream out) throws IOException {
-		writeVersionConstraint(importPackageSpec, out);
-		// TODO this is a hack until the state dynamic loading is cleaned up
-		// we should only write the supplier if we are resolved
-		if (importPackageSpec.getBundle().isResolved())
-			writeExportPackageDesc((ExportPackageDescriptionImpl) importPackageSpec.getSupplier(), out);
-		else
-			out.writeByte(StateReader.NULL);
-
-		writeStringOrNull(importPackageSpec.getBundleSymbolicName(), out);
-		writeVersionRange(importPackageSpec.getBundleVersionRange(), out);
-		writeMap(out, importPackageSpec.getAttributes());
-		writeMap(out, importPackageSpec.getDirectives());
-	}
-
-	private void writeHostSpec(HostSpecificationImpl host, DataOutputStream out, boolean force) throws IOException {
-		if (host == null) {
-			out.writeByte(StateReader.NULL);
-			return;
-		}
-		out.writeByte(StateReader.OBJECT);
-		writeVersionConstraint(host, out);
-		BundleDescription[] hosts = host.getHosts();
-		if (hosts == null) {
-			out.writeInt(0);
-			return;
-		}
-		out.writeInt(hosts.length);
-		for (int i = 0; i < hosts.length; i++)
-			writeBundleDescription(hosts[i], out, force);
-	}
-
-	// called by writers for VersionConstraintImpl subclasses
-	private void writeVersionConstraint(VersionConstraint constraint, DataOutputStream out) throws IOException {
-		writeStringOrNull(constraint.getName(), out);
-		writeVersionRange(constraint.getVersionRange(), out);
-	}
-
-	private void writeVersion(Version version, DataOutputStream out) throws IOException {
-		if (version == null || version.equals(Version.emptyVersion)) {
-			out.writeByte(StateReader.NULL);
-			return;
-		}
-		out.writeByte(StateReader.OBJECT);
-		out.writeInt(version.getMajor());
-		out.writeInt(version.getMinor());
-		out.writeInt(version.getMicro());
-		writeQualifier(version.getQualifier(), out);
-	}
-
-	private void writeVersionRange(VersionRange versionRange, DataOutputStream out) throws IOException {
-		if (versionRange == null || versionRange.equals(VersionRange.emptyRange)) {
-			out.writeByte(StateReader.NULL);
-			return;
-		}
-		out.writeByte(StateReader.OBJECT);
-		writeVersion(versionRange.getMinimum(), out);
-		out.writeBoolean(versionRange.getIncludeMinimum());
-		writeVersion(versionRange.getMaximum(), out);
-		out.writeBoolean(versionRange.getIncludeMaximum());
-	}
-
-	private boolean writeIndex(Object object, DataOutputStream out) throws IOException {
-		if (object == null) {
-			out.writeByte(StateReader.NULL);
-			return true;
-		}
-		int index = getFromObjectTable(object);
-		if (index == -1)
-			return false;
-		out.writeByte(StateReader.INDEX);
-		out.writeInt(index);
-		return true;
-	}
-
-	public void saveStateDeprecated(StateImpl state, DataOutputStream output) throws IOException {
-		try {
-			writeStateDeprecated(state, output);
-		} finally {
-			output.close();
-		}
-	}
-
-	private void writeStringOrNull(String string, DataOutputStream out) throws IOException {
-		if (string == null)
-			out.writeByte(StateReader.NULL);
-		else {
-			out.writeByte(StateReader.OBJECT);
-			out.writeUTF(string);
-		}
-	}
-
-	private void writeQualifier(String string, DataOutputStream out) throws IOException {
-		if (string != null && string.length() == 0)
-			string = null;
-		writeStringOrNull(string, out);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/SystemState.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/SystemState.java
deleted file mode 100644
index c7b7116..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/SystemState.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.State;
-import org.eclipse.osgi.service.resolver.StateDelta;
-import org.osgi.framework.BundleException;
-
-// this class provides synchronous access to resolve and add/remove/update bundle for the framework
-public class SystemState extends StateImpl {
-
-	public StateDelta compare(State state) throws BundleException {
-		// we don't implement this (no big deal: the system state is private to the framework)
-		throw new UnsupportedOperationException();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/UserState.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/UserState.java
deleted file mode 100644
index 69e6649..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/UserState.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import java.util.*;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-
-/**
- * This implementation of State does a bookkeeping of all added/removed 
- */
-public class UserState extends StateImpl {
-	// TODO this is not an accurate way to record updates
-	private final Set updated = Collections.synchronizedSet(new HashSet());
-
-	public boolean removeBundle(BundleDescription description) {
-		if (description.getLocation() != null)
-			updated.remove(description.getLocation());
-		if (!super.removeBundle(description))
-			return false;
-		return true;
-	}
-
-	public boolean updateBundle(BundleDescription newDescription) {
-		if (!super.updateBundle(newDescription))
-			return false;
-		updated.add(newDescription.getLocation());
-		return true;
-	}
-
-	public StateDelta compare(State baseState) throws BundleException {
-		BundleDescription[] current = this.getBundles();
-		StateDeltaImpl delta = new StateDeltaImpl(this);
-		// process additions and updates
-		for (int i = 0; i < current.length; i++) {
-			BundleDescription existing = baseState.getBundleByLocation(current[i].getLocation());
-			if (existing == null)
-				delta.recordBundleAdded((BundleDescriptionImpl) current[i]);
-			else if (updated.contains(current[i].getLocation()))
-				delta.recordBundleUpdated((BundleDescriptionImpl) current[i]);
-		}
-		// process removals
-		BundleDescription[] existing = baseState.getBundles();
-		for (int i = 0; i < existing.length; i++) {
-			BundleDescription local = getBundleByLocation(existing[i].getLocation());
-			if (local == null)
-				delta.recordBundleRemoved((BundleDescriptionImpl) existing[i]);
-		}
-		return delta;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/VersionConstraintImpl.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/VersionConstraintImpl.java
deleted file mode 100644
index 85807a9..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/VersionConstraintImpl.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev -  ProSyst - bug 218625
- *     Rob Harrop - SpringSource Inc. (bug 247522)
- *******************************************************************************/
-package org.eclipse.osgi.internal.resolver;
-
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.service.resolver.*;
-
-abstract class VersionConstraintImpl implements VersionConstraint {
-
-	protected final Object monitor = new Object();
-
-	private String name;
-	private VersionRange versionRange;
-	private BundleDescription bundle;
-	private BaseDescription supplier;
-
-	public String getName() {
-		synchronized (this.monitor) {
-			if (Constants.SYSTEM_BUNDLE_SYMBOLICNAME.equals(name)) {
-				StateImpl state = (StateImpl) getBundle().getContainingState();
-				return state == null ? Constants.getInternalSymbolicName() : state.getSystemBundle();
-			}
-			return name;
-		}
-	}
-
-	public VersionRange getVersionRange() {
-		synchronized (this.monitor) {
-			if (versionRange == null)
-				return VersionRange.emptyRange;
-			return versionRange;
-		}
-	}
-
-	public BundleDescription getBundle() {
-		synchronized (this.monitor) {
-			return bundle;
-		}
-	}
-
-	public boolean isResolved() {
-		synchronized (this.monitor) {
-			return supplier != null;
-		}
-	}
-
-	public BaseDescription getSupplier() {
-		synchronized (this.monitor) {
-			return supplier;
-		}
-	}
-
-	public boolean isSatisfiedBy(BaseDescription supplier) {
-		synchronized (this.monitor) {
-			return false;
-		}
-	}
-
-	protected void setName(String name) {
-		synchronized (this.monitor) {
-			this.name = name;
-		}
-	}
-
-	protected void setVersionRange(VersionRange versionRange) {
-		synchronized (this.monitor) {
-			this.versionRange = versionRange;
-		}
-	}
-
-	protected void setBundle(BundleDescription bundle) {
-		synchronized (this.monitor) {
-			this.bundle = bundle;
-		}
-	}
-
-	protected void setSupplier(BaseDescription supplier) {
-		synchronized (this.monitor) {
-			this.supplier = supplier;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEngine.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEngine.java
deleted file mode 100644
index 4be1f7f..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEngine.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.provisional.service.security;
-
-import org.eclipse.osgi.framework.eventmgr.*;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * An authorization engine is used to grant authorization to {@link SignedContent}.
- * For example, an engine could determine if <code>SignedContent</code> is authorized
- * to enable code from a signed bundle.
- * @since 3.4
- */
-public abstract class AuthorizationEngine {
-
-	private EventManager manager = new EventManager();
-	private EventDispatcher dispatcher = new AuthEventDispatcher();
-	private final ServiceTracker listenerTracker;
-
-	public AuthorizationEngine(BundleContext context) {
-		listenerTracker = new ServiceTracker(context, AuthorizationListener.class.getName(), null);
-		listenerTracker.open();
-	}
-
-	/**
-	 * Authorizes a <code>SignedContent</code> object.  The engine determines if the 
-	 * signed content authorization should be granted.  The context is the entity 
-	 * associated with the signed content.  For example, signed content 
-	 * for a bundle will have a <code>Bundle</code> object as the context.
-	 * @param content the signed content. The value may be <code>null</code>.
-	 * @param context the context associated with the signed content. The value may be <code>null</code>.
-	 */
-	public final void authorize(SignedContent content, Object context) {
-		fireEvent(doAuthorize(content, context));
-	}
-
-	private void fireEvent(AuthorizationEvent event) {
-		if (event == null)
-			return;
-		Object[] services = listenerTracker.getServices();
-		if (services == null)
-			return;
-		CopyOnWriteIdentityMap listeners = new CopyOnWriteIdentityMap();
-		listeners.putAll(services);
-		ListenerQueue queue = new ListenerQueue(manager);
-		queue.queueListeners(listeners.entrySet(), dispatcher);
-		queue.dispatchEventSynchronous(0, event);
-	}
-
-	/**
-	 * Authorizes a <code>SignedContent</code> object.  The engine determines if the 
-	 * signed content authorization should be granted.
-	 * @param content
-	 * @param context the context associated with the signed content
-	 * @return an authorization event which will be fired.  A value of <code>null</code>
-	 * may be returned; in this case no authorization event will be fired.
-	 */
-	protected abstract AuthorizationEvent doAuthorize(SignedContent content, Object context);
-
-	/**
-	 * Return the current status of the Authorization system.
-	 * 
-	 * @return A value of {@link AuthorizationStatus#OK} or {@link AuthorizationStatus#ERROR}
-	 * @see AuthorizationStatus#OK
-	 * @see AuthorizationStatus#ERROR
-	 */
-	abstract public int getStatus();
-
-	class AuthEventDispatcher implements EventDispatcher {
-		public void dispatchEvent(Object eventListener, Object listenerObject, int eventAction, Object eventObject) {
-			((AuthorizationListener) eventListener).authorizationEvent((AuthorizationEvent) eventObject);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEvent.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEvent.java
deleted file mode 100644
index 23fb3da..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationEvent.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.provisional.service.security;
-
-import org.eclipse.osgi.signedcontent.SignedContent;
-
-/**
- * An event that is fired when an AuthorizationEngine implementation makes
- * a decision. 
- * @since 3.4
- */
-public class AuthorizationEvent {
-
-	/**
-	 * Result code meaning that the operation was allowed
-	 */
-	public static final int ALLOWED = 0;
-
-	/**
-	 * Result code meaning that the operation was denied
-	 */
-	public static final int DENIED = 1;
-
-	private final int result;
-	private final SignedContent content;
-	private final Object context;
-	private final int severity;
-
-	/**
-	 * Create a new AuthorizationEvent
-	 * @param result - the result code 
-	 * @param content - the signed content
-	 * @param context - operation specific context
-	 * @param severity - severity code
-	 */
-	public AuthorizationEvent(int result, SignedContent content, Object context, int severity) {
-		this.result = result;
-		this.content = content;
-		this.context = context;
-		this.severity = severity;
-	}
-
-	/**
-	 * Get the result code
-	 * @return - the result code
-	 */
-	public int getResult() {
-		return result;
-	}
-
-	/**
-	 * get the severity
-	 * @return - the severity
-	 */
-	public int getSeverity() {
-		return severity;
-	}
-
-	/**
-	 * Get the SignedContent object being evaluated
-	 * @return - SignedContent
-	 */
-	public SignedContent getSignedContent() {
-		return content;
-	}
-
-	/**
-	 * Get the operation specific context
-	 * @return - context
-	 */
-	public Object getContext() {
-		return context;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationListener.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationListener.java
deleted file mode 100644
index 9cc4f3f..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.provisional.service.security;
-
-import java.util.EventListener;
-
-/**
- * A Listener interface for an authorization handler. Implementors 
- * should register as an OSGI service.
- * @since 3.4
- */
-public interface AuthorizationListener extends EventListener {
-
-	/**
-	 * Called when an AuthorizationEvent has occurred
-	 */
-	public void authorizationEvent(AuthorizationEvent event);
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationStatus.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationStatus.java
deleted file mode 100644
index 0d7074d..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/service/security/AuthorizationStatus.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.provisional.service.security;
-
-/**
- * Constants for status codes in the Authorization engine.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * 
- * @since 3.4
- */
-public class AuthorizationStatus {
-
-	/**
-	 * This code means that the system is functioning normally - no bundles
-	 * are currently experiencing authorization problems.
-	 */
-	public static final int OK = 0x00;
-
-	/**
-	 * This code means that there are bundles in the system that are being
-	 * disabled due to authorization constraints.
-	 */
-	public static final int ERROR = 0x01;
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java
deleted file mode 100644
index 5ea5557..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.provisional.verifier;
-
-import java.security.cert.Certificate;
-import java.util.Date;
-
-/**
- * This class represents a chain of certificates.
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is no guarantee that this API will
- * work or that it will remain the same. Please do not use this API without
- * consulting with the equinox team.
- * </p>
- */
-public interface CertificateChain {
-	/**
-	 * Returns the list of X500 distinguished names that make up the certificate chain. Each
-	 * distinguished name is separated by a ';'. The first distinguished name is the signer 
-	 * and the last is the root Certificate Authority.
-	 * @return the list of X500 distinguished names that make up the certificate chain
-	 */
-	public String getChain();
-
-	/**
-	 * Retruns all certificates in this certificate chain
-	 * @return all certificates in this certificate chain
-	 */
-	public Certificate[] getCertificates();
-
-	/**
-	 * Returns the first certificate of the certificate chain
-	 * @return the first certificate of the certificate chain
-	 */
-	public Certificate getSigner();
-
-	/**
-	 * Returns the root certificate of the certificate chain
-	 * @return the foot certificate of the certificate chain
-	 */
-	public Certificate getRoot();
-
-	/**
-	 * Returns true if this certificate chain is trusted
-	 * @return true if this certificate chain is trusted
-	 */
-	boolean isTrusted();
-
-	/**
-	 * Return the signing time for this signer.
-	 * 
-	 * @return	null if there is a signing time for this signer null otherwise
-	 */
-	public Date getSigningTime();
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java
deleted file mode 100644
index d418de8..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.provisional.verifier;
-
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-
-/**
- * A CertificateTrustAuthority is used to check if certificate chains are trusted.
- * 
- */
-public interface CertificateTrustAuthority {
-
-	/**
-	 * Determines if the certificates are trusted.  This method will throw a 
-	 * <code>CertificateException</code> if the specified certificate chain is not trusted.
-	 * @param certChain a chain of certificates
-	 * @throws CertificateException if the certficates are not trusted
-	 */
-	public void checkTrust(Certificate[] certChain) throws CertificateException;
-
-	/**
-	 * Add the specified certificate chain as a trusted certificate chain.
-	 * 
-	 * @param certChain a chain of certificates
-	 */
-	public void addTrusted(Certificate[] certChain) throws CertificateException;
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java
deleted file mode 100644
index 63e40fd..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.provisional.verifier;
-
-import java.security.SignatureException;
-import java.security.cert.*;
-
-/**
- * A certificate verifier is used to verify the authenticity of a signed 
- * repository.  A certificate verifier is created using a 
- * {@link CertificateVerifierFactory}.
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is no guarantee that this API will
- * work or that it will remain the same. Please do not use this API without
- * consulting with the equinox team.
- * </p>
- */
-public interface CertificateVerifier {
-	/**
-	 * Verify the content of the repository.
-	 * 
-	 * @throws CertificateException			
-	 * @throws CertificateExpiredException
-	 * @throws CertificateParsingException
-	 * @throws SignatureException
-	 */
-	public void checkContent() throws CertificateException, CertificateExpiredException, SignatureException;
-
-	/**
-	 * Verifies the content of the repository.  An array is returned with the entry names 
-	 * which are corrupt.  If no entries are corrupt then an empty array is returned.
-	 * @return An array of entry names which are corrupt.  An empty array is returned if the 
-	 * repository is not corrupt or if the repository is not signed. 
-	 */
-	public String[] verifyContent();
-
-	/**
-	 * Returns true if the repository is signed
-	 * @return true if the repository is signed
-	 */
-	public boolean isSigned();
-
-	/**
-	 * Returns all certificate chains of the repository.  All certificate chains
-	 * are returned whether they are trusted or not.  If the repository is not signed 
-	 * then an empty array is returned.
-	 * @return all certificate chains of the repository
-	 */
-	public CertificateChain[] getChains();
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.java
deleted file mode 100644
index e36fb81..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.provisional.verifier;
-
-import java.io.File;
-import java.io.IOException;
-import org.osgi.framework.Bundle;
-
-/**
- * A factory used to create certificate verifiers.
- * <p>
- * <strong>EXPERIMENTAL</strong>. This class or interface has been added as
- * part of a work in progress. There is no guarantee that this API will
- * work or that it will remain the same. Please do not use this API without
- * consulting with the equinox team.
- * </p>
- */
-public interface CertificateVerifierFactory {
-	/**
-	 * Creates a certificate verifier for the specified content of a repository
-	 * @param content the content of the repository
-	 * @return a certificate verifier for the specified content of a repository
-	 * @throws IOException if an IO exception occurs while reading the repository
-	 */
-	public CertificateVerifier getVerifier(File content) throws IOException;
-
-	/**
-	 * Returns a certificate verifier for the specified bundle.
-	 * @param bundle the bundle to get a verifier for 
-	 * @return a certificate verifier for the specified bundle.
-	 * @throws IOException if an IO exception occurs while reading the bundle content
-	 */
-	public CertificateVerifier getVerifier(Bundle bundle) throws IOException;
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/DefaultAuthorizationEngine.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/DefaultAuthorizationEngine.java
deleted file mode 100644
index 4257bf0..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/DefaultAuthorizationEngine.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.service.security;
-
-import java.io.*;
-import java.security.cert.CertificateException;
-import java.util.Properties;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.internal.core.AbstractBundle;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.baseadaptor.DevClassPathHelper;
-import org.eclipse.osgi.internal.provisional.service.security.*;
-import org.eclipse.osgi.internal.signedcontent.SignedBundleHook;
-import org.eclipse.osgi.internal.signedcontent.SignedStorageHook;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-import org.osgi.framework.*;
-
-public class DefaultAuthorizationEngine extends AuthorizationEngine {
-
-	private static final String VERSION_PROP = "Version"; //$NON-NLS-1$
-	private static final String VERSION_NUM = "1.0"; //$NON-NLS-1$
-	private static final Version VERSION_MAX = new Version(2, 0, 0);
-
-	private final State systemState;
-	private final BundleContext bundleContext;
-
-	public static final int ENFORCE_NONE = 0x0000;
-	public static final int ENFORCE_SIGNED = 0x0001;
-	public static final int ENFORCE_TRUSTED = 0x0002;
-	public static final int ENFORCE_VALIDITY = 0x0004;
-
-	private static final String STR_ENFORCE_NONE = "any"; //$NON-NLS-1$
-	private static final String STR_ENFORCE_SIGNED = "signed"; //$NON-NLS-1$
-	private static final String STR_ENFORCE_TRUSTED = "trusted"; //$NON-NLS-1$
-	private static final String STR_ENFORCE_VALIDITY = "validity"; //$NON-NLS-1$
-
-	private static final String POLICY_NAME = "org.eclipse.equinox.security"; //$NON-NLS-1$
-	private static final String POLICY_PROP = "osgi.signedcontent.authorization.engine.policy"; //$NON-NLS-1$
-	private static final String FILE_LOAD_POLICY = ".loadpolicy"; //$NON-NLS-1$
-	private static int enforceFlags = 0;
-
-	private static final File policyFile;
-	static {
-		File osgiFile = LocationManager.getOSGiConfigurationDir();
-		policyFile = new File(osgiFile.getPath() + File.separatorChar + FILE_LOAD_POLICY);
-
-		Properties properties = null;
-		// load the policy file, if not exist, create it and load it
-		if (policyFile.exists()) {
-			try {
-				properties = new Properties();
-				properties.load(new FileInputStream(policyFile));
-			} catch (IOException e) {
-				SignedBundleHook.log("Error loading policy file", FrameworkLogEntry.ERROR, e); //$NON-NLS-1$
-			}
-		}
-
-		if (properties != null) {
-			Version version = new Version(0, 0, 0);
-			String versionProp = properties.getProperty(VERSION_PROP);
-			if (versionProp != null)
-				try {
-					version = new Version(versionProp);
-				} catch (IllegalArgumentException e) {
-					// do nothing;
-				}
-			if (VERSION_MAX.compareTo(version) > 0) {
-				String policy = properties.getProperty(POLICY_PROP);
-				if (policy != null)
-					try {
-						enforceFlags = Integer.parseInt(policy);
-					} catch (NumberFormatException e) {
-						// do nothing;
-					}
-			}
-		} else {
-			String policy = FrameworkProperties.getProperty(POLICY_PROP);
-			if (policy == null || STR_ENFORCE_NONE.equals(policy))
-				enforceFlags = ENFORCE_NONE;
-			else if (STR_ENFORCE_TRUSTED.equals(policy))
-				enforceFlags = ENFORCE_TRUSTED | ENFORCE_SIGNED;
-			else if (STR_ENFORCE_SIGNED.equals(policy))
-				enforceFlags = ENFORCE_SIGNED;
-			else if (STR_ENFORCE_VALIDITY.equals(policy))
-				enforceFlags = ENFORCE_TRUSTED | ENFORCE_SIGNED | ENFORCE_VALIDITY;
-		}
-
-	}
-
-	public DefaultAuthorizationEngine(BundleContext context, State systemState) {
-		super(context);
-		this.bundleContext = context;
-		this.systemState = systemState;
-	}
-
-	protected AuthorizationEvent doAuthorize(SignedContent content, Object context) {
-		boolean enabled = isEnabled(content, context);
-		AuthorizationEvent event = null;
-		if (context instanceof Bundle) {
-			BundleDescription desc = systemState.getBundle(((Bundle) context).getBundleId());
-			if (!enabled) {
-				DisabledInfo info = new DisabledInfo(POLICY_NAME, null, desc); // TODO add an error message
-				systemState.addDisabledInfo(info);
-				event = new AuthorizationEvent(AuthorizationEvent.DENIED, content, context, 0); // TODO severity??
-			} else {
-				DisabledInfo info = systemState.getDisabledInfo(desc, POLICY_NAME);
-				if (info != null) {
-					systemState.removeDisabledInfo(info);
-				}
-				event = new AuthorizationEvent(AuthorizationEvent.ALLOWED, content, context, 0);
-			}
-		}
-		return event;
-	}
-
-	private boolean isEnabled(SignedContent content, Object context) {
-		if (context instanceof Bundle && DevClassPathHelper.inDevelopmentMode()) {
-			String[] devClassPath = DevClassPathHelper.getDevClassPath(((Bundle) context).getSymbolicName());
-			if (devClassPath != null && devClassPath.length > 0)
-				return true; // always enabled bundles from workspace; they never are signed
-		}
-		if ((0 != (enforceFlags & ENFORCE_SIGNED)) && ((content == null) || !content.isSigned()))
-			return false;
-
-		SignerInfo[] signerInfos = content == null ? new SignerInfo[0] : content.getSignerInfos();
-		for (int i = 0; i < signerInfos.length; i++) {
-			if ((0 != (enforceFlags & ENFORCE_TRUSTED)) && !signerInfos[i].isTrusted())
-				return false;
-			if ((0 != (enforceFlags & ENFORCE_VALIDITY)))
-				try {
-					content.checkValidity(signerInfos[i]);
-				} catch (CertificateException e) {
-					return false;
-				}
-		}
-		return true;
-	}
-
-	public int getStatus() {
-		if (0 != systemState.getDisabledBundles().length) {
-			return AuthorizationStatus.ERROR;
-		}
-		return AuthorizationStatus.OK;
-	}
-
-	public void processInstalledBundles() {
-		Bundle[] bundles = bundleContext.getBundles();
-		for (int i = 0; i < bundles.length; i++) {
-			BaseData baseData = (BaseData) ((AbstractBundle) bundles[i]).getBundleData();
-			SignedStorageHook hook = (SignedStorageHook) baseData.getStorageHook(SignedStorageHook.KEY);
-			SignedContent signedContent = hook != null ? hook.getSignedContent() : null;
-			authorize(signedContent, bundles[i]);
-		}
-	}
-
-	public void setLoadPolicy(int policy) {
-		if ((policy | ENFORCE_SIGNED | ENFORCE_TRUSTED | ENFORCE_VALIDITY) != (ENFORCE_SIGNED | ENFORCE_TRUSTED | ENFORCE_VALIDITY))
-			throw new IllegalArgumentException("Invalid policy: " + policy); //$NON-NLS-1$
-		enforceFlags = policy;
-		Properties properties = new Properties();
-		properties.setProperty(POLICY_PROP, Integer.toString(policy));
-		properties.setProperty(VERSION_PROP, VERSION_NUM); // need to act different when we have different versions
-		try {
-			properties.store(new FileOutputStream(policyFile), null);
-		} catch (IOException e) {
-			SignedBundleHook.log("Error saving load policy file", FrameworkLogEntry.ERROR, e); //$NON-NLS-1$
-		}
-	}
-
-	public int getLoadPolicy() {
-		return enforceFlags;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java
deleted file mode 100644
index 83fdd36..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/service/security/KeyStoreTrustEngine.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.service.security;
-
-import java.io.*;
-import java.security.*;
-import java.security.cert.*;
-import java.security.cert.Certificate;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.signedcontent.SignedBundleHook;
-import org.eclipse.osgi.internal.signedcontent.SignedContentMessages;
-import org.eclipse.osgi.service.security.TrustEngine;
-import org.eclipse.osgi.util.NLS;
-
-//*potential enhancements*
-// 1. reloading from the backing file when it changes
-// 3. methods to support lock/unlock
-//  3a. Using a callback handler to collect the password
-//  3b. managing lock/unlock between multiple threads. dealing with SWT UI thread
-// 4. methods to support changing password, etc
-// 5. methods to support export, etc
-// 6. 'friendly-name' generator
-// 7. Listeners for change events
-public class KeyStoreTrustEngine extends TrustEngine {
-
-	private KeyStore keyStore;
-
-	private final String type;
-	private final String path;
-	private final char[] password;
-	private final String name;
-
-	/**
-	 * Create a new KeyStoreTrustEngine that is backed by a KeyStore 
-	 * @param path - path to the keystore
-	 * @param type - the type of keystore at the path location
-	 * @param password - the password required to unlock the keystore
-	 */
-	public KeyStoreTrustEngine(String path, String type, char[] password, String name) { //TODO: This should be a *CallbackHandler*
-		this.path = path;
-		this.type = type;
-		this.password = password;
-		this.name = name;
-	}
-
-	/**
-	 * Return the type
-	 * @return type - the type for the KeyStore being managed
-	 */
-	private String getType() {
-		return type;
-	}
-
-	/**
-	 * Return the path
-	 * @return - the path for the KeyStore being managed
-	 */
-	private String getPath() {
-		return path;
-	}
-
-	/**
-	 * Return the password
-	 * @return password - the password as a char[] 
-	 */
-	private char[] getPassword() {
-		return password;
-	}
-
-	/**
-	 * Return the KeyStore managed
-	 * @return The KeyStore instance, initialized and loaded
-	 * @throws KeyStoreException
-	 */
-	private synchronized KeyStore getKeyStore() throws IOException, GeneralSecurityException {
-		if (null == keyStore) {
-			keyStore = KeyStore.getInstance(getType());
-			final InputStream in = getInputStream();
-			try {
-				loadStore(keyStore, in);
-			} finally {
-				try {
-					in.close();
-				} catch (IOException e) {
-					//ignore secondary failure
-				}
-			}
-		}
-
-		if (keyStore == null)
-			throw new KeyStoreException(NLS.bind(SignedContentMessages.Default_Trust_Keystore_Load_Failed, getPath()));
-
-		return keyStore;
-	}
-
-	public Certificate findTrustAnchor(Certificate[] certChain) throws IOException {
-
-		if (certChain == null || certChain.length == 0)
-			throw new IllegalArgumentException("Certificate chain is required"); //$NON-NLS-1$
-
-		try {
-			Certificate rootCert = null;
-			KeyStore store = getKeyStore();
-			for (int i = 0; i < certChain.length; i++) {
-				if (certChain[i] instanceof X509Certificate) {
-					if (i == certChain.length - 1) {
-						// this is the last certificate in the chain
-						// determine if we have a valid root
-						X509Certificate cert = (X509Certificate) certChain[i];
-						if (cert.getSubjectDN().equals(cert.getIssuerDN())) {
-							cert.verify(cert.getPublicKey());
-							rootCert = cert; // this is a self-signed certificate
-						} else {
-							// try to find a parent, we have an incomplete chain
-							return findAlternativeRoot(cert, store);
-						}
-					} else {
-						X509Certificate nextX509Cert = (X509Certificate) certChain[i + 1];
-						certChain[i].verify(nextX509Cert.getPublicKey());
-					}
-				}
-
-				synchronized (store) {
-					String alias = rootCert == null ? null : store.getCertificateAlias(rootCert);
-					if (alias != null)
-						return store.getCertificate(alias);
-					else if (rootCert != certChain[i]) {
-						alias = store.getCertificateAlias(certChain[i]);
-						if (alias != null)
-							return store.getCertificate(alias);
-					}
-					// if we have reached the end and the last cert is not found to be a valid root CA
-					// then we need to back off the root CA and try to find an alternative
-					if (certChain.length > 1 && i == certChain.length - 1 && certChain[i - 1] instanceof X509Certificate)
-						return findAlternativeRoot((X509Certificate) certChain[i - 1], store);
-				}
-			}
-		} catch (KeyStoreException e) {
-			throw (IOException) new IOException(e.getMessage()).initCause(e);
-		} catch (GeneralSecurityException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.WARNING, e);
-			return null;
-		}
-		return null;
-	}
-
-	private Certificate findAlternativeRoot(X509Certificate cert, KeyStore store) throws InvalidKeyException, KeyStoreException, NoSuchAlgorithmException, NoSuchProviderException, SignatureException, CertificateException {
-		synchronized (store) {
-			for (Enumeration e = store.aliases(); e.hasMoreElements();) {
-				Certificate nextCert = store.getCertificate((String) e.nextElement());
-				if (nextCert instanceof X509Certificate && ((X509Certificate) nextCert).getSubjectDN().equals(cert.getIssuerDN())) {
-					cert.verify(nextCert.getPublicKey());
-					return nextCert;
-				}
-			}
-			return null;
-		}
-	}
-
-	protected String doAddTrustAnchor(Certificate cert, String alias) throws IOException, GeneralSecurityException {
-		if (isReadOnly())
-			throw new IOException(SignedContentMessages.Default_Trust_Read_Only);
-		if (cert == null) {
-			throw new IllegalArgumentException("Certificate must be specified"); //$NON-NLS-1$
-		}
-		try {
-			KeyStore store = getKeyStore();
-			synchronized (store) {
-				String oldAlias = store.getCertificateAlias(cert);
-				if (null != oldAlias)
-					throw new CertificateException(SignedContentMessages.Default_Trust_Existing_Cert);
-				Certificate oldCert = store.getCertificate(alias);
-				if (null != oldCert)
-					throw new CertificateException(SignedContentMessages.Default_Trust_Existing_Alias);
-				store.setCertificateEntry(alias, cert);
-				final OutputStream out = getOutputStream();
-				try {
-					saveStore(store, out);
-				} finally {
-					safeClose(out);
-				}
-			}
-		} catch (KeyStoreException ke) {
-			throw (CertificateException) new CertificateException(ke.getMessage()).initCause(ke);
-		}
-		return alias;
-	}
-
-	protected void doRemoveTrustAnchor(Certificate cert) throws IOException, GeneralSecurityException {
-		if (isReadOnly())
-			throw new IOException(SignedContentMessages.Default_Trust_Read_Only);
-		if (cert == null) {
-			throw new IllegalArgumentException("Certificate must be specified"); //$NON-NLS-1$
-		}
-		try {
-			KeyStore store = getKeyStore();
-			synchronized (store) {
-				String alias = store.getCertificateAlias(cert);
-				if (alias == null) {
-					throw new CertificateException(SignedContentMessages.Default_Trust_Cert_Not_Found);
-				}
-				removeTrustAnchor(alias);
-			}
-		} catch (KeyStoreException ke) {
-			throw (CertificateException) new CertificateException(ke.getMessage()).initCause(ke);
-		}
-	}
-
-	protected void doRemoveTrustAnchor(String alias) throws IOException, GeneralSecurityException {
-
-		if (alias == null) {
-			throw new IllegalArgumentException("Alias must be specified"); //$NON-NLS-1$
-		}
-		try {
-			KeyStore store = getKeyStore();
-			synchronized (store) {
-				Certificate oldCert = store.getCertificate(alias);
-				if (oldCert == null)
-					throw new CertificateException(SignedContentMessages.Default_Trust_Cert_Not_Found);
-				store.deleteEntry(alias);
-				final OutputStream out = getOutputStream();
-				try {
-					saveStore(store, out);
-				} finally {
-					safeClose(out);
-				}
-			}
-		} catch (KeyStoreException ke) {
-			throw (CertificateException) new CertificateException(ke.getMessage()).initCause(ke);
-		}
-	}
-
-	public Certificate getTrustAnchor(String alias) throws IOException, GeneralSecurityException {
-
-		if (alias == null) {
-			throw new IllegalArgumentException("Alias must be specified"); //$NON-NLS-1$
-		}
-
-		try {
-			KeyStore store = getKeyStore();
-			synchronized (store) {
-				return store.getCertificate(alias);
-			}
-		} catch (KeyStoreException ke) {
-			throw (CertificateException) new CertificateException(ke.getMessage()).initCause(ke);
-		}
-	}
-
-	public String[] getAliases() throws IOException, GeneralSecurityException {
-
-		ArrayList returnList = new ArrayList();
-		try {
-			KeyStore store = getKeyStore();
-			synchronized (store) {
-				for (Enumeration aliases = store.aliases(); aliases.hasMoreElements();) {
-					String currentAlias = (String) aliases.nextElement();
-					if (store.isCertificateEntry(currentAlias)) {
-						returnList.add(currentAlias);
-					}
-				}
-			}
-		} catch (KeyStoreException ke) {
-			throw (CertificateException) new CertificateException(ke.getMessage()).initCause(ke);
-		}
-		return (String[]) returnList.toArray(new String[] {});
-	}
-
-	/**
-	 * Load using the current password
-	 */
-	private void loadStore(KeyStore store, InputStream is) throws IOException, GeneralSecurityException {
-		store.load(is, getPassword());
-	}
-
-	/**
-	 * Save using the current password
-	 */
-	private void saveStore(KeyStore store, OutputStream os) throws IOException, GeneralSecurityException {
-		store.store(os, getPassword());
-	}
-
-	/**
-	 * Closes a stream and ignores any resulting exception. This is useful
-	 * when doing stream cleanup in a finally block where secondary exceptions
-	 * are not worth logging.
-	 */
-	private void safeClose(OutputStream out) {
-		try {
-			if (out != null)
-				out.close();
-		} catch (IOException e) {
-			//ignore
-		}
-	}
-
-	/**
-	 * Get an input stream for the KeyStore managed
-	 * @return inputstream - the stream
-	 * @throws KeyStoreException
-	 */
-	private InputStream getInputStream() throws IOException {
-		return new FileInputStream(new File(getPath()));
-	}
-
-	/**
-	 * Get an output stream for the KeyStore managed
-	 * @return outputstream - the stream
-	 * @throws KeyStoreException
-	 */
-	private OutputStream getOutputStream() throws IOException {
-
-		File file = new File(getPath());
-		if (!file.exists())
-			file.createNewFile();
-
-		return new FileOutputStream(file);
-	}
-
-	public boolean isReadOnly() {
-		return getPassword() == null || !(new File(path).canWrite());
-	}
-
-	public String getName() {
-		return name;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BERProcessor.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BERProcessor.java
deleted file mode 100644
index 57b9852..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BERProcessor.java
+++ /dev/null
@@ -1,274 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.math.BigInteger;
-import java.security.SignatureException;
-
-/**
- * This is a simple class that processes BER structures. This class
- * uses BER processing as outlined in X.690.
- */
-public class BERProcessor {
-	/**
-	 * This is the buffer that contains the BER structures that are being interrogated.
-	 */
-	byte buffer[];
-	/**
-	 * The offset into <code>buffer</code> to the start of the structure being interrogated.
-	 * If the offset is -1 that means that we have read the last structure.
-	 */
-	int offset;
-	/**
-	 * The last valid offset in <code>buffer</code>.
-	 */
-	int lastOffset;
-	/**
-	 * The offset into <code>buffer</code> to the start of the content of the structure
-	 * being interrogated.
-	 */
-	int contentOffset;
-	/**
-	 * The length of the content of the structure being interrogated.
-	 */
-	int contentLength;
-	/**
-	 * The offset into <code>buffer</code> of the end of the structure being interrogated.
-	 */
-	int endOffset;
-	/**
-	 * The class of the tag of the current structure.
-	 */
-	int classOfTag;
-	static final int UNIVERSAL_TAGCLASS = 0;
-	static final int APPLICATION_TAGCLASS = 1;
-	static final int CONTEXTSPECIFIC_TAGCLASS = 2;
-	static final int PRIVATE_TAGCLASS = 3;
-
-	static final byte BOOLTAG = 1;
-	static final byte INTTAG = 2;
-	static final byte OIDTAG = 6;
-	static final byte SEQTAG = 16;
-	static final byte SETTAG = 17;
-	static final byte NULLTAG = 5;
-
-	/**
-	 * Tagnames used in toString()
-	 */
-	static final String tagNames[] = {"<null>", "boolean", "int", "bitstring", "octetstring", "null", "objid", "objdesc", "external", "real", "enum", "pdv", "utf8", "relobjid", "resv", "resv", "sequence", "set", "char string"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$ //$NON-NLS-7$ //$NON-NLS-8$ //$NON-NLS-9$ //$NON-NLS-10$ //$NON-NLS-11$ //$NON-NLS-12$ //$NON-NLS-13$ //$NON-NLS-14$ //$NON-NLS-15$ //$NON-NLS-16$ //$NON-NLS-17$ //$NON-NLS-18$ //$NON-NLS-19$
-
-	/**
-	 * True if this is a structure for a constructed encoding.
-	 */
-	public boolean constructed;
-	/**
-	 * The tag type. Note that X.690 specifies encodings for tags with values greater than 31,
-	 * but currently this class does not handle these kinds of tags.
-	 */
-	public byte tag;
-
-	/**
-	 * Constructs a BERProcessor to operate on the passed buffer. The first structure in the
-	 * buffer will be processed before this method returns.
-	 * 
-	 * @param buffer the buffer containing the BER structures.
-	 * @param offset the offset into <code>buffer</code> to the start of the first structure.
-	 * @param len the length of the BER structure.
-	 * @throws SignatureException 
-	 */
-	public BERProcessor(byte buffer[], int offset, int len) throws SignatureException {
-		this.buffer = buffer;
-		this.offset = offset;
-		lastOffset = len + offset;
-		processStructure();
-	}
-
-	/**
-	 * Parse the structure found at the current <code>offset</code> into <code>buffer</code>.
-	 * Most methods, constructor, and stepinto, will call this method automatically. If 
-	 * <code>offset</code> is modified outside of those methods, this method will need to
-	 * be invoked.
-	 */
-	public void processStructure() throws SignatureException {
-		// Don't process if we are at the end
-		if (offset == -1)
-			return;
-		endOffset = offset;
-		// section 8.1.2.2
-		classOfTag = (buffer[offset] & 0xff) >> 6;
-		// section 8.1.2.5
-		constructed = (buffer[offset] & 0x20) != 0;
-		// section 8.1.2.3
-		byte tagNumber = (byte) (buffer[offset] & 0x1f);
-		if (tagNumber < 32) {
-			tag = tagNumber;
-			endOffset = offset + 1;
-		} else {
-			throw new SignatureException("Can't handle tags > 32"); //$NON-NLS-1$
-		}
-		if ((buffer[endOffset] & 0x80) == 0) {
-			// section 8.1.3.4 (doing the short form of the length)
-			contentLength = buffer[endOffset];
-			endOffset++;
-		} else {
-			// section 8.1.3.5 (doing the long form of the length)
-			int octetCount = buffer[endOffset] & 0x7f;
-			if (octetCount > 3)
-				throw new SignatureException("ContentLength octet count too large: " + octetCount); //$NON-NLS-1$
-			contentLength = 0;
-			endOffset++;
-			for (int i = 0; i < octetCount; i++) {
-				contentLength <<= 8;
-				contentLength |= buffer[endOffset] & 0xff;
-				endOffset++;
-			}
-			// section 8.1.3.6 (doing the indefinite form
-			if (octetCount == 0)
-				contentLength = -1;
-		}
-		contentOffset = endOffset;
-		if (contentLength != -1)
-			endOffset += contentLength;
-		if (endOffset > lastOffset)
-			throw new SignatureException("Content length too large: " + endOffset + " > " + lastOffset); //$NON-NLS-1$ //$NON-NLS-2$
-	}
-
-	/**
-	 * Returns a String representation of the current BER structure.
-	 * @return a String representation of the current BER structure.
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-		StringBuffer sb = new StringBuffer();
-		switch (classOfTag) {
-			case UNIVERSAL_TAGCLASS :
-				sb.append('U');
-				break;
-			case APPLICATION_TAGCLASS :
-				sb.append('A');
-				break;
-			case CONTEXTSPECIFIC_TAGCLASS :
-				sb.append('C');
-				break;
-			case PRIVATE_TAGCLASS :
-				sb.append('P');
-				break;
-		}
-		sb.append(constructed ? 'C' : 'P');
-		sb.append(" tag=" + tag); //$NON-NLS-1$
-		if (tag < tagNames.length) {
-			sb.append("(" + tagNames[tag] + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		sb.append(" len="); //$NON-NLS-1$
-		sb.append(contentLength);
-		switch (tag) {
-			case INTTAG :
-				sb.append(" value=" + getIntValue()); //$NON-NLS-1$
-				break;
-			case OIDTAG :
-				sb.append(" value="); //$NON-NLS-1$
-				int oid[] = getObjId();
-				for (int i = 0; i < oid.length; i++) {
-					if (i > 0)
-						sb.append('.');
-					sb.append(oid[i]);
-				}
-		}
-		if (tag == 12 || (tag >= 18 && tag <= 22) || (tag >= 25 && tag <= 30)) {
-			sb.append(" value="); //$NON-NLS-1$
-			sb.append(getString());
-		}
-		return sb.toString();
-	}
-
-	/**
-	 * Returns a BERProcessor for the content of the current structure.
-	 * @throws SignatureException 
-	 */
-	public BERProcessor stepInto() throws SignatureException {
-		return new BERProcessor(buffer, contentOffset, contentLength);
-	}
-
-	public void stepOver() throws SignatureException {
-		offset = endOffset;
-		if (endOffset >= lastOffset) {
-			offset = -1;
-			return;
-		}
-		processStructure();
-	}
-
-	public boolean endOfSequence() {
-		return offset == -1;
-	}
-
-	/**
-	 * Gets the content from the current structure as a String.
-	 * @return the content from the current structure as a String.
-	 */
-	public String getString() {
-		return new String(buffer, contentOffset, contentLength);
-	}
-
-	/**
-	 * Gets the content from the current structure as an int.
-	 * @return the content from the current structure as an int.
-	 */
-	public BigInteger getIntValue() {
-		return new BigInteger(getBytes());
-	}
-
-	/**
-	 * Gets the content from the current structure as an object id (int[]).
-	 * @return the content from the current structure as an object id (int[]).
-	 */
-	public int[] getObjId() {
-		// First count the ids
-		int count = 0;
-		for (int i = 0; i < contentLength; i++) {
-			// section 8.19.2
-			if ((buffer[contentOffset + i] & 0x80) == 0)
-				count++;
-		}
-		count++; // section 8.19.3
-		int oid[] = new int[count];
-		int index = 0;
-		int currentValue = 0;
-		for (int i = 0; i < contentLength; i++) {
-			currentValue <<= 7;
-			currentValue |= buffer[contentOffset + i] & 0x7f;
-			// section 8.19.2
-			if ((buffer[contentOffset + i] & 0x80) == 0) {
-				if (index == 0) {
-					// section 8.19.4 special processing
-					oid[index++] = currentValue / 40;
-					oid[index++] = currentValue % 40;
-				} else {
-					oid[index++] = currentValue;
-				}
-				currentValue = 0;
-			}
-		}
-		return oid;
-	}
-
-	/**
-	 * Get a copy of the bytes in the content of the current structure.
-	 * @return a copy of the bytes in the content of the current structure.
-	 */
-	public byte[] getBytes() {
-		byte v[] = new byte[contentLength];
-		System.arraycopy(buffer, contentOffset, v, 0, contentLength);
-		return v;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/Base64.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/Base64.java
deleted file mode 100644
index 32d0983..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/Base64.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-public class Base64 {
-
-	private static final byte equalSign = (byte) '=';
-
-	static char digits[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', //
-			'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', //
-			'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', //
-			'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/'};
-
-	/**
-	 * This method decodes the byte array in base 64 encoding into a char array
-	 * Base 64 encoding has to be according to the specification given by the
-	 * RFC 1521 (5.2).
-	 * 
-	 * @param data the encoded byte array
-	 * @return the decoded byte array
-	 */
-	public static byte[] decode(byte[] data) {
-		if (data.length == 0)
-			return data;
-		int lastRealDataIndex = data.length - 1;
-		while (data[lastRealDataIndex] == equalSign)
-			lastRealDataIndex--;
-		// original data digit is 8 bits long, but base64 digit is 6 bits long
-		int padBytes = data.length - 1 - lastRealDataIndex;
-		int byteLength = data.length * 6 / 8 - padBytes;
-		byte[] result = new byte[byteLength];
-		// Each 4 bytes of input (encoded) we end up with 3 bytes of output
-		int dataIndex = 0;
-		int resultIndex = 0;
-		int allBits = 0;
-		// how many result chunks we can process before getting to pad bytes
-		int resultChunks = (lastRealDataIndex + 1) / 4;
-		for (int i = 0; i < resultChunks; i++) {
-			allBits = 0;
-			// Loop 4 times gathering input bits (4 * 6 = 24)
-			for (int j = 0; j < 4; j++)
-				allBits = (allBits << 6) | decodeDigit(data[dataIndex++]);
-			// Loop 3 times generating output bits (3 * 8 = 24)
-			for (int j = resultIndex + 2; j >= resultIndex; j--) {
-				result[j] = (byte) (allBits & 0xff); // Bottom 8 bits
-				allBits = allBits >>> 8;
-			}
-			resultIndex += 3; // processed 3 result bytes
-		}
-		// Now we do the extra bytes in case the original (non-encoded) data
-		// was not multiple of 3 bytes
-		switch (padBytes) {
-			case 1 :
-				// 1 pad byte means 3 (4-1) extra Base64 bytes of input, 18
-				// bits, of which only 16 are meaningful
-				// Or: 2 bytes of result data
-				allBits = 0;
-				// Loop 3 times gathering input bits
-				for (int j = 0; j < 3; j++)
-					allBits = (allBits << 6) | decodeDigit(data[dataIndex++]);
-				// NOTE - The code below ends up being equivalent to allBits =
-				// allBits>>>2
-				// But we code it in a non-optimized way for clarity
-				// The 4th, missing 6 bits are all 0
-				allBits = allBits << 6;
-				// The 3rd, missing 8 bits are all 0
-				allBits = allBits >>> 8;
-				// Loop 2 times generating output bits
-				for (int j = resultIndex + 1; j >= resultIndex; j--) {
-					result[j] = (byte) (allBits & 0xff); // Bottom 8
-					// bits
-					allBits = allBits >>> 8;
-				}
-				break;
-			case 2 :
-				// 2 pad bytes mean 2 (4-2) extra Base64 bytes of input, 12 bits
-				// of data, of which only 8 are meaningful
-				// Or: 1 byte of result data
-				allBits = 0;
-				// Loop 2 times gathering input bits
-				for (int j = 0; j < 2; j++)
-					allBits = (allBits << 6) | decodeDigit(data[dataIndex++]);
-				// NOTE - The code below ends up being equivalent to allBits =
-				// allBits>>>4
-				// But we code it in a non-optimized way for clarity
-				// The 3rd and 4th, missing 6 bits are all 0
-				allBits = allBits << 6;
-				allBits = allBits << 6;
-				// The 3rd and 4th, missing 8 bits are all 0
-				allBits = allBits >>> 8;
-				allBits = allBits >>> 8;
-				result[resultIndex] = (byte) (allBits & 0xff); // Bottom
-				// 8
-				// bits
-				break;
-		}
-		return result;
-	}
-
-	/**
-	 * This method converts a Base 64 digit to its numeric value.
-	 * 
-	 * @param data digit (character) to convert
-	 * @return value for the digit
-	 */
-	static int decodeDigit(byte data) {
-		char charData = (char) data;
-		if (charData <= 'Z' && charData >= 'A')
-			return charData - 'A';
-		if (charData <= 'z' && charData >= 'a')
-			return charData - 'a' + 26;
-		if (charData <= '9' && charData >= '0')
-			return charData - '0' + 52;
-		switch (charData) {
-			case '+' :
-				return 62;
-			case '/' :
-				return 63;
-			default :
-				throw new IllegalArgumentException("Invalid char to decode: " + data); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * This method encodes the byte array into a char array in base 64 according
-	 * to the specification given by the RFC 1521 (5.2).
-	 * 
-	 * @param data the encoded char array
-	 * @return the byte array that needs to be encoded
-	 */
-	public static byte[] encode(byte[] data) {
-		int sourceChunks = data.length / 3;
-		int len = ((data.length + 2) / 3) * 4;
-		byte[] result = new byte[len];
-		int extraBytes = data.length - (sourceChunks * 3);
-		// Each 4 bytes of input (encoded) we end up with 3 bytes of output
-		int dataIndex = 0;
-		int resultIndex = 0;
-		int allBits = 0;
-		for (int i = 0; i < sourceChunks; i++) {
-			allBits = 0;
-			// Loop 3 times gathering input bits (3 * 8 = 24)
-			for (int j = 0; j < 3; j++)
-				allBits = (allBits << 8) | (data[dataIndex++] & 0xff);
-			// Loop 4 times generating output bits (4 * 6 = 24)
-			for (int j = resultIndex + 3; j >= resultIndex; j--) {
-				result[j] = (byte) digits[(allBits & 0x3f)]; // Bottom
-				// 6
-				// bits
-				allBits = allBits >>> 6;
-			}
-			resultIndex += 4; // processed 4 result bytes
-		}
-		// Now we do the extra bytes in case the original (non-encoded) data
-		// is not multiple of 4 bytes
-		switch (extraBytes) {
-			case 1 :
-				allBits = data[dataIndex++]; // actual byte
-				allBits = allBits << 8; // 8 bits of zeroes
-				allBits = allBits << 8; // 8 bits of zeroes
-				// Loop 4 times generating output bits (4 * 6 = 24)
-				for (int j = resultIndex + 3; j >= resultIndex; j--) {
-					result[j] = (byte) digits[(allBits & 0x3f)]; // Bottom
-					// 6
-					// bits
-					allBits = allBits >>> 6;
-				}
-				// 2 pad tags
-				result[result.length - 1] = (byte) '=';
-				result[result.length - 2] = (byte) '=';
-				break;
-			case 2 :
-				allBits = data[dataIndex++]; // actual byte
-				allBits = (allBits << 8) | (data[dataIndex++] & 0xff); // actual
-				// byte
-				allBits = allBits << 8; // 8 bits of zeroes
-				// Loop 4 times generating output bits (4 * 6 = 24)
-				for (int j = resultIndex + 3; j >= resultIndex; j--) {
-					result[j] = (byte) digits[(allBits & 0x3f)]; // Bottom
-					// 6
-					// bits
-					allBits = allBits >>> 6;
-				}
-				// 1 pad tag
-				result[result.length - 1] = (byte) '=';
-				break;
-		}
-		return result;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BundleInstallListener.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BundleInstallListener.java
deleted file mode 100644
index 47c8066..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/BundleInstallListener.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.internal.core.AbstractBundle;
-import org.eclipse.osgi.internal.provisional.service.security.AuthorizationEngine;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.osgi.framework.*;
-
-public class BundleInstallListener implements SynchronousBundleListener {
-
-	public void bundleChanged(BundleEvent event) {
-		Bundle bundle = event.getBundle();
-		switch (event.getType()) {
-			case BundleEvent.UPDATED :
-				// fall through to INSTALLED
-			case BundleEvent.INSTALLED :
-				TrustEngineListener listener = TrustEngineListener.getInstance();
-				AuthorizationEngine authEngine = listener == null ? null : listener.getAuthorizationEngine();
-				if (authEngine != null) {
-					BaseData baseData = (BaseData) ((AbstractBundle) bundle).getBundleData();
-					SignedStorageHook hook = (SignedStorageHook) baseData.getStorageHook(SignedStorageHook.KEY);
-					SignedContent signedContent = hook != null ? hook.signedContent : null;
-					authEngine.authorize(signedContent, bundle);
-				}
-				break;
-			default :
-				break;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/DigestedInputStream.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/DigestedInputStream.java
deleted file mode 100644
index d244c16..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/DigestedInputStream.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.FilterInputStream;
-import java.io.IOException;
-import java.security.MessageDigest;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.signedcontent.InvalidContentException;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * This InputStream will calculate the digest of bytes as they are read. At the
- * end of the InputStream, it will calculate the digests and throw an exception
- * if the calculated digest do not match the expected digests.
- */
-class DigestedInputStream extends FilterInputStream {
-	private final MessageDigest digests[];
-	private final byte result[][];
-	private final BundleEntry entry;
-	private final BundleFile bundleFile;
-	private long remaining;
-
-	/**
-	 * Constructs an InputStream that uses another InputStream as a source and
-	 * calculates the digest. At the end of the stream an exception will be
-	 * thrown if the calculated digest doesn't match the passed digest.
-	 * 
-	 * @param in the stream to use as an input source.
-	 * @param signerInfos the signers.
-	 * @param results the expected digest.
-	 * @throws IOException 
-	 */
-	DigestedInputStream(BundleEntry entry, BundleFile bundleFile, SignerInfo[] signerInfos, byte results[][], long size) throws IOException {
-		super(entry.getInputStream());
-		this.entry = entry;
-		this.bundleFile = bundleFile;
-		this.remaining = size;
-		this.digests = new MessageDigest[signerInfos.length];
-		for (int i = 0; i < signerInfos.length; i++)
-			this.digests[i] = SignatureBlockProcessor.getMessageDigest(signerInfos[i].getMessageDigestAlgorithm());
-		this.result = results;
-	}
-
-	/**
-	 * Not supported.
-	 */
-	public synchronized void mark(int readlimit) {
-		// Noop, we don't want to support this
-	}
-
-	/**
-	 * Always returns false.
-	 */
-	public boolean markSupported() {
-		return false;
-	}
-
-	/**
-	 * Read a byte from the InputStream. Digests are calculated on reads. At the
-	 * end of the stream the calculated digests must match the expected digests.
-	 * 
-	 * @return the character read or -1 at end of stream.
-	 * @throws IOException if there was an problem reading the byte or at the
-	 *         end of the stream the calculated digests do not match the
-	 *         expected digests.
-	 * @see java.io.InputStream#read()
-	 */
-	public int read() throws IOException {
-		if (remaining <= 0)
-			return -1;
-		int c = super.read();
-		if (c != -1) {
-			for (int i = 0; i < digests.length; i++)
-				digests[i].update((byte) c);
-			remaining--;
-		} else {
-			// We hit eof so set remaining to zero
-			remaining = 0;
-		}
-		if (remaining == 0)
-			verifyDigests();
-		return c;
-	}
-
-	private void verifyDigests() throws InvalidContentException {
-		// Check the digest at end of file
-		for (int i = 0; i < digests.length; i++) {
-			byte rc[] = digests[i].digest();
-			if (!MessageDigest.isEqual(result[i], rc))
-				throw new InvalidContentException(NLS.bind(SignedContentMessages.File_In_Jar_Is_Tampered, entry.getName(), bundleFile.getBaseFile()), null);
-		}
-	}
-
-	/**
-	 * Read bytes from the InputStream. Digests are calculated on reads. At the
-	 * end of the stream the calculated digests must match the expected digests.
-	 * 
-	 * @return the number of characters read or -1 at end of stream.
-	 * @throws IOException if there was an problem reading or at the
-	 *         end of the stream the calculated digests do not match the
-	 *         expected digests.
-	 * @see java.io.InputStream#read()
-	 */
-	public int read(byte[] b, int off, int len) throws IOException {
-		if (remaining <= 0)
-			return -1;
-		int rc = super.read(b, off, len);
-		if (rc != -1) {
-			for (int i = 0; i < digests.length; i++)
-				digests[i].update(b, off, rc);
-			remaining -= rc;
-		} else {
-			// We hit eof so set remaining to zero
-			remaining = 0;
-		}
-		if (remaining <= 0)
-			verifyDigests();
-		return rc;
-	}
-
-	/**
-	 * Not supported.
-	 * 
-	 * @throws IOException always thrown if this method is called since mark/reset is not supported.
-	 * @see java.io.InputStream#reset()
-	 */
-	public synchronized void reset() throws IOException {
-		// Throw IOException, we don't want to support this
-		throw new IOException("Reset not supported"); //$NON-NLS-1$
-	}
-
-	/**
-	 * This method is implemented as a read into a bitbucket.
-	 */
-	public long skip(long n) throws IOException {
-		byte buffer[] = new byte[4096];
-		long count = 0;
-		while (n - count > 0) {
-			int rc = (n - count) > buffer.length ? buffer.length : (int) (n - count);
-			rc = read(buffer, 0, rc);
-			if (rc == -1)
-				break;
-			count += rc;
-			n -= rc;
-		}
-		return count;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/LegacyVerifierFactory.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/LegacyVerifierFactory.java
deleted file mode 100644
index bbd7ac9..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/LegacyVerifierFactory.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2010 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.File;
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.cert.*;
-import java.util.ArrayList;
-import java.util.Date;
-import org.eclipse.osgi.internal.provisional.verifier.*;
-import org.eclipse.osgi.signedcontent.*;
-import org.osgi.framework.Bundle;
-
-public class LegacyVerifierFactory implements CertificateVerifierFactory {
-	private final SignedContentFactory signedContentFactory;
-
-	public LegacyVerifierFactory(SignedContentFactory signedContentFactory) {
-		this.signedContentFactory = signedContentFactory;
-	}
-
-	public CertificateVerifier getVerifier(File content) throws IOException {
-		try {
-			return new LegacyVerifier(signedContentFactory.getSignedContent(content));
-		} catch (GeneralSecurityException e) {
-			throw (IOException) new IOException(e.getMessage()).initCause(e);
-		}
-	}
-
-	public CertificateVerifier getVerifier(Bundle bundle) throws IOException {
-		try {
-			return new LegacyVerifier(signedContentFactory.getSignedContent(bundle));
-		} catch (GeneralSecurityException e) {
-			throw (IOException) new IOException(e.getMessage()).initCause(e);
-		}
-	}
-
-	static class LegacyVerifier implements CertificateVerifier {
-		private final SignedContent signedContent;
-
-		public LegacyVerifier(SignedContent signedContent) {
-			this.signedContent = signedContent;
-		}
-
-		public void checkContent() throws CertificateException, CertificateExpiredException {
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			for (int i = 0; i < entries.length; i++) {
-				try {
-					entries[i].verify();
-				} catch (InvalidContentException e) {
-					throw (SecurityException) new SecurityException(e.getMessage()).initCause(e);
-				} catch (IOException e) {
-					throw (SecurityException) new SecurityException(e.getMessage()).initCause(e);
-				}
-			}
-			SignerInfo[] infos = signedContent.getSignerInfos();
-			for (int i = 0; i < infos.length; i++)
-				signedContent.checkValidity(infos[i]);
-		}
-
-		public CertificateChain[] getChains() {
-			SignerInfo infos[] = signedContent.getSignerInfos();
-			CertificateChain[] chains = new CertificateChain[infos.length];
-			for (int i = 0; i < chains.length; i++)
-				chains[i] = new LegacyChain(infos[i], signedContent);
-			return chains;
-		}
-
-		public boolean isSigned() {
-			return signedContent.isSigned();
-		}
-
-		public String[] verifyContent() {
-			ArrayList invalidContent = new ArrayList(0);
-			SignedContentEntry[] entries = signedContent.getSignedEntries();
-			for (int i = 0; i < entries.length; i++) {
-				try {
-					entries[i].verify();
-				} catch (InvalidContentException e) {
-					invalidContent.add(entries[i].getName());
-				} catch (IOException e) {
-					invalidContent.add(entries[i].getName());
-				}
-			}
-			return (String[]) invalidContent.toArray(new String[invalidContent.size()]);
-		}
-	}
-
-	static class LegacyChain implements CertificateChain {
-		private final SignerInfo signerInfo;
-		private final SignedContent content;
-
-		public LegacyChain(SignerInfo signerInfo, SignedContent content) {
-			this.signerInfo = signerInfo;
-			this.content = content;
-		}
-
-		public Certificate[] getCertificates() {
-			return signerInfo.getCertificateChain();
-		}
-
-		public String getChain() {
-			StringBuffer sb = new StringBuffer();
-			Certificate[] certs = getCertificates();
-			for (int i = 0; i < certs.length; i++) {
-				X509Certificate x509Cert = ((X509Certificate) certs[i]);
-				sb.append(x509Cert.getSubjectDN().getName());
-				sb.append("; "); //$NON-NLS-1$
-			}
-			return sb.toString();
-		}
-
-		public Certificate getRoot() {
-			Certificate[] certs = getCertificates();
-			return certs.length > 0 ? certs[certs.length - 1] : null;
-		}
-
-		public Certificate getSigner() {
-			Certificate[] certs = getCertificates();
-			return certs.length > 0 ? certs[0] : null;
-		}
-
-		public Date getSigningTime() {
-			return content.getSigningTime(signerInfo);
-		}
-
-		public boolean isTrusted() {
-			return signerInfo.isTrusted();
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7DateParser.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7DateParser.java
deleted file mode 100644
index 9c92a62..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7DateParser.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2007 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.security.*;
-import java.security.cert.CertificateException;
-import java.util.*;
-
-public class PKCS7DateParser {
-
-	static Date parseDate(PKCS7Processor pkcs7Processor, String signer, String file) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, NoSuchProviderException {
-		Map unsignedAttrs = pkcs7Processor.getUnsignedAttrs();
-		if (unsignedAttrs != null) {
-			// get the timestamp construct
-			byte[] timeStampConstruct = retrieveTimeStampConstruct(unsignedAttrs);
-
-			// there is a timestamp in the signer info
-			if (timeStampConstruct != null) {
-				PKCS7Processor timestampProcess = new PKCS7Processor(timeStampConstruct, 0, timeStampConstruct.length, signer, file);
-				timestampProcess.verifyCerts();
-				pkcs7Processor.setTSACertificates(timestampProcess.getCertificates());
-				return timestampProcess.getSigningTime();
-			}
-		}
-		return null;
-	}
-
-	private static byte[] retrieveTimeStampConstruct(Map unsignedAttrs) {
-		Set objIDs = unsignedAttrs.keySet();
-		Iterator iter = objIDs.iterator();
-		while (iter.hasNext()) {
-			int[] objID = (int[]) iter.next();
-			if (Arrays.equals(SignedContentConstants.TIMESTAMP_OID, objID)) {
-				return (byte[]) unsignedAttrs.get(objID);
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7Processor.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7Processor.java
deleted file mode 100644
index c42e675..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/PKCS7Processor.java
+++ /dev/null
@@ -1,462 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.ByteArrayInputStream;
-import java.math.BigInteger;
-import java.security.*;
-import java.security.cert.*;
-import java.security.cert.Certificate;
-import java.text.*;
-import java.util.*;
-import javax.security.auth.x500.X500Principal;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * This class processes a PKCS7 file. See RFC 2315 for specifics.
- */
-public class PKCS7Processor implements SignedContentConstants {
-
-	static CertificateFactory certFact;
-
-	static {
-		try {
-			certFact = CertificateFactory.getInstance("X.509"); //$NON-NLS-1$
-		} catch (CertificateException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-		}
-	}
-
-	private final String signer;
-	private final String file;
-
-	private Certificate[] certificates;
-	private Certificate[] tsaCertificates;
-
-	// key(object id) = value(structure)
-	private Map signedAttrs;
-
-	//	key(object id) = value(structure)
-	private Map unsignedAttrs;
-
-	// store the signature of a signerinfo
-	private byte signature[];
-	private String digestAlgorithm;
-	private String signatureAlgorithm;
-
-	private Certificate signerCert;
-	private Date signingTime;
-
-	private static String oid2String(int oid[]) {
-		StringBuffer sb = new StringBuffer();
-		for (int i = 0; i < oid.length; i++) {
-			if (i > 0)
-				sb.append('.');
-			sb.append(oid[i]);
-		}
-		return sb.toString();
-	}
-
-	private static String findEncryption(int encOid[]) throws NoSuchAlgorithmException {
-		if (Arrays.equals(DSA_OID, encOid)) {
-			return "DSA"; //$NON-NLS-1$
-		}
-		if (Arrays.equals(RSA_OID, encOid)) {
-			return "RSA"; //$NON-NLS-1$
-		}
-		throw new NoSuchAlgorithmException("No algorithm found for " + oid2String(encOid)); //$NON-NLS-1$
-	}
-
-	private static String findDigest(int digestOid[]) throws NoSuchAlgorithmException {
-		if (Arrays.equals(SHA1_OID, digestOid)) {
-			return SHA1_STR;
-		}
-		if (Arrays.equals(MD5_OID, digestOid)) {
-			return MD5_STR;
-		}
-		if (Arrays.equals(MD2_OID, digestOid)) {
-			return MD2_STR;
-		}
-		throw new NoSuchAlgorithmException("No algorithm found for " + oid2String(digestOid)); //$NON-NLS-1$
-	}
-
-	public PKCS7Processor(byte pkcs7[], int pkcs7Offset, int pkcs7Length, String signer, String file) throws CertificateException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, NoSuchProviderException {
-		this.signer = signer;
-		this.file = file;
-		// First grab the certificates
-		List certs = null;
-
-		BERProcessor bp = new BERProcessor(pkcs7, pkcs7Offset, pkcs7Length);
-
-		// Just do a sanity check and make sure we are actually doing a PKCS7
-		// stream
-		// PKCS7: Step into the ContentType
-		bp = bp.stepInto();
-		if (!Arrays.equals(bp.getObjId(), SIGNEDDATA_OID)) {
-			throw new SignatureException(NLS.bind(SignedContentMessages.PKCS7_Invalid_File, signer, file));
-		}
-
-		// PKCS7: Process the SignedData structure
-		bp.stepOver(); // (**wrong comments**) skip over the oid
-		bp = bp.stepInto(); // go into the Signed data
-		bp = bp.stepInto(); // It is a structure;
-		bp.stepOver(); // Yeah, yeah version = 1
-		bp.stepOver(); // We'll see the digest stuff again; digestAlgorithms
-
-		// process the encapContentInfo structure
-		processEncapContentInfo(bp);
-
-		bp.stepOver();
-
-		// PKCS7: check if the class tag is 0
-		if (bp.classOfTag == BERProcessor.CONTEXTSPECIFIC_TAGCLASS && bp.tag == 0) {
-			// process the certificate elements inside the signeddata strcuture
-			certs = processCertificates(bp);
-		}
-
-		if (certs == null || certs.size() < 1)
-			throw new SignatureException("There are no certificates in the .RSA/.DSA file!"); //$NON-NLS-1$
-
-		// Okay, here are our certificates.
-		bp.stepOver();
-		if (bp.classOfTag == BERProcessor.UNIVERSAL_TAGCLASS && bp.tag == 1) {
-			bp.stepOver(); // Don't use the CRLs if present
-		}
-
-		processSignerInfos(bp, certs);
-
-		// construct the cert path
-		certs = constructCertPath(certs, signerCert);
-
-		// initialize the certificates
-		certificates = (Certificate[]) certs.toArray(new Certificate[certs.size()]);
-		verifyCerts();
-		// if this pkcs7process is tsa asn.1 block, the signingTime should already be set
-		if (signingTime == null)
-			signingTime = PKCS7DateParser.parseDate(this, signer, file);
-	}
-
-	private void processEncapContentInfo(BERProcessor bp) throws SignatureException {
-		// check immediately if TSTInfo is there
-		BERProcessor encapContentBERS = bp.stepInto();
-		if (Arrays.equals(encapContentBERS.getObjId(), TIMESTAMP_TST_OID)) {
-
-			// eContent
-			encapContentBERS.stepOver();
-			BERProcessor encapContentBERS1 = encapContentBERS.stepInto();
-
-			// obtain eContent octet structure
-			byte bytesman[] = encapContentBERS1.getBytes();
-			BERProcessor eContentStructure = new BERProcessor(bytesman, 0, bytesman.length);
-
-			// pointing at 'version Integer' now
-			BERProcessor eContentBER = eContentStructure.stepInto();
-			int tsaVersion = eContentBER.getIntValue().intValue();
-
-			if (tsaVersion != 1)
-				throw new SignatureException("Not a version 1 time-stamp token"); //$NON-NLS-1$
-
-			// policty : TSAPolicyId
-			eContentBER.stepOver();
-
-			// messageImprint : MessageImprint
-			eContentBER.stepOver();
-
-			// serialNumber : INTEGER
-			eContentBER.stepOver();
-
-			// genTime : GeneralizedTime
-			eContentBER.stepOver();
-
-			// check time ends w/ 'Z'
-			String dateString = new String(eContentBER.getBytes());
-			if (!dateString.endsWith("Z")) //$NON-NLS-1$
-				throw new SignatureException("Wrong dateformat used in time-stamp token"); //$NON-NLS-1$
-
-			// create the appropriate date time string format
-			// date format could be yyyyMMddHHmmss[.s...]Z or yyyyMMddHHmmssZ
-			int dotIndex = dateString.indexOf('.');
-			StringBuffer dateFormatSB = new StringBuffer("yyyyMMddHHmmss"); //$NON-NLS-1$
-			if (dotIndex != -1) {
-				// yyyyMMddHHmmss[.s...]Z, find out number of s in the bracket
-				int noS = dateString.indexOf('Z') - 1 - dotIndex;
-				dateFormatSB.append('.');
-
-				// append s	
-				for (int i = 0; i < noS; i++) {
-					dateFormatSB.append('s');
-				}
-			}
-			dateFormatSB.append("'Z'"); //$NON-NLS-1$
-
-			try {
-				DateFormat dateFormt = new SimpleDateFormat(dateFormatSB.toString());
-				dateFormt.setTimeZone(TimeZone.getTimeZone("GMT")); //$NON-NLS-1$
-				signingTime = dateFormt.parse(dateString);
-			} catch (ParseException e) {
-				throw (SignatureException) new SignatureException(SignedContentMessages.PKCS7_Parse_Signing_Time).initCause(e);
-			}
-		}
-	}
-
-	private List constructCertPath(List certs, Certificate targetCert) {
-		List certsList = new ArrayList();
-		certsList.add(targetCert);
-
-		X509Certificate currentCert = (X509Certificate) targetCert;
-		int numIteration = certs.size();
-		int i = 0;
-		while (i < numIteration) {
-
-			X500Principal subject = currentCert.getSubjectX500Principal();
-			X500Principal issuer = currentCert.getIssuerX500Principal();
-
-			if (subject.equals(issuer)) {
-				// the cert path has been constructed
-				break;
-			}
-
-			currentCert = null;
-			Iterator itr = certs.iterator();
-
-			while (itr.hasNext()) {
-				X509Certificate tempCert = (X509Certificate) itr.next();
-
-				if (tempCert.getSubjectX500Principal().equals(issuer)) {
-					certsList.add(tempCert);
-					currentCert = tempCert;
-				}
-			}
-
-			i++;
-		}
-
-		return certsList;
-	}
-
-	public void verifyCerts() throws InvalidKeyException, SignatureException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException {
-		if (certificates == null || certificates.length == 0) {
-			throw new CertificateException("There are no certificates in the signature block file!"); //$NON-NLS-1$
-		}
-
-		int len = certificates.length;
-
-		// check the certs validity and signatures
-		for (int i = 0; i < len; i++) {
-			X509Certificate currentX509Cert = (X509Certificate) certificates[i];
-			if (i == len - 1) {
-				if (currentX509Cert.getSubjectDN().equals(currentX509Cert.getIssuerDN()))
-					currentX509Cert.verify(currentX509Cert.getPublicKey());
-			} else {
-				X509Certificate nextX509Cert = (X509Certificate) certificates[i + 1];
-				currentX509Cert.verify(nextX509Cert.getPublicKey());
-			}
-		}
-	}
-
-	private Certificate processSignerInfos(BERProcessor bp, List certs) throws CertificateException, NoSuchAlgorithmException, SignatureException {
-		// We assume there is only one SingerInfo element 
-
-		// PKCS7: SignerINFOS processing
-		bp = bp.stepInto(); // Step into the set of signerinfos
-		bp = bp.stepInto(); // Step into the signerinfo sequence
-
-		// make sure the version is 1
-		BigInteger signerInfoVersion = bp.getIntValue();
-		if (signerInfoVersion.intValue() != 1) {
-			throw new CertificateException(SignedContentMessages.PKCS7_SignerInfo_Version_Not_Supported);
-		}
-
-		// PKCS7: version CMSVersion 
-		bp.stepOver(); // Skip the version
-
-		// PKCS7: sid [SignerIdentifier : issuerAndSerialNumber or subjectKeyIdentifer]
-		BERProcessor issuerAndSN = bp.stepInto();
-		X500Principal signerIssuer = new X500Principal(new ByteArrayInputStream(issuerAndSN.buffer, issuerAndSN.offset, issuerAndSN.endOffset - issuerAndSN.offset));
-		issuerAndSN.stepOver();
-		BigInteger sn = issuerAndSN.getIntValue();
-
-		// initilize the newSignerCert to the issuer cert of leaf cert
-		Certificate newSignerCert = null;
-
-		Iterator itr = certs.iterator();
-		// PKCS7: compuare the issuers in the issuerAndSN BER equals to the issuers in Certs generated at the beginning of this method
-		// it seems like there is no neeed, cause both ways use the same set of bytes
-		while (itr.hasNext()) {
-			X509Certificate cert = (X509Certificate) itr.next();
-			if (cert.getIssuerX500Principal().equals(signerIssuer) && cert.getSerialNumber().equals(sn)) {
-				newSignerCert = cert;
-				break;
-			}
-		}
-
-		if (newSignerCert == null)
-			throw new CertificateException("Signer certificate not in pkcs7block"); //$NON-NLS-1$
-
-		// set the signer cert
-		signerCert = newSignerCert;
-
-		// PKCS7: skip over the sid [SignerIdentifier : issuerAndSerialNumber or subjectKeyIdentifer]
-		bp.stepOver(); // skip the issuer name and serial number
-
-		// PKCS7: digestAlgorithm DigestAlgorithmIdentifier
-		BERProcessor digestAlg = bp.stepInto();
-		digestAlgorithm = findDigest(digestAlg.getObjId());
-
-		// PKCS7: check if the next one if context class for signedAttrs
-		bp.stepOver(); // skip the digest alg
-
-		// process the signed attributes if there is any
-		processSignedAttributes(bp);
-
-		// PKCS7: signatureAlgorithm for this SignerInfo
-		BERProcessor encryptionAlg = bp.stepInto();
-		signatureAlgorithm = findEncryption(encryptionAlg.getObjId());
-		bp.stepOver(); // skip the encryption alg
-
-		// PKCS7: signature
-		signature = bp.getBytes();
-
-		// PKCS7: Step into the unsignedAttrs, 
-		bp.stepOver();
-
-		// process the unsigned attributes if there is any
-		processUnsignedAttributes(bp);
-
-		return newSignerCert;
-	}
-
-	private void processUnsignedAttributes(BERProcessor bp) throws SignatureException {
-
-		if (bp.classOfTag == BERProcessor.CONTEXTSPECIFIC_TAGCLASS && bp.tag == 1) {
-
-			// there are some unsignedAttrs are found!!
-			unsignedAttrs = new HashMap();
-
-			// step into a set of unsigned attributes, I believe, when steps 
-			// into here, the 'poiter' is pointing to the first element
-			BERProcessor unsignedAttrsBERS = bp.stepInto();
-			do {
-				// process the unsignedAttrsBER by getting the attr type first,
-				// then the strcuture for the type
-				BERProcessor unsignedAttrBER = unsignedAttrsBERS.stepInto();
-
-				// check if it is timestamp attribute type
-				int objID[] = unsignedAttrBER.getObjId();
-				// if(Arrays.equals(TIMESTAMP_OID, objID)) {
-				// System.out.println("This is a timestamp type, to continue");
-				// }
-
-				// get the structure for the attribute type
-				unsignedAttrBER.stepOver();
-				byte structure[] = unsignedAttrBER.getBytes();
-				unsignedAttrs.put(objID, structure);
-				unsignedAttrsBERS.stepOver();
-			} while (!unsignedAttrsBERS.endOfSequence());
-		}
-	}
-
-	private void processSignedAttributes(BERProcessor bp) throws SignatureException {
-		if (bp.classOfTag == BERProcessor.CONTEXTSPECIFIC_TAGCLASS) {
-
-			// process the signed attributes
-			signedAttrs = new HashMap();
-
-			BERProcessor signedAttrsBERS = bp.stepInto();
-			do {
-				BERProcessor signedAttrBER = signedAttrsBERS.stepInto();
-				int[] signedAttrObjID = signedAttrBER.getObjId();
-
-				// step over to the attribute value
-				signedAttrBER.stepOver();
-
-				byte[] signedAttrStructure = signedAttrBER.getBytes();
-
-				signedAttrs.put(signedAttrObjID, signedAttrStructure);
-
-				signedAttrsBERS.stepOver();
-			} while (!signedAttrsBERS.endOfSequence());
-			bp.stepOver();
-		}
-	}
-
-	public Certificate[] getCertificates() {
-		return certificates == null ? new Certificate[0] : certificates;
-	}
-
-	public void verifySFSignature(byte data[], int dataOffset, int dataLength) throws InvalidKeyException, NoSuchAlgorithmException, SignatureException {
-		Signature sig = Signature.getInstance(digestAlgorithm + "with" + signatureAlgorithm); //$NON-NLS-1$
-		sig.initVerify(signerCert.getPublicKey());
-		sig.update(data, dataOffset, dataLength);
-		if (!sig.verify(signature)) {
-			throw new SignatureException(NLS.bind(SignedContentMessages.Signature_Not_Verify, signer, file));
-		}
-	}
-
-	/**
-	 * Return a map of signed attributes, the key(objid) = value(PKCSBlock in bytes for the key)
-	 * 
-	 * @return  map if there is any signed attributes, null otherwise
-	 */
-	public Map getUnsignedAttrs() {
-		return unsignedAttrs;
-	}
-
-	/**
-	 * Return a map of signed attributes, the key(objid) = value(PKCSBlock in bytes for the key)
-	 * 
-	 * @return  map if there is any signed attributes, null otherwise
-	 */
-	public Map getSignedAttrs() {
-		return signedAttrs;
-	}
-
-	/**
-	 * 
-	 * @param bp
-	 * @return		a List of certificates from target cert to root cert in order
-	 * 
-	 * @throws CertificateException
-	 * @throws SignatureException 
-	 */
-	private List processCertificates(BERProcessor bp) throws CertificateException, SignatureException {
-		List rtvList = new ArrayList(3);
-
-		// Step into the first certificate-element
-		BERProcessor certsBERS = bp.stepInto();
-
-		do {
-			X509Certificate x509Cert = (X509Certificate) certFact.generateCertificate(new ByteArrayInputStream(certsBERS.buffer, certsBERS.offset, certsBERS.endOffset - certsBERS.offset));
-
-			if (x509Cert != null) {
-				rtvList.add(x509Cert);
-			}
-
-			// go to the next cert element
-			certsBERS.stepOver();
-		} while (!certsBERS.endOfSequence());
-
-		//		Collections.reverse(rtvList);
-		return rtvList;
-	}
-
-	public Date getSigningTime() {
-		return signingTime;
-	}
-
-	void setTSACertificates(Certificate[] tsaCertificates) {
-		this.tsaCertificates = tsaCertificates;
-	}
-
-	public Certificate[] getTSACertificates() {
-		return (tsaCertificates == null) ? new Certificate[0] : tsaCertificates;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignatureBlockProcessor.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignatureBlockProcessor.java
deleted file mode 100644
index df54292..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignatureBlockProcessor.java
+++ /dev/null
@@ -1,485 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.*;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import java.util.*;
-import java.util.Map.Entry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-import org.eclipse.osgi.util.NLS;
-
-public class SignatureBlockProcessor implements SignedContentConstants {
-	private final SignedBundleFile signedBundle;
-	private ArrayList signerInfos = new ArrayList();
-	private HashMap contentMDResults = new HashMap();
-	// map of tsa singers keyed by SignerInfo -> {tsa_SignerInfo, signingTime}
-	private HashMap tsaSignerInfos;
-	private final int supportFlags;
-
-	public SignatureBlockProcessor(SignedBundleFile signedContent, int supportFlags) {
-		this.signedBundle = signedContent;
-		this.supportFlags = supportFlags;
-	}
-
-	public SignedContentImpl process() throws IOException, InvalidKeyException, SignatureException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException {
-		BundleFile wrappedBundleFile = signedBundle.getWrappedBundleFile();
-		BundleEntry be = wrappedBundleFile.getEntry(META_INF_MANIFEST_MF);
-		if (be == null)
-			return createUnsignedContent();
-
-		// read all the signature block file names into a list
-		Enumeration en = wrappedBundleFile.getEntryPaths(META_INF);
-		List signers = new ArrayList(2);
-		while (en.hasMoreElements()) {
-			String name = (String) en.nextElement();
-			if ((name.endsWith(DOT_DSA) || name.endsWith(DOT_RSA)) && name.indexOf('/') == name.lastIndexOf('/'))
-				signers.add(name);
-		}
-
-		// this means the jar is not signed
-		if (signers.size() == 0)
-			return createUnsignedContent();
-
-		byte manifestBytes[] = readIntoArray(be);
-		// process the signers
-		Iterator iSigners = signers.iterator();
-		for (int i = 0; iSigners.hasNext(); i++)
-			processSigner(wrappedBundleFile, manifestBytes, (String) iSigners.next());
-
-		// done processing now create a SingedContent to return
-		SignerInfo[] allSigners = (SignerInfo[]) signerInfos.toArray(new SignerInfo[signerInfos.size()]);
-		for (Iterator iResults = contentMDResults.entrySet().iterator(); iResults.hasNext();) {
-			Entry entry = (Entry) iResults.next();
-			ArrayList[] value = (ArrayList[]) entry.getValue();
-			SignerInfo[] entrySigners = (SignerInfo[]) value[0].toArray(new SignerInfo[value[0].size()]);
-			byte[][] entryResults = (byte[][]) value[1].toArray(new byte[value[1].size()][]);
-			entry.setValue(new Object[] {entrySigners, entryResults});
-		}
-		SignedContentImpl result = new SignedContentImpl(allSigners, (supportFlags & SignedBundleHook.VERIFY_RUNTIME) != 0 ? contentMDResults : null);
-		result.setContent(signedBundle);
-		result.setTSASignerInfos(tsaSignerInfos);
-		return result;
-	}
-
-	private SignedContentImpl createUnsignedContent() {
-		SignedContentImpl result = new SignedContentImpl(new SignerInfo[0], contentMDResults);
-		result.setContent(signedBundle);
-		return result;
-	}
-
-	private void processSigner(BundleFile bf, byte[] manifestBytes, String signer) throws IOException, SignatureException, InvalidKeyException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException {
-		BundleEntry be = bf.getEntry(signer);
-		byte pkcs7Bytes[] = readIntoArray(be);
-		int dotIndex = signer.lastIndexOf('.');
-		be = bf.getEntry(signer.substring(0, dotIndex) + DOT_SF);
-		byte sfBytes[] = readIntoArray(be);
-
-		// Step 1, verify the .SF file is signed by the private key that corresponds to the public key 
-		// in the .RSA/.DSA file
-		String baseFile = bf.getBaseFile() != null ? bf.getBaseFile().toString() : null;
-		PKCS7Processor processor = new PKCS7Processor(pkcs7Bytes, 0, pkcs7Bytes.length, signer, baseFile);
-		// call the Step 1 in the Jar File Verification algorithm
-		processor.verifySFSignature(sfBytes, 0, sfBytes.length);
-		// algorithm used
-		String digAlg = getDigAlgFromSF(sfBytes);
-		if (digAlg == null)
-			throw new SignatureException(NLS.bind(SignedContentMessages.SF_File_Parsing_Error, new String[] {bf.toString()}));
-		// get the digest results
-		// Process the Step 2 in the Jar File Verification algorithm
-		// Get the manifest out of the signature file and make sure
-		// it matches MANIFEST.MF
-		verifyManifestAndSignatureFile(manifestBytes, sfBytes);
-
-		// create a SignerInfo with the processed information
-		SignerInfoImpl signerInfo = new SignerInfoImpl(processor.getCertificates(), null, digAlg);
-		if ((supportFlags & SignedBundleHook.VERIFY_RUNTIME) != 0)
-			// only populate the manifests digest information for verifying content at runtime
-			populateMDResults(manifestBytes, signerInfo);
-		signerInfos.add(signerInfo);
-		// check for tsa signers
-		Certificate[] tsaCerts = processor.getTSACertificates();
-		Date signingTime = processor.getSigningTime();
-		if (tsaCerts != null && signingTime != null) {
-			SignerInfoImpl tsaSignerInfo = new SignerInfoImpl(tsaCerts, null, digAlg);
-			if (tsaSignerInfos == null)
-				tsaSignerInfos = new HashMap(2);
-			tsaSignerInfos.put(signerInfo, new Object[] {tsaSignerInfo, signingTime});
-		}
-	}
-
-	/**
-	 * Verify the digest listed in each entry in the .SF file with corresponding section in the manifest
-	 * @throws SignatureException 
-	 */
-	private void verifyManifestAndSignatureFile(byte[] manifestBytes, byte[] sfBytes) throws SignatureException {
-
-		String sf = new String(sfBytes);
-		sf = stripContinuations(sf);
-
-		// check if there -Digest-Manfiest: header in the file
-		int off = sf.indexOf(digestManifestSearch);
-		if (off != -1) {
-			int start = sf.lastIndexOf('\n', off);
-			String manifestDigest = null;
-			if (start != -1) {
-				// Signature-Version has to start the file, so there
-				// should always be a newline at the start of
-				// Digest-Manifest
-				String digestName = sf.substring(start + 1, off);
-				if (digestName.equalsIgnoreCase(MD5_STR))
-					manifestDigest = calculateDigest(getMessageDigest(MD5_STR), manifestBytes);
-				else if (digestName.equalsIgnoreCase(SHA1_STR))
-					manifestDigest = calculateDigest(getMessageDigest(SHA1_STR), manifestBytes);
-				off += digestManifestSearchLen;
-
-				// find out the index of first '\n' after the -Digest-Manifest: 
-				int nIndex = sf.indexOf('\n', off);
-				String digestValue = sf.substring(off, nIndex - 1);
-
-				// check if the the computed digest value of manifest file equals to the digest value in the .sf file
-				if (!digestValue.equals(manifestDigest)) {
-					SignatureException se = new SignatureException(NLS.bind(SignedContentMessages.Security_File_Is_Tampered, new String[] {signedBundle.getBaseFile().toString()}));
-					SignedBundleHook.log(se.getMessage(), FrameworkLogEntry.ERROR, se);
-					throw se;
-				}
-			}
-		}
-	}
-
-	private void populateMDResults(byte mfBuf[], SignerInfo signerInfo) throws NoSuchAlgorithmException {
-		// need to make a string from the MF file data bytes
-		String mfStr = new String(mfBuf);
-
-		// start parsing each entry in the MF String
-		int entryStartOffset = mfStr.indexOf(MF_ENTRY_NEWLN_NAME);
-		int length = mfStr.length();
-
-		while ((entryStartOffset != -1) && (entryStartOffset < length)) {
-
-			// get the start of the next 'entry', i.e. the end of this entry
-			int entryEndOffset = mfStr.indexOf(MF_ENTRY_NEWLN_NAME, entryStartOffset + 1);
-			if (entryEndOffset == -1) {
-				// if there is no next entry, then the end of the string
-				// is the end of this entry
-				entryEndOffset = mfStr.length();
-			}
-
-			// get the string for this entry only, since the entryStartOffset
-			// points to the '\n' befor the 'Name: ' we increase it by 1
-			// this is guaranteed to not go past end-of-string and be less
-			// then entryEndOffset.
-			String entryStr = mfStr.substring(entryStartOffset + 1, entryEndOffset);
-			entryStr = stripContinuations(entryStr);
-
-			// entry points to the start of the next 'entry'
-			String entryName = getEntryFileName(entryStr);
-
-			// if we could retrieve an entry name, then we will extract
-			// digest type list, and the digest value list
-			if (entryName != null) {
-
-				String aDigestLine = getDigestLine(entryStr, signerInfo.getMessageDigestAlgorithm());
-
-				if (aDigestLine != null) {
-					String msgDigestAlgorithm = getDigestAlgorithmFromString(aDigestLine);
-					if (!msgDigestAlgorithm.equalsIgnoreCase(signerInfo.getMessageDigestAlgorithm()))
-						continue; // TODO log error?
-					byte digestResult[] = getDigestResultsList(aDigestLine);
-
-					//
-					// only insert this entry into the table if its
-					// "well-formed",
-					// i.e. only if we could extract its name, digest types, and
-					// digest-results
-					//
-					// sanity check, if the 2 lists are non-null, then their
-					// counts must match
-					//
-					//					if ((msgDigestObj != null) && (digestResultsList != null)
-					//							&& (1 != digestResultsList.length)) {
-					//						throw new RuntimeException(
-					//								"Errors occurs when parsing the manifest file stream!"); //$NON-NLS-1$
-					//					}
-					ArrayList[] mdResult = (ArrayList[]) contentMDResults.get(entryName);
-					if (mdResult == null) {
-						mdResult = new ArrayList[2];
-						mdResult[0] = new ArrayList();
-						mdResult[1] = new ArrayList();
-						contentMDResults.put(entryName, mdResult);
-					}
-					mdResult[0].add(signerInfo);
-					mdResult[1].add(digestResult);
-				} // could get lines of digest entries in this MF file entry
-			} // could retrieve entry name
-			// increment the offset to the ending entry...
-			entryStartOffset = entryEndOffset;
-		}
-	}
-
-	private static byte[] getDigestResultsList(String digestLines) {
-		byte resultsList[] = null;
-		if (digestLines != null) {
-			// for each digest-line retrieve the digest result
-			// for (int i = 0; i < digestLines.length; i++) {
-			String sDigestLine = digestLines;
-			int indexDigest = sDigestLine.indexOf(MF_DIGEST_PART);
-			indexDigest += MF_DIGEST_PART.length();
-			// if there is no data to extract for this digest value
-			// then we will fail...
-			if (indexDigest >= sDigestLine.length()) {
-				resultsList = null;
-				// break;
-			}
-			// now attempt to base64 decode the result
-			String sResult = sDigestLine.substring(indexDigest);
-			try {
-				resultsList = Base64.decode(sResult.getBytes());
-			} catch (Throwable t) {
-				// malformed digest result, no longer processing this entry
-				resultsList = null;
-			}
-		}
-		return resultsList;
-	}
-
-	private static String getDigestAlgorithmFromString(String digestLines) throws NoSuchAlgorithmException {
-		if (digestLines != null) {
-			// String sDigestLine = digestLines[i];
-			int indexDigest = digestLines.indexOf(MF_DIGEST_PART);
-			String sDigestAlgType = digestLines.substring(0, indexDigest);
-			if (sDigestAlgType.equalsIgnoreCase(MD5_STR)) {
-				// remember the "algorithm type"
-				return MD5_STR;
-			} else if (sDigestAlgType.equalsIgnoreCase(SHA1_STR)) {
-				// remember the "algorithm type" object
-				return SHA1_STR;
-			} else {
-				// unknown algorithm type, we will stop processing this entry
-				// break;
-				throw new NoSuchAlgorithmException(NLS.bind(SignedContentMessages.Algorithm_Not_Supported, sDigestAlgType));
-			}
-		}
-		return null;
-	}
-
-	private static String getEntryFileName(String manifestEntry) {
-		// get the beginning of the name
-		int nameStart = manifestEntry.indexOf(MF_ENTRY_NAME);
-		if (nameStart == -1) {
-			return null;
-		}
-		// check where the name ends
-		int nameEnd = manifestEntry.indexOf('\n', nameStart);
-		if (nameEnd == -1) {
-			return null;
-		}
-		// if there is a '\r' before the '\n', then we'll strip it
-		if (manifestEntry.charAt(nameEnd - 1) == '\r') {
-			nameEnd--;
-		}
-		// get to the beginning of the actual name...
-		nameStart += MF_ENTRY_NAME.length();
-		if (nameStart >= nameEnd) {
-			return null;
-		}
-		return manifestEntry.substring(nameStart, nameEnd);
-	}
-
-	/**
-	 * Returns the Base64 encoded digest of the passed set of bytes.
-	 */
-	private static String calculateDigest(MessageDigest digest, byte[] bytes) {
-		return new String(Base64.encode(digest.digest(bytes)));
-	}
-
-	static synchronized MessageDigest getMessageDigest(String algorithm) {
-		try {
-			return MessageDigest.getInstance(algorithm);
-		} catch (NoSuchAlgorithmException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-		}
-		return null;
-	}
-
-	/**
-	 * Read the .SF file abd assuming that same digest algorithm will be used through out the whole 
-	 * .SF file.  That digest algorithm name in the last entry will be returned. 
-	 * 
-	 * @param SFBuf			a .SF file in bytes 
-	 * @return				the digest algorithm name used in the .SF file
-	 */
-	private static String getDigAlgFromSF(byte SFBuf[]) {
-		// need to make a string from the MF file data bytes
-		String mfStr = new String(SFBuf);
-		String entryStr = null;
-
-		// start parsing each entry in the MF String
-		int entryStartOffset = mfStr.indexOf(MF_ENTRY_NEWLN_NAME);
-		int length = mfStr.length();
-
-		while ((entryStartOffset != -1) && (entryStartOffset < length)) {
-
-			// get the start of the next 'entry', i.e. the end of this entry
-			int entryEndOffset = mfStr.indexOf(MF_ENTRY_NEWLN_NAME, entryStartOffset + 1);
-			if (entryEndOffset == -1) {
-				// if there is no next entry, then the end of the string
-				// is the end of this entry
-				entryEndOffset = mfStr.length();
-			}
-
-			// get the string for this entry only, since the entryStartOffset
-			// points to the '\n' befor the 'Name: ' we increase it by 1
-			// this is guaranteed to not go past end-of-string and be less
-			// then entryEndOffset.
-			entryStr = mfStr.substring(entryStartOffset + 1, entryEndOffset);
-			entryStr = stripContinuations(entryStr);
-			break;
-		}
-
-		if (entryStr != null) {
-			// process the entry to retrieve the digest algorith name
-			String digestLine = getDigestLine(entryStr, null);
-
-			// throw parsing
-			return getMessageDigestName(digestLine);
-		}
-		return null;
-	}
-
-	/**
-	 * 
-	 * @param manifestEntry contains a single MF file entry of the format
-	 * 				   "Name: foo"
-	 * 				   "MD5-Digest: [base64 encoded MD5 digest data]"
-	 * 				   "SHA1-Digest: [base64 encoded SHA1 digest dat]"
-	 * 
-	 * @param	desireDigestAlg	a string representing the desire digest value to be returned if there are
-	 * 							multiple digest lines.
-	 * 							If this value is null, return whatever digest value is in the entry.
-	 * 
-	 * @return this function returns a digest line based on the desire digest algorithm value
-	 * 		   (since only MD5 and SHA1 are recognized here),
-	 * 		   or a 'null' will be returned if none of the digest algorithms
-	 * 		   were recognized.
-	 */
-	private static String getDigestLine(String manifestEntry, String desireDigestAlg) {
-		String result = null;
-
-		// find the first digest line
-		int indexDigest = manifestEntry.indexOf(MF_DIGEST_PART);
-		// if we didn't find any digests at all, then we are done
-		if (indexDigest == -1)
-			return null;
-
-		// while we continue to find digest entries
-		// note: in the following loop we bail if any of the lines
-		//		 look malformed...
-		while (indexDigest != -1) {
-			// see where this digest line begins (look to left)
-			int indexStart = manifestEntry.lastIndexOf('\n', indexDigest);
-			if (indexStart == -1)
-				return null;
-			// see where it ends (look to right)
-			int indexEnd = manifestEntry.indexOf('\n', indexDigest);
-			if (indexEnd == -1)
-				return null;
-			// strip off ending '\r', if any
-			int indexEndToUse = indexEnd;
-			if (manifestEntry.charAt(indexEndToUse - 1) == '\r')
-				indexEndToUse--;
-			// indexStart points to the '\n' before this digest line
-			int indexStartToUse = indexStart + 1;
-			if (indexStartToUse >= indexEndToUse)
-				return null;
-
-			// now this may be a valid digest line, parse it a bit more
-			// to see if this is a preferred digest algorithm
-			String digestLine = manifestEntry.substring(indexStartToUse, indexEndToUse);
-			String digAlg = getMessageDigestName(digestLine);
-			if (desireDigestAlg != null) {
-				if (desireDigestAlg.equalsIgnoreCase(digAlg))
-					return digestLine;
-			}
-
-			// desireDigestAlg is null, always return the digestLine
-			result = digestLine;
-
-			// iterate to next digest line in this entry
-			indexDigest = manifestEntry.indexOf(MF_DIGEST_PART, indexEnd);
-		}
-
-		// if we couldn't find any digest lines, then we are done
-		return result;
-	}
-
-	/**
-	 * Return the Message Digest name
-	 * 
-	 * @param digLine		the message digest line is in the following format.  That is in the 
-	 * 						following format:
-	 * 								DIGEST_NAME-digest: digest value
-	 * @return				a string representing a message digest.
-	 */
-	private static String getMessageDigestName(String digLine) {
-		String rtvValue = null;
-		if (digLine != null) {
-			int indexDigest = digLine.indexOf(MF_DIGEST_PART);
-			if (indexDigest != -1) {
-				rtvValue = digLine.substring(0, indexDigest);
-			}
-		}
-		return rtvValue;
-	}
-
-	private static String stripContinuations(String entry) {
-		if (entry.indexOf("\n ") < 0) //$NON-NLS-1$
-			return entry;
-		StringBuffer buffer = new StringBuffer(entry.length());
-		int cont = entry.indexOf("\n "); //$NON-NLS-1$
-		int start = 0;
-		while (cont >= 0) {
-			buffer.append(entry.substring(start, cont - 1));
-			start = cont + 2;
-			cont = cont + 2 < entry.length() ? entry.indexOf("\n ", cont + 2) : -1; //$NON-NLS-1$
-		}
-		// get the last one continuation
-		if (start < entry.length())
-			buffer.append(entry.substring(start));
-		return buffer.toString();
-	}
-
-	private static byte[] readIntoArray(BundleEntry be) throws IOException {
-		int size = (int) be.getSize();
-		InputStream is = be.getInputStream();
-		byte b[] = new byte[size];
-		int rc = readFully(is, b);
-		if (rc != size) {
-			throw new IOException("Couldn't read all of " + be.getName() + ": " + rc + " != " + size); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-		return b;
-	}
-
-	private static int readFully(InputStream is, byte b[]) throws IOException {
-		int count = b.length;
-		int offset = 0;
-		int rc;
-		while ((rc = is.read(b, offset, count)) > 0) {
-			count -= rc;
-			offset += rc;
-		}
-		return offset;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleFile.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleFile.java
deleted file mode 100644
index bd19bbe..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleFile.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.*;
-import java.net.URL;
-import java.security.*;
-import java.security.cert.*;
-import java.security.cert.Certificate;
-import java.util.Date;
-import java.util.Enumeration;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.service.security.TrustEngine;
-import org.eclipse.osgi.signedcontent.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * This class wraps a Repository of classes and resources to check and enforce
- * signatures. It requires full signing of the manifest by all signers. If no
- * signatures are found, the classes and resources are retrieved without checks.
- */
-public class SignedBundleFile extends BundleFile implements SignedContentConstants, SignedContent {
-	private BundleFile wrappedBundleFile;
-	SignedContentImpl signedContent;
-	private final int supportFlags;
-
-	SignedBundleFile(SignedContentImpl signedContent, int supportFlags) {
-		this.signedContent = signedContent;
-		this.supportFlags = supportFlags;
-	}
-
-	void setBundleFile(BundleFile bundleFile) throws IOException, InvalidKeyException, SignatureException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException {
-		wrappedBundleFile = bundleFile;
-		if (signedContent == null) {
-			SignatureBlockProcessor signatureProcessor = new SignatureBlockProcessor(this, supportFlags);
-			signedContent = signatureProcessor.process();
-			if (signedContent != null)
-				determineTrust(signedContent, supportFlags);
-		}
-	}
-
-	static void determineTrust(SignedContentImpl trustedContent, int supportFlags) {
-		TrustEngine[] engines = null;
-		SignerInfo[] signers = trustedContent.getSignerInfos();
-		for (int i = 0; i < signers.length; i++) {
-			// first check if we need to find an anchor
-			if (signers[i].getTrustAnchor() == null) {
-				// no anchor set ask the trust engines
-				if (engines == null)
-					engines = SignedBundleHook.getTrustEngines();
-				// check trust of singer certs
-				Certificate[] signerCerts = signers[i].getCertificateChain();
-				((SignerInfoImpl) signers[i]).setTrustAnchor(findTrustAnchor(signerCerts, engines, supportFlags));
-				// if signer has a tsa check trust of tsa certs
-				SignerInfo tsaSignerInfo = trustedContent.getTSASignerInfo(signers[i]);
-				if (tsaSignerInfo != null) {
-					Certificate[] tsaCerts = tsaSignerInfo.getCertificateChain();
-					((SignerInfoImpl) tsaSignerInfo).setTrustAnchor(findTrustAnchor(tsaCerts, engines, supportFlags));
-				}
-			}
-		}
-	}
-
-	private static Certificate findTrustAnchor(Certificate[] certs, TrustEngine[] engines, int supportFlags) {
-		if ((supportFlags & SignedBundleHook.VERIFY_TRUST) == 0)
-			// we are not searching the engines; in this case we just assume the root cert is trusted
-			return certs != null && certs.length > 0 ? certs[certs.length - 1] : null;
-		for (int i = 0; i < engines.length; i++) {
-			try {
-				Certificate anchor = engines[i].findTrustAnchor(certs);
-				if (anchor != null)
-					// found an anchor
-					return anchor;
-			} catch (IOException e) {
-				// log the exception and continue
-				SignedBundleHook.log("TrustEngine failure: " + engines[i].getName(), FrameworkLogEntry.WARNING, e); //$NON-NLS-1$
-			}
-		}
-		return null;
-	}
-
-	public File getFile(String path, boolean nativeCode) {
-		return wrappedBundleFile.getFile(path, nativeCode);
-	}
-
-	public BundleEntry getEntry(String path) {
-		// strip off leading slashes so we can ensure the path matches the one provided in the manifest.
-		if (path.length() > 0 && path.charAt(0) == '/')
-			path = path.substring(1);
-		BundleEntry be = wrappedBundleFile.getEntry(path);
-		if ((supportFlags & SignedBundleHook.VERIFY_RUNTIME) == 0 || signedContent == null)
-			return be;
-		if (path.startsWith(META_INF)) {
-			int lastSlash = path.lastIndexOf('/');
-			if (lastSlash == META_INF.length() - 1) {
-				if (path.equals(META_INF_MANIFEST_MF) || path.endsWith(DOT_DSA) || path.endsWith(DOT_RSA) || path.endsWith(DOT_SF) || path.indexOf(SIG_DASH) == META_INF.length())
-					return be;
-				SignedContentEntry signedEntry = signedContent.getSignedEntry(path);
-				if (signedEntry == null)
-					// TODO this is to allow 1.4 signed bundles to work, it would be better if we could detect 1.4 signed bundles and only do this for them.
-					return be;
-			}
-		}
-		if (be == null) {
-			// double check that no signer thinks it should exist
-			SignedContentEntry signedEntry = signedContent.getSignedEntry(path);
-			if (signedEntry != null)
-				throw new SecurityException(NLS.bind(SignedContentMessages.file_is_removed_from_jar, path, getBaseFile().toString()));
-			return null;
-		}
-		return new SignedBundleEntry(be);
-	}
-
-	public Enumeration getEntryPaths(String path) {
-		return wrappedBundleFile.getEntryPaths(path);
-	}
-
-	public void close() throws IOException {
-		wrappedBundleFile.close();
-	}
-
-	public void open() throws IOException {
-		wrappedBundleFile.open();
-	}
-
-	public boolean containsDir(String dir) {
-		return wrappedBundleFile.containsDir(dir);
-	}
-
-	public File getBaseFile() {
-		return wrappedBundleFile.getBaseFile();
-	}
-
-	class SignedBundleEntry extends BundleEntry {
-		BundleEntry nestedEntry;
-
-		SignedBundleEntry(BundleEntry nestedEntry) {
-			this.nestedEntry = nestedEntry;
-		}
-
-		public InputStream getInputStream() throws IOException {
-			InputStream in = signedContent.getDigestInputStream(nestedEntry);
-			if (in == null)
-				throw new SecurityException("Corrupted file: the digest does not exist for the file " + nestedEntry.getName()); //$NON-NLS-1$
-			return in;
-		}
-
-		public long getSize() {
-			return nestedEntry.getSize();
-		}
-
-		public String getName() {
-			return nestedEntry.getName();
-		}
-
-		public long getTime() {
-			return nestedEntry.getTime();
-		}
-
-		public URL getLocalURL() {
-			return nestedEntry.getLocalURL();
-		}
-
-		public URL getFileURL() {
-			return nestedEntry.getFileURL();
-		}
-
-	}
-
-	BundleFile getWrappedBundleFile() {
-		return wrappedBundleFile;
-	}
-
-	SignedContentImpl getSignedContent() {
-		return signedContent;
-	}
-
-	public SignedContentEntry[] getSignedEntries() {
-		return signedContent == null ? null : signedContent.getSignedEntries();
-	}
-
-	public SignedContentEntry getSignedEntry(String name) {
-		return signedContent == null ? null : signedContent.getSignedEntry(name);
-	}
-
-	public SignerInfo[] getSignerInfos() {
-		return signedContent == null ? null : signedContent.getSignerInfos();
-	}
-
-	public Date getSigningTime(SignerInfo signerInfo) {
-		return signedContent == null ? null : signedContent.getSigningTime(signerInfo);
-	}
-
-	public SignerInfo getTSASignerInfo(SignerInfo signerInfo) {
-		return signedContent == null ? null : signedContent.getTSASignerInfo(signerInfo);
-	}
-
-	public boolean isSigned() {
-		return signedContent == null ? false : signedContent.isSigned();
-	}
-
-	public void checkValidity(SignerInfo signerInfo) throws CertificateExpiredException, CertificateNotYetValidException {
-		if (signedContent != null)
-			signedContent.checkValidity(signerInfo);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java
deleted file mode 100644
index 5b90453..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedBundleHook.java
+++ /dev/null
@@ -1,341 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.*;
-import java.security.*;
-import java.security.cert.CertificateException;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.*;
-import org.eclipse.osgi.baseadaptor.hooks.AdaptorHook;
-import org.eclipse.osgi.baseadaptor.hooks.BundleFileWrapperFactoryHook;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.provisional.service.security.AuthorizationEngine;
-import org.eclipse.osgi.internal.provisional.verifier.CertificateVerifierFactory;
-import org.eclipse.osgi.internal.service.security.DefaultAuthorizationEngine;
-import org.eclipse.osgi.internal.service.security.KeyStoreTrustEngine;
-import org.eclipse.osgi.service.security.TrustEngine;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.eclipse.osgi.signedcontent.SignedContentFactory;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.framework.Constants;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Implements signed bundle hook support for the framework
- */
-public class SignedBundleHook implements AdaptorHook, BundleFileWrapperFactoryHook, HookConfigurator, SignedContentFactory {
-	static final int VERIFY_CERTIFICATE = 0x01;
-	static final int VERIFY_TRUST = 0x02;
-	static final int VERIFY_RUNTIME = 0x04;
-	static final int VERIFY_AUTHORITY = 0x08;
-	static final int VERIFY_ALL = VERIFY_CERTIFICATE | VERIFY_TRUST | VERIFY_RUNTIME | VERIFY_AUTHORITY;
-	private static String SUPPORT_CERTIFICATE = "certificate"; //$NON-NLS-1$
-	private static String SUPPORT_TRUST = "trust"; //$NON-NLS-1$
-	private static String SUPPORT_RUNTIME = "runtime"; //$NON-NLS-1$
-	private static String SUPPORT_AUTHORITY = "authority"; //$NON-NLS-1$
-	private static String SUPPORT_ALL = "all"; //$NON-NLS-1$
-	private static String SUPPORT_TRUE = "true"; //$NON-NLS-1$
-
-	//TODO: comes from configuration!;
-	private static String CACERTS_PATH = System.getProperty("java.home") + File.separatorChar + "lib" + File.separatorChar + "security" + File.separatorChar + "cacerts"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$//$NON-NLS-4$
-	private static String CACERTS_TYPE = "JKS"; //$NON-NLS-1$
-	private static ServiceTracker trustEngineTracker;
-	private static BaseAdaptor ADAPTOR;
-	private static String SIGNED_BUNDLE_SUPPORT = "osgi.support.signature.verify"; //$NON-NLS-1$
-	private static String SIGNED_CONTENT_SUPPORT = "osgi.signedcontent.support"; //$NON-NLS-1$
-	private static String OSGI_KEYSTORE = "osgi.framework.keystore"; //$NON-NLS-1$
-	private static int supportSignedBundles;
-	private TrustEngineListener trustEngineListener;
-	private BundleInstallListener installListener;
-	private ServiceRegistration signedContentFactoryReg;
-	private ServiceRegistration systemTrustEngineReg;
-	private ServiceRegistration defaultAuthEngineReg;
-	private List osgiTrustEngineReg;
-	private ServiceRegistration legacyFactoryReg;
-
-	public void initialize(BaseAdaptor adaptor) {
-		SignedBundleHook.ADAPTOR = adaptor;
-	}
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		// check if load time authority is enabled
-		if ((supportSignedBundles & VERIFY_AUTHORITY) != 0) {
-			// install the default bundle install listener
-			installListener = new BundleInstallListener();
-			context.addBundleListener(installListener);
-			// register the default authorization engine
-			Hashtable properties = new Hashtable(7);
-			properties.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-			properties.put(SignedContentConstants.AUTHORIZATION_ENGINE, SignedContentConstants.DEFAULT_AUTHORIZATION_ENGINE);
-			defaultAuthEngineReg = context.registerService(AuthorizationEngine.class.getName(), new DefaultAuthorizationEngine(context, ADAPTOR.getState()), properties);
-		}
-
-		// always register the trust engine
-		Hashtable trustEngineProps = new Hashtable(7);
-		trustEngineProps.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-		trustEngineProps.put(SignedContentConstants.TRUST_ENGINE, SignedContentConstants.DEFAULT_TRUST_ENGINE);
-		KeyStoreTrustEngine systemTrustEngine = new KeyStoreTrustEngine(CACERTS_PATH, CACERTS_TYPE, null, "System"); //$NON-NLS-1$
-		systemTrustEngineReg = context.registerService(TrustEngine.class.getName(), systemTrustEngine, trustEngineProps);
-		String osgiTrustPath = context.getProperty(OSGI_KEYSTORE);
-		if (osgiTrustPath != null) {
-			try {
-				URL url = new URL(osgiTrustPath);
-				if ("file".equals(url.getProtocol())) { //$NON-NLS-1$
-					trustEngineProps.put(SignedContentConstants.TRUST_ENGINE, OSGI_KEYSTORE);
-					String path = url.getPath();
-					osgiTrustEngineReg = new ArrayList(1);
-					osgiTrustEngineReg.add(context.registerService(TrustEngine.class.getName(), new KeyStoreTrustEngine(path, CACERTS_TYPE, null, OSGI_KEYSTORE), trustEngineProps));
-				}
-			} catch (MalformedURLException e) {
-				SignedBundleHook.log("Invalid setting for " + OSGI_KEYSTORE, FrameworkLogEntry.WARNING, e); //$NON-NLS-1$
-			}
-		} else {
-			String osgiTrustRepoPaths = context.getProperty(Constants.FRAMEWORK_TRUST_REPOSITORIES);
-			if (osgiTrustRepoPaths != null) {
-				trustEngineProps.put(SignedContentConstants.TRUST_ENGINE, Constants.FRAMEWORK_TRUST_REPOSITORIES);
-				StringTokenizer st = new StringTokenizer(osgiTrustRepoPaths, File.pathSeparator);
-				osgiTrustEngineReg = new ArrayList(1);
-				while (st.hasMoreTokens()) {
-					String trustRepoPath = st.nextToken();
-					osgiTrustEngineReg.add(context.registerService(TrustEngine.class.getName(), new KeyStoreTrustEngine(trustRepoPath, CACERTS_TYPE, null, OSGI_KEYSTORE), trustEngineProps));
-				}
-			}
-		}
-		if ((supportSignedBundles & VERIFY_TRUST) != 0)
-			// initialize the trust engine listener only if trust is being established with a trust engine
-			trustEngineListener = new TrustEngineListener(context);
-		// always register the signed content factory
-		signedContentFactoryReg = context.registerService(SignedContentFactory.class.getName(), this, null);
-		legacyFactoryReg = context.registerService(CertificateVerifierFactory.class.getName(), new LegacyVerifierFactory(this), null);
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		if (legacyFactoryReg != null) {
-			legacyFactoryReg.unregister();
-			legacyFactoryReg = null;
-		}
-		if (signedContentFactoryReg != null) {
-			signedContentFactoryReg.unregister();
-			signedContentFactoryReg = null;
-		}
-		if (systemTrustEngineReg != null) {
-			systemTrustEngineReg.unregister();
-			systemTrustEngineReg = null;
-		}
-		if (osgiTrustEngineReg != null) {
-			for (Iterator it = osgiTrustEngineReg.iterator(); it.hasNext();)
-				((ServiceRegistration) it.next()).unregister();
-			osgiTrustEngineReg = null;
-		}
-		if (defaultAuthEngineReg != null) {
-			defaultAuthEngineReg.unregister();
-			defaultAuthEngineReg = null;
-		}
-		if (trustEngineListener != null) {
-			trustEngineListener.stopTrustEngineListener();
-			trustEngineListener = null;
-		}
-		if (installListener != null) {
-			context.removeBundleListener(installListener);
-			installListener = null;
-		}
-		if (trustEngineTracker != null) {
-			trustEngineTracker.close();
-			trustEngineTracker = null;
-		}
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		// do nothing
-	}
-
-	public void addProperties(Properties properties) {
-		// do nothing
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		return null;
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// do nothing
-	}
-
-	public FrameworkLog createFrameworkLog() {
-		return null;
-	}
-
-	public BundleFile wrapBundleFile(BundleFile bundleFile, Object content, BaseData data, boolean base) {
-		try {
-			if (bundleFile != null) {
-				SignedStorageHook hook = (SignedStorageHook) data.getStorageHook(SignedStorageHook.KEY);
-				SignedBundleFile signedBaseFile;
-				if (base && hook != null) {
-					signedBaseFile = new SignedBundleFile(hook.signedContent, supportSignedBundles);
-					if (hook.signedContent == null) {
-						signedBaseFile.setBundleFile(bundleFile);
-						SignedContentImpl signedContent = signedBaseFile.getSignedContent();
-						hook.signedContent = signedContent != null && signedContent.isSigned() ? signedContent : null;
-					}
-				} else
-					signedBaseFile = new SignedBundleFile(null, supportSignedBundles);
-				signedBaseFile.setBundleFile(bundleFile);
-				SignedContentImpl signedContent = signedBaseFile.getSignedContent();
-				if (signedContent != null && signedContent.isSigned()) {
-					// only use the signed file if there are certs
-					signedContent.setContent(signedBaseFile);
-					bundleFile = signedBaseFile;
-				}
-			}
-		} catch (IOException e) {
-			SignedBundleHook.log("Bad bundle file: " + bundleFile.getBaseFile(), FrameworkLogEntry.WARNING, e); //$NON-NLS-1$
-		} catch (GeneralSecurityException e) {
-			SignedBundleHook.log("Bad bundle file: " + bundleFile.getBaseFile(), FrameworkLogEntry.WARNING, e); //$NON-NLS-1$
-		}
-		return bundleFile;
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addAdaptorHook(this);
-		String[] support = ManifestElement.getArrayFromList(FrameworkProperties.getProperty(SIGNED_CONTENT_SUPPORT, FrameworkProperties.getProperty(SIGNED_BUNDLE_SUPPORT)), ","); //$NON-NLS-1$
-		for (int i = 0; i < support.length; i++) {
-			if (SUPPORT_CERTIFICATE.equals(support[i]))
-				supportSignedBundles |= VERIFY_CERTIFICATE;
-			else if (SUPPORT_TRUST.equals(support[i]))
-				supportSignedBundles |= VERIFY_CERTIFICATE | VERIFY_TRUST;
-			else if (SUPPORT_RUNTIME.equals(support[i]))
-				supportSignedBundles |= VERIFY_CERTIFICATE | VERIFY_RUNTIME;
-			else if (SUPPORT_AUTHORITY.equals(support[i]))
-				supportSignedBundles |= VERIFY_CERTIFICATE | VERIFY_TRUST | VERIFY_AUTHORITY;
-			else if (SUPPORT_TRUE.equals(support[i]) || SUPPORT_ALL.equals(support[i]))
-				supportSignedBundles |= VERIFY_ALL;
-		}
-		if ((supportSignedBundles & VERIFY_CERTIFICATE) != 0) {
-			hookRegistry.addStorageHook(new SignedStorageHook());
-			hookRegistry.addBundleFileWrapperFactoryHook(this);
-		}
-	}
-
-	public SignedContent getSignedContent(File content) throws IOException, InvalidKeyException, SignatureException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException {
-		if (content == null)
-			throw new IllegalArgumentException("null content"); //$NON-NLS-1$
-		BundleFile contentBundleFile;
-		if (content.isDirectory())
-			contentBundleFile = new DirBundleFile(content);
-		else
-			contentBundleFile = new ZipBundleFile(content, null);
-		SignedBundleFile result = new SignedBundleFile(null, VERIFY_ALL);
-		try {
-			result.setBundleFile(contentBundleFile);
-		} catch (InvalidKeyException e) {
-			throw (InvalidKeyException) new InvalidKeyException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
-		} catch (SignatureException e) {
-			throw (SignatureException) new SignatureException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
-		} catch (CertificateException e) {
-			throw (CertificateException) new CertificateException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
-		} catch (NoSuchAlgorithmException e) {
-			throw (NoSuchAlgorithmException) new NoSuchAlgorithmException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
-		} catch (NoSuchProviderException e) {
-			throw (NoSuchProviderException) new NoSuchProviderException(NLS.bind(SignedContentMessages.Factory_SignedContent_Error, content)).initCause(e);
-		}
-		return new SignedContentFile(result.getSignedContent());
-	}
-
-	public SignedContent getSignedContent(Bundle bundle) throws IOException, InvalidKeyException, SignatureException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException, IllegalArgumentException {
-		final BundleData data = ((AbstractBundle) bundle).getBundleData();
-		if (!(data instanceof BaseData))
-			throw new IllegalArgumentException("Invalid bundle object.  No BaseData found."); //$NON-NLS-1$
-		SignedStorageHook hook = (SignedStorageHook) ((BaseData) data).getStorageHook(SignedStorageHook.KEY);
-		SignedContent result = hook != null ? hook.signedContent : null;
-		if (result != null)
-			return result; // just reuse the signed content the storage hook
-		// must create a new signed content using the raw file
-		if (System.getSecurityManager() == null)
-			return getSignedContent(((BaseData) data).getBundleFile().getBaseFile());
-		try {
-			return (SignedContent) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws Exception {
-					return getSignedContent(((BaseData) data).getBundleFile().getBaseFile());
-				}
-			});
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof IOException)
-				throw (IOException) e.getException();
-			if (e.getException() instanceof InvalidKeyException)
-				throw (InvalidKeyException) e.getException();
-			if (e.getException() instanceof SignatureException)
-				throw (SignatureException) e.getException();
-			if (e.getException() instanceof CertificateException)
-				throw (CertificateException) e.getException();
-			if (e.getException() instanceof NoSuchAlgorithmException)
-				throw (NoSuchAlgorithmException) e.getException();
-			if (e.getException() instanceof NoSuchProviderException)
-				throw (NoSuchProviderException) e.getException();
-			throw new RuntimeException("Unknown error.", e.getException()); //$NON-NLS-1$
-		}
-	}
-
-	public static void log(String msg, int severity, Throwable t) {
-		if (SignedBundleHook.ADAPTOR == null) {
-			System.err.println(msg);
-			t.printStackTrace();
-			return;
-		}
-		FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, severity, 0, msg, 0, t, null);
-		SignedBundleHook.ADAPTOR.getFrameworkLog().log(entry);
-	}
-
-	static BundleContext getContext() {
-		if (ADAPTOR == null)
-			return null;
-		return ADAPTOR.getContext();
-	}
-
-	static TrustEngine[] getTrustEngines() {
-		// find all the trust engines available
-		BundleContext context = SignedBundleHook.getContext();
-		if (context == null)
-			return new TrustEngine[0];
-		if (trustEngineTracker == null) {
-			// read the trust provider security property
-			String trustEngineProp = FrameworkProperties.getProperty(SignedContentConstants.TRUST_ENGINE);
-			Filter filter = null;
-			if (trustEngineProp != null)
-				try {
-					filter = FilterImpl.newInstance("(&(" + Constants.OBJECTCLASS + "=" + TrustEngine.class.getName() + ")(" + SignedContentConstants.TRUST_ENGINE + "=" + trustEngineProp + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$
-				} catch (InvalidSyntaxException e) {
-					SignedBundleHook.log("Invalid trust engine filter", FrameworkLogEntry.WARNING, e); //$NON-NLS-1$
-				}
-			if (filter != null) {
-				trustEngineTracker = new ServiceTracker(context, filter, null);
-			} else
-				trustEngineTracker = new ServiceTracker(context, TrustEngine.class.getName(), null);
-			trustEngineTracker.open();
-		}
-		Object[] services = trustEngineTracker.getServices();
-		if (services != null) {
-			TrustEngine[] engines = new TrustEngine[services.length];
-			System.arraycopy(services, 0, engines, 0, services.length);
-			return engines;
-		}
-		return new TrustEngine[0];
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentConstants.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentConstants.java
deleted file mode 100644
index d0c0526..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentConstants.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-
-package org.eclipse.osgi.internal.signedcontent;
-
-public interface SignedContentConstants {
-
-	public static final String SHA1_STR = "SHA1"; //$NON-NLS-1$
-	public static final String MD5_STR = "MD5"; //$NON-NLS-1$
-	public static final String MD2_STR = "MD2"; //$NON-NLS-1$
-
-	public static final String DOT_DSA = ".DSA"; //$NON-NLS-1$
-	public static final String DOT_RSA = ".RSA"; //$NON-NLS-1$
-	public static final String DOT_SF = ".SF"; //$NON-NLS-1$
-	public static final String SIG_DASH = "SIG-"; //$NON-NLS-1$
-	public static final String META_INF = "META-INF/"; //$NON-NLS-1$
-	public static final String META_INF_MANIFEST_MF = "META-INF/MANIFEST.MF"; //$NON-NLS-1$
-	public static final String[] EMPTY_STRING = new String[0];
-
-	//
-	// following are variables and methods to cache the entries related data
-	// for a given MF file
-	//
-	public static final String MF_ENTRY_NEWLN_NAME = "\nName: "; //$NON-NLS-1$
-	public static final String MF_ENTRY_NAME = "Name: "; //$NON-NLS-1$
-	public static final String MF_DIGEST_PART = "-Digest: "; //$NON-NLS-1$
-	public static final String digestManifestSearch = "-Digest-Manifest: "; //$NON-NLS-1$
-	public static final int digestManifestSearchLen = digestManifestSearch.length();
-
-	public static final int SIGNEDDATA_OID[] = {1, 2, 840, 113549, 1, 7, 2};
-	public static final int MD5_OID[] = {1, 2, 840, 113549, 2, 5};
-	public static final int MD2_OID[] = {1, 2, 840, 113549, 2, 2};
-	public static final int SHA1_OID[] = {1, 3, 14, 3, 2, 26};
-	public static final int DSA_OID[] = {1, 2, 840, 10040, 4, 1};
-	public static final int RSA_OID[] = {1, 2, 840, 113549, 1, 1, 1};
-
-	// constant for trust engine service
-	public static final String TRUST_ENGINE = "osgi.signedcontent.trust.engine"; //$NON-NLS-1$
-	public static final Object DEFAULT_TRUST_ENGINE = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	// constants for authorization engine service
-	public static final String AUTHORIZATION_ENGINE = "osgi.signedcontent.authorization.engine"; //$NON-NLS-1$
-	public static final Object DEFAULT_AUTHORIZATION_ENGINE = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	// constant for the timestamp related
-	public static final int TIMESTAMP_OID[] = {1, 2, 840, 113549, 1, 9, 16, 2, 14};
-	public static final int TIMESTAMP_TST_OID[] = {1, 2, 840, 113549, 1, 9, 16, 1, 4};
-	public static final int SIGNING_TIME[] = {1, 2, 840, 113549, 1, 9, 5};
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentFile.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentFile.java
deleted file mode 100644
index c1bfbd5..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentFile.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.IOException;
-import java.security.cert.CertificateExpiredException;
-import java.security.cert.CertificateNotYetValidException;
-import java.util.*;
-import org.eclipse.osgi.signedcontent.*;
-
-/*
- * This class is used by the SignedContentFactory to create SignedContent objects from File objects.  This is needed 
- * to avoid leaving the underlying ZipFiles open for the SignedContent objects returned from the 
- * SignedContentFactory (bug 225090) 
- */
-public class SignedContentFile implements SignedContent {
-
-	private final SignedContentImpl signedContent;
-	// a cache of verification exceptions
-	private HashMap entryExceptions = null;
-
-	public SignedContentFile(SignedContentImpl signedContent) {
-		try {
-			signedContent.content.close();
-		} catch (IOException e) {
-			// do nothing
-		}
-		this.signedContent = signedContent;
-	}
-
-	public void checkValidity(SignerInfo signerInfo) throws CertificateExpiredException, CertificateNotYetValidException {
-		signedContent.checkValidity(signerInfo);
-	}
-
-	public synchronized SignedContentEntry[] getSignedEntries() {
-		SignedContentEntry[] entries = signedContent.getSignedEntries();
-		if (signedContent == null)
-			return null;
-		SignedContentEntry[] results = new SignedContentEntry[entries.length];
-		Map exceptions = getEntryExceptions(true);
-		for (int i = 0; i < entries.length; i++) {
-			try {
-				entries[i].verify();
-			} catch (Throwable t) {
-				exceptions.put(entries[i].getName(), t);
-			}
-			results[i] = new SignedContentFileEntry(entries[i]);
-		}
-		try {
-			// ensure the content is closed after caching the exceptions
-			signedContent.content.close();
-		} catch (IOException e) {
-			// do nothing
-		}
-		return results;
-	}
-
-	public synchronized SignedContentEntry getSignedEntry(String name) {
-		if (getEntryExceptions(false) == null)
-			getSignedEntries(); // populate the entry exceptions
-		SignedContentEntry entry = signedContent.getSignedEntry(name);
-		return entry == null ? null : new SignedContentFileEntry(entry);
-	}
-
-	public SignerInfo[] getSignerInfos() {
-		return signedContent.getSignerInfos();
-	}
-
-	public Date getSigningTime(SignerInfo signerInfo) {
-		return signedContent.getSigningTime(signerInfo);
-	}
-
-	public SignerInfo getTSASignerInfo(SignerInfo signerInfo) {
-		return signedContent.getTSASignerInfo(signerInfo);
-	}
-
-	public boolean isSigned() {
-		return signedContent.isSigned();
-	}
-
-	synchronized Map getEntryExceptions(boolean create) {
-		if (create && entryExceptions == null)
-			entryExceptions = new HashMap(5);
-		return entryExceptions;
-	}
-
-	public class SignedContentFileEntry implements SignedContentEntry {
-		private final SignedContentEntry entry;
-
-		public SignedContentFileEntry(SignedContentEntry entry) {
-			this.entry = entry;
-		}
-
-		public String getName() {
-			return entry.getName();
-		}
-
-		public SignerInfo[] getSignerInfos() {
-			return entry.getSignerInfos();
-		}
-
-		public boolean isSigned() {
-			return entry.isSigned();
-		}
-
-		public void verify() throws IOException, InvalidContentException {
-			// check the entry exceptions map for the entry name
-			Map exceptions = getEntryExceptions(false);
-			Throwable t = exceptions == null ? null : (Throwable) exceptions.get(entry.getName());
-			if (t == null)
-				return;
-			if (t instanceof IOException)
-				throw (IOException) t;
-			if (t instanceof InvalidContentException)
-				throw (InvalidContentException) t;
-			if (t instanceof Error)
-				throw (Error) t;
-			if (t instanceof RuntimeException)
-				throw (RuntimeException) t;
-		}
-
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentImpl.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentImpl.java
deleted file mode 100644
index 4753c68..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentImpl.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.security.cert.*;
-import java.util.*;
-import java.util.Map.Entry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.signedcontent.*;
-import org.eclipse.osgi.util.NLS;
-
-public class SignedContentImpl implements SignedContent {
-	final static SignerInfo[] EMPTY_SIGNERINFO = new SignerInfo[0];
-	// the content which is signed
-	volatile SignedBundleFile content; // TODO can this be more general?
-	// the content entry md results used for entry content verification
-	// keyed by entry path -> {SignerInfo[] infos, byte[][] results)}
-	private final HashMap contentMDResults;
-	private final SignerInfo[] signerInfos;
-	// map of tsa singers keyed by SignerInfo -> {tsa_SignerInfo, signingTime}
-	private HashMap tsaSignerInfos;
-	volatile private boolean checkedValid = false;
-
-	public SignedContentImpl(SignerInfo[] signerInfos, HashMap contentMDResults) {
-		this.signerInfos = signerInfos == null ? EMPTY_SIGNERINFO : signerInfos;
-		this.contentMDResults = contentMDResults;
-	}
-
-	public SignedContentEntry[] getSignedEntries() {
-		if (contentMDResults == null)
-			return new SignedContentEntry[0];
-		ArrayList results = new ArrayList(contentMDResults.size());
-		for (Iterator iMDResults = contentMDResults.entrySet().iterator(); iMDResults.hasNext();) {
-			Entry entry = (Entry) iMDResults.next();
-			String entryName = (String) entry.getKey();
-			Object[] mdResult = (Object[]) entry.getValue();
-			results.add(new SignedContentEntryImpl(entryName, (SignerInfo[]) mdResult[0]));
-		}
-		return (SignedContentEntry[]) results.toArray(new SignedContentEntry[results.size()]);
-	}
-
-	public SignedContentEntry getSignedEntry(String name) {
-		if (contentMDResults == null)
-			return null;
-		Object[] mdResult = (Object[]) contentMDResults.get(name);
-		return mdResult == null ? null : new SignedContentEntryImpl(name, (SignerInfo[]) mdResult[0]);
-	}
-
-	public SignerInfo[] getSignerInfos() {
-		return signerInfos;
-	}
-
-	public Date getSigningTime(SignerInfo signerInfo) {
-		if (tsaSignerInfos == null)
-			return null;
-		Object[] tsaInfo = (Object[]) tsaSignerInfos.get(signerInfo);
-		return tsaInfo == null ? null : (Date) tsaInfo[1];
-	}
-
-	public SignerInfo getTSASignerInfo(SignerInfo signerInfo) {
-		if (tsaSignerInfos == null)
-			return null;
-		Object[] tsaInfo = (Object[]) tsaSignerInfos.get(signerInfo);
-		return tsaInfo == null ? null : (SignerInfo) tsaInfo[0];
-	}
-
-	public boolean isSigned() {
-		return signerInfos.length > 0;
-	}
-
-	public void checkValidity(SignerInfo signer) throws CertificateExpiredException, CertificateNotYetValidException {
-		Date signingTime = getSigningTime(signer);
-		if (checkedValid)
-			return;
-		Certificate[] certs = signer.getCertificateChain();
-		for (int i = 0; i < certs.length; i++) {
-			if (!(certs[i] instanceof X509Certificate))
-				continue;
-			if (signingTime == null)
-				((X509Certificate) certs[i]).checkValidity();
-			else
-				((X509Certificate) certs[i]).checkValidity(signingTime);
-		}
-		checkedValid = true;
-	}
-
-	void setContent(SignedBundleFile content) {
-		this.content = content;
-	}
-
-	void setTSASignerInfos(HashMap tsaSignerInfos) {
-		this.tsaSignerInfos = tsaSignerInfos;
-	}
-
-	void addTSASignerInfo(SignerInfo baseInfo, SignerInfo tsaSignerInfo, Date signingTime) {
-		// sanity check to make sure the baseInfo is here
-		if (!containsInfo(baseInfo))
-			throw new IllegalArgumentException("The baseInfo is not found"); //$NON-NLS-1$
-		if (tsaSignerInfos == null)
-			tsaSignerInfos = new HashMap(signerInfos.length);
-		tsaSignerInfos.put(baseInfo, new Object[] {tsaSignerInfo, signingTime});
-	}
-
-	HashMap getContentMDResults() {
-		return contentMDResults;
-	}
-
-	private boolean containsInfo(SignerInfo signerInfo) {
-		for (int i = 0; i < signerInfos.length; i++)
-			if (signerInfo == signerInfos[i])
-				return true;
-		return false;
-	}
-
-	InputStream getDigestInputStream(BundleEntry nestedEntry) throws IOException {
-		if (contentMDResults == null)
-			return nestedEntry.getInputStream();
-		Object[] mdResult = (Object[]) contentMDResults.get(nestedEntry.getName());
-		if (mdResult == null)
-			return null;
-		return new DigestedInputStream(nestedEntry, content, (SignerInfo[]) mdResult[0], (byte[][]) mdResult[1], nestedEntry.getSize());
-	}
-
-	public class SignedContentEntryImpl implements SignedContentEntry {
-		private final String entryName;
-		private final SignerInfo[] entrySigners;
-
-		public SignedContentEntryImpl(String entryName, SignerInfo[] entrySigners) {
-			this.entryName = entryName;
-			this.entrySigners = entrySigners == null ? EMPTY_SIGNERINFO : entrySigners;
-		}
-
-		public String getName() {
-			return entryName;
-		}
-
-		public SignerInfo[] getSignerInfos() {
-			return entrySigners;
-		}
-
-		public boolean isSigned() {
-			return entrySigners.length > 0;
-		}
-
-		public void verify() throws IOException, InvalidContentException {
-			BundleFile currentContent = content;
-			if (currentContent == null)
-				throw new InvalidContentException("The content was not set", null); //$NON-NLS-1$
-			BundleEntry entry = null;
-			SecurityException exception = null;
-			try {
-				entry = currentContent.getEntry(entryName);
-			} catch (SecurityException e) {
-				exception = e;
-			}
-			if (entry == null)
-				throw new InvalidContentException(NLS.bind(SignedContentMessages.file_is_removed_from_jar, entryName, currentContent.getBaseFile().toString()), exception);
-			entry.getBytes();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java
deleted file mode 100644
index 28cab18..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.internal.signedcontent;
-
-import org.eclipse.osgi.util.NLS;
-
-public class SignedContentMessages extends NLS {
-
-	// Jar file is tampered
-	public static String file_is_removed_from_jar;
-	public static String File_In_Jar_Is_Tampered;
-	public static String Security_File_Is_Tampered;
-	public static String Signature_Not_Verify;
-
-	// Jar file parsing
-	public static String SF_File_Parsing_Error;
-
-	// PKCS7 parsing errors
-	public static String PKCS7_SignerInfo_Version_Not_Supported;
-	public static String PKCS7_Invalid_File;
-	public static String PKCS7_Parse_Signing_Time;
-
-	// Security Exceptions
-	public static String Algorithm_Not_Supported;
-
-	public static String Factory_SignedContent_Error;
-
-	public static String Default_Trust_Keystore_Load_Failed;
-	public static String Default_Trust_Read_Only;
-	public static String Default_Trust_Cert_Not_Found;
-	public static String Default_Trust_Existing_Cert;
-	public static String Default_Trust_Existing_Alias;
-
-	//	private static final String BUNDLE_PACKAGE = SignedContentMessages.class.getPackage().getName() + ".";
-	private static final String BUNDLE_PACKAGE = "org.eclipse.osgi.internal.signedcontent."; //$NON-NLS-1$
-	private static final String BUNDLE_FILENAME = "SignedContentMessages"; //$NON-NLS-1$
-	private static final String BUNDLE_NAME = BUNDLE_PACKAGE + BUNDLE_FILENAME;
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, SignedContentMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties
deleted file mode 100644
index 47dace8..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedContentMessages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-###############################################################################
-# Copyright (c) 2006, 2010 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-# Jar file tampered error messages
-file_is_removed_from_jar = A file \"{0}\" has been removed from the jar: {1}
-File_In_Jar_Is_Tampered = The file \"{0}\" in the jar \"{1}\" has been tampered!
-Security_File_Is_Tampered = Either the manifest file or the signature file has been tampered in this jar: {0}
-Signature_Not_Verify = The signature cannot be verified for the signer \"{0}\"  in this jar: {1}
-
-# Jar file parsing
-SF_File_Parsing_Error = Error occurs parsing the .SF file to find out the digest algorithm in this bundle: {0}
-
-# PKCS7 parsing errors
-PKCS7_SignerInfo_Version_Not_Supported = Only PKCS7 SignerInfos with a version of 1 are supported.
-PKCS7_Invalid_File = The file \"{0}\" is not a valid PKCS7 file in the jar: {1}
-PKCS7_Parse_Signing_Time = The time stamp in the pkcs7 file cannot be parsed properly!
-
-# Security Exceptions
-Algorithm_Not_Supported = {0} digest algorithm is not supported!
-
-# SignedContentFactory exception
-Factory_SignedContent_Error = An error occurred while processing the signatures for the file: {0}
-
-# Default Trust Engine
-Default_Trust_Keystore_Load_Failed = Failed to load the keystore from: {0}
-Default_Trust_Read_Only=This trust engine is read only.
-Default_Trust_Cert_Not_Found = Certificate not found.
-Default_Trust_Existing_Cert = Certificate already present in store.
-Default_Trust_Existing_Alias = A certificate is already present for this alias.
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedStorageHook.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedStorageHook.java
deleted file mode 100644
index e544e79..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignedStorageHook.java
+++ /dev/null
@@ -1,236 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2010 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.io.*;
-import java.security.cert.*;
-import java.util.*;
-import java.util.Map.Entry;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.eclipse.osgi.signedcontent.SignedContent;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class SignedStorageHook implements StorageHook {
-	public static final String KEY = SignedStorageHook.class.getName();
-	public static final int HASHCODE = KEY.hashCode();
-	private static final int STORAGE_VERSION = 3;
-	private static ArrayList savedSignerInfo = new ArrayList(5);
-	private static long firstIDSaved = -1;
-	private static long lastIDSaved = -1;
-	private static ArrayList loadedSignerInfo = new ArrayList(5);
-	private static long lastIDLoaded;
-
-	private BaseData bundledata;
-	SignedContentImpl signedContent;
-
-	public int getStorageVersion() {
-		return STORAGE_VERSION;
-	}
-
-	public StorageHook create(BaseData bundledata) throws BundleException {
-		SignedStorageHook hook = new SignedStorageHook();
-		hook.bundledata = bundledata;
-		return hook;
-	}
-
-	public void initialize(Dictionary manifest) throws BundleException {
-		// do nothing
-	}
-
-	public StorageHook load(BaseData target, DataInputStream is) throws IOException {
-		if (lastIDLoaded > target.getBundleID())
-			loadedSignerInfo.clear();
-		lastIDLoaded = target.getBundleID();
-		SignedStorageHook hook = new SignedStorageHook();
-		hook.bundledata = target;
-		boolean signed = is.readBoolean();
-		if (!signed)
-			return hook;
-		int numSigners = is.readInt();
-		SignerInfo[] signerInfos = new SignerInfo[numSigners];
-		for (int i = 0; i < numSigners; i++)
-			signerInfos[i] = readSignerInfo(is);
-
-		int resultsSize = is.readInt();
-		HashMap contentMDResults = null;
-		if (resultsSize > 0) {
-			contentMDResults = new HashMap(resultsSize);
-			for (int i = 0; i < resultsSize; i++) {
-				String path = is.readUTF();
-				int numEntrySigners = is.readInt();
-				SignerInfo[] entrySigners = new SignerInfo[numEntrySigners];
-				byte[][] entryResults = new byte[numEntrySigners][];
-				for (int j = 0; j < numEntrySigners; j++) {
-					entrySigners[j] = readSignerInfo(is);
-					int resultSize = is.readInt();
-					entryResults[j] = new byte[resultSize];
-					is.readFully(entryResults[j]);
-				}
-				contentMDResults.put(path, new Object[] {entrySigners, entryResults});
-			}
-		}
-		SignedContentImpl result = new SignedContentImpl(signerInfos, contentMDResults);
-		for (int i = 0; i < numSigners; i++) {
-			boolean hasTSA = is.readBoolean();
-			if (!hasTSA)
-				continue;
-			SignerInfo tsaSigner = readSignerInfo(is);
-			Date signingDate = new Date(is.readLong());
-			result.addTSASignerInfo(signerInfos[i], tsaSigner, signingDate);
-		}
-		hook.signedContent = result;
-		return hook;
-	}
-
-	public void save(DataOutputStream os) throws IOException {
-		getFirstLastID();
-		if (firstIDSaved == bundledata.getBundleID())
-			savedSignerInfo.clear();
-		if (lastIDSaved == bundledata.getBundleID())
-			firstIDSaved = lastIDSaved = -1;
-		os.writeBoolean(signedContent != null);
-		if (signedContent == null)
-			return;
-		SignerInfo[] signerInfos = signedContent.getSignerInfos();
-		os.writeInt(signerInfos.length);
-		for (int i = 0; i < signerInfos.length; i++)
-			saveSignerInfo(signerInfos[i], os);
-
-		// keyed by entry path -> {SignerInfo[] infos, byte[][] results)}
-		HashMap contentMDResults = signedContent.getContentMDResults();
-		os.writeInt(contentMDResults == null ? -1 : contentMDResults.size());
-		if (contentMDResults != null)
-			for (Iterator iResults = contentMDResults.entrySet().iterator(); iResults.hasNext();) {
-				Entry entry = (Entry) iResults.next();
-				String path = (String) entry.getKey();
-				os.writeUTF(path);
-				Object[] signerResults = (Object[]) entry.getValue();
-				SignerInfo[] entrySigners = (SignerInfo[]) signerResults[0];
-				byte[][] entryResults = (byte[][]) signerResults[1];
-				os.writeInt(entrySigners.length);
-				for (int i = 0; i < entrySigners.length; i++) {
-					saveSignerInfo(entrySigners[i], os);
-					os.writeInt(entryResults[i].length);
-					os.write(entryResults[i]);
-				}
-			}
-
-		for (int i = 0; i < signerInfos.length; i++) {
-			SignerInfo tsaInfo = signedContent.getTSASignerInfo(signerInfos[i]);
-			os.writeBoolean(tsaInfo != null);
-			if (tsaInfo == null)
-				continue;
-			saveSignerInfo(tsaInfo, os);
-			Date signingTime = signedContent.getSigningTime(signerInfos[i]);
-			os.writeLong(signingTime != null ? signingTime.getTime() : Long.MIN_VALUE);
-		}
-	}
-
-	private void saveSignerInfo(SignerInfo signerInfo, DataOutputStream os) throws IOException {
-		int cacheIdx = savedSignerInfo.indexOf(signerInfo);
-		os.writeInt(cacheIdx);
-		if (cacheIdx >= 0)
-			return;
-		Certificate[] certs = signerInfo.getCertificateChain();
-		int anchorIndex = -1;
-		os.writeInt(certs == null ? 0 : certs.length);
-		if (certs != null)
-			for (int i = 0; i < certs.length; i++) {
-				if (certs[i].equals(signerInfo.getTrustAnchor()))
-					anchorIndex = i;
-				byte[] certBytes;
-				try {
-					certBytes = certs[i].getEncoded();
-				} catch (CertificateEncodingException e) {
-					throw (IOException) new IOException(e.getMessage()).initCause(e);
-				}
-				os.writeInt(certBytes.length);
-				os.write(certBytes);
-			}
-		os.writeInt(anchorIndex);
-		os.writeUTF(signerInfo.getMessageDigestAlgorithm());
-		savedSignerInfo.add(signerInfo);
-	}
-
-	private SignerInfo readSignerInfo(DataInputStream is) throws IOException {
-		int index = is.readInt();
-		if (index >= 0)
-			return (SignerInfo) loadedSignerInfo.get(index);
-		int numCerts = is.readInt();
-		Certificate[] certs = new Certificate[numCerts];
-		for (int i = 0; i < numCerts; i++) {
-			int certSize = is.readInt();
-			byte[] certBytes = new byte[certSize];
-			is.readFully(certBytes);
-			try {
-				certs[i] = PKCS7Processor.certFact.generateCertificate(new ByteArrayInputStream(certBytes));
-			} catch (CertificateException e) {
-				throw (IOException) new IOException(e.getMessage()).initCause(e);
-			}
-		}
-		int anchorIdx = is.readInt();
-		SignerInfoImpl result = new SignerInfoImpl(certs, anchorIdx >= 0 ? certs[anchorIdx] : null, is.readUTF());
-		loadedSignerInfo.add(result);
-		return result;
-	}
-
-	private void getFirstLastID() {
-		if (firstIDSaved >= 0)
-			return;
-		Bundle[] bundles = bundledata.getAdaptor().getContext().getBundles();
-		if (bundles.length > 1) {
-			firstIDSaved = bundles[1].getBundleId();
-			lastIDSaved = bundles[bundles.length - 1].getBundleId();
-		}
-	}
-
-	public void copy(StorageHook storageHook) {
-		// do nothing
-	}
-
-	public void validate() throws IllegalArgumentException {
-		// do nothing
-	}
-
-	public Dictionary getManifest(boolean firstLoad) throws BundleException {
-		// do nothing
-		return null;
-	}
-
-	public boolean forgetStatusChange(int status) {
-		// do nothing
-		return false;
-	}
-
-	public boolean forgetStartLevelChange(int startlevel) {
-		// do nothing
-		return false;
-	}
-
-	public int getKeyHashCode() {
-		return HASHCODE;
-	}
-
-	public boolean compare(KeyedElement other) {
-		return other.getKey() == KEY;
-	}
-
-	public Object getKey() {
-		return KEY;
-	}
-
-	public SignedContent getSignedContent() {
-		return signedContent;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignerInfoImpl.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignerInfoImpl.java
deleted file mode 100644
index 84673b1..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/SignerInfoImpl.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.security.cert.Certificate;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-
-public class SignerInfoImpl implements SignerInfo {
-	private final Certificate[] chain;
-	private final String mdAlgorithm;
-	volatile private Certificate trustAnchor;
-
-	public SignerInfoImpl(Certificate[] chain, Certificate trustAnchor, String mdAlgorithm) {
-		this.chain = chain;
-		this.trustAnchor = trustAnchor;
-		this.mdAlgorithm = mdAlgorithm;
-	}
-
-	public Certificate[] getCertificateChain() {
-		return chain;
-	}
-
-	public Certificate getTrustAnchor() {
-		return trustAnchor;
-	}
-
-	public boolean isTrusted() {
-		return trustAnchor != null;
-	}
-
-	void setTrustAnchor(Certificate trustAnchor) {
-		this.trustAnchor = trustAnchor;
-	}
-
-	public String getMessageDigestAlgorithm() {
-		return mdAlgorithm;
-	}
-
-	public int hashCode() {
-		int result = mdAlgorithm.hashCode();
-		for (int i = 0; i < chain.length; i++)
-			result += chain[i].hashCode();
-		// Note that we do not hash based on trustAnchor;
-		// this changes dynamically but we need a constant hashCode for purposes of 
-		// hashing in a Set.
-		return result;
-	}
-
-	public boolean equals(Object obj) {
-		if (!(obj instanceof SignerInfo))
-			return false;
-		if (obj == this)
-			return true;
-		SignerInfo other = (SignerInfo) obj;
-		if (!mdAlgorithm.equals(other.getMessageDigestAlgorithm()))
-			return false;
-		Certificate[] otherCerts = other.getCertificateChain();
-		if (otherCerts.length != chain.length)
-			return false;
-		for (int i = 0; i < chain.length; i++)
-			if (!chain[i].equals(otherCerts[i]))
-				return false;
-		return trustAnchor == null ? other.getTrustAnchor() == null : trustAnchor.equals(other.getTrustAnchor());
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/TrustEngineListener.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/TrustEngineListener.java
deleted file mode 100644
index 629e447..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/internal/signedcontent/TrustEngineListener.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others. All rights reserved.
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors: IBM Corporation - initial API and implementation
- ******************************************************************************/
-package org.eclipse.osgi.internal.signedcontent;
-
-import java.security.cert.Certificate;
-import java.util.HashSet;
-import java.util.Iterator;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.provisional.service.security.AuthorizationEngine;
-import org.eclipse.osgi.signedcontent.SignerInfo;
-import org.osgi.framework.*;
-import org.osgi.framework.Constants;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.util.tracker.ServiceTracker;
-
-public class TrustEngineListener {
-	// this is a singleton listener; see SignedBundleHook for initialization
-	private volatile static TrustEngineListener instance;
-	private final BundleContext context;
-	private final ServiceTracker authorizationTracker;
-
-	TrustEngineListener(BundleContext context) {
-		this.context = context;
-		// read the trust provider security property
-		String authEngineProp = FrameworkProperties.getProperty(SignedContentConstants.AUTHORIZATION_ENGINE);
-		Filter filter = null;
-		if (authEngineProp != null)
-			try {
-				filter = FilterImpl.newInstance("(&(" + Constants.OBJECTCLASS + "=" + AuthorizationEngine.class.getName() + ")(" + SignedContentConstants.AUTHORIZATION_ENGINE + "=" + authEngineProp + "))"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$
-			} catch (InvalidSyntaxException e) {
-				SignedBundleHook.log("Invalid authorization filter", FrameworkLogEntry.WARNING, e); //$NON-NLS-1$
-			}
-		if (filter != null)
-			authorizationTracker = new ServiceTracker(context, filter, null);
-		else
-			authorizationTracker = new ServiceTracker(context, AuthorizationEngine.class.getName(), null);
-		authorizationTracker.open();
-		instance = this;
-	}
-
-	public static TrustEngineListener getInstance() {
-		return instance;
-	}
-
-	void stopTrustEngineListener() {
-		authorizationTracker.close();
-		instance = null;
-	}
-
-	public void addedTrustAnchor(Certificate anchor) {
-		// find any SignedContent with SignerInfos that do not have an anchor;
-		// re-evaluate trust and check authorization for these SignedContents
-		Bundle[] bundles = context.getBundles();
-		HashSet unresolved = new HashSet();
-		for (int i = 0; i < bundles.length; i++) {
-			SignedContentImpl signedContent = getSignedContent(bundles[i]);
-			if (signedContent != null && signedContent.isSigned()) {
-				// check the SignerInfos for this content
-				SignerInfo[] infos = signedContent.getSignerInfos();
-				for (int j = 0; j < infos.length; j++) {
-					if (infos[j].getTrustAnchor() == null)
-						// one of the signers is not trusted
-						unresolved.add(bundles[i]);
-					SignerInfo tsa = signedContent.getTSASignerInfo(infos[j]);
-					if (tsa != null && tsa.getTrustAnchor() == null)
-						// one of the tsa signers is not trusted
-						unresolved.add(bundles[i]);
-				}
-			}
-			if (unresolved.contains(bundles[i])) {
-				// found an untrusted signer for this bundle re-evaluate trust
-				SignedBundleFile.determineTrust(signedContent, SignedBundleHook.VERIFY_TRUST);
-				// now check the authorization handler
-				checkAuthorization(signedContent, bundles[i]);
-			}
-		}
-		// try to resolve
-		if (unresolved.size() > 0)
-			resolveBundles((Bundle[]) unresolved.toArray(new Bundle[unresolved.size()]), false);
-	}
-
-	private void checkAuthorization(SignedContentImpl signedContent, Bundle bundle) {
-		AuthorizationEngine authEngine = getAuthorizationEngine();
-		if (authEngine != null)
-			authEngine.authorize(signedContent, bundle);
-	}
-
-	AuthorizationEngine getAuthorizationEngine() {
-		return (AuthorizationEngine) authorizationTracker.getService();
-	}
-
-	private void resolveBundles(Bundle[] bundles, boolean refresh) {
-		ServiceReference ref = context.getServiceReference(PackageAdmin.class.getName());
-		if (ref == null)
-			return;
-		PackageAdmin pa = (PackageAdmin) context.getService(ref);
-		if (pa == null)
-			return;
-		try {
-			if (refresh)
-				pa.refreshPackages(bundles);
-			else
-				pa.resolveBundles(bundles);
-		} finally {
-			context.ungetService(ref);
-		}
-	}
-
-	public void removedTrustAnchor(Certificate anchor) {
-		// find any signed content that has signerinfos with the supplied anchor
-		// re-evaluate trust and check authorization again.
-		Bundle[] bundles = context.getBundles();
-		HashSet usingAnchor = new HashSet();
-		HashSet untrustedSigners = new HashSet();
-		for (int i = 0; i < bundles.length; i++) {
-			SignedContentImpl signedContent = getSignedContent(bundles[i]);
-			if (signedContent != null && signedContent.isSigned()) {
-				// check signer infos for this content
-				SignerInfo[] infos = signedContent.getSignerInfos();
-				for (int j = 0; j < infos.length; j++) {
-					if (anchor.equals(infos[j].getTrustAnchor())) {
-						// one of the signers uses this anchor
-						untrustedSigners.add(infos[j]);
-						usingAnchor.add(bundles[i]);
-					}
-					SignerInfo tsa = signedContent.getTSASignerInfo(infos[j]);
-					if (tsa != null && anchor.equals(tsa.getTrustAnchor())) {
-						// one of the tsa signers uses this anchor
-						usingAnchor.add(bundles[i]);
-						untrustedSigners.add(tsa);
-					}
-				}
-			}
-		}
-		// remove trust anchors from untrusted signers
-		for (Iterator untrusted = untrustedSigners.iterator(); untrusted.hasNext();)
-			((SignerInfoImpl) untrusted.next()).setTrustAnchor(null);
-		// re-establish trust and check authorization
-		for (Iterator untrustedBundles = usingAnchor.iterator(); untrustedBundles.hasNext();) {
-			Bundle bundle = (Bundle) untrustedBundles.next();
-			SignedContentImpl signedContent = getSignedContent(bundle);
-			// found an signer using the anchor for this bundle re-evaluate trust
-			SignedBundleFile.determineTrust(signedContent, SignedBundleHook.VERIFY_TRUST);
-			// now check the authorization handler
-			checkAuthorization(signedContent, bundle);
-		}
-		// TODO an optimization here would be to check for real DisabledInfo objects for each bundle
-		// try to refresh
-		if (usingAnchor.size() > 0)
-			resolveBundles((Bundle[]) usingAnchor.toArray(new Bundle[usingAnchor.size()]), true);
-	}
-
-	private SignedContentImpl getSignedContent(Bundle bundle) {
-		BaseData data = (BaseData) ((AbstractBundle) bundle).getBundleData();
-		SignedStorageHook hook = (SignedStorageHook) data.getStorageHook(SignedStorageHook.KEY);
-		if (hook == null)
-			return null;
-		return (SignedContentImpl) hook.getSignedContent();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/TrustEngine.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/TrustEngine.java
deleted file mode 100644
index e4c9c97..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/TrustEngine.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.security;
-
-import java.io.IOException;
-import java.security.GeneralSecurityException;
-import java.security.cert.Certificate;
-import org.eclipse.osgi.internal.signedcontent.TrustEngineListener;
-
-/**
- * A <code>TrustEngine</code> is used to establish the authenticity of a 
- * {@link Certificate} chain.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.4
- */
-public abstract class TrustEngine {
-	/**
-	 * Returns the certificate trust anchor contained in the specified chain which
-	 * was used to establish the authenticity of the chain.  If no 
-	 * trust anchor is found in the chain then <code>null</code> is returned.
-	 * @param chain - a complete or incomplete certificate chain, implementations *MAY* complete chains
-	 * @return - the certificate trust anchor used to establish authenticity
-	 * @throws IOException if there is a problem connecting to the backing store
-	 */
-	public abstract Certificate findTrustAnchor(Certificate[] chain) throws IOException;
-
-	/**
-	 * Add a trust anchor point to this trust engine. A trust anchor implies that a certificate, 
-	 * and any of its children, is to be considered trusted.  If <code>null</code> is used
-	 * as the alias then an alias will be generated based on the trust anchor certificate.
-	 * @param anchor - the certificate to add as an anchor point
-	 * @param alias - a unique and human-readable 'friendly name' which can be used to reference the certificate.
-	 *    A <code>null</code> value may be used.
-	 * @return the alias used to store the entry
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 * @throws IllegalArgumentException if the alias or anchor already exist in this trust engine
-	 */
-	public String addTrustAnchor(Certificate anchor, String alias) throws IOException, GeneralSecurityException {
-		String storedAlias = doAddTrustAnchor(anchor, alias);
-		TrustEngineListener listener = TrustEngineListener.getInstance();
-		if (listener != null)
-			listener.addedTrustAnchor(anchor);
-		return storedAlias;
-	}
-
-	/**
-	 * Add a trust anchor point to this trust engine. A trust anchor implies that a certificate, 
-	 * and any of its children, is to be considered trusted.  If <code>null</code> is used
-	 * as the alias then an alias will be generated based on the trust anchor certificate.
-	 * @param anchor - the certificate to add as an anchor point
-	 * @param alias - a unique and human-readable 'friendly name' which can be used to reference the certificate.
-	 *    A <code>null</code> value may be used.
-	 * @return the alias used to store the entry
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 * @throws IllegalArgumentException if the alias or anchor already exist in this trust engine
-	 */
-	protected abstract String doAddTrustAnchor(Certificate anchor, String alias) throws IOException, GeneralSecurityException;
-
-	/**
-	 * Remove a trust anchor point from the engine, based on the certificate itself.
-	 * @param anchor - the certificate to be removed
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 */
-	public final void removeTrustAnchor(Certificate anchor) throws IOException, GeneralSecurityException {
-		doRemoveTrustAnchor(anchor);
-		TrustEngineListener listener = TrustEngineListener.getInstance();
-		if (listener != null)
-			listener.removedTrustAnchor(anchor);
-	}
-
-	/**
-	 * Remove a trust anchor point from the engine, based on the certificate itself.
-	 * @param anchor - the certificate to be removed
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 */
-	protected abstract void doRemoveTrustAnchor(Certificate anchor) throws IOException, GeneralSecurityException;
-
-	/**
-	 * Remove a trust anchor point from the engine, based on the human readable "friendly name"
-	 * @param alias - the name of the trust anchor
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 */
-	public void removeTrustAnchor(String alias) throws IOException, GeneralSecurityException {
-		Certificate existing = getTrustAnchor(alias);
-		doRemoveTrustAnchor(alias);
-		if (existing != null) {
-			TrustEngineListener listener = TrustEngineListener.getInstance();
-			if (listener != null)
-				listener.removedTrustAnchor(existing);
-		}
-	}
-
-	/**
-	 * Remove a trust anchor point from the engine, based on the human readable "friendly name"
-	 * @param alias - the name of the trust anchor
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 */
-	protected abstract void doRemoveTrustAnchor(String alias) throws IOException, GeneralSecurityException;
-
-	/**
-	 * Return the certificate associated with the unique "friendly name" in the engine.
-	 * @param alias - the friendly name  
-	 * @return the associated trust anchor
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 */
-	public abstract Certificate getTrustAnchor(String alias) throws IOException, GeneralSecurityException;
-
-	/**
-	 * Return the list of friendly name aliases for the TrustAnchors installed in the engine.
-	 * @return string[] - the list of friendly name aliases
-	 * @throws IOException if there is a problem connecting to the backing store
-	 * @throws GeneralSecurityException if there is a certificate problem
-	 */
-	public abstract String[] getAliases() throws IOException, GeneralSecurityException;
-
-	/**
-	 * Return a value indicate whether this trust engine is read-only.
-	 * 
-	 * @return	true if this trust engine is read-only false otherwise.
-	 */
-	public abstract boolean isReadOnly();
-
-	/**
-	 * Return a representation string of this trust engine
-	 * 
-	 * @return	a string
-	 */
-	public abstract String getName();
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/package.html b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/package.html
deleted file mode 100644
index de7f5c9..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/service/security/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Equinox security services  
-<h2>
-Package Specification</h2>
-<p>This package provides service APIs related to security.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/InvalidContentException.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/InvalidContentException.java
deleted file mode 100644
index 846c307..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/InvalidContentException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.signedcontent;
-
-import java.io.IOException;
-
-/**
- * Indicates that signed content is invalid according to one of the signers.
- * @since 3.4
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class InvalidContentException extends IOException {
-	private static final long serialVersionUID = -399150159330289387L;
-	// TODO may want to add error codes to indicate the reason for the invalid/corruption error.
-	private final Throwable cause;
-
-	/**
-	 * Constructs an <code>InvalidContentException</code> with the specified detail
-	 * message and cause. 
-	 *
-	 * @param message the exception message
-	 * @param cause the cause, may be <code>null</code>
-	 */
-	public InvalidContentException(String message, Throwable cause) {
-		super(message);
-		this.cause = cause;
-	}
-
-	/**
-	 * 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 created.
-	 */
-	public Throwable getCause() {
-		return cause;
-	}
-
-	/**
-	 * The cause of this exception can only be set when constructed.
-	 * 
-	 * @param t Cause of the exception.
-	 * @return This object.
-	 * @throws java.lang.IllegalStateException This method will always throw an
-	 *         <code>IllegalStateException</code> since the cause of this
-	 *         exception can only be set when constructed.
-	 */
-	public Throwable initCause(Throwable t) {
-		throw new IllegalStateException();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContent.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContent.java
deleted file mode 100644
index 918f1a0..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContent.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.signedcontent;
-
-import java.security.cert.CertificateExpiredException;
-import java.security.cert.CertificateNotYetValidException;
-import java.util.Date;
-
-/**
- * A <code>SignedContent</code> object represents content which may be signed.  A
- * {@link SignedContentFactory} is used to create signed content objects.
- * <p>
- * A <code>SignedContent</code> object is intended to provide information about 
- * the signers of the content, and cannot be used to access the actual data of the content.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.4
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface SignedContent {
-
-	/**
-	 * Returns all entries of the content.  The returned entries can be used
-	 * to verify the entry content using {@link SignedContentEntry#verify()} and 
-	 * get signer info for each entry in this content using {@link SignedContentEntry#getSignerInfos()}.
-	 * Note that this operation may be expensive because it requires an 
-	 * exhaustive search for entries over the entire content.
-	 * <p>
-	 * Unsigned entries are included in the result.  Entries for which signer info exists
-	 * but no content is found are also returned. For example, when an entry is removed from 
-	 * a signed jar but the jar is not resigned, the signer thinks the entry should exist
-	 * but the content got removed.  This would be considered an invalid entry which would fail verification.
-	 * </p>
-	 * @return all entries of the content
-	 */
-	public SignedContentEntry[] getSignedEntries();
-
-	/**
-	 * Returns the signed entry for the specified name.
-	 * @param name the name of the entry
-	 * @return the entry or null if the entry could not be found
-	 */
-	public SignedContentEntry getSignedEntry(String name);
-
-	/**
-	 * Returns all the signer infos for this <code>SignedContent</code>.  If the content
-	 * is not signed then an empty array is returned.
-	 * @return all the signer infos for this <code>SignedContent</code>
-	 */
-	public SignerInfo[] getSignerInfos();
-
-	/**
-	 * Returns true if the content is signed; false otherwise.  This is a convenience method
-	 * equivalent to calling <code>{@link #getSignerInfos()}.length > 0</code> 
-	 * @return true if the content is signed
-	 */
-	public boolean isSigned();
-
-	/**
-	 * Returns the signing time for the signer info.  If no TSA signers exist then null is returned
-	 * @param signerInfo the signer info to get the signing time for
-	 * @return the signing time
-	 */
-	public Date getSigningTime(SignerInfo signerInfo);
-
-	/**
-	 * Returns the TSA signer info used to authenticate the signer time of a signer info.
-	 * @param signerInfo the signer info to get the TSA signer for
-	 * @return the TSA signer info
-	 */
-	public SignerInfo getTSASignerInfo(SignerInfo signerInfo);
-
-	/**
-	 * Checks if the certificates are valid for the specified signer.  If the signer has a singing time 
-	 * returned by {@link #getSigningTime(SignerInfo)} then that time is used to check the 
-	 * validity of the certificates; otherwise the current time is used.
-	 * @param signerInfo the signer info to check validity for.
-	 * @throws CertificateExpiredException if one of the certificates of this signer is expired
-	 * @throws CertificateNotYetValidException if one of the certificates of this signer is not yet valid
-	 */
-	public void checkValidity(SignerInfo signerInfo) throws CertificateExpiredException, CertificateNotYetValidException;
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentEntry.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentEntry.java
deleted file mode 100644
index 27f154b..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentEntry.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.signedcontent;
-
-import java.io.IOException;
-
-// encapsulates the status of an entry: isSigned, timestamp info, SignerInfos, etc
-// implemented by SignedBundleFile.SignedBundleEntry
-/**
- * A <code>SignedContentEntry</code> represents a content entry which may be
- * signed.
- * <p>
- * A <code>SignedContentEntry</code> object is intended to provide information about 
- * the signers of the content entry, and cannot be used to access the actual data of the entry.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.4
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface SignedContentEntry {
-	/**
-	 * Returns the name of the entry.
-	 * @return the name of the entry.
-	 */
-	public String getName();
-
-	/**
-	 * Returns the signer infos for this <code>SignedContentEntry</code>.  If the entry
-	 * is not signed then an empty array is returned.
-	 * @return the signer infos for this <code>SignedContentEntry</code>
-	 */
-	public SignerInfo[] getSignerInfos();
-
-	/**
-	 * Returns true if the entry is signed; false otherwise.  This is a convenience method
-	 * equivalent to calling <code>{@link #getSignerInfos()}.length > 0</code> 
-	 * @return true if the content is signed
-	 */
-	public boolean isSigned();
-
-	// Does the digest of this entry match what is expected?
-	// TODO: what does this mean in the face of multiple signers
-	/**
-	 * Verifies the content of this this entry is valid.
-	 * @throws IOException if an error occurred reading the entry content
-	 * @throws InvalidContentException if the entry content is not valid
-	 */
-	public void verify() throws IOException, InvalidContentException;
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentFactory.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentFactory.java
deleted file mode 100644
index bfd405d..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignedContentFactory.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2007, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.signedcontent;
-
-import java.io.File;
-import java.io.IOException;
-import java.security.*;
-import java.security.cert.CertificateException;
-import org.osgi.framework.Bundle;
-
-/**
- * A factory used to create {@link SignedContent} objects.
- * <p>
- * The framework will register a factory implementation as an OSGi service.
- * This service can be used to get <code>SignedContent</code> for a bundle.
- * It can also be used to get <code>SignedContent</code> for a repository file.
- * The supported formats for file repositories are jar files and  directories containing the 
- * content of an extracted jar.
- * </p>
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.4
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface SignedContentFactory {
-	/**
-	 * Returns a <code>SignedContent</code> object for the specified content of a repository.
-	 * @param content the content of the repository
-	 * @return signed content for the specified repository
-	 * @throws IOException if an IO exception occurs while reading the repository
-	 * @throws NoSuchProviderException if there's no security provider for the signed content
-	 * @throws NoSuchAlgorithmException if the cryptographic algorithm is not available for the signed content
-	 * @throws CertificateException if there is a problem with one of the certificates of the signed content
-	 * @throws SignatureException if there is a problem with one of the signatures of the signed content
-	 * @throws InvalidKeyException if there is a problem with one of the certificate keys of the signed content
-	 */
-	public SignedContent getSignedContent(File content) throws IOException, InvalidKeyException, SignatureException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException;
-
-	/**
-	 * Returns a <code>SignedContent</code> object for the specified bundle.
-	 * @param bundle the bundle to get a signed content for. 
-	 * @return signed content for the specified bundle.
-	 * @throws IOException if an IO exception occurs while reading the bundle content
-	 * @throws NoSuchProviderException if there's no security provider for the signed content
-	 * @throws NoSuchAlgorithmException if the cryptographic algorithm is not available for the signed content
-	 * @throws CertificateException if there is a problem with one of the certificates of the signed content
-	 * @throws SignatureException if there is a problem with one of the signatures of the signed content
-	 * @throws InvalidKeyException if there is a problem with one of the certificate keys of the signed content
-	 */
-	public SignedContent getSignedContent(Bundle bundle) throws IOException, InvalidKeyException, SignatureException, CertificateException, NoSuchAlgorithmException, NoSuchProviderException;
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignerInfo.java b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignerInfo.java
deleted file mode 100644
index c5bc14d..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/SignerInfo.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.signedcontent;
-
-import java.security.cert.Certificate;
-
-/**
- * A <code>SignerInfo</code> object represents a single signer chain.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.4
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface SignerInfo {
-
-	/**
-	 * Returns the certificate chain
-	 * @return the certificate chain
-	 */
-	public Certificate[] getCertificateChain();
-
-	/**
-	 * Returns the certificate trust anchor used to establish authenticity.
-	 * If authenticity cannot be established then <code>null</code> is returned.
-	 * @return the trust anchor
-	 */
-	public Certificate getTrustAnchor();
-
-	/**
-	 * Returns true if the trust anchor has been authenticated.  This is a convenience 
-	 * method equivalent to calling <code>{@link #getTrustAnchor()} != null</code>
-	 * @return true if the the signer info is trusted
-	 */
-	public boolean isTrusted();
-
-	/**
-	 * Returns the <code>MessageDigest</code> algorithm used to verify content signed by this 
-	 * signer info.
-	 * @return the algorithm
-	 */
-	public String getMessageDigestAlgorithm();
-
-	// TODO need more thought here, TrustEngines could get stale since they are services, leaving off for now unless until we understand the usecase for this.
-	//public TrustEngine getTrustEngine();
-
-}
diff --git a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/package.html b/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/package.html
deleted file mode 100644
index 79563e3..0000000
--- a/bundles/org.eclipse.osgi/security/src/org/eclipse/osgi/signedcontent/package.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Equinox Signed Content
-<h2>
-Package Specification</h2>
-<p>This package provides API for accessing signer information from signed content.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/.classpath b/bundles/org.eclipse.osgi/supplement/.classpath
deleted file mode 100644
index ce73933..0000000
--- a/bundles/org.eclipse.osgi/supplement/.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/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.4"/>
-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.osgi/supplement/.cvsignore b/bundles/org.eclipse.osgi/supplement/.cvsignore
deleted file mode 100644
index ba077a4..0000000
--- a/bundles/org.eclipse.osgi/supplement/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin
diff --git a/bundles/org.eclipse.osgi/supplement/.project b/bundles/org.eclipse.osgi/supplement/.project
deleted file mode 100644
index 64f3ba8..0000000
--- a/bundles/org.eclipse.osgi/supplement/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.supplement</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>
-		<buildCommand>
-			<name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.core.resources.prefs b/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 16532b2..0000000
--- a/bundles/org.eclipse.osgi/supplement/.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.osgi/supplement/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index f31f250..0000000
--- a/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,331 +0,0 @@
-#Tue Aug 21 11:27:47 CDT 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.builder.cleanOutputFolder=clean
-org.eclipse.jdt.core.builder.duplicateResourceTask=warning
-org.eclipse.jdt.core.builder.invalidClasspath=abort
-org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch
-org.eclipse.jdt.core.circularClasspath=error
-org.eclipse.jdt.core.classpath.exclusionPatterns=enabled
-org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=disabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.doc.comment.support=enabled
-org.eclipse.jdt.core.compiler.maxProblemPerUnit=1000
-org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=error
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
-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=error
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_assignment=0
-org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
-org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
-org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
-org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
-org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
-org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
-org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
-org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
-org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_after_package=1
-org.eclipse.jdt.core.formatter.blank_lines_before_field=0
-org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
-org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
-org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
-org.eclipse.jdt.core.formatter.blank_lines_before_method=1
-org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
-org.eclipse.jdt.core.formatter.blank_lines_before_package=0
-org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
-org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
-org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
-org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
-org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
-org.eclipse.jdt.core.formatter.comment.format_block_comments=false
-org.eclipse.jdt.core.formatter.comment.format_header=false
-org.eclipse.jdt.core.formatter.comment.format_html=true
-org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
-org.eclipse.jdt.core.formatter.comment.format_line_comments=false
-org.eclipse.jdt.core.formatter.comment.format_source_code=true
-org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false
-org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
-org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
-org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
-org.eclipse.jdt.core.formatter.comment.line_length=80
-org.eclipse.jdt.core.formatter.compact_else_if=true
-org.eclipse.jdt.core.formatter.continuation_indentation=2
-org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
-org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
-org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
-org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_empty_lines=false
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
-org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
-org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
-org.eclipse.jdt.core.formatter.indentation.size=4
-org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=insert
-org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
-org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
-org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
-org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
-org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
-org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
-org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
-org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
-org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
-org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
-org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
-org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
-org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
-org.eclipse.jdt.core.formatter.lineSplit=800
-org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
-org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
-org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
-org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
-org.eclipse.jdt.core.formatter.tabulation.char=tab
-org.eclipse.jdt.core.formatter.tabulation.size=4
-org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
-org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
-org.eclipse.jdt.core.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
diff --git a/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.ui.prefs b/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.ui.prefs
deleted file mode 100644
index 21bfad5..0000000
--- a/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,57 +0,0 @@
-#Tue Aug 21 11:32:43 CDT 2007
-eclipse.preferences.version=1
-editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
-formatter_profile=_core
-formatter_settings_version=11
-org.eclipse.jdt.ui.ignorelowercasenames=true
-org.eclipse.jdt.ui.importorder=;
-org.eclipse.jdt.ui.ondemandthreshold=3
-org.eclipse.jdt.ui.staticondemandthreshold=99
-sp_cleanup.add_default_serial_version_id=true
-sp_cleanup.add_generated_serial_version_id=false
-sp_cleanup.add_missing_annotations=true
-sp_cleanup.add_missing_deprecated_annotations=true
-sp_cleanup.add_missing_nls_tags=false
-sp_cleanup.add_missing_override_annotations=true
-sp_cleanup.add_serial_version_id=false
-sp_cleanup.always_use_blocks=true
-sp_cleanup.always_use_parentheses_in_expressions=false
-sp_cleanup.always_use_this_for_non_static_field_access=false
-sp_cleanup.always_use_this_for_non_static_method_access=false
-sp_cleanup.convert_to_enhanced_for_loop=false
-sp_cleanup.correct_indentation=false
-sp_cleanup.format_source_code=true
-sp_cleanup.make_local_variable_final=false
-sp_cleanup.make_parameters_final=false
-sp_cleanup.make_private_fields_final=true
-sp_cleanup.make_variable_declarations_final=true
-sp_cleanup.never_use_blocks=false
-sp_cleanup.never_use_parentheses_in_expressions=true
-sp_cleanup.on_save_use_additional_actions=false
-sp_cleanup.organize_imports=true
-sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
-sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
-sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
-sp_cleanup.remove_private_constructors=true
-sp_cleanup.remove_trailing_whitespaces=false
-sp_cleanup.remove_trailing_whitespaces_all=true
-sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
-sp_cleanup.remove_unnecessary_casts=true
-sp_cleanup.remove_unnecessary_nls_tags=false
-sp_cleanup.remove_unused_imports=false
-sp_cleanup.remove_unused_local_variables=false
-sp_cleanup.remove_unused_private_fields=true
-sp_cleanup.remove_unused_private_members=false
-sp_cleanup.remove_unused_private_methods=true
-sp_cleanup.remove_unused_private_types=true
-sp_cleanup.sort_members=false
-sp_cleanup.sort_members_all=false
-sp_cleanup.use_blocks=false
-sp_cleanup.use_blocks_only_for_return_and_throw=false
-sp_cleanup.use_parentheses_in_expressions=false
-sp_cleanup.use_this_for_non_static_field_access=false
-sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
-sp_cleanup.use_this_for_non_static_method_access=false
-sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
diff --git a/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF
deleted file mode 100644
index d8ff0de..0000000
--- a/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,35 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.equinox.supplement
-Bundle-Version: 1.3.0.qualifier
-Bundle-Vendor: %providerName
-Bundle-Localization: plugin
-Export-Package: org.eclipse.osgi.framework.log;version="1.0",
- org.eclipse.osgi.service.datalocation;version="1.3",
- org.eclipse.osgi.service.debug;version="1.1",
- org.eclipse.osgi.service.environment;version="1.3",
- org.eclipse.osgi.service.localization;version="1.1",
- org.eclipse.osgi.service.runnable;version="1.1",
- org.eclipse.osgi.service.urlconversion;version="1.0",
- org.eclipse.osgi.storagemanager;version="1.0",
- org.eclipse.osgi.util;version="1.1",
- org.eclipse.osgi.framework.debug;x-internal:=true,
- org.eclipse.osgi.framework.util;x-internal:=true,
- org.eclipse.osgi.framework.internal.core;x-internal:=true,
- org.eclipse.osgi.framework.internal.reliablefile;x-internal:=true,
- org.eclipse.core.runtime.internal.adaptor;x-internal:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.4,
- CDC-1.0/Foundation-1.0,
- J2SE-1.3
-Import-Package: org.osgi.framework,
- org.osgi.util.tracker,
- org.eclipse.osgi.framework.log,
- org.eclipse.osgi.service.datalocation,
- org.eclipse.osgi.service.debug,
- org.eclipse.osgi.service.environment,
- org.eclipse.osgi.service.localization,
- org.eclipse.osgi.service.runnable,
- org.eclipse.osgi.service.urlconversion,
- org.eclipse.osgi.storagemanager,
- org.eclipse.osgi.util
diff --git a/bundles/org.eclipse.osgi/supplement/about.html b/bundles/org.eclipse.osgi/supplement/about.html
deleted file mode 100644
index f339f2b..0000000
--- a/bundles/org.eclipse.osgi/supplement/about.html
+++ /dev/null
@@ -1,65 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-<title>About</title>
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>May 11, 2006</p>	
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 
-at <a href="http://www.eclipse.org/legal/epl-v10.html">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
-and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</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.osgi/supplement/build.properties b/bundles/org.eclipse.osgi/supplement/build.properties
deleted file mode 100644
index ae34811..0000000
--- a/bundles/org.eclipse.osgi/supplement/build.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-
-###############################################################################
-# Copyright (c) 2005, 2008 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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
-jre.compilation.profile = J2SE-1.4
-
diff --git a/bundles/org.eclipse.osgi/supplement/plugin.properties b/bundles/org.eclipse.osgi/supplement/plugin.properties
deleted file mode 100644
index 612b574..0000000
--- a/bundles/org.eclipse.osgi/supplement/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.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 = Supplemental Equinox Functionality
-providerName = Eclipse.org - Equinox
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/BasicLocation.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/BasicLocation.java
deleted file mode 100644
index d73ef47..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/BasicLocation.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.service.datalocation.Location;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Internal class.
- */
-public class BasicLocation implements Location {
-	static class MockLocker implements Locker {
-		public boolean lock() throws IOException {
-			// locking always successful
-			return true;
-		}
-
-		public boolean isLocked() {
-			// this lock is never locked
-			return false;
-		}
-
-		public void release() {
-			// nothing to release
-		}
-
-	}
-
-	final private boolean isReadOnly;
-	private URL location = null;
-	private Location parent;
-	final private URL defaultValue;
-	final private String property;
-	final private String dataAreaPrefix;
-
-	// locking related fields
-	private File lockFile;
-	private Locker locker;
-	public static final String PROP_OSGI_LOCKING = "osgi.locking"; //$NON-NLS-1$
-	private static String DEFAULT_LOCK_FILENAME = ".metadata/.lock"; //$NON-NLS-1$
-	public static boolean DEBUG;
-
-	private static boolean isRunningWithNio() {
-		try {
-			Class.forName("java.nio.channels.FileLock"); //$NON-NLS-1$
-		} catch (ClassNotFoundException e) {
-			return false;
-		}
-		return true;
-	}
-
-	public static Locker createLocker(File lock, String lockMode) {
-		if (lockMode == null)
-			lockMode = FrameworkProperties.getProperty(PROP_OSGI_LOCKING);
-
-		if ("none".equals(lockMode)) //$NON-NLS-1$
-			return new MockLocker();
-
-		if ("java.io".equals(lockMode)) //$NON-NLS-1$
-			return new Locker_JavaIo(lock);
-
-		if ("java.nio".equals(lockMode)) { //$NON-NLS-1$
-			if (isRunningWithNio())
-				return new Locker_JavaNio(lock);
-			// TODO should we return null here.  NIO was requested but we could not do it...
-			return new Locker_JavaIo(lock);
-		}
-
-		//	Backup case if an invalid value has been specified
-		if (isRunningWithNio())
-			return new Locker_JavaNio(lock);
-		return new Locker_JavaIo(lock);
-
-	}
-
-	public BasicLocation(String property, URL defaultValue, boolean isReadOnly, String dataAreaPrefix) {
-		super();
-		this.property = property;
-		this.defaultValue = defaultValue;
-		this.isReadOnly = isReadOnly;
-		this.dataAreaPrefix = dataAreaPrefix == null ? "" : dataAreaPrefix; //$NON-NLS-1$
-	}
-
-	public boolean allowsDefault() {
-		return defaultValue != null;
-	}
-
-	public URL getDefault() {
-		return defaultValue;
-	}
-
-	public synchronized Location getParentLocation() {
-		return parent;
-	}
-
-	public synchronized URL getURL() {
-		if (location == null && defaultValue != null)
-			setURL(defaultValue, false);
-		return location;
-	}
-
-	public synchronized boolean isSet() {
-		return location != null;
-	}
-
-	public boolean isReadOnly() {
-		return isReadOnly;
-	}
-
-	public boolean setURL(URL value, boolean lock) throws IllegalStateException {
-		try {
-			return set(value, lock);
-		} catch (IOException e) {
-			return false;
-		}
-	}
-
-	public synchronized boolean set(URL value, boolean lock) throws IllegalStateException, IOException {
-		return set(value, lock, null);
-	}
-
-	public synchronized boolean set(URL value, boolean lock, String lockFilePath) throws IllegalStateException, IOException {
-		if (location != null)
-			throw new IllegalStateException(EclipseAdaptorMsg.ECLIPSE_CANNOT_CHANGE_LOCATION);
-		File file = null;
-		if (value.getProtocol().equalsIgnoreCase("file")) { //$NON-NLS-1$
-			try {
-				String basePath = new File(value.getFile()).getCanonicalPath();
-				value = LocationHelper.buildURL("file:" + basePath, true); //$NON-NLS-1$
-			} catch (IOException e) {
-				// do nothing just use the original value
-			}
-			if (lockFilePath != null && lockFilePath.length() > 0) {
-				File givenLockFile = new File(lockFilePath);
-				if (givenLockFile.isAbsolute()) {
-					file = givenLockFile;
-				} else {
-					file = new File(value.getFile(), lockFilePath);
-				}
-			} else {
-				file = new File(value.getFile(), DEFAULT_LOCK_FILENAME);
-			}
-		}
-		lock = lock && !isReadOnly;
-		if (lock) {
-			if (!lock(file, value))
-				return false;
-		}
-		lockFile = file;
-		location = value;
-		if (property != null)
-			FrameworkProperties.setProperty(property, location.toExternalForm());
-		return lock;
-	}
-
-	public synchronized void setParent(Location value) {
-		parent = value;
-	}
-
-	public synchronized boolean lock() throws IOException {
-		if (!isSet())
-			throw new IOException(EclipseAdaptorMsg.location_notSet);
-		return lock(lockFile, location);
-	}
-
-	public synchronized boolean isLocked() throws IOException {
-		if (!isSet())
-			return false;
-		return isLocked(lockFile);
-	}
-
-	/*
-	 * This must be called while holding the synchronization lock for (this)
-	 */
-	private boolean lock(File lock, URL locationValue) throws IOException {
-		if (isReadOnly)
-			throw new IOException(NLS.bind(EclipseAdaptorMsg.location_folderReadOnly, lock));
-		if (lock == null) {
-			if (locationValue != null && !"file".equalsIgnoreCase(locationValue.getProtocol())) //$NON-NLS-1$
-				throw new IOException(NLS.bind(EclipseAdaptorMsg.location_notFileProtocol, locationValue));
-			throw new IllegalStateException(EclipseAdaptorMsg.location_noLockFile); // this is really unexpected
-		}
-		if (isLocked())
-			return false;
-		File parentFile = new File(lock.getParent());
-		if (!parentFile.exists())
-			if (!parentFile.mkdirs())
-				throw new IOException(NLS.bind(EclipseAdaptorMsg.location_folderReadOnly, parentFile));
-
-		setLocker(lock);
-		if (locker == null)
-			return true;
-		boolean locked = false;
-		try {
-			locked = locker.lock();
-			return locked;
-		} finally {
-			if (!locked)
-				locker = null;
-		}
-	}
-
-	/*
-	 * This must be called while holding the synchronization lock for (this)
-	 */
-	private boolean isLocked(File lock) throws IOException {
-		if (lock == null || isReadOnly)
-			return true;
-		if (!lock.exists())
-			return false;
-		setLocker(lock);
-		return locker.isLocked();
-	}
-
-	/*
-	 * This must be called while holding the synchronization lock for (this)
-	 */
-	private void setLocker(File lock) {
-		if (locker != null)
-			return;
-		String lockMode = FrameworkProperties.getProperty(PROP_OSGI_LOCKING);
-		locker = createLocker(lock, lockMode);
-	}
-
-	public synchronized void release() {
-		if (locker != null)
-			locker.release();
-	}
-
-	public Location createLocation(Location parentLocation, URL defaultLocation, boolean readonly) {
-		BasicLocation result = new BasicLocation(null, defaultLocation, readonly, dataAreaPrefix);
-		result.setParent(parentLocation);
-		return result;
-	}
-
-	public URL getDataArea(String filename) throws IOException {
-		URL base = getURL();
-		if (base == null)
-			throw new IOException(EclipseAdaptorMsg.location_notSet);
-		String prefix = base.toExternalForm();
-		if (prefix.length() > 0 && prefix.charAt(prefix.length() - 1) != '/')
-			prefix += '/';
-		filename = filename.replace('\\', '/');
-		if (filename.length() > 0 && filename.charAt(0) == '/')
-			filename.substring(1);
-		return new URL(prefix + dataAreaPrefix + filename);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
deleted file mode 100644
index ecb3dba..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
+++ /dev/null
@@ -1,118 +0,0 @@
-
-###############################################################################
-# Copyright (c) 2004, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-#External Messages for EN locale
-
-#EclipseAdaptor messages
-ECLIPSE_ADAPTOR_ERROR_XML_SERVICE=Error registering XML parser services.
-ECLIPSE_ADAPTOR_RUNTIME_ERROR=An unexpected runtime error has occurred.
-ECLIPSE_ADAPTOR_EXITING=The application will terminate.
-
-#EclipseStarter messages
-ECLIPSE_STARTUP_BUNDLE_NOT_FOUND=Bundle {0} not found.
-ECLIPSE_STARTUP_ROOTS_NOT_RESOLVED=One or more bundles are not resolved because the following root constraints are not resolved:
-ECLIPSE_STARTUP_ALL_NOT_RESOLVED=The following is a complete list of bundles which are not resolved, see the prior log entry for the root cause if it exists:
-ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_RESOLVED=Bundle {0} was not resolved.
-ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_ACTIVE=Bundle {0} is not active.
-ECLIPSE_STARTUP_ERROR_NO_APPLICATION=Unable to acquire application service. Ensure that the org.eclipse.core.runtime bundle is resolved and started (see config.ini).
-#Don't use double quotes in the ECLIPSE_STARTUP_ERROR_CHECK_LOG. (See bug 86085) 
-ECLIPSE_STARTUP_ERROR_CHECK_LOG=An error has occurred. See the log file\n{0}.
-ECLIPSE_STARTUP_ALREADY_RUNNING=Platform already running
-ECLIPSE_STARTUP_NOT_RUNNING=Platform not running
-ECLIPSE_STARTUP_STARTUP_ERROR=Startup error
-ECLIPSE_STARTUP_APP_ERROR=Application error
-ECLIPSE_STARTUP_SHUTDOWN_ERROR=Shutdown error
-ECLIPSE_STARTUP_INVALID_PORT=Invalid console port: {0}
-ECLIPSE_STARTUP_FAILED_FIND=Failed to find/start: {0}
-ECLIPSE_STARTUP_FAILED_INSTALL=Error installing bundle: {0}
-ECLIPSE_STARTUP_FAILED_UNINSTALL=Error uninstalling bundle: {0}
-ECLIPSE_STARTUP_FAILED_START=Error starting bundle: {0}
-ECLIPSE_STARTUP_FILEMANAGER_OPEN_ERROR=Error reading configuration: {0}
-ECLIPSE_STARTUP_PROPS_NOT_SET=Cannot start without the following system properties set: {0}
-
-#EclipseBundleData messages
-ECLIPSE_DATA_MANIFEST_NOT_FOUND=Manifest not found: {0}
-ECLIPSE_DATA_ERROR_READING_MANIFEST=Error reading manifest for bundle at the location: {0}
-
-#Console extension
-ECLIPSE_CONSOLE_NO_BUNDLE_SPECIFIED_ERROR=No bundle specified!
-ECLIPSE_CONSOLE_CANNOT_FIND_BUNDLE_ERROR=Cannot find bundle {0}.
-ECLIPSE_CONSOLE_NO_CONSTRAINTS_NO_PLATFORM_ADMIN_MESSAGE=No unresolved constraints [PlatformAdmin service is not registered].
-ECLIPSE_CONSOLE_NO_CONSTRAINTS=No unresolved constraints.
-ECLIPSE_CONSOLE_DIRECT_CONSTRAINTS=Direct constraints which are unresolved:
-ECLIPSE_CONSOLE_LEAF_CONSTRAINTS=Leaf constraints in the dependency chain which are unresolved: 
-ECLIPSE_CONSOLE_COMMANDS_HEADER=Eclipse Runtime commands
-ECLIPSE_CONSOLE_HELP_DIAG_COMMAND_DESCRIPTION=Displays unsatisfied constraints for the specified bundle(s).
-ECLIPSE_CONSOLE_HELP_ENABLE_COMMAND_DESCRIPTION=enable the specified bundle(s)
-ECLIPSE_CONSOLE_HELP_DISABLE_COMMAND_DESCRIPTION=disable the specified bundle(s)
-ECLIPSE_CONSOLE_HELP_LD_COMMAND_DESCRIPTION=list disabled bundles in the system
-ECLIPSE_CONSOLE_BUNDLE_DISABLED_MESSAGE=Bundle disabled at console
-ECLIPSE_CONSOLE_DISABLED_COUNT_MESSAGE={0} disabled bundle(s) in the system
-ECLIPSE_CONSOLE_DISABLED_BUNDLE_HEADER=Bundle   :\t{0} (id={1})
-ECLIPSE_CONSOLE_DISABLED_BUNDLE_REASON1=Reason(s):\t{0} (policy={1})
-ECLIPSE_CONSOLE_DISABLED_BUNDLE_REASON2=\t\t{0} (policy={1})
-
-#Bundle resolution messages
-ECLIPSE_MISSING_OPTIONAL_REQUIRED_BUNDLE=Missing optionally required bundle {0}.
-ECLIPSE_MISSING_REQUIRED_BUNDLE=Missing required bundle {0}.
-ECLIPSE_MISSING_IMPORTED_PACKAGE=Missing imported package {0}.
-ECLIPSE_MISSING_OPTIONAL_IMPORTED_PACKAGE=Missing optionally imported package {0}.
-ECLIPSE_MISSING_DYNAMIC_IMPORTED_PACKAGE=Missing dynamically imported package {0}.
-ECLIPSE_MISSING_HOST=Missing host {0}.
-
-#Conversion messages
-ECLIPSE_CONVERTER_ERROR_CONVERTING=Error converting plugin at {0}.
-ECLIPSE_CONVERTER_ERROR_CREATING_BUNDLE_MANIFEST=Error creating bundle manifest file for {0} at {1}.
-ECLIPSE_CONVERTER_ERROR_PARSING_PLUGIN_MANIFEST=Error parsing plugin manifest file {0} at {1}.
-ECLIPSE_CONVERTER_MISSING_ATTRIBUTE=Error parsing {0} manifest. Missing attribute \"{1}\" in element \"{2}\".
-ECLIPSE_CONVERTER_PLUGIN_LIBRARY_IGNORED=Plugin library {0} ignored when creating manifest for {1}.
-ECLIPSE_CONVERTER_NO_SAX_FACTORY=No SAX factory parser has been found.
-ECLIPSE_CONVERTER_PARSE_UNKNOWNTOP_ELEMENT = Unknown element \"{0}\", found at the top level, ignored.
-ECLIPSE_CONVERTER_FILENOTFOUND = Could not find a META-INF/MANIFEST.MF, plugin.xml or a fragment.xml in {0}.
-parse_error=Error parsing manifest: {0}
-parse_errorNameLineColumn=Error parsing manifest at \"{0}\" line \"{1}\" column \"{2}\": {3}
-
-#Classloader messages
-ECLIPSE_CLASSLOADER_CANNOT_GET_HEADERS=Error loading bundle manifest for {0}. Using default auto-activation settings.
-ECLIPSE_CLASSLOADER_CONCURRENT_STARTUP=While loading class "{1}", thread "{0}" timed out waiting ({4}ms) for thread "{2}" to finish starting bundle "{3}". To avoid deadlock, thread "{0}" is proceeding but "{1}" may not be fully initialized.
-ECLIPSE_CLASSLOADER_ACTIVATION=An error occurred while automatically activating bundle {0} ({1}).
-ECLIPSE_CLASSLOADER_GENERATED_EXCEPTION=Generated exception.
-ECLIPSE_CLASSLOADER_ALREADY_STOPPED= The class \"{0}\" cannot be loaded because the system is shutting down and the plug-in \"{1}\" has already been stopped.
-
-#CachedManifest messages
-ECLIPSE_CACHEDMANIFEST_UNEXPECTED_EXCEPTION=Unexpected exception occurred loading manifest for bundle at the location: {0}.
-
-#BundleStopper messages
-ECLIPSE_BUNDLESTOPPER_CYCLES_FOUND=Info: cycle(s) found while stopping bundles: {0}.
-ECLIPSE_BUNDLESTOPPER_ERROR_STOPPING_BUNDLE=Error while stopping \"{0}\".
-
-#Location message
-ECLIPSE_CANNOT_CHANGE_LOCATION = Cannot change the location once it is set.
-
-#NL Problem
-error_badNL=Bad value: \"{0}\" for NL. Using system default.
-
-#FileMananger messages
-fileManager_cannotLock = Unable to create lock manager.
-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.
-
-#Location messages
-location_cannotLockNIO = An error occurred while locking file \"{0}\": \"{1}\". A common reason is that the file system or Runtime Environment does not support file locking for that location. Please choose a different location, or disable file locking by passing {2} as a VM argument.
-location_cannotLock = An error occurred while locking file \"{0}\".
-location_folderReadOnly = The folder \"{0}\" is read-only.
-location_notSet = The location has not been set.
-location_notFileProtocol = Unable to lock the location.  The set location is not a file URL: {0}
-location_noLockFile = The lock file has not been set.
-
-ECLIPSE_PLUGIN_EXTRACTION_PROBLEM = The URL \"{0}\" could not be extracted probably due to insufficient permissions or insufficient disk space.
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMsg.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMsg.java
deleted file mode 100644
index a89a25a..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMsg.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import org.eclipse.osgi.util.NLS;
-
-public class EclipseAdaptorMsg extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.core.runtime.internal.adaptor.EclipseAdaptorMessages"; //$NON-NLS-1$
-
-	public static String ECLIPSE_MISSING_IMPORTED_PACKAGE;
-	public static String ECLIPSE_MISSING_OPTIONAL_IMPORTED_PACKAGE;
-	public static String ECLIPSE_MISSING_DYNAMIC_IMPORTED_PACKAGE;
-	public static String ECLIPSE_MISSING_OPTIONAL_REQUIRED_BUNDLE;
-	public static String ECLIPSE_MISSING_REQUIRED_BUNDLE;
-	public static String ECLIPSE_MISSING_HOST;
-	public static String ECLIPSE_CANNOT_CHANGE_LOCATION;
-	public static String ECLIPSE_BUNDLESTOPPER_CYCLES_FOUND;
-	public static String ECLIPSE_BUNDLESTOPPER_ERROR_STOPPING_BUNDLE;
-	public static String ECLIPSE_CACHEDMANIFEST_UNEXPECTED_EXCEPTION;
-
-	public static String fileManager_cannotLock;
-	public static String fileManager_updateFailed;
-	public static String fileManager_illegalInReadOnlyMode;
-	public static String fileManager_notOpen;
-
-	public static String ECLIPSE_ADAPTOR_ERROR_XML_SERVICE;
-	public static String ECLIPSE_ADAPTOR_RUNTIME_ERROR;
-	public static String ECLIPSE_ADAPTOR_EXITING;
-
-	public static String ECLIPSE_DATA_MANIFEST_NOT_FOUND;
-	public static String ECLIPSE_CONVERTER_ERROR_CONVERTING;
-	public static String ECLIPSE_DATA_ERROR_READING_MANIFEST;
-	public static String ECLIPSE_CLASSLOADER_CANNOT_GET_HEADERS;
-
-	public static String ECLIPSE_CLASSLOADER_CONCURRENT_STARTUP;
-	public static String ECLIPSE_CLASSLOADER_ACTIVATION;
-	public static String ECLIPSE_CLASSLOADER_ALREADY_STOPPED;
-	public static String ECLIPSE_CLASSLOADER_GENERATED_EXCEPTION;
-
-	public static String ECLIPSE_CONSOLE_COMMANDS_HEADER;
-	public static String ECLIPSE_CONSOLE_HELP_DIAG_COMMAND_DESCRIPTION;
-	public static String ECLIPSE_CONSOLE_HELP_ENABLE_COMMAND_DESCRIPTION;
-	public static String ECLIPSE_CONSOLE_HELP_DISABLE_COMMAND_DESCRIPTION;
-	public static String ECLIPSE_CONSOLE_HELP_LD_COMMAND_DESCRIPTION;
-	public static String ECLIPSE_CONSOLE_NO_BUNDLE_SPECIFIED_ERROR;
-	public static String ECLIPSE_CONSOLE_NO_CONSTRAINTS_NO_PLATFORM_ADMIN_MESSAGE;
-	public static String ECLIPSE_CONSOLE_CANNOT_FIND_BUNDLE_ERROR;
-	public static String ECLIPSE_CONSOLE_NO_CONSTRAINTS;
-	public static String ECLIPSE_CONSOLE_DIRECT_CONSTRAINTS;
-	public static String ECLIPSE_CONSOLE_LEAF_CONSTRAINTS;
-	public static String ECLIPSE_CONSOLE_BUNDLE_DISABLED_MESSAGE;
-	public static String ECLIPSE_CONSOLE_DISABLED_COUNT_MESSAGE;
-	public static String ECLIPSE_CONSOLE_DISABLED_BUNDLE_HEADER;
-	public static String ECLIPSE_CONSOLE_DISABLED_BUNDLE_REASON1;
-	public static String ECLIPSE_CONSOLE_DISABLED_BUNDLE_REASON2;
-
-	public static String ECLIPSE_STARTUP_ALREADY_RUNNING;
-	public static String ECLIPSE_STARTUP_STARTUP_ERROR;
-	public static String ECLIPSE_STARTUP_SHUTDOWN_ERROR;
-	public static String ECLIPSE_STARTUP_ERROR_CHECK_LOG;
-	public static String ECLIPSE_STARTUP_NOT_RUNNING;
-	public static String ECLIPSE_STARTUP_ERROR_NO_APPLICATION;
-	public static String ECLIPSE_STARTUP_ROOTS_NOT_RESOLVED;
-	public static String ECLIPSE_STARTUP_ALL_NOT_RESOLVED;
-	public static String ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_ACTIVE;
-	public static String ECLIPSE_STARTUP_ERROR_BUNDLE_NOT_RESOLVED;
-	public static String ECLIPSE_STARTUP_BUNDLE_NOT_FOUND;
-	public static String ECLIPSE_STARTUP_INVALID_PORT;
-	public static String ECLIPSE_STARTUP_FAILED_FIND;
-	public static String ECLIPSE_STARTUP_FAILED_UNINSTALL;
-	public static String ECLIPSE_STARTUP_FAILED_INSTALL;
-	public static String ECLIPSE_STARTUP_FAILED_START;
-	public static String ECLIPSE_STARTUP_APP_ERROR;
-	public static String ECLIPSE_STARTUP_FILEMANAGER_OPEN_ERROR;
-	public static String ECLIPSE_STARTUP_PROPS_NOT_SET;
-
-	public static String error_badNL;
-
-	public static String location_cannotLock;
-	public static String location_cannotLockNIO;
-	public static String location_folderReadOnly;
-	public static String location_notSet;
-	public static String location_notFileProtocol;
-	public static String location_noLockFile;
-
-	public static String ECLIPSE_CONVERTER_FILENOTFOUND;
-	public static String ECLIPSE_CONVERTER_ERROR_CREATING_BUNDLE_MANIFEST;
-	public static String ECLIPSE_CONVERTER_PLUGIN_LIBRARY_IGNORED;
-
-	public static String ECLIPSE_CONVERTER_ERROR_PARSING_PLUGIN_MANIFEST;
-	public static String ECLIPSE_CONVERTER_MISSING_ATTRIBUTE;
-	public static String parse_error;
-	public static String parse_errorNameLineColumn;
-
-	public static String ECLIPSE_CONVERTER_NO_SAX_FACTORY;
-	public static String ECLIPSE_CONVERTER_PARSE_UNKNOWNTOP_ELEMENT;
-
-	public static String ECLIPSE_PLUGIN_EXTRACTION_PROBLEM;
-
-	public static final String NEW_LINE = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$
-
-	static {
-		// initialize resource bundles
-		NLS.initializeMessages(BUNDLE_NAME, EclipseAdaptorMsg.class);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/LocationHelper.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/LocationHelper.java
deleted file mode 100644
index 3018e60..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/LocationHelper.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials 
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.internal.adaptor;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-/**
- * @since 3.3
- */
-public class LocationHelper {
-	/**
-	 * Builds a URL with the given specification
-	 * @param spec the URL specification
-	 * @param trailingSlash flag to indicate a trailing slash on the spec
-	 * @return a URL
-	 */
-	public static URL buildURL(String spec, boolean trailingSlash) {
-		if (spec == null)
-			return null;
-		boolean isFile = spec.startsWith("file:"); //$NON-NLS-1$
-		try {
-			if (isFile)
-				return adjustTrailingSlash(new File(spec.substring(5)).toURL(), trailingSlash);
-			return new URL(spec);
-		} catch (MalformedURLException e) {
-			// if we failed and it is a file spec, there is nothing more we can do
-			// otherwise, try to make the spec into a file URL.
-			if (isFile)
-				return null;
-			try {
-				return adjustTrailingSlash(new File(spec).toURL(), trailingSlash);
-			} catch (MalformedURLException e1) {
-				return null;
-			}
-		}
-	}
-
-	private static URL adjustTrailingSlash(URL url, boolean trailingSlash) throws MalformedURLException {
-		String file = url.getFile();
-		if (trailingSlash == (file.endsWith("/"))) //$NON-NLS-1$
-			return url;
-		file = trailingSlash ? file + "/" : file.substring(0, file.length() - 1); //$NON-NLS-1$
-		return new URL(url.getProtocol(), url.getHost(), file);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker.java
deleted file mode 100644
index 0031f5e..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.IOException;
-
-/**
- * Internal class.
- */
-public interface Locker {
-	public boolean lock() throws IOException;
-
-	public boolean isLocked() throws IOException;
-
-	public void release();
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaIo.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaIo.java
deleted file mode 100644
index a0e1669..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaIo.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this 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.internal.adaptor;
-
-import java.io.*;
-
-/**
- * Internal class.
- */
-public class Locker_JavaIo implements Locker {
-	private File lockFile;
-	private RandomAccessFile lockRAF;
-
-	public Locker_JavaIo(File lockFile) {
-		this.lockFile = lockFile;
-	}
-
-	public synchronized boolean lock() throws IOException {
-		//if the lock file already exists, try to delete,
-		//assume failure means another eclipse has it open
-		if (lockFile.exists())
-			lockFile.delete();
-		if (lockFile.exists())
-			return false;
-
-		//open the lock file so other instances can't co-exist
-		lockRAF = new RandomAccessFile(lockFile, "rw"); //$NON-NLS-1$
-		try {
-			lockRAF.writeByte(0);
-		} catch (IOException e) {
-			lockRAF.close();
-			lockRAF = null;
-			throw e;
-		}
-
-		return true;
-	}
-
-	public synchronized void release() {
-		try {
-			if (lockRAF != null) {
-				lockRAF.close();
-				lockRAF = null;
-			}
-		} catch (IOException e) {
-			//don't complain, we're making a best effort to clean up
-		}
-		if (lockFile != null)
-			lockFile.delete();
-	}
-
-	public synchronized boolean isLocked() throws IOException {
-		if (lockRAF != null)
-			return true;
-		try {
-			return !lock();
-		} finally {
-			release();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaNio.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaNio.java
deleted file mode 100644
index 3009b12..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaNio.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *     Danail Nachev (Prosyst) - bug 185654
- *     Andrei Loskutov - bug 44735
- *******************************************************************************/
-package org.eclipse.core.runtime.internal.adaptor;
-
-import java.io.*;
-import java.nio.channels.FileLock;
-import java.nio.channels.OverlappingFileLockException;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * Internal class.
- */
-public class Locker_JavaNio implements Locker {
-	private final File lockFile;
-	private FileLock fileLock;
-	private RandomAccessFile raFile;
-
-	public Locker_JavaNio(File lockFile) {
-		this.lockFile = lockFile;
-	}
-
-	public synchronized boolean lock() throws IOException {
-		raFile = new RandomAccessFile(lockFile, "rw"); //$NON-NLS-1$
-		try {
-			/*
-			 * fix for bug http://bugs.sun.com/view_bug.do?bug_id=6628575 and
-			 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=44735#c17
-			 */
-			fileLock = raFile.getChannel().tryLock(0, 1, false);
-		} catch (IOException ioe) {
-			// print exception if debugging
-			if (BasicLocation.DEBUG)
-				System.out.println(NLS.bind(EclipseAdaptorMsg.location_cannotLock, lockFile));
-			// produce a more specific message for clients
-			String specificMessage = NLS.bind(EclipseAdaptorMsg.location_cannotLockNIO, new Object[] {lockFile, ioe.getMessage(), "\"-D" + BasicLocation.PROP_OSGI_LOCKING + "=none\""}); //$NON-NLS-1$ //$NON-NLS-2$
-			throw new IOException(specificMessage);
-		} catch (OverlappingFileLockException e) {
-			// handle it as null result
-			fileLock = null;
-		} finally {
-			if (fileLock != null)
-				return true;
-			raFile.close();
-			raFile = null;
-		}
-		return false;
-	}
-
-	public synchronized void release() {
-		if (fileLock != null) {
-			try {
-				fileLock.release();
-			} catch (IOException e) {
-				//don't complain, we're making a best effort to clean up
-			}
-			fileLock = null;
-		}
-		if (raFile != null) {
-			try {
-				raFile.close();
-			} catch (IOException e) {
-				//don't complain, we're making a best effort to clean up
-			}
-			raFile = null;
-		}
-	}
-
-	public synchronized boolean isLocked() throws IOException {
-		if (fileLock != null)
-			return true;
-		try {
-			RandomAccessFile temp = new RandomAccessFile(lockFile, "rw"); //$NON-NLS-1$
-			FileLock tempLock = null;
-			try {
-				/*
-				 * fix for bug http://bugs.sun.com/view_bug.do?bug_id=6628575 and
-				 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=44735#c17
-				 */
-				try {
-					tempLock = temp.getChannel().tryLock(0, 1, false);
-				} catch (IOException ioe) {
-					if (BasicLocation.DEBUG)
-						System.out.println(NLS.bind(EclipseAdaptorMsg.location_cannotLock, lockFile));
-					// produce a more specific message for clients
-					String specificMessage = NLS.bind(EclipseAdaptorMsg.location_cannotLockNIO, new Object[] {lockFile, ioe.getMessage(), "\"-D" + BasicLocation.PROP_OSGI_LOCKING + "=none\""}); //$NON-NLS-1$ //$NON-NLS-2$
-					throw new IOException(specificMessage);
-				}
-				if (tempLock != null) {
-					tempLock.release(); // allow IOException to propagate because that would mean it is still locked
-					return false;
-				}
-				return true;
-			} catch (OverlappingFileLockException e) {
-				return true;
-			} finally {
-				temp.close();
-			}
-		} catch (FileNotFoundException e) {
-			return false;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/Debug.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/Debug.java
deleted file mode 100644
index 237d374..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/Debug.java
+++ /dev/null
@@ -1,358 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.debug;
-
-import java.io.PrintStream;
-import java.lang.reflect.*;
-
-/**
- * This class has debug constants which can be used by the Framework implementation 
- * and Adaptor implementations
- * @since 3.1
- */
-public class Debug {
-	/**
-	 * DEBUG flag.  If set to false then the debug statements will be optimized out during compilation.
-	 */
-	public static final boolean DEBUG = true;
-
-	/**
-	 * Indicates if tracing is enabled
-	 */
-	public static boolean DEBUG_ENABLED = false;
-
-	/**
-	 * General debug flag.
-	 */
-	public static boolean DEBUG_GENERAL = false; // "debug"
-	/**
-	 * Bundle time debug flag.
-	 */
-	public static boolean DEBUG_BUNDLE_TIME = false; //"debug.bundleTime"
-	/**
-	 * Loader debug flag.
-	 */
-	public static boolean DEBUG_LOADER = false; // "debug.loader"
-	/**
-	 * Events debug flag.
-	 */
-	public static boolean DEBUG_EVENTS = false; // "debug.events"
-	/**
-	 * Services debug flag.
-	 */
-	public static boolean DEBUG_SERVICES = false; // "debug.services"
-	/**
-	 * Packages debug flag.
-	 */
-	// TODO remove this or use it somewhere
-	public static boolean DEBUG_PACKAGES = false; // "debug.packages"
-	/**
-	 * Manifest debug flag.
-	 */
-	public static boolean DEBUG_MANIFEST = false; // "debug.manifest"
-	/**
-	 * Filter debug flag.
-	 */
-	public static boolean DEBUG_FILTER = false; // "debug.filter"
-	/**
-	 * Security debug flag.
-	 */
-	public static boolean DEBUG_SECURITY = false; // "debug.security"
-	/**
-	 * Start level debug flag.
-	 */
-	public static boolean DEBUG_STARTLEVEL = false; // "debug.startlevel"
-	/**
-	 * PackageAdmin debug flag.
-	 */
-	public static boolean DEBUG_PACKAGEADMIN = false; // "debug.packageadmin"
-	/**
-	 * PackageAdmin timing debug flag.
-	 */
-	// TODO remove this or use it somewhere
-	public static boolean DEBUG_PACKAGEADMIN_TIMING = false; //"debug.packageadmin/timing"
-	/**
-	 * Message debug flag.
-	 */
-	public static boolean DEBUG_MESSAGE_BUNDLES = false; //"/debug/messageBundles"
-	/**
-	 * Monitor activation debug flag.
-	 */
-	public static boolean MONITOR_ACTIVATION = false; // "monitor/bundles"
-
-	/**
-	 * Base debug option key (org.eclispe.osgi).
-	 */
-	public static final String ECLIPSE_OSGI = "org.eclipse.osgi"; //$NON-NLS-1$
-	/**
-	 * General Debug option key.
-	 */
-	public static final String OPTION_DEBUG_GENERAL = ECLIPSE_OSGI + "/debug"; //$NON-NLS-1$
-	/**
-	 * Bundle time Debug option key.
-	 */
-	// TODO remove this or use it somewhere
-	public static final String OPTION_DEBUG_BUNDLE_TIME = ECLIPSE_OSGI + "/debug/bundleTime"; //$NON-NLS-1$
-	/**
-	 * Loader Debug option key.
-	 */
-	public static final String OPTION_DEBUG_LOADER = ECLIPSE_OSGI + "/debug/loader"; //$NON-NLS-1$
-	/**
-	 * Events Debug option key.
-	 */
-	public static final String OPTION_DEBUG_EVENTS = ECLIPSE_OSGI + "/debug/events"; //$NON-NLS-1$
-	/**
-	 * Services Debug option key.
-	 */
-	public static final String OPTION_DEBUG_SERVICES = ECLIPSE_OSGI + "/debug/services"; //$NON-NLS-1$
-	/**
-	 * Packages Debug option key.
-	 */
-	public static final String OPTION_DEBUG_PACKAGES = ECLIPSE_OSGI + "/debug/packages"; //$NON-NLS-1$
-	/**
-	 * Manifest Debug option key.
-	 */
-	public static final String OPTION_DEBUG_MANIFEST = ECLIPSE_OSGI + "/debug/manifest"; //$NON-NLS-1$
-	/**
-	 * Filter Debug option key.
-	 */
-	public static final String OPTION_DEBUG_FILTER = ECLIPSE_OSGI + "/debug/filter"; //$NON-NLS-1$
-	/**
-	 * Security Debug option key.
-	 */
-	public static final String OPTION_DEBUG_SECURITY = ECLIPSE_OSGI + "/debug/security"; //$NON-NLS-1$
-	/**
-	 * Start level Debug option key.
-	 */
-	public static final String OPTION_DEBUG_STARTLEVEL = ECLIPSE_OSGI + "/debug/startlevel"; //$NON-NLS-1$
-	/**
-	 * PackageAdmin Debug option key.
-	 */
-	public static final String OPTION_DEBUG_PACKAGEADMIN = ECLIPSE_OSGI + "/debug/packageadmin"; //$NON-NLS-1$
-	/**
-	 * PackageAdmin timing Debug option key.
-	 */
-	public static final String OPTION_DEBUG_PACKAGEADMIN_TIMING = ECLIPSE_OSGI + "/debug/packageadmin/timing"; //$NON-NLS-1$
-	/**
-	 * Monitor activation Debug option key.
-	 */
-	public static final String OPTION_MONITOR_ACTIVATION = ECLIPSE_OSGI + "/monitor/activation"; //$NON-NLS-1$
-	/**
-	 * Message bundles Debug option key.
-	 */
-	public static final String OPTION_DEBUG_MESSAGE_BUNDLES = ECLIPSE_OSGI + "/debug/messageBundles"; //$NON-NLS-1$
-
-	static {
-		FrameworkDebugOptions dbgOptions = FrameworkDebugOptions.getDefault();
-		if (dbgOptions != null) {
-			DEBUG_ENABLED = dbgOptions.isDebugEnabled();
-			DEBUG_GENERAL = dbgOptions.getBooleanOption(OPTION_DEBUG_GENERAL, false);
-			DEBUG_BUNDLE_TIME = dbgOptions.getBooleanOption(OPTION_DEBUG_BUNDLE_TIME, false) || dbgOptions.getBooleanOption("org.eclipse.core.runtime/timing/startup", false); //$NON-NLS-1$
-			DEBUG_LOADER = dbgOptions.getBooleanOption(OPTION_DEBUG_LOADER, false);
-			DEBUG_EVENTS = dbgOptions.getBooleanOption(OPTION_DEBUG_EVENTS, false);
-			DEBUG_SERVICES = dbgOptions.getBooleanOption(OPTION_DEBUG_SERVICES, false);
-			DEBUG_PACKAGES = dbgOptions.getBooleanOption(OPTION_DEBUG_PACKAGES, false);
-			DEBUG_MANIFEST = dbgOptions.getBooleanOption(OPTION_DEBUG_MANIFEST, false);
-			DEBUG_FILTER = dbgOptions.getBooleanOption(OPTION_DEBUG_FILTER, false);
-			DEBUG_SECURITY = dbgOptions.getBooleanOption(OPTION_DEBUG_SECURITY, false);
-			DEBUG_STARTLEVEL = dbgOptions.getBooleanOption(OPTION_DEBUG_STARTLEVEL, false);
-			DEBUG_PACKAGEADMIN = dbgOptions.getBooleanOption(OPTION_DEBUG_PACKAGEADMIN, false);
-			DEBUG_PACKAGEADMIN_TIMING = dbgOptions.getBooleanOption(OPTION_DEBUG_PACKAGEADMIN_TIMING, false) || dbgOptions.getBooleanOption("org.eclipse.core.runtime/debug", false); //$NON-NLS-1$
-			DEBUG_MESSAGE_BUNDLES = dbgOptions.getBooleanOption(OPTION_DEBUG_MESSAGE_BUNDLES, false);
-			MONITOR_ACTIVATION = dbgOptions.getBooleanOption(OPTION_MONITOR_ACTIVATION, false);
-		}
-	}
-
-	/**
-	 * The PrintStream to print debug messages to.
-	 */
-	public static PrintStream out = System.out;
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(boolean x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(char x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(int x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(long x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(float x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(double x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(char x[]) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(String x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void print(Object x) {
-		out.print(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(boolean x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(char x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(int x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(long x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(float x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(double x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(char x[]) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(String x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints x to the PrintStream
-	 * @param x
-	 */
-	public static void println(Object x) {
-		out.println(x);
-	}
-
-	/**
-	 * Prints t to the PrintStream
-	 * @param t
-	 */
-	public static void printStackTrace(Throwable t) {
-		if (t == null)
-			return;
-		t.printStackTrace(out);
-
-		Method[] methods = t.getClass().getMethods();
-
-		int size = methods.length;
-		Class throwable = Throwable.class;
-
-		for (int i = 0; i < size; i++) {
-			Method method = methods[i];
-
-			if (Modifier.isPublic(method.getModifiers()) && method.getName().startsWith("get") && throwable.isAssignableFrom(method.getReturnType()) && (method.getParameterTypes().length == 0)) { //$NON-NLS-1$
-				try {
-					Throwable nested = (Throwable) method.invoke(t, null);
-
-					if ((nested != null) && (nested != t)) {
-						out.println("Nested Exception:"); //$NON-NLS-1$
-						printStackTrace(nested);
-					}
-				} catch (IllegalAccessException e) {
-					// nothing
-				} catch (InvocationTargetException e) {
-					// nothing
-				}
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/EclipseDebugTrace.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/EclipseDebugTrace.java
deleted file mode 100644
index b1f89c9..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/EclipseDebugTrace.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.debug;
-
-import java.io.*;
-import java.security.AccessController;
-import java.text.MessageFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.service.debug.DebugTrace;
-
-/**
- * The DebugTrace implementation for Eclipse.
- */
-class EclipseDebugTrace implements DebugTrace {
-
-	/** The system property used to specify size a trace file can grow before it is rotated */
-	private static final String PROP_TRACE_SIZE_MAX = "eclipse.trace.size.max"; //$NON-NLS-1$
-	/** The system property used to specify the maximum number of backup trace files to use */
-	private static final String PROP_TRACE_FILE_MAX = "eclipse.trace.backup.max"; //$NON-NLS-1$
-	/** The trace message for a thread stack dump */
-	private final static String MESSAGE_THREAD_DUMP = "Thread Stack dump: "; //$NON-NLS-1$
-	/** The trace message for a method completing with a return value */
-	private final static String MESSAGE_EXIT_METHOD_WITH_RESULTS = "Exiting method {0}with result: "; //$NON-NLS-1$
-	/** The trace message for a method completing with no return value */
-	private final static String MESSAGE_EXIT_METHOD_NO_RESULTS = "Exiting method {0}with a void return"; //$NON-NLS-1$
-	/** The trace message for a method starting with a set of arguments */
-	private final static String MESSAGE_ENTER_METHOD_WITH_PARAMS = "Entering method {0}with parameters: ("; //$NON-NLS-1$
-	/** The trace message for a method starting with no arguments */
-	private final static String MESSAGE_ENTER_METHOD_NO_PARAMS = "Entering method {0}with no parameters"; //$NON-NLS-1$
-	/** The version attribute written in the header of a new session */
-	private final static String TRACE_FILE_VERSION_COMMENT = "version: "; //$NON-NLS-1$
-	/** The verbose attribute written in the header of a new session */
-	private final static String TRACE_FILE_VERBOSE_COMMENT = "verbose: "; //$NON-NLS-1$
-	/** The version value written in the header of a new session */
-	private final static String TRACE_FILE_VERSION = "1.1"; //$NON-NLS-1$
-	/** The new session identifier to be written whenever a new session starts */
-	private final static String TRACE_NEW_SESSION = "!SESSION "; //$NON-NLS-1$
-	/** The date attribute written to the header of the trace file to show when this file was created */
-	private final static String TRACE_FILE_DATE = "Time of creation: "; //$NON-NLS-1$
-	/** Trace date formatter using the pattern: yyyy-MM-dd HH:mm:ss.SSS  */
-	private final static SimpleDateFormat TRACE_FILE_DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); //$NON-NLS-1$
-	/** The comment character used by the trace file */
-	private final static String TRACE_COMMENT = "#"; //$NON-NLS-1$
-	/** The delimiter used to separate trace elements such as the time stamp, message, etc */
-	private final static String TRACE_ELEMENT_DELIMITER = "|"; //$NON-NLS-1$
-	/** The string written in place of the {@link EclipseDebugTrace#TRACE_TRACE_ELEMENT_DELIMITER} in entries */
-	private final static String TRACE_ELEMENT_DELIMITER_ENCODED = "&#124;"; //$NON-NLS-1$
-	/** OS-specific line separator */
-	private static final String LINE_SEPARATOR;
-	static {
-		String s = System.getProperty("line.separator"); //$NON-NLS-1$
-		LINE_SEPARATOR = s == null ? "\n" : s; //$NON-NLS-1$
-	}
-	/** The value written to the trace file if a null object is being traced */
-	private final static String NULL_VALUE = "<null>"; //$NON-NLS-1$
-	/**  */
-	private final static SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-	/** A lock object used to synchronize access to the trace file */
-	private final static Object writeLock = new Object();
-
-	/******************* Tracing file attributes **************************/
-	/** The default size a trace file can grow before it is rotated */
-	private static final int DEFAULT_TRACE_FILE_SIZE = 1000; // The value is in KB.
-	/** The default number of backup trace files */
-	private static final int DEFAULT_TRACE_FILES = 10;
-	/** The minimum size limit for trace file rotation */
-	private static final int DEFAULT_TRACE_FILE_MIN_SIZE = 10;
-	/** The extension used for log files */
-	private static final String TRACE_FILE_EXTENSION = ".trace"; //$NON-NLS-1$
-	/** The extension markup to use for backup log files*/
-	private static final String BACKUP_MARK = ".bak_"; //$NON-NLS-1$
-	/** The maximum size that a trace file should grow (0 = unlimited) */
-	private int maxTraceFileSize = DEFAULT_TRACE_FILE_SIZE; // The value is in KB.
-	/** The maximum number of trace files that should be saved */
-	private int maxTraceFiles = DEFAULT_TRACE_FILES;
-	/** The index of the currently backed-up trace file */
-	private int backupTraceFileIndex = 0;
-
-	/** An optional argument to specify the name of the class used by clients to trace messages.  If no trace class is specified
-	 * then the class calling this API is assumed to be the class being traced.
-	*/
-	private String traceClass = null;
-	/** The symbolic name of the bundle being traced */
-	private String bundleSymbolicName = null;
-	/** A flag to determine if the message being written is done to a new file (i.e. should the header information be written) */
-	static boolean newSession = true;
-	/** DebugOptions are used to determine if the specified bundle symbolic name + option-path has debugging enabled */
-	private FrameworkDebugOptions debugOptions = null;
-
-	/**
-	 * Construct a new EclipseDebugTrace for the specified bundle symbolic name and write messages to the specified
-	 * trace file.  The DebugOptions object will be used to determine if tracing should occur.  
-	 * 
-	 * @param bundleSymbolicName The symbolic name of the bundle being traced
-	 * @param debugOptions Used to determine if the specified bundle symbolic name + option-path has tracing enabled
-	 */
-	EclipseDebugTrace(final String bundleSymbolicName, final FrameworkDebugOptions debugOptions) {
-
-		this(bundleSymbolicName, debugOptions, null);
-	}
-
-	/**
-	 * Construct a new EclipseDebugTrace for the specified bundle symbolic name and write messages to the specified
-	 * trace file.  
-	 * 
-	 * @param bundleSymbolicName The symbolic name of the bundle being traced
-	 * @param debugOptions Used to determine if the specified bundle symbolic name + option-path has tracing enabled
-	 * @param traceClass The class that the client is using to perform trace API calls
-	 */
-	EclipseDebugTrace(final String bundleSymbolicName, final FrameworkDebugOptions debugOptions, final Class traceClass) {
-
-		this.traceClass = traceClass != null ? traceClass.getName() : null;
-		this.debugOptions = debugOptions;
-		this.bundleSymbolicName = bundleSymbolicName;
-		readLogProperties();
-	}
-
-	/**
-	 * Is debugging enabled for the specified option-path
-	 * 
-	 * @param optionPath The <i>option-path</i>
-	 * @return Returns true if debugging is enabled for the specified option-path on this bundle; Otherwise false.
-	 */
-	private final boolean isDebuggingEnabled(final String optionPath) {
-		if (optionPath == null)
-			return true;
-		boolean debugEnabled = false;
-		if (debugOptions.isDebugEnabled()) {
-			final String option = bundleSymbolicName + optionPath;
-			debugEnabled = debugOptions.getBooleanOption(option, false);
-		}
-		return debugEnabled;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#trace(java.lang.String, java.lang.String)
-	 */
-	public void trace(final String optionPath, final String message) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			final FrameworkDebugTraceEntry record = new FrameworkDebugTraceEntry(bundleSymbolicName, optionPath, message, traceClass);
-			writeRecord(record);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#trace(java.lang.String, java.lang.String, java.lang.Throwable)
-	 */
-	public void trace(final String optionPath, final String message, final Throwable error) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			final FrameworkDebugTraceEntry record = new FrameworkDebugTraceEntry(bundleSymbolicName, optionPath, message, error, traceClass);
-			writeRecord(record);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#traceEntry(java.lang.String)
-	 */
-	public void traceEntry(final String optionPath) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			final FrameworkDebugTraceEntry record = new FrameworkDebugTraceEntry(bundleSymbolicName, optionPath, null, traceClass);
-			setMessage(record, EclipseDebugTrace.MESSAGE_ENTER_METHOD_NO_PARAMS);
-			writeRecord(record);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#traceEntry(java.lang.String, java.lang.Object)
-	 */
-	public void traceEntry(final String optionPath, final Object methodArgument) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			traceEntry(optionPath, new Object[] {methodArgument});
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#traceEntry(java.lang.String, java.lang.Object[])
-	 */
-	public void traceEntry(final String optionPath, final Object[] methodArguments) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			final StringBuffer messageBuffer = new StringBuffer(EclipseDebugTrace.MESSAGE_ENTER_METHOD_WITH_PARAMS);
-			if (methodArguments != null) {
-				int i = 0;
-				while (i < methodArguments.length) {
-					if (methodArguments[i] != null) {
-						messageBuffer.append(methodArguments[i].toString());
-					} else {
-						messageBuffer.append(EclipseDebugTrace.NULL_VALUE);
-					}
-					i++;
-					if (i < methodArguments.length) {
-						messageBuffer.append(" "); //$NON-NLS-1$
-					}
-				}
-				messageBuffer.append(")"); //$NON-NLS-1$
-			}
-			final FrameworkDebugTraceEntry record = new FrameworkDebugTraceEntry(bundleSymbolicName, optionPath, null, traceClass);
-			setMessage(record, messageBuffer.toString());
-			writeRecord(record);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#traceExit(java.lang.String)
-	 */
-	public void traceExit(final String optionPath) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			final FrameworkDebugTraceEntry record = new FrameworkDebugTraceEntry(bundleSymbolicName, optionPath, null, traceClass);
-			setMessage(record, EclipseDebugTrace.MESSAGE_EXIT_METHOD_NO_RESULTS);
-			writeRecord(record);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#traceExit(java.lang.String, java.lang.Object)
-	 */
-	public void traceExit(final String optionPath, final Object result) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			final StringBuffer messageBuffer = new StringBuffer(EclipseDebugTrace.MESSAGE_EXIT_METHOD_WITH_RESULTS);
-			if (result == null) {
-				messageBuffer.append(EclipseDebugTrace.NULL_VALUE);
-			} else {
-				messageBuffer.append(result.toString());
-			}
-			final FrameworkDebugTraceEntry record = new FrameworkDebugTraceEntry(bundleSymbolicName, optionPath, null, traceClass);
-			setMessage(record, messageBuffer.toString());
-			writeRecord(record);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.framework.debug.FrameworkDebugTrace#traceDumpStack(java.lang.String)
-	 */
-	public void traceDumpStack(final String optionPath) {
-
-		if (isDebuggingEnabled(optionPath)) {
-			final StringBuffer messageBuffer = new StringBuffer(EclipseDebugTrace.MESSAGE_THREAD_DUMP);
-			StackTraceElement[] elements = new Exception().getStackTrace();
-			// the first element in this stack trace is going to be this class, so ignore it
-			// the second element in this stack trace is going to either be the caller or the trace class.  Ignore it only if a traceClass is defined
-			// the rest of the elements should be included in the file array
-			int firstIndex = (traceClass == null) ? 1 : 2;
-			int endIndex = elements.length - firstIndex;
-			final StackTraceElement[] newElements = new StackTraceElement[endIndex];
-			int i = 0;
-			while (i < endIndex) {
-				newElements[i] = elements[firstIndex];
-				i++;
-				firstIndex++;
-			}
-			messageBuffer.append(convertStackTraceElementsToString(newElements));
-			final FrameworkDebugTraceEntry record = new FrameworkDebugTraceEntry(bundleSymbolicName, optionPath, messageBuffer.toString(), traceClass);
-			writeRecord(record);
-		}
-	}
-
-	/**
-	 * Set the trace message for the specified record to include class and method information
-	 * if verbose debugging is disabled.
-	 *  
-	 * @param record The {@link FrameworkDebugTraceEntry} containing the information to persist to the trace file.
-	 * @param originalMessage The original tracing message
-	 */
-	private final void setMessage(final FrameworkDebugTraceEntry record, final String originalMessage) {
-
-		String argument = null;
-		if (!debugOptions.isVerbose()) {
-			final StringBuffer classMethodName = new StringBuffer(record.getClassName());
-			classMethodName.append("#"); //$NON-NLS-1$
-			classMethodName.append(record.getMethodName());
-			classMethodName.append(" "); //$NON-NLS-1$
-			argument = classMethodName.toString();
-		} else {
-			argument = ""; //$NON-NLS-1$
-		}
-		String newMessage = MessageFormat.format(originalMessage, new Object[] {argument});
-		record.setMessage(newMessage);
-	}
-
-	/**
-	 * Utility method to convert an array of StackTraceElement objects to form a String representation of a stack dump
-	 * 
-	 * @param elements
-	 *            The array of StackTraceElement objects
-	 * @return A String of the stack dump produced by the list of elements
-	 */
-	private final String convertStackTraceElementsToString(final StackTraceElement[] elements) {
-
-		final StringBuffer buffer = new StringBuffer();
-		if (elements != null) {
-			buffer.append("java.lang.Throwable: "); //$NON-NLS-1$
-			buffer.append(EclipseDebugTrace.LINE_SEPARATOR);
-			int i = 0;
-			while (i < elements.length) {
-				if (elements[i] != null) {
-					buffer.append("\tat "); //$NON-NLS-1$
-					buffer.append(elements[i].toString());
-					buffer.append(EclipseDebugTrace.LINE_SEPARATOR);
-				}
-				i++;
-			}
-		}
-		return buffer.toString();
-	}
-
-	/**
-	 * Write the specified FrameworkTraceEntry to trace file
-	 * 
-	 * @param entry The FrameworkTraceEntry to write to the log file.
-	 */
-	private void writeRecord(final FrameworkDebugTraceEntry entry) {
-
-		if (entry != null) {
-			synchronized (EclipseDebugTrace.writeLock) {
-				final File tracingFile = debugOptions.getFile(); // the tracing file may be null if it has not been set
-				Writer traceWriter = null;
-				try {
-					// check to see if the file should be rotated
-					checkTraceFileSize(tracingFile, entry.getTimestamp());
-					// open the trace file
-					traceWriter = openWriter(tracingFile);
-					if (EclipseDebugTrace.newSession) {
-						writeSession(traceWriter, entry.getTimestamp());
-						EclipseDebugTrace.newSession = false;
-					}
-					writeMessage(traceWriter, entry);
-					// flush the writer
-					traceWriter.flush();
-				} catch (Exception ex) {
-					// any exceptions during tracing should be caught 
-					System.err.println("An exception occurred while writing to the platform trace file: ");//$NON-NLS-1$
-					ex.printStackTrace(System.err);
-				} finally {
-					// close the trace writer
-					if (tracingFile != null) {
-						closeWriter(traceWriter);
-					}
-				}
-			}
-		}
-	}
-
-	/**
-	 * Reads the PROP_TRACE_SIZE_MAX and PROP_TRACE_FILE_MAX properties.
-	 */
-	private void readLogProperties() {
-
-		String newMaxTraceFileSize = secureAction.getProperty(PROP_TRACE_SIZE_MAX);
-		if (newMaxTraceFileSize != null) {
-			maxTraceFileSize = Integer.parseInt(newMaxTraceFileSize);
-			if (maxTraceFileSize != 0 && maxTraceFileSize < DEFAULT_TRACE_FILE_MIN_SIZE) {
-				// If the value is '0', then it means no size limitation.
-				// Also, make sure no inappropriate(too small) assigned value.
-				maxTraceFileSize = DEFAULT_TRACE_FILE_MIN_SIZE;
-			}
-		}
-
-		String newMaxLogFiles = secureAction.getProperty(PROP_TRACE_FILE_MAX);
-		if (newMaxLogFiles != null) {
-			maxTraceFiles = Integer.parseInt(newMaxLogFiles);
-			if (maxTraceFiles < 1) {
-				// Make sure no invalid assigned value. (at least >= 1)
-				maxTraceFiles = DEFAULT_TRACE_FILES;
-			}
-		}
-	}
-
-	/**
-	 * Checks the trace file size.  If the file size reaches the limit then the trace file is rotated. 
-	 * 
-	 * @param traceFile The tracing file
-	 * @param timestamp the timestamp for the session; this is the same timestamp as the first entry
-	 * @return false if an error occurred trying to rotate the trace file
-	 */
-	private boolean checkTraceFileSize(final File traceFile, long timestamp) {
-
-		// 0 file size means there is no size limit
-		boolean isBackupOK = true;
-		if (maxTraceFileSize > 0) {
-			if ((traceFile != null) && traceFile.exists()) {
-				if ((traceFile.length() >> 10) > maxTraceFileSize) { // Use KB as file size unit.
-					final String traceFileName = traceFile.getAbsolutePath();
-
-					// Delete old backup file that will be replaced.
-					String backupFilename = ""; //$NON-NLS-1$
-					if (traceFileName.toLowerCase().endsWith(TRACE_FILE_EXTENSION)) {
-						backupFilename = traceFileName.substring(0, traceFileName.length() - TRACE_FILE_EXTENSION.length()) + BACKUP_MARK + backupTraceFileIndex + TRACE_FILE_EXTENSION;
-					} else {
-						backupFilename = traceFileName + BACKUP_MARK + backupTraceFileIndex;
-					}
-					final File backupFile = new File(backupFilename);
-					if (backupFile.exists()) {
-						if (!backupFile.delete()) {
-							System.err.println("Error when trying to delete old trace file: " + backupFile.getName());//$NON-NLS-1$ 
-							if (backupFile.renameTo(new File(backupFile.getAbsolutePath() + System.currentTimeMillis()))) {
-								System.err.println("So we rename it to filename: " + backupFile.getName()); //$NON-NLS-1$
-							} else {
-								System.err.println("And we also cannot rename it!"); //$NON-NLS-1$
-								isBackupOK = false;
-							}
-						}
-					}
-
-					// Rename current log file to backup one.
-					boolean isRenameOK = traceFile.renameTo(backupFile);
-					if (!isRenameOK) {
-						System.err.println("Error when trying to rename trace file to backup one."); //$NON-NLS-1$
-						isBackupOK = false;
-					}
-					/*
-					 * Write a header to new log file stating that this new file is a continuation file. 
-					 * This method should already be called with the file lock set so we should be safe 
-					 * to update it here.
-					*/
-					Writer traceWriter = null;
-					try {
-						traceWriter = openWriter(traceFile);
-						writeComment(traceWriter, "This is a continuation of trace file " + backupFile.getAbsolutePath()); //$NON-NLS-1$
-						writeComment(traceWriter, EclipseDebugTrace.TRACE_FILE_VERSION_COMMENT + EclipseDebugTrace.TRACE_FILE_VERSION);
-						writeComment(traceWriter, EclipseDebugTrace.TRACE_FILE_VERBOSE_COMMENT + debugOptions.isVerbose());
-						writeComment(traceWriter, EclipseDebugTrace.TRACE_FILE_DATE + getFormattedDate(timestamp));
-						traceWriter.flush();
-					} catch (IOException ioEx) {
-						ioEx.printStackTrace();
-					} finally {
-						if (traceFile != null) {
-							closeWriter(traceWriter);
-						}
-					}
-					backupTraceFileIndex = (++backupTraceFileIndex) % maxTraceFiles;
-				}
-			}
-		}
-		return isBackupOK;
-	}
-
-	/**
-	 * Writes a comment to the trace file
-	 *
-	 * @param traceWriter the trace writer
-	 * @param comment the comment to be written to the trace file
-	 * @throws IOException If an error occurs while writing the comment
-	 */
-	private void writeComment(final Writer traceWriter, final String comment) throws IOException {
-
-		StringBuffer commentText = new StringBuffer(EclipseDebugTrace.TRACE_COMMENT);
-		commentText.append(" "); //$NON-NLS-1$
-		commentText.append(comment);
-		commentText.append(EclipseDebugTrace.LINE_SEPARATOR);
-		traceWriter.write(commentText.toString());
-	}
-
-	/**
-	 * Accessor to retrieve the time stamp in a formatted manner.
-	 * 
-	 * @return A formatted time stamp based on the {@link EclipseDebugTrace#TRACE_FILE_DATE_FORMATTER} formatter
-	 */
-	private final String getFormattedDate(long timestamp) {
-
-		return EclipseDebugTrace.TRACE_FILE_DATE_FORMATTER.format(new Date(timestamp));
-	}
-
-	/**
-	 * Accessor to retrieve the text of a {@link Throwable} in a formatted manner so that it can be written to the
-	 * trace file. 
-	 * 
-	 * @param error The {@lnk Throwable} to format
-	 * @return The complete text of a {@link Throwable} as a {@link String} or null if the input error is null.
-	 */
-	private final String getFormattedThrowable(Throwable error) {
-
-		String result = null;
-		if (error != null) {
-			PrintStream throwableStream = null;
-			try {
-				ByteArrayOutputStream throwableByteOutputStream = new ByteArrayOutputStream();
-				throwableStream = new PrintStream(throwableByteOutputStream, false);
-				error.printStackTrace(throwableStream);
-				result = encodeText(throwableByteOutputStream.toString());
-			} finally {
-				if (throwableStream != null) {
-					throwableStream.close();
-				}
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Writes header information to a new trace file
-	 * 
-	 * @param traceWriter the trace writer
-	 * @param timestamp the timestamp for the session; this is the same timestamp as the first entry
-	 * @throws IOException If an error occurs while writing this session information 
-	 */
-	private void writeSession(final Writer traceWriter, long timestamp) throws IOException {
-
-		writeComment(traceWriter, EclipseDebugTrace.TRACE_NEW_SESSION + this.getFormattedDate(timestamp));
-		writeComment(traceWriter, EclipseDebugTrace.TRACE_FILE_VERSION_COMMENT + EclipseDebugTrace.TRACE_FILE_VERSION);
-		writeComment(traceWriter, EclipseDebugTrace.TRACE_FILE_VERBOSE_COMMENT + debugOptions.isVerbose());
-		writeComment(traceWriter, "The following option strings are specified for this debug session:"); //$NON-NLS-1$ 
-		final String[] allOptions = FrameworkDebugOptions.getDefault().getAllOptions();
-		for (int i = 0; i < allOptions.length; i++) {
-			writeComment(traceWriter, "\t" + allOptions[i]); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Writes the specified trace entry object to the trace file using the 
-	 * {@link EclipseDebugTrace#TRACE_ELEMENT_DELIMITER} as the delimiter between
-	 * each element of the entry.
-	 * 
-	 * @param traceWriter the trace writer
-	 * @param entry The trace entry object to write to the trace file
-	 * @throws IOException If an error occurs while writing this message
-	 */
-	private void writeMessage(final Writer traceWriter, final FrameworkDebugTraceEntry entry) throws IOException {
-
-		final StringBuffer message = new StringBuffer(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-		message.append(" "); //$NON-NLS-1$
-		message.append(encodeText(entry.getThreadName()));
-		message.append(" "); //$NON-NLS-1$
-		message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-		message.append(" "); //$NON-NLS-1$
-		message.append(this.getFormattedDate(entry.getTimestamp()));
-		message.append(" "); //$NON-NLS-1$
-		message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-		message.append(" "); //$NON-NLS-1$
-		if (!debugOptions.isVerbose()) {
-			// format the trace entry for quiet tracing: only the thread name, timestamp, trace message, and exception (if necessary)
-			message.append(encodeText(entry.getMessage()));
-		} else {
-			// format the trace entry for verbose tracing
-			message.append(entry.getBundleSymbolicName());
-			message.append(" "); //$NON-NLS-1$
-			message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-			message.append(" "); //$NON-NLS-1$
-			message.append(encodeText(entry.getOptionPath()));
-			message.append(" "); //$NON-NLS-1$
-			message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-			message.append(" "); //$NON-NLS-1$
-			message.append(entry.getClassName());
-			message.append(" "); //$NON-NLS-1$
-			message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-			message.append(" "); //$NON-NLS-1$
-			message.append(entry.getMethodName());
-			message.append(" "); //$NON-NLS-1$
-			message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-			message.append(" "); //$NON-NLS-1$
-			message.append(entry.getLineNumber());
-			message.append(" "); //$NON-NLS-1$
-			message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-			message.append(" "); //$NON-NLS-1$
-			message.append(encodeText(entry.getMessage()));
-		}
-		if (entry.getThrowable() != null) {
-			message.append(" "); //$NON-NLS-1$
-			message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-			message.append(" "); //$NON-NLS-1$
-			message.append(this.getFormattedThrowable(entry.getThrowable()));
-		}
-		message.append(" "); //$NON-NLS-1$
-		message.append(EclipseDebugTrace.TRACE_ELEMENT_DELIMITER);
-		message.append(EclipseDebugTrace.LINE_SEPARATOR);
-		// write the message
-		if ((traceWriter != null) && (message != null)) {
-			traceWriter.write(message.toString());
-		}
-	}
-
-	/**
-	 * Encodes the specified string to replace any occurrence of the {@link EclipseDebugTrace#TRACE_ELEMENT_DELIMITER}
-	 * string with the {@link EclipseDebugTrace#TRACE_ELEMENT_DELIMITER_ENCODED}
-	 * string.  This can be used to ensure that the delimiter character does not break parsing when
-	 * the entry text contains the delimiter character. 
-	 * 
-	 * @param inputString The original string to be written to the trace file. 
-	 * @return The original input string with all occurrences of
-	 * {@link EclipseDebugTrace#TRACE_ELEMENT_DELIMITER} replaced with 
-	 * {@link EclipseDebugTrace#TRACE_ELEMENT_DELIMITER_ENCODED}. A <code>null</code> value will be
-	 * returned if the input string is <code>null</code>.
-	 */
-	private static String encodeText(final String inputString) {
-		if (inputString == null || inputString.indexOf(TRACE_ELEMENT_DELIMITER) < 0)
-			return inputString;
-		final StringBuffer tempBuffer = new StringBuffer(inputString);
-		int currentIndex = tempBuffer.indexOf(TRACE_ELEMENT_DELIMITER);
-		while (currentIndex >= 0) {
-			tempBuffer.replace(currentIndex, currentIndex + TRACE_ELEMENT_DELIMITER.length(), TRACE_ELEMENT_DELIMITER_ENCODED);
-			currentIndex = tempBuffer.indexOf(TRACE_ELEMENT_DELIMITER);
-		}
-		return tempBuffer.toString();
-	}
-
-	/**
-	 * Returns a Writer for the given OutputStream
-	 * @param output an OutputStream to use for the Writer
-	 * @return A Writer for the given OutputStream
-	 */
-	private Writer logForStream(OutputStream output) {
-
-		try {
-			return new BufferedWriter(new OutputStreamWriter(output, "UTF-8")); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			return new BufferedWriter(new OutputStreamWriter(output));
-		}
-	}
-
-	/**
-	 * Creates the trace writer.
-	 * If the tracing file is null then the writer will use System.out to print any messages.
-	 * 
-	 * @param traceFile The tracing file
-	 * @return Returns a new Writer object  
-	 */
-	private Writer openWriter(final File traceFile) {
-
-		Writer traceWriter = null;
-		if (traceFile != null) {
-			try {
-				traceWriter = logForStream(secureAction.getFileOutputStream(traceFile, true));
-			} catch (IOException ioEx) {
-				traceWriter = logForStream(System.out);
-			}
-		} else {
-			traceWriter = logForStream(System.out);
-		}
-		return traceWriter;
-	}
-
-	/**
-	 * Close the trace writer
-	 * 
-	 * @param traceWriter The trace writer
-	 */
-	private void closeWriter(Writer traceWriter) {
-
-		if (traceWriter != null) {
-			try {
-				traceWriter.close();
-			} catch (IOException ioEx) {
-				// we cannot log here; just print the stacktrace.
-				ioEx.printStackTrace();
-			}
-			traceWriter = null;
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugOptions.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugOptions.java
deleted file mode 100644
index 445ad49..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugOptions.java
+++ /dev/null
@@ -1,507 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.debug;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import java.util.Map.Entry;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.service.debug.*;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-import org.osgi.util.tracker.ServiceTrackerCustomizer;
-
-/**
- * The DebugOptions implementation class that allows accessing the list of debug options specified
- * for the application as well as creating {@link DebugTrace} objects for the purpose of having
- * dynamic enablement of debug tracing.
- * 
- * @since 3.1
- */
-public class FrameworkDebugOptions implements DebugOptions, ServiceTrackerCustomizer {
-
-	private static final String OSGI_DEBUG = "osgi.debug"; //$NON-NLS-1$
-	private static final String OSGI_DEBUG_VERBOSE = "osgi.debug.verbose"; //$NON-NLS-1$
-	public static final String PROP_TRACEFILE = "osgi.tracefile"; //$NON-NLS-1$
-	/** monitor used to lock the options maps */
-	private final Object lock = new Object();
-	/** A current map of all the options with values set */
-	private Properties options = null;
-	/** A map of all the disabled options with values set at the time debug was disabled */
-	private Properties disabledOptions = null;
-	/** The singleton object of this class */
-	private static FrameworkDebugOptions singleton = null;
-	/** The default name of the .options file if loading when the -debug command-line argument is used */
-	private static final String OPTIONS = ".options"; //$NON-NLS-1$
-	/** A cache of all of the bundles <code>DebugTrace</code> in the format <key,value> --> <bundle name, DebugTrace> */
-	protected final static Map debugTraceCache = new HashMap();
-	/** The File object to store messages.  This value may be null. */
-	protected File outFile = null;
-	/** Is verbose debugging enabled?  Changing this value causes a new tracing session to start. */
-	protected boolean verboseDebug = true;
-	private volatile BundleContext context;
-	private volatile ServiceTracker listenerTracker;
-
-	/**
-	 * Internal constructor to create a <code>FrameworkDebugOptions</code> singleton object. 
-	 */
-	private FrameworkDebugOptions() {
-		// check if verbose debugging was set during initialization.  This needs to be set even if debugging is disabled
-		this.verboseDebug = Boolean.valueOf(FrameworkProperties.getProperty(OSGI_DEBUG_VERBOSE, Boolean.TRUE.toString())).booleanValue();
-		// if no debug option was specified, don't even bother to try.
-		// Must ensure that the options slot is null as this is the signal to the
-		// platform that debugging is not enabled.
-		String debugOptionsFilename = FrameworkProperties.getProperty(OSGI_DEBUG);
-		if (debugOptionsFilename == null)
-			return;
-		options = new Properties();
-		URL optionsFile;
-		if (debugOptionsFilename.length() == 0) {
-			// default options location is user.dir (install location may be r/o so
-			// is not a good candidate for a trace options that need to be updatable by
-			// by the user)
-			String userDir = FrameworkProperties.getProperty("user.dir").replace(File.separatorChar, '/'); //$NON-NLS-1$
-			if (!userDir.endsWith("/")) //$NON-NLS-1$
-				userDir += "/"; //$NON-NLS-1$
-			debugOptionsFilename = new File(userDir, OPTIONS).toString();
-		}
-		optionsFile = buildURL(debugOptionsFilename, false);
-		if (optionsFile == null) {
-			System.out.println("Unable to construct URL for options file: " + debugOptionsFilename); //$NON-NLS-1$
-			return;
-		}
-		System.out.print("Debug options:\n    " + optionsFile.toExternalForm()); //$NON-NLS-1$
-		try {
-			InputStream input = optionsFile.openStream();
-			try {
-				options.load(input);
-				System.out.println(" loaded"); //$NON-NLS-1$
-			} finally {
-				input.close();
-			}
-		} catch (FileNotFoundException e) {
-			System.out.println(" not found"); //$NON-NLS-1$
-		} catch (IOException e) {
-			System.out.println(" did not parse"); //$NON-NLS-1$
-			e.printStackTrace(System.out);
-		}
-		// trim off all the blanks since properties files don't do that.
-		for (Iterator i = options.keySet().iterator(); i.hasNext();) {
-			Object key = i.next();
-			options.put(key, ((String) options.get(key)).trim());
-		}
-	}
-
-	public void start(BundleContext bc) {
-		this.context = bc;
-		listenerTracker = new ServiceTracker(bc, DebugOptionsListener.class.getName(), this);
-		listenerTracker.open();
-	}
-
-	public void stop(BundleContext bc) {
-		listenerTracker.close();
-		listenerTracker = null;
-		this.context = null;
-	}
-
-	/**
-	 * Returns the singleton instance of <code>FrameworkDebugOptions</code>.
-	 * @return the instance of <code>FrameworkDebugOptions</code>
-	 */
-	public static FrameworkDebugOptions getDefault() {
-
-		if (FrameworkDebugOptions.singleton == null) {
-			FrameworkDebugOptions.singleton = new FrameworkDebugOptions();
-		}
-		return FrameworkDebugOptions.singleton;
-	}
-
-	private static URL buildURL(String spec, boolean trailingSlash) {
-		if (spec == null)
-			return null;
-		boolean isFile = spec.startsWith("file:"); //$NON-NLS-1$
-		try {
-			if (isFile)
-				return adjustTrailingSlash(new File(spec.substring(5)).toURL(), trailingSlash);
-			return new URL(spec);
-		} catch (MalformedURLException e) {
-			// if we failed and it is a file spec, there is nothing more we can do
-			// otherwise, try to make the spec into a file URL.
-			if (isFile)
-				return null;
-			try {
-				return adjustTrailingSlash(new File(spec).toURL(), trailingSlash);
-			} catch (MalformedURLException e1) {
-				return null;
-			}
-		}
-	}
-
-	private static URL adjustTrailingSlash(URL url, boolean trailingSlash) throws MalformedURLException {
-		String file = url.getFile();
-		if (trailingSlash == (file.endsWith("/"))) //$NON-NLS-1$
-			return url;
-		file = trailingSlash ? file + "/" : file.substring(0, file.length() - 1); //$NON-NLS-1$
-		return new URL(url.getProtocol(), url.getHost(), file);
-	}
-
-	/**
-	 * @see DebugOptions#getBooleanOption(String, boolean)
-	 */
-	public boolean getBooleanOption(String option, boolean defaultValue) {
-		String optionValue = getOption(option);
-		return optionValue != null ? optionValue.equalsIgnoreCase("true") : defaultValue; //$NON-NLS-1$
-	}
-
-	/**
-	 * @see DebugOptions#getOption(String)
-	 */
-	public String getOption(String option) {
-		return getOption(option, null);
-	}
-
-	/**
-	 * @see DebugOptions#getOption(String, String)
-	 */
-	public String getOption(String option, String defaultValue) {
-		synchronized (lock) {
-			if (options != null) {
-				return options.getProperty(option, defaultValue);
-			}
-		}
-		return defaultValue;
-	}
-
-	/**
-	 * @see DebugOptions#getIntegerOption(String, int)
-	 */
-	public int getIntegerOption(String option, int defaultValue) {
-		String value = getOption(option);
-		try {
-			return value == null ? defaultValue : Integer.parseInt(value);
-		} catch (NumberFormatException e) {
-			return defaultValue;
-		}
-	}
-
-	public Map getOptions() {
-		Properties snapShot = new Properties();
-		synchronized (lock) {
-			if (options != null)
-				snapShot.putAll(options);
-			else if (disabledOptions != null)
-				snapShot.putAll(disabledOptions);
-		}
-		return snapShot;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#getAllOptions()
-	 */
-	String[] getAllOptions() {
-
-		String[] optionsArray = null;
-		synchronized (lock) {
-			if (options != null) {
-				optionsArray = new String[options.size()];
-				final Iterator entrySetIterator = options.entrySet().iterator();
-				int i = 0;
-				while (entrySetIterator.hasNext()) {
-					Map.Entry entry = (Map.Entry) entrySetIterator.next();
-					optionsArray[i] = ((String) entry.getKey()) + "=" + ((String) entry.getValue()); //$NON-NLS-1$
-					i++;
-				}
-			}
-		}
-		if (optionsArray == null) {
-			optionsArray = new String[1]; // TODO this is strange; null is the only element so we can print null in writeSession
-		}
-		return optionsArray;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#removeOption(java.lang.String)
-	 */
-	public void removeOption(String option) {
-		if (option == null)
-			return;
-		String fireChangedEvent = null;
-		synchronized (lock) {
-			if (options != null && options.remove(option) != null) {
-				fireChangedEvent = getSymbolicName(option);
-			}
-		}
-		// Send the options change event outside the sync block
-		if (fireChangedEvent != null) {
-			optionsChanged(fireChangedEvent);
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#setOption(java.lang.String, java.lang.String)
-	 */
-	public void setOption(String option, String value) {
-
-		if (option == null || value == null) {
-			throw new IllegalArgumentException("The option and value must not be null."); //$NON-NLS-1$
-		}
-		String fireChangedEvent = null;
-		value = value != null ? value.trim() : null;
-		synchronized (lock) {
-			if (options != null) {
-				// get the current value
-				String currentValue = options.getProperty(option);
-
-				if (currentValue != null) {
-					if (!currentValue.equals(value)) {
-						fireChangedEvent = getSymbolicName(option);
-					}
-				} else {
-					if (value != null) {
-						fireChangedEvent = getSymbolicName(option);
-					}
-				}
-				if (fireChangedEvent != null) {
-					options.put(option, value);
-				}
-			}
-		}
-		// Send the options change event outside the sync block
-		if (fireChangedEvent != null) {
-			optionsChanged(fireChangedEvent);
-		}
-	}
-
-	private String getSymbolicName(String option) {
-		int firstSlashIndex = option.indexOf("/"); //$NON-NLS-1$
-		if (firstSlashIndex > 0)
-			return option.substring(0, firstSlashIndex);
-		return null;
-	}
-
-	public void setOptions(Map ops) {
-		if (ops == null)
-			throw new IllegalArgumentException("The options must not be null."); //$NON-NLS-1$
-		Properties newOptions = new Properties();
-		for (Iterator entries = ops.entrySet().iterator(); entries.hasNext();) {
-			Entry entry = (Entry) entries.next();
-			if (!(entry.getKey() instanceof String) || !(entry.getValue() instanceof String))
-				throw new IllegalArgumentException("Option keys and values must be of type String: " + entry.getKey() + "=" + entry.getValue()); //$NON-NLS-1$ //$NON-NLS-2$
-			newOptions.put(entry.getKey(), ((String) entry.getValue()).trim());
-		}
-		Set fireChangesTo = null;
-
-		synchronized (lock) {
-			if (options == null) {
-				disabledOptions = newOptions;
-				// no events to fire
-				return;
-			}
-			fireChangesTo = new HashSet();
-			// first check for removals
-			for (Iterator keys = options.keySet().iterator(); keys.hasNext();) {
-				String key = (String) keys.next();
-				if (!newOptions.containsKey(key)) {
-					String symbolicName = getSymbolicName(key);
-					if (symbolicName != null)
-						fireChangesTo.add(symbolicName);
-				}
-			}
-			// now check for changes to existing values
-			for (Iterator newEntries = newOptions.entrySet().iterator(); newEntries.hasNext();) {
-				Entry entry = (Entry) newEntries.next();
-				String existingValue = (String) options.get(entry.getKey());
-				if (!entry.getValue().equals(existingValue)) {
-					String symbolicName = getSymbolicName((String) entry.getKey());
-					if (symbolicName != null)
-						fireChangesTo.add(symbolicName);
-				}
-			}
-			// finally set the actual options
-			options = newOptions;
-		}
-		if (fireChangesTo != null)
-			for (Iterator iChanges = fireChangesTo.iterator(); iChanges.hasNext();)
-				optionsChanged((String) iChanges.next());
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#isDebugEnabled()
-	 */
-	public boolean isDebugEnabled() {
-		synchronized (lock) {
-			return options != null;
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#setDebugEnabled()
-	 */
-	public void setDebugEnabled(boolean enabled) {
-		boolean fireChangedEvent = false;
-		synchronized (lock) {
-			if (enabled) {
-				if (options != null)
-					return;
-				// notify the trace that a new session is started
-				EclipseDebugTrace.newSession = true;
-
-				// enable platform debugging - there is no .options file
-				FrameworkProperties.setProperty(OSGI_DEBUG, ""); //$NON-NLS-1$
-				if (disabledOptions != null) {
-					options = disabledOptions;
-					disabledOptions = null;
-					// fire changed event to indicate some options were re-enabled
-					fireChangedEvent = true;
-				} else {
-					options = new Properties();
-				}
-			} else {
-				if (options == null)
-					return;
-				// disable platform debugging.
-				FrameworkProperties.clearProperty(OSGI_DEBUG);
-				if (options.size() > 0) {
-					// Save the current options off in case debug is re-enabled
-					disabledOptions = options;
-					// fire changed event to indicate some options were disabled
-					fireChangedEvent = true;
-				}
-				options = null;
-			}
-		}
-		if (fireChangedEvent) {
-			// (Bug 300911) need to fire event to listeners that options have been disabled
-			optionsChanged("*"); //$NON-NLS-1$
-		}
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#createTrace(java.lang.String)
-	 */
-	public final DebugTrace newDebugTrace(String bundleSymbolicName) {
-
-		return this.newDebugTrace(bundleSymbolicName, null);
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#createTrace(java.lang.String, java.lang.Class)
-	 */
-	public final DebugTrace newDebugTrace(String bundleSymbolicName, Class traceEntryClass) {
-
-		DebugTrace debugTrace = null;
-		synchronized (FrameworkDebugOptions.debugTraceCache) {
-			debugTrace = (DebugTrace) FrameworkDebugOptions.debugTraceCache.get(bundleSymbolicName);
-			if (debugTrace == null) {
-				debugTrace = new EclipseDebugTrace(bundleSymbolicName, FrameworkDebugOptions.singleton, traceEntryClass);
-				FrameworkDebugOptions.debugTraceCache.put(bundleSymbolicName, debugTrace);
-			}
-		}
-		return debugTrace;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#getFile()
-	 */
-	public final File getFile() {
-
-		return this.outFile;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#setFile(java.io.File)
-	 */
-	public synchronized void setFile(final File traceFile) {
-
-		this.outFile = traceFile;
-		FrameworkProperties.setProperty(PROP_TRACEFILE, this.outFile.getAbsolutePath());
-		// the file changed so start a new session
-		EclipseDebugTrace.newSession = true;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#getVerbose()
-	 */
-	boolean isVerbose() {
-
-		return this.verboseDebug;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.osgi.service.debug.DebugOptions#setVerbose(boolean)
-	 */
-	public synchronized void setVerbose(final boolean verbose) {
-
-		this.verboseDebug = verbose;
-		// the verbose flag changed so start a new session
-		EclipseDebugTrace.newSession = true;
-	}
-
-	/**
-	 * Notifies the trace listener for the specified bundle that its option-path has changed.
-	 * @param bundleSymbolicName The bundle of the owning trace listener to notify.
-	 */
-	private void optionsChanged(String bundleSymbolicName) {
-		// use osgi services to get the listeners
-		BundleContext bc = context;
-		if (bc == null)
-			return;
-		// do not use the service tracker because that is only used to call all listeners initially when they are registered
-		// here we only want the services with the specified name.
-		ServiceReference[] listenerRefs = null;
-		try {
-			listenerRefs = bc.getServiceReferences(DebugOptionsListener.class.getName(), "(" + DebugOptions.LISTENER_SYMBOLICNAME + "=" + bundleSymbolicName + ")"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-		} catch (InvalidSyntaxException e) {
-			// consider logging; should not happen
-		}
-		if (listenerRefs == null)
-			return;
-		for (int i = 0; i < listenerRefs.length; i++) {
-			DebugOptionsListener service = (DebugOptionsListener) bc.getService(listenerRefs[i]);
-			if (service == null)
-				continue;
-			try {
-				service.optionsChanged(this);
-			} catch (Throwable t) {
-				// TODO consider logging
-			} finally {
-				bc.ungetService(listenerRefs[i]);
-			}
-		}
-	}
-
-	public Object addingService(ServiceReference reference) {
-		DebugOptionsListener listener = (DebugOptionsListener) context.getService(reference);
-		listener.optionsChanged(this);
-		return listener;
-	}
-
-	public void modifiedService(ServiceReference reference, Object service) {
-		// nothing
-	}
-
-	public void removedService(ServiceReference reference, Object service) {
-		context.ungetService(reference);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugTraceEntry.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugTraceEntry.java
deleted file mode 100644
index 0fca678..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugTraceEntry.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.debug;
-
-/**
- * A framework trace entry is a bean containing all of the attributes for a single trace message.
- */
-public class FrameworkDebugTraceEntry {
-	/** If a bundles symbolic name is not specified then the default value of /debug can be used */
-	public final static String DEFAULT_OPTION_PATH = "/debug"; //$NON-NLS-1$
-
-	/**
-	 * The name of the thread executing the code
-	 */
-	private final String threadName;
-
-	/**
-	 * The date and time when the trace occurred.
-	 * 
-	 */
-	private final long timestamp;
-
-	/**
-	 * The trace option-path
-	 */
-	private final String optionPath;
-
-	/**
-	 * The symbolic name of the bundle being traced
-	 */
-	private final String bundleSymbolicName;
-
-	/**
-	 * The class being traced
-	 */
-	private final String className;
-
-	/**
-	 * The method being traced
-	 */
-	private final String methodName;
-
-	/**
-	 * The line number
-	 */
-	private final int lineNumber;
-
-	/**
-	 * The trace message
-	 */
-	private String message;
-
-	/**
-	 * The trace exception
-	 */
-	private final Throwable throwable;
-
-	/**
-	 * Construct a new FrameworkTraceRecord object
-	 * 
-	 * @param bundleSymbolicName
-	 *            The symbolic name of the bundle being traced
-	 * @param optionPath
-	 *            The trace optionPath
-	 * @param message
-	 *            The trace message
-	 * @param traceClass
-	 *            The class that calls the trace API
-	 */
-	public FrameworkDebugTraceEntry(final String bundleSymbolicName, final String optionPath, final String message, final String traceClass) {
-		this(bundleSymbolicName, optionPath, message, null, traceClass);
-	}
-
-	/**
-	 * Construct a new FrameworkTraceRecord object
-	 * 
-	 * @param bundleSymbolicName
-	 *            The symbolic name of the bundle being traced
-	 * @param optionPath
-	 *            The trace optionPath
-	 * @param message
-	 *            The trace message
-	 * @param error
-	 *            An exception to be traced
-	 * @param traceClass
-	 *            The class that calls the trace API 
-	 */
-	public FrameworkDebugTraceEntry(String bundleSymbolicName, final String optionPath, final String message, final Throwable error, final String traceClass) {
-		threadName = Thread.currentThread().getName();
-		if (optionPath == null) {
-			this.optionPath = FrameworkDebugTraceEntry.DEFAULT_OPTION_PATH;
-		} else {
-			this.optionPath = optionPath;
-		}
-		timestamp = System.currentTimeMillis();
-		this.bundleSymbolicName = bundleSymbolicName;
-		this.message = message;
-		throwable = error;
-
-		String determineClassName = null;
-		String determineMethodName = null;
-		int determineLineNumber = 0;
-		// dynamically determine the class name, method name, and line number of the method calling the trace framework
-		StackTraceElement[] stackElements = new Exception().getStackTrace();
-		int i = 0;
-		while (i < stackElements.length) {
-			String fullClassName = stackElements[i].getClassName();
-			if (!fullClassName.equals(Thread.class.getName()) && !fullClassName.equals(FrameworkDebugTraceEntry.class.getName()) && !fullClassName.equals(EclipseDebugTrace.class.getName())) {
-				/*
-				 * The first class which is non-JDK or framework related has been hit.
-				 * If a traceClass has been specified then this current stack element
-				 * is likely that class so we should find out who called it.  If a
-				 * trace class has not been specified, or has been specified and this
-				 * stack element is not that class, then we assume this stack element
-				 * is the caller of the trace API. 
-				 */
-				if ((traceClass == null) || !fullClassName.equals(traceClass)) {
-					determineClassName = stackElements[i].getClassName();
-					determineMethodName = stackElements[i].getMethodName();
-					determineLineNumber = stackElements[i].getLineNumber();
-					break; // only break when the right stack element has been found; Otherwise keep trying
-				}
-			}
-			i++;
-		}
-
-		className = determineClassName;
-		methodName = determineMethodName;
-		lineNumber = determineLineNumber;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * 
-	 * @see java.lang.Object#toString()
-	 */
-	public String toString() {
-
-		final StringBuffer buffer = new StringBuffer(threadName);
-		buffer.append(" "); //$NON-NLS-1$
-		buffer.append(timestamp);
-		buffer.append(" "); //$NON-NLS-1$
-		buffer.append(bundleSymbolicName);
-		buffer.append(" "); //$NON-NLS-1$
-		buffer.append(optionPath);
-		buffer.append(" "); //$NON-NLS-1$
-		buffer.append(className);
-		buffer.append(" "); //$NON-NLS-1$
-		buffer.append(methodName);
-		buffer.append(" "); //$NON-NLS-1$
-		buffer.append(lineNumber);
-		if (message != null) {
-			buffer.append(": "); //$NON-NLS-1$
-			buffer.append(message);
-		}
-		if (throwable != null) {
-			buffer.append(throwable);
-		}
-		return buffer.toString();
-	}
-
-	/**
-	 * Accessor to the threads name
-	 * 
-	 * @return the name of the thread
-	 */
-	public final String getThreadName() {
-
-		return threadName;
-	}
-
-	/**
-	 * Accessor to the timestamp for this trace record
-	 * 
-	 * @return the date
-	 */
-	public final long getTimestamp() {
-
-		return timestamp;
-	}
-
-	/**
-	 * Accessor for the symbolic name of the bundle being traced
-	 * 
-	 * @return The symbolic name of the bundle being traced
-	 */
-	public final String getBundleSymbolicName() {
-
-		return bundleSymbolicName;
-	}
-
-	/**
-	 * Accessor for the trace message
-	 * 
-	 * @return the trace message
-	 */
-	public final String getMessage() {
-
-		return message;
-	}
-
-	/**
-	 * Accessor for the trace exception. This may be null if there is no exception.
-	 * 
-	 * @return the trace exception or null if none was defined.
-	 */
-	public final Throwable getThrowable() {
-
-		return throwable;
-	}
-
-	/**
-	 * Accessor for the name of the class being traced.
-	 * 
-	 * @return The name of the class being traced.
-	 */
-	public final String getClassName() {
-
-		return className;
-	}
-
-	/**
-	 * Accessor for the method being traced.
-	 * 
-	 * @return The name of the method being traced.
-	 */
-	public final String getMethodName() {
-
-		return methodName;
-	}
-
-	/**
-	 * Accessor for the option-path being traced. The <i>&lt;option-path&gt;</i> part of the debug option string
-	 * required for the Eclipse debugging framework.
-	 * 
-	 * <pre>
-	 *    Examples:
-	 *       1) If a trace string com.ibm.myplugin.core/debug=true is specified then 'debug' is the option-path value.
-	 *       2) If a trace string com.ibm.myplugin.core/debug/perf=true is specified then 'debug/perf' is the option-path value.
-	 * </pre>
-	 * 
-	 * 
-	 * @return The option-path being traced.
-	 */
-	public final String getOptionPath() {
-
-		return optionPath;
-	}
-
-	/**
-	 * Return the line number in the class/method where the trace originator
-	 * 
-	 * @return The line number from the class and method where the trace request originated
-	 */
-	public final int getLineNumber() {
-
-		return lineNumber;
-	}
-
-	/**
-	 * 
-	 * @param newMessage
-	 */
-	void setMessage(final String newMessage) {
-
-		message = newMessage;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
deleted file mode 100644
index 1c73f44..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
+++ /dev/null
@@ -1,75 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2010 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-
-#External Messages for EN locale
-ECLIPSE_OSGI_NAME=Eclipse OSGi Framework
-ECLIPSE_OSGI_VERSION=3.6.0
-OSGI_VERSION=OSGi Service Platform Release 3
-ECLIPSE_COPYRIGHT=Copyright (c) 2003, 2004 IBM Corporation and others. \nAll rights reserved. This program and the accompanying materials \nare made available under the terms of the Eclipse Public License v1.0 \nwhich accompanies this distribution, and is available at \nhttp://www.eclipse.org/legal/epl-v10.html \nContributors: \n     IBM Corporation - initial API and implementation
-OSGI_SYSTEMBUNDLE_CREATE_EXCEPTION=Exception while creating System Bundle: {0}
-OSGI_SYSTEMBUNDLE_DESCRIPTION_ERROR=Unable to construct System Bundle description.
-OSGI_INTERNAL_ERROR=Internal Error in the OSGi framework. Please report this problem.
-BUNDLE_INSTALL_RECURSION_EXCEPTION=Bundle is already being installed
-BUNDLE_INSTALL_SAME_UNIQUEID=Bundle \"{0}\" version \"{1}\" has already been installed from: {2}
-BUNDLE_UNINSTALLED_EXCEPTION=Bundle \"{0}\" has been uninstalled
-BUNDLE_CONTEXT_INVALID_EXCEPTION=BundleContext is no longer valid
-BUNDLE_STATE_CHANGE_EXCEPTION=State change in progress for bundle \"{0}\" by thread \"{1}\".
-BUNDLE_REFRESH_FAILURE=PackageAdmin.refreshPackages failed to complete
-BUNDLE_ACTIVATOR_EXCEPTION=Exception in {0}.{1}() of bundle {2}.
-BUNDLE_INVALID_ACTIVATOR_EXCEPTION=The activator {0} for bundle {1} is invalid
-BUNDLE_UNRESOLVED_EXCEPTION=The bundle \"{0}\" could not be resolved
-BUNDLE_UNRESOLVED_STATE_CONFLICT=The state indicates the bundle is resolved
-BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION=The bundle \"{0}\" could not be resolved. Reason: {1}
-BUNDLE_SYSTEMBUNDLE_UNINSTALL_EXCEPTION=The System Bundle cannot be uninstalled
-BUNDLE_READ_EXCEPTION=An error occurred trying to read the bundle
-BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION=The Bundle-ClassPath entry \"{0}\" was not found in the bundle: {1}
-BUNDLE_NO_CLASSPATH_MATCH=The Bundle-ClassPath does not have any matching entries
-BUNDLE_NOT_IN_FRAMEWORK=The bundle does not exist in the framework: {0}
-BUNDLE_LOADER_ATTACHMENT_ERROR=Cannot attach fragment bundle \"{0}\" to resolved host \"{1}\".  Try refreshing the host bundle.
-BUNDLE_FRAGMENT_CNFE=A fragment bundle cannot load classes: {0}
-BUNDLE_FRAGMENT_START=A fragment bundle cannot be started: {0}
-BUNDLE_FRAGMENT_STOP=A fragment bundle cannot be stopped: {0}
-BUNDLE_TRANSIENT_START_ERROR=The bundle''s start level is not met.  Cannot transient start the bundle: {0}
-BUNDLE_FRAGMENT_IMPORT_CONFLICT=Fragment bundle \"{0}\" attempted to import additional package \"{1}\".  Try refreshing the host bundle \"{2}\".
-BUNDLE_EXTENSION_PERMISSION=Extension bundles must have AllPermission assigned.
-BUNDLE_CNFE_NOT_RESOLVED=Cannot load \"{0}"\ because the bundle \"{1}\" cannot be resolved.
-MANIFEST_INVALID_SPACE=The manifest line \"{0}\" has an invalid leading space '' '' character.
-MANIFEST_INVALID_LINE_NOCOLON=The manifest line \"{0}\" is invalid; it has no colon '':'' character after the header key.
-MANIFEST_INVALID_HEADER_EXCEPTION=Invalid manifest header {0}: \"{1}\"
-MANIFEST_IOEXCEPTION=An error occurred while reading the manifest file.
-SERVICE_FACTORY_EXCEPTION=Exception in {0}.{1}()
-SERVICE_NOT_INSTANCEOF_CLASS_EXCEPTION=The service object is not an instance of the service class {0}
-SERVICE_FACTORY_NOT_INSTANCEOF_CLASS_EXCEPTION={0}.getService() returned a service object that is not an instance of the service class {1}
-SERVICE_OBJECT_NULL_EXCEPTION={0}.getService() returned a null service object
-SERVICE_ARGUMENT_NULL_EXCEPTION=The service parameter is null
-SERVICE_ALREADY_UNREGISTERED_EXCEPTION=The service has been unregistered
-SERVICE_EMPTY_CLASS_LIST_EXCEPTION=The array of service names is empty
-HEADER_DUPLICATE_KEY_EXCEPTION=The key \"{0}\" already exists in another case variation
-FILTER_INVALID=The filter is invalid.
-FILTER_MISSING_LEFTPAREN=Missing ''('' at \"{0}\"
-FILTER_MISSING_RIGHTPAREN=Missing '')'' at \"{0}\"
-FILTER_TRAILING_CHARACTERS=Extraneous trailing characters at \"{0}\"
-FILTER_TERMINATED_ABRUBTLY=Filter ended abruptly
-FILTER_INVALID_OPERATOR=Invalid operator at \"{0}\"
-FILTER_MISSING_ATTR=Missing attr at \"{0}\"
-FILTER_MISSING_VALUE=Missing value at \"{0}\"
-FILTER_INVALID_VALUE=Invalid value at \"{0}\"
-STARTLEVEL_EXCEPTION_INVALID_REQUESTED_STARTLEVEL=The requested start level of {0} is invalid.  The value must be a positive integer.
-STARTLEVEL_CANT_CHANGE_SYSTEMBUNDLE_STARTLEVEL=The System Bundle's start level can not be modified.
-
-LAUNCHER_ADAPTOR_ERROR=Unable to create FrameworkAdaptor.
-LAUNCHER_INVALID_PORT=Invalid console port: {0}
-LAUNCHER_COMPONENT_MISSING=Warning: The requested component ''{0}'' is not included in this runtime.
-LAUNCHER_COMPONENT_JAR=Add ''{0}'' to the classpath.
-
-CANNOT_SET_CONTEXTFINDER=The context finder has not been installed.
-
-URL_HANDLER_INCORRECT_TYPE=The service property "{0}" is not the correct type for the service "{1}" registered by the bundle "{2}"
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/FrameworkProperties.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/FrameworkProperties.java
deleted file mode 100644
index cb2878b..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/FrameworkProperties.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 Cognos Incorporated, IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the 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.eclipse.osgi.framework.internal.core;
-
-import java.io.UnsupportedEncodingException;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.security.CodeSource;
-import java.util.*;
-import org.eclipse.core.runtime.internal.adaptor.EclipseAdaptorMsg;
-import org.eclipse.osgi.util.NLS;
-
-/*
- * This class should be used in ALL places in the framework implementation to get "system" properties.
- * The static methods on this class should be used instead of the System#getProperty, System#setProperty etc methods.
- */
-public class FrameworkProperties {
-
-	/**@GuardedBy FrameworkProperties.class*/
-	private static Properties properties;
-
-	// A flag of some sort will have to be supported. 
-	// Many existing plugins get framework propeties directly from System instead of BundleContext. 
-	// Note that the OSGi TCK is one example where this property MUST be set to false because many TCK bundles set and read system properties.
-	private static final String USING_SYSTEM_PROPERTIES_KEY = "osgi.framework.useSystemProperties"; //$NON-NLS-1$
-	private static final String PROP_FRAMEWORK = "osgi.framework"; //$NON-NLS-1$
-	private static final String PROP_INSTALL_AREA = "osgi.install.area"; //$NON-NLS-1$
-
-	public static Properties getProperties() {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPropertiesAccess();
-		return internalGetProperties(null);
-	}
-
-	public static String getProperty(String key) {
-		return getProperty(key, null);
-	}
-
-	public static String getProperty(String key, String defaultValue) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPropertyAccess(key);
-		return internalGetProperties(null).getProperty(key, defaultValue);
-	}
-
-	public static String setProperty(String key, String value) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new PropertyPermission(key, "write")); //$NON-NLS-1$
-		return (String) internalGetProperties(null).put(key, value);
-	}
-
-	public static String clearProperty(String key) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new PropertyPermission(key, "write")); //$NON-NLS-1$
-		return (String) internalGetProperties(null).remove(key);
-	}
-
-	private static synchronized Properties internalGetProperties(String usingSystemProperties) {
-		if (properties == null) {
-			Properties systemProperties = System.getProperties();
-			if (usingSystemProperties == null)
-				usingSystemProperties = systemProperties.getProperty(USING_SYSTEM_PROPERTIES_KEY);
-			if (usingSystemProperties == null || usingSystemProperties.equalsIgnoreCase(Boolean.TRUE.toString())) {
-				properties = systemProperties;
-			} else {
-				// use systemProperties for a snapshot
-				// also see requirements in Bundlecontext.getProperty(...))
-				properties = new Properties();
-				// snapshot of System properties for uses of getProperties who expect to see framework properties set as System properties
-				// we need to do this for all system properties because the properties object is used to back
-				// BundleContext#getProperty method which expects all system properties to be available
-				properties.putAll(systemProperties);
-			}
-		}
-		return properties;
-	}
-
-	public static synchronized void setProperties(Map input) {
-		if (input == null) {
-			// just use internal props;  note that this will reuse a previous set of properties if they were set
-			internalGetProperties("false"); //$NON-NLS-1$
-			return;
-		}
-		properties = null;
-		Properties toSet = internalGetProperties("false"); //$NON-NLS-1$
-		for (Iterator keys = input.keySet().iterator(); keys.hasNext();) {
-			String key = (String) keys.next();
-			Object value = input.get(key);
-			if (value instanceof String) {
-				toSet.setProperty(key, (String) value);
-				continue;
-			}
-			value = input.get(key);
-			if (value != null)
-				toSet.put(key, value);
-			else
-				toSet.remove(key);
-		}
-	}
-
-	public static synchronized boolean inUse() {
-		return properties != null;
-	}
-
-	public static void initializeProperties() {
-		// initialize some framework properties that must always be set
-		if (getProperty(PROP_FRAMEWORK) == null || getProperty(PROP_INSTALL_AREA) == null) {
-			CodeSource cs = FrameworkProperties.class.getProtectionDomain().getCodeSource();
-			if (cs == null)
-				throw new IllegalArgumentException(NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_PROPS_NOT_SET, PROP_FRAMEWORK + ", " + PROP_INSTALL_AREA)); //$NON-NLS-1$
-			URL url = cs.getLocation();
-			// allow props to be preset
-			if (getProperty(PROP_FRAMEWORK) == null)
-				setProperty(PROP_FRAMEWORK, url.toExternalForm());
-			if (getProperty(PROP_INSTALL_AREA) == null) {
-				String filePart = url.getFile();
-				setProperty(PROP_INSTALL_AREA, filePart.substring(0, filePart.lastIndexOf('/')));
-			}
-		}
-		// always decode these properties
-		setProperty(PROP_FRAMEWORK, decode(getProperty(PROP_FRAMEWORK)));
-		setProperty(PROP_INSTALL_AREA, decode(getProperty(PROP_INSTALL_AREA)));
-	}
-
-	public static String decode(String urlString) {
-		//try to use Java 1.4 method if available
-		try {
-			Class clazz = URLDecoder.class;
-			Method method = clazz.getDeclaredMethod("decode", new Class[] {String.class, String.class}); //$NON-NLS-1$
-			//first encode '+' characters, because URLDecoder incorrectly converts 
-			//them to spaces on certain class library implementations.
-			if (urlString.indexOf('+') >= 0) {
-				int len = urlString.length();
-				StringBuffer buf = new StringBuffer(len);
-				for (int i = 0; i < len; i++) {
-					char c = urlString.charAt(i);
-					if (c == '+')
-						buf.append("%2B"); //$NON-NLS-1$
-					else
-						buf.append(c);
-				}
-				urlString = buf.toString();
-			}
-			Object result = method.invoke(null, new Object[] {urlString, "UTF-8"}); //$NON-NLS-1$
-			if (result != null)
-				return (String) result;
-		} catch (Exception e) {
-			//JDK 1.4 method not found -- fall through and decode by hand
-		}
-		//decode URL by hand
-		boolean replaced = false;
-		byte[] encodedBytes = urlString.getBytes();
-		int encodedLength = encodedBytes.length;
-		byte[] decodedBytes = new byte[encodedLength];
-		int decodedLength = 0;
-		for (int i = 0; i < encodedLength; i++) {
-			byte b = encodedBytes[i];
-			if (b == '%') {
-				byte enc1 = encodedBytes[++i];
-				byte enc2 = encodedBytes[++i];
-				b = (byte) ((hexToByte(enc1) << 4) + hexToByte(enc2));
-				replaced = true;
-			}
-			decodedBytes[decodedLength++] = b;
-		}
-		if (!replaced)
-			return urlString;
-		try {
-			return new String(decodedBytes, 0, decodedLength, "UTF-8"); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			//use default encoding
-			return new String(decodedBytes, 0, decodedLength);
-		}
-	}
-
-	private static int hexToByte(byte b) {
-		switch (b) {
-			case '0' :
-				return 0;
-			case '1' :
-				return 1;
-			case '2' :
-				return 2;
-			case '3' :
-				return 3;
-			case '4' :
-				return 4;
-			case '5' :
-				return 5;
-			case '6' :
-				return 6;
-			case '7' :
-				return 7;
-			case '8' :
-				return 8;
-			case '9' :
-				return 9;
-			case 'A' :
-			case 'a' :
-				return 10;
-			case 'B' :
-			case 'b' :
-				return 11;
-			case 'C' :
-			case 'c' :
-				return 12;
-			case 'D' :
-			case 'd' :
-				return 13;
-			case 'E' :
-			case 'e' :
-				return 14;
-			case 'F' :
-			case 'f' :
-				return 15;
-			default :
-				throw new IllegalArgumentException("Switch error decoding URL"); //$NON-NLS-1$
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Msg.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Msg.java
deleted file mode 100644
index 88506cf..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Msg.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import org.eclipse.osgi.util.NLS;
-
-public class Msg extends NLS {
-	private static final String BUNDLE_NAME = "org.eclipse.osgi.framework.internal.core.ExternalMessages"; //$NON-NLS-1$
-
-	public static String BUNDLE_CLASSPATH_ENTRY_NOT_FOUND_EXCEPTION;
-	public static String MANIFEST_INVALID_HEADER_EXCEPTION;
-	public static String BUNDLE_STATE_CHANGE_EXCEPTION;
-	public static String BUNDLE_UNINSTALLED_EXCEPTION;
-	public static String BUNDLE_UNRESOLVED_EXCEPTION;
-	public static String BUNDLE_UNRESOLVED_STATE_CONFLICT;
-	public static String BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION;
-	public static String BUNDLE_INVALID_ACTIVATOR_EXCEPTION;
-	public static String BUNDLE_EXTENSION_PERMISSION;
-
-	public static String SERVICE_ARGUMENT_NULL_EXCEPTION;
-	public static String SERVICE_EMPTY_CLASS_LIST_EXCEPTION;
-	public static String SERVICE_NOT_INSTANCEOF_CLASS_EXCEPTION;
-	public static String SERVICE_FACTORY_NOT_INSTANCEOF_CLASS_EXCEPTION;
-	public static String BUNDLE_ACTIVATOR_EXCEPTION;
-	public static String BUNDLE_CONTEXT_INVALID_EXCEPTION;
-
-	public static String BUNDLE_READ_EXCEPTION;
-	public static String BUNDLE_FRAGMENT_CNFE;
-	public static String BUNDLE_FRAGMENT_START;
-	public static String BUNDLE_FRAGMENT_STOP;
-	public static String BUNDLE_TRANSIENT_START_ERROR;
-
-	public static String BUNDLE_CNFE_NOT_RESOLVED;
-	public static String BUNDLE_LOADER_ATTACHMENT_ERROR;
-
-	public static String BUNDLE_FRAGMENT_IMPORT_CONFLICT;
-	public static String BUNDLE_NO_CLASSPATH_MATCH;
-	public static String FILTER_INVALID;
-
-	public static String FILTER_TERMINATED_ABRUBTLY;
-	public static String FILTER_TRAILING_CHARACTERS;
-	public static String FILTER_MISSING_LEFTPAREN;
-	public static String FILTER_MISSING_RIGHTPAREN;
-	public static String FILTER_INVALID_OPERATOR;
-	public static String FILTER_MISSING_ATTR;
-	public static String FILTER_INVALID_VALUE;
-	public static String FILTER_MISSING_VALUE;
-
-	public static String OSGI_SYSTEMBUNDLE_CREATE_EXCEPTION;
-	public static String BUNDLE_INSTALL_RECURSION_EXCEPTION;
-	public static String BUNDLE_INSTALL_SAME_UNIQUEID;
-
-	public static String ECLIPSE_OSGI_NAME;
-	public static String ECLIPSE_OSGI_VERSION;
-	public static String OSGI_VERSION;
-	public static String ECLIPSE_COPYRIGHT;
-
-	public static String OSGI_INTERNAL_ERROR;
-	public static String BUNDLE_NOT_IN_FRAMEWORK;
-	public static String BUNDLE_REFRESH_FAILURE;
-	public static String OSGI_SYSTEMBUNDLE_DESCRIPTION_ERROR;
-
-	public static String SERVICE_ALREADY_UNREGISTERED_EXCEPTION;
-
-	public static String SERVICE_FACTORY_EXCEPTION;
-	public static String SERVICE_OBJECT_NULL_EXCEPTION;
-
-	public static String STARTLEVEL_EXCEPTION_INVALID_REQUESTED_STARTLEVEL;
-	public static String STARTLEVEL_CANT_CHANGE_SYSTEMBUNDLE_STARTLEVEL;
-
-	public static String BUNDLE_SYSTEMBUNDLE_UNINSTALL_EXCEPTION;
-
-	public static String LAUNCHER_ADAPTOR_ERROR;
-	public static String LAUNCHER_COMPONENT_JAR;
-	public static String LAUNCHER_COMPONENT_MISSING;
-	public static String LAUNCHER_INVALID_PORT;
-
-	public static String HEADER_DUPLICATE_KEY_EXCEPTION;
-	public static String MANIFEST_INVALID_SPACE;
-	public static String MANIFEST_INVALID_LINE_NOCOLON;
-	public static String MANIFEST_IOEXCEPTION;
-
-	public static String CANNOT_SET_CONTEXTFINDER;
-
-	public static String URL_HANDLER_INCORRECT_TYPE;
-
-	static {
-		// initialize resource bundles
-		NLS.initializeMessages(BUNDLE_NAME, Msg.class);
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Tokenizer.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Tokenizer.java
deleted file mode 100644
index ff4d101..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Tokenizer.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-/**
- * Simple tokenizer class. Used to parse data.
- */
-public class Tokenizer {
-	protected char value[];
-	protected int max;
-	protected int cursor;
-
-	public Tokenizer(String value) {
-		this.value = value.toCharArray();
-		max = this.value.length;
-		cursor = 0;
-	}
-
-	private void skipWhiteSpace() {
-		char[] val = value;
-		int cur = cursor;
-
-		for (; cur < max; cur++) {
-			char c = val[cur];
-			if ((c == ' ') || (c == '\t') || (c == '\n') || (c == '\r')) {
-				continue;
-			}
-			break;
-		}
-		cursor = cur;
-	}
-
-	public String getToken(String terminals) {
-		skipWhiteSpace();
-		char[] val = value;
-		int cur = cursor;
-
-		int begin = cur;
-		for (; cur < max; cur++) {
-			char c = val[cur];
-			if ((terminals.indexOf(c) != -1)) {
-				break;
-			}
-		}
-		cursor = cur;
-		int count = cur - begin;
-		if (count > 0) {
-			skipWhiteSpace();
-			while (count > 0 && (val[begin + count - 1] == ' ' || val[begin + count - 1] == '\t'))
-				count--;
-			return (new String(val, begin, count));
-		}
-		return (null);
-	}
-
-	public String getString(String terminals) {
-		skipWhiteSpace();
-		char[] val = value;
-		int cur = cursor;
-
-		if (cur < max) {
-			if (val[cur] == '\"') /* if a quoted string */
-			{
-				StringBuffer sb = new StringBuffer();
-				cur++; /* skip quote */
-				char c = '\0';
-				int begin = cur;
-				for (; cur < max; cur++) {
-					c = val[cur];
-					// this is an escaped char
-					if (c == '\\') {
-						cur++; // skip the escape char
-						if (cur == max)
-							break;
-						c = val[cur]; // include the escaped char
-					} else if (c == '\"') {
-						break;
-					}
-					sb.append(c);
-				}
-				int count = cur - begin;
-				if (c == '\"') {
-					cur++;
-				}
-				cursor = cur;
-				if (count > 0) {
-					skipWhiteSpace();
-					return sb.toString();
-				}
-			} else /* not a quoted string; same as token */
-			{
-				return getToken(terminals);
-			}
-		}
-		return (null);
-	}
-
-	public char getChar() {
-		int cur = cursor;
-		if (cur < max) {
-			cursor = cur + 1;
-			return (value[cur]);
-		}
-		return ('\0'); /* end of value */
-	}
-
-	public boolean hasMoreTokens() {
-		if (cursor < max) {
-			return true;
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFile.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFile.java
deleted file mode 100644
index 1f6ac61..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFile.java
+++ /dev/null
@@ -1,838 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.reliablefile;
-
-import java.io.*;
-import java.util.*;
-import java.util.zip.CRC32;
-import java.util.zip.Checksum;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-
-/**
- * ReliableFile class used by ReliableFileInputStream and ReliableOutputStream.
- * This class encapsulates all the logic for reliable file support.
- *
- */
-public class ReliableFile {
-	/**
-	 * Open mask. Obtain the best data stream available. If the primary data 
-	 * contents are invalid (corrupt, missing, etc.), the data for a prior 
-	 * version may be used. 
-	 * An IOException will be thrown if a valid data content can not be
-	 * determined. 
-	 * This is mutually exclusive with <code>OPEN_FAIL_ON_PRIMARY</code>.
-	 */
-	public static final int OPEN_BEST_AVAILABLE = 0;
-	/**
-	 * Open mask. Obtain only the data stream for the primary file where any other 
-	 * version will not be valid. This should be used for data streams that are 
-	 * managed as a group as a prior contents may not match the other group data.
-	 * If the primary data is not invalid, a IOException will be thrown.
-	 * This is mutually exclusive with <code>OPEN_BEST_AVAILABLE</code>.
-	 */
-	public static final int OPEN_FAIL_ON_PRIMARY = 1;
-
-	/**
-	 * Use the last generation of the file
-	 */
-	public static final int GENERATION_LATEST = 0;
-	/**
-	 * Keep infinite backup files
-	 */
-	public static final int GENERATIONS_INFINITE = 0;
-
-	/**
-	 * Extension of tmp file used during writing.
-	 * A reliable file with this extension should
-	 * never be directly used.
-	 */
-	public static final String tmpExt = ".tmp"; //$NON-NLS-1$
-
-	/**
-	 * Property to set the maximum size of a file that will be buffered. When calculating a ReliableFile
-	 * checksum, if the file is this size or small, ReliableFile will read the file contents into a 
-	 * <code>BufferedInputStream</code> and reset the buffer to avoid having to read the data from the
-	 * media twice. Since this method require memory for storage, it is limited to this size. The default
-	 * maximum is 128-KBytes.
-	 */
-	public static final String PROP_MAX_BUFFER = "osgi.reliableFile.maxInputStreamBuffer"; //$NON-NLS-1$
-	/**
-	 * The maximum number of generations to keep as backup files in case last generation 
-	 * file is determined to be invalid.
-	 */
-	public static final String PROP_MAX_GENERATIONS = "osgi.ReliableFile.maxGenerations"; //$NON-NLS-1$
-	/**
-	 * @see org.eclipse.core.runtime.internal.adaptor.BasicLocation#PROP_OSGI_LOCKING
-	 */
-	public static final String PROP_OSGI_LOCKING = "osgi.locking"; //$NON-NLS-1$
-
-	private static final int FILETYPE_VALID = 0;
-	private static final int FILETYPE_CORRUPT = 1;
-	private static final int FILETYPE_NOSIGNATURE = 2;
-
-	private static final byte identifier1[] = {'.', 'c', 'r', 'c'};
-	private static final byte identifier2[] = {'.', 'v', '1', '\n'};
-
-	private static final int BUF_SIZE = 4096;
-	private static final int maxInputStreamBuffer;
-	private static final int defaultMaxGenerations;
-	private static final boolean fileSharing;
-	//our cache of the last looked up generations for a file
-	private static File lastGenerationFile = null;
-	private static int[] lastGenerations = null;
-	private static final Object lastGenerationLock = new Object();
-
-	static {
-		String prop = FrameworkProperties.getProperty(PROP_MAX_BUFFER);
-		int tmpMaxInput = 128 * 1024; //128k
-		if (prop != null) {
-			try {
-				tmpMaxInput = Integer.parseInt(prop);
-			} catch (NumberFormatException e) {/*ignore*/
-			}
-		}
-		maxInputStreamBuffer = tmpMaxInput;
-
-		int tmpDefaultMax = 2;
-		prop = FrameworkProperties.getProperty(PROP_MAX_GENERATIONS);
-		if (prop != null) {
-			try {
-				tmpDefaultMax = Integer.parseInt(prop);
-			} catch (NumberFormatException e) {/*ignore*/
-			}
-		}
-		defaultMaxGenerations = tmpDefaultMax;
-
-		prop = FrameworkProperties.getProperty(PROP_OSGI_LOCKING);
-		boolean tmpFileSharing = true;
-		if (prop != null) {
-			if (prop.equals("none")) { //$NON-NLS-1$
-				tmpFileSharing = false;
-			}
-		}
-		fileSharing = tmpFileSharing;
-	}
-
-	/** File object for original reference file */
-	private File referenceFile;
-
-	/** List of checksum file objects: File => specific ReliableFile generation */
-	private static Hashtable cacheFiles = new Hashtable(20);
-
-	private File inputFile = null;
-	private File outputFile = null;
-	private Checksum appendChecksum = null;
-
-	/**
-	 * ReliableFile object factory. This method is called by ReliableFileInputStream
-	 * and ReliableFileOutputStream to get a ReliableFile object for a target file.
-	 * If the object is in the cache, the cached copy is returned.
-	 * Otherwise a new ReliableFile object is created and returned.
-	 * The use count of the returned ReliableFile object is incremented.
-	 *
-	 * @param name Name of the target file.
-	 * @return A ReliableFile object for the target file.
-	 * @throws IOException If the target file is a directory.
-	 */
-	static ReliableFile getReliableFile(String name) throws IOException {
-		return getReliableFile(new File(name));
-	}
-
-	/**
-	 * ReliableFile object factory. This method is called by ReliableFileInputStream
-	 * and ReliableFileOutputStream to get a ReliableFile object for a target file.
-	 * If the object is in the cache, the cached copy is returned.
-	 * Otherwise a new ReliableFile object is created and returned.
-	 * The use count of the returned ReliableFile object is incremented.
-	 *
-	 * @param file File object for the target file.
-	 * @return A ReliableFile object for the target file.
-	 * @throws IOException If the target file is a directory.
-	 */
-	static ReliableFile getReliableFile(File file) throws IOException {
-		if (file.isDirectory()) {
-			throw new FileNotFoundException("file is a directory"); //$NON-NLS-1$
-		}
-		return new ReliableFile(file);
-	}
-
-	/**
-	 * Private constructor used by the static getReliableFile factory methods.
-	 *
-	 * @param file File object for the target file.
-	 */
-	private ReliableFile(File file) {
-		referenceFile = file;
-	}
-
-	private static int[] getFileGenerations(File file) {
-		if (!fileSharing) {
-			synchronized (lastGenerationLock) {
-				if (lastGenerationFile != null) {
-					//shortcut maybe, only if filesharing is not supported
-					if (file.equals(lastGenerationFile))
-						return lastGenerations;
-				}
-			}
-		}
-		int[] generations = null;
-		try {
-			String name = file.getName();
-			String prefix = name + '.';
-			int prefixLen = prefix.length();
-			File parent = new File(file.getParent());
-			String[] files = parent.list();
-			if (files == null)
-				return null;
-			ArrayList list = new ArrayList(defaultMaxGenerations);
-			if (file.exists())
-				list.add(new Integer(0)); //base file exists
-			for (int i = 0; i < files.length; i++) {
-				if (files[i].startsWith(prefix)) {
-					try {
-						int id = Integer.parseInt(files[i].substring(prefixLen));
-						list.add(new Integer(id));
-					} catch (NumberFormatException e) {/*ignore*/
-					}
-				}
-			}
-			if (list.size() == 0)
-				return null;
-			Object[] array = list.toArray();
-			Arrays.sort(array);
-			generations = new int[array.length];
-			for (int i = 0, j = array.length - 1; i < array.length; i++, j--) {
-				generations[i] = ((Integer) array[j]).intValue();
-			}
-			return generations;
-		} finally {
-			if (!fileSharing) {
-				synchronized (lastGenerationLock) {
-					lastGenerationFile = file;
-					lastGenerations = generations;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns an InputStream object for reading the target file.
-	 *
-	 * @param generation the maximum generation to evaluate
-	 * @param openMask mask used to open data. 
-	 * are invalid (corrupt, missing, etc).
-	 * @return An InputStream object which can be used to read the target file.
-	 * @throws IOException If an error occurs preparing the file.
-	 */
-	InputStream getInputStream(int generation, int openMask) throws IOException {
-		if (inputFile != null) {
-			throw new IOException("Input stream already open"); //$NON-NLS-1$
-		}
-		int[] generations = getFileGenerations(referenceFile);
-		if (generations == null) {
-			throw new FileNotFoundException("File not found"); //$NON-NLS-1$
-		}
-		String name = referenceFile.getName();
-		File parent = new File(referenceFile.getParent());
-
-		boolean failOnPrimary = (openMask & OPEN_FAIL_ON_PRIMARY) != 0;
-		if (failOnPrimary && generation == GENERATIONS_INFINITE)
-			generation = generations[0];
-
-		File textFile = null;
-		InputStream textIS = null;
-		for (int idx = 0; idx < generations.length; idx++) {
-			if (generation != 0) {
-				if (generations[idx] > generation || (failOnPrimary && generations[idx] != generation))
-					continue;
-			}
-			File file;
-			if (generations[idx] != 0)
-				file = new File(parent, name + '.' + generations[idx]);
-			else
-				file = referenceFile;
-			InputStream is = null;
-			CacheInfo info;
-			synchronized (cacheFiles) {
-				info = (CacheInfo) cacheFiles.get(file);
-				long timeStamp = file.lastModified();
-				if (info == null || timeStamp != info.timeStamp) {
-					try {
-						is = new FileInputStream(file);
-						if (is.available() < maxInputStreamBuffer)
-							is = new BufferedInputStream(is);
-						Checksum cksum = getChecksumCalculator();
-						int filetype = getStreamType(is, cksum);
-						info = new CacheInfo(filetype, cksum, timeStamp);
-						cacheFiles.put(file, info);
-					} catch (IOException e) {/*ignore*/
-					}
-				}
-			}
-
-			// if looking for a specific generation only, only look at one
-			//  and return the result.
-			if (failOnPrimary) {
-				if (info != null && info.filetype == FILETYPE_VALID) {
-					inputFile = file;
-					if (is != null)
-						return is;
-					return new FileInputStream(file);
-				}
-				throw new IOException("ReliableFile is corrupt"); //$NON-NLS-1$
-			}
-
-			// if error, ignore this file & try next
-			if (info == null)
-				continue;
-
-			// we're  not looking for a specific version, so let's pick the best case
-			switch (info.filetype) {
-				case FILETYPE_VALID :
-					inputFile = file;
-					if (is != null)
-						return is;
-					return new FileInputStream(file);
-
-				case FILETYPE_NOSIGNATURE :
-					if (textFile == null) {
-						textFile = file;
-						textIS = is;
-					}
-					break;
-			}
-		}
-
-		// didn't find any valid files, if there are any plain text files
-		//  use it instead
-		if (textFile != null) {
-			inputFile = textFile;
-			if (textIS != null)
-				return textIS;
-			return new FileInputStream(textFile);
-		}
-		throw new IOException("ReliableFile is corrupt"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns an OutputStream object for writing the target file.
-	 * 
-	 * @param append append new data to an existing file.
-	 * @param appendGeneration specific generation of file to append from.
-	 * @return An OutputStream object which can be used to write the target file.
-	 * @throws IOException IOException If an error occurs preparing the file.
-	 */
-	OutputStream getOutputStream(boolean append, int appendGeneration) throws IOException {
-		if (outputFile != null)
-			throw new IOException("Output stream is already open"); //$NON_NLS-1$ //$NON-NLS-1$
-		String name = referenceFile.getName();
-		File parent = new File(referenceFile.getParent());
-		File tmpFile = File.createTempFile(name, tmpExt, parent);
-
-		if (!append) {
-			OutputStream os = new FileOutputStream(tmpFile);
-			outputFile = tmpFile;
-			return os;
-		}
-
-		InputStream is;
-		try {
-			is = getInputStream(appendGeneration, OPEN_BEST_AVAILABLE);
-		} catch (FileNotFoundException e) {
-			OutputStream os = new FileOutputStream(tmpFile);
-			outputFile = tmpFile;
-			return os;
-		}
-
-		try {
-			CacheInfo info = (CacheInfo) cacheFiles.get(inputFile);
-			appendChecksum = info.checksum;
-			OutputStream os = new FileOutputStream(tmpFile);
-			if (info.filetype == FILETYPE_NOSIGNATURE) {
-				cp(is, os, 0);
-			} else {
-				cp(is, os, 16); // don't copy checksum signature
-			}
-			outputFile = tmpFile;
-			return os;
-		} finally {
-			closeInputFile();
-		}
-	}
-
-	/**
-	 * Close the target file for reading.
-	 *
-	 * @param checksum Checksum of the file contents
-	 * @throws IOException If an error occurs closing the file.
-	 */
-	void closeOutputFile(Checksum checksum) throws IOException {
-		if (outputFile == null)
-			throw new IOException("Output stream is not open"); //$NON-NLS-1$
-		int[] generations = getFileGenerations(referenceFile);
-		String name = referenceFile.getName();
-		File parent = new File(referenceFile.getParent());
-		File newFile;
-		if (generations == null)
-			newFile = new File(parent, name + ".1"); //$NON-NLS-1$
-		else
-			newFile = new File(parent, name + '.' + (generations[0] + 1));
-
-		mv(outputFile, newFile); // throws IOException if problem
-		outputFile = null;
-		appendChecksum = null;
-		CacheInfo info = new CacheInfo(FILETYPE_VALID, checksum, newFile.lastModified());
-		cacheFiles.put(newFile, info);
-		cleanup(generations, true);
-		lastGenerationFile = null;
-		lastGenerations = null;
-	}
-
-	/**
-	 * Abort the current output stream and do not update the reliable file table.
-	 *
-	 */
-	void abortOutputFile() {
-		if (outputFile == null)
-			return;
-		outputFile.delete();
-		outputFile = null;
-		appendChecksum = null;
-	}
-
-	File getOutputFile() {
-		return outputFile;
-	}
-
-	/**
-	 * Close the target file for reading.
-	 */
-	void closeInputFile() {
-		inputFile = null;
-	}
-
-	private void cleanup(int[] generations, boolean generationAdded) {
-		if (generations == null)
-			return;
-		String name = referenceFile.getName();
-		File parent = new File(referenceFile.getParent());
-		int generationCount = generations.length;
-		// if a base file is in the list (0 in generations[]), we will 
-		//  never delete these files, so don't count them in the old
-		//  generation count.
-		if (generations[generationCount - 1] == 0)
-			generationCount--;
-		// assume here that the int[] does not include a file just created
-		int rmCount = generationCount - defaultMaxGenerations;
-		if (generationAdded)
-			rmCount++;
-		if (rmCount < 1)
-			return;
-		synchronized (cacheFiles) {
-			// first, see if any of the files not deleted are known to
-			//  be corrupt. If so, be sure to keep not to delete good
-			//  backup files.
-			for (int idx = 0, count = generationCount - rmCount; idx < count; idx++) {
-				File file = new File(parent, name + '.' + generations[idx]);
-				CacheInfo info = (CacheInfo) cacheFiles.get(file);
-				if (info != null) {
-					if (info.filetype == FILETYPE_CORRUPT)
-						rmCount--;
-				}
-			}
-			for (int idx = generationCount - 1; rmCount > 0; idx--, rmCount--) {
-				File rmFile = new File(parent, name + '.' + generations[idx]);
-				rmFile.delete();
-				cacheFiles.remove(rmFile);
-			}
-		}
-	}
-
-	/**
-	 * Rename a file.
-	 *
-	 * @param from The original file.
-	 * @param to The new file name.
-	 * @throws IOException If the rename failed.
-	 */
-	private static void mv(File from, File to) throws IOException {
-		if (!from.renameTo(to)) {
-			throw new IOException("rename failed"); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Copy a file.
-	 *
-	 * @throws IOException If the copy failed.
-	 */
-	private static void cp(InputStream in, OutputStream out, int truncateSize) throws IOException {
-		try {
-			int length = in.available();
-			if (truncateSize > length)
-				length = 0;
-			else
-				length -= truncateSize;
-			if (length > 0) {
-				int bufferSize;
-				if (length > BUF_SIZE) {
-					bufferSize = BUF_SIZE;
-				} else {
-					bufferSize = length;
-				}
-
-				byte buffer[] = new byte[bufferSize];
-				int size = 0;
-				int count;
-				while ((count = in.read(buffer, 0, length)) > 0) {
-					if ((size + count) >= length)
-						count = length - size;
-					out.write(buffer, 0, count);
-					size += count;
-				}
-			}
-		} finally {
-			try {
-				in.close();
-			} catch (IOException e) {/*ignore*/
-			}
-			out.close();
-		}
-	}
-
-	/**
-	 * Answers a boolean indicating whether or not the specified reliable file
-	 * exists on the underlying file system. This call only returns if a file 
-	 * exists and not if the file contents are valid.
-	 * @param file returns true if the specified reliable file exists; otherwise false is returned
-	 *
-	 * @return <code>true</code> if the specified reliable file exists,
-	 * <code>false</code> otherwise.
-	 */
-	public static boolean exists(File file) {
-		String prefix = file.getName() + '.';
-		File parent = new File(file.getParent());
-		int prefixLen = prefix.length();
-		String[] files = parent.list();
-		if (files == null)
-			return false;
-		for (int i = 0; i < files.length; i++) {
-			if (files[i].startsWith(prefix)) {
-				try {
-					Integer.parseInt(files[i].substring(prefixLen));
-					return true;
-				} catch (NumberFormatException e) {/*ignore*/
-				}
-			}
-		}
-		return file.exists();
-	}
-
-	/**
-	 * Returns the time that the reliable file was last modified. Only the time 
-	 * of the last file generation is returned.
-	 * @param file the file to determine the time of.
-	 * @return time the file was last modified (see java.io.File.lastModified()).
-	 */
-	public static long lastModified(File file) {
-		int[] generations = getFileGenerations(file);
-		if (generations == null)
-			return 0L;
-		if (generations[0] == 0)
-			return file.lastModified();
-		String name = file.getName();
-		File parent = new File(file.getParent());
-		File newFile = new File(parent, name + '.' + generations[0]);
-		return newFile.lastModified();
-	}
-
-	/**
-	 * Returns the time that this ReliableFile was last modified. This method is only valid
-	 * after requesting an input stream and the time of the actual input file is returned.
-	 *
-	 * @return time the file was last modified (see java.io.File.lastModified()) or
-	 * 0L if an input stream is not open.
-	 */
-	public long lastModified() {
-		if (inputFile != null) {
-			return inputFile.lastModified();
-		}
-		return 0L;
-	}
-
-	/**
-	 * Returns the a version number of a reliable managed file. The version can be expected
-	 * to be unique for each successful file update.
-	 * 
-	 * @param file the file to determine the version of.
-	 * @return a unique version of this current file. A value of -1 indicates the file does
-	 * not exist or an error occurred.
-	 */
-	public static int lastModifiedVersion(File file) {
-		int[] generations = getFileGenerations(file);
-		if (generations == null)
-			return -1;
-		return generations[0];
-	}
-
-	/**
-	 * Delete the specified reliable file on the underlying file system.
-	 * @param deleteFile the reliable file to delete
-	 *
-	 * @return <code>true</code> if the specified reliable file was deleted,
-	 * <code>false</code> otherwise.
-	 */
-	public static boolean delete(File deleteFile) {
-		int[] generations = getFileGenerations(deleteFile);
-		if (generations == null)
-			return false;
-		String name = deleteFile.getName();
-		File parent = new File(deleteFile.getParent());
-		synchronized (cacheFiles) {
-			for (int idx = 0; idx < generations.length; idx++) {
-				// base files (.0 in generations[]) will never be deleted
-				if (generations[idx] == 0)
-					continue;
-				File file = new File(parent, name + '.' + generations[idx]);
-				if (file.exists()) {
-					file.delete();
-				}
-				cacheFiles.remove(file);
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Get a list of ReliableFile base names in a given directory. Only files with a valid
-	 * ReliableFile generation are included.
-	 * @param directory the directory to inquire.
-	 * @return an array of ReliableFile names in the directory. 
-	 * @throws IOException if an error occurs.
-	 */
-	public static String[] getBaseFiles(File directory) throws IOException {
-		if (!directory.isDirectory())
-			throw new IOException("Not a valid directory"); //$NON-NLS-1$
-		String files[] = directory.list();
-		HashSet list = new HashSet(files.length / 2);
-		for (int idx = 0; idx < files.length; idx++) {
-			String file = files[idx];
-			int pos = file.lastIndexOf('.');
-			if (pos == -1)
-				continue;
-			String ext = file.substring(pos + 1);
-			int generation = 0;
-			try {
-				generation = Integer.parseInt(ext);
-			} catch (NumberFormatException e) {/*skip*/
-			}
-			if (generation == 0)
-				continue;
-			String base = file.substring(0, pos);
-			list.add(base);
-		}
-		files = new String[list.size()];
-		int idx = 0;
-		for (Iterator iter = list.iterator(); iter.hasNext();) {
-			files[idx++] = (String) iter.next();
-		}
-		return files;
-	}
-
-	/**
-	 * Delete any old excess generations of a given reliable file.
-	 * @param base realible file.
-	 */
-	public static void cleanupGenerations(File base) {
-		ReliableFile rf = new ReliableFile(base);
-		int[] generations = getFileGenerations(base);
-		rf.cleanup(generations, false);
-		lastGenerationFile = null;
-		lastGenerations = null;
-	}
-
-	/**
-	 * Inform ReliableFile that a file has been updated outside of 
-	 * ReliableFile.
-	 * @param file
-	 */
-	public static void fileUpdated(File file) {
-		lastGenerationFile = null;
-		lastGenerations = null;
-	}
-
-	/**
-	 * Append a checksum value to the end of an output stream.
-	 * @param out the output stream.
-	 * @param checksum the checksum value to append to the file.
-	 * @throws IOException if a write error occurs.
-	 */
-	void writeChecksumSignature(OutputStream out, Checksum checksum) throws IOException {
-		// tag on our signature and checksum
-		out.write(ReliableFile.identifier1);
-		out.write(intToHex((int) checksum.getValue()));
-		out.write(ReliableFile.identifier2);
-	}
-
-	/**
-	 * Returns the size of the ReliableFile signature + CRC at the end of the file.
-	 * This method should be called only after calling getInputStream() or 
-	 * getOutputStream() methods.
-	 *
-	 * @return <code>int</code> size of the ReliableFIle signature + CRC appended 
-	 * to the end of the file.
-	 * @throws IOException if getInputStream() or getOutputStream has not been
-	 * called.
-	 */
-	int getSignatureSize() throws IOException {
-		if (inputFile != null) {
-			CacheInfo info = (CacheInfo) cacheFiles.get(inputFile);
-			if (info != null) {
-				switch (info.filetype) {
-					case FILETYPE_VALID :
-					case FILETYPE_CORRUPT :
-						return 16;
-					case FILETYPE_NOSIGNATURE :
-						return 0;
-				}
-			}
-		}
-		throw new IOException("ReliableFile signature size is unknown"); //$NON-NLS-1$
-	}
-
-	/**
-	 * Returns a Checksum object for the current file contents. This method 
-	 * should be called only after calling getInputStream() or 
-	 * getOutputStream() methods.
-	 *
-	 * @return Object implementing Checksum interface initialized to the 
-	 * current file contents.
-	 * @throws IOException if getOutputStream for append has not been called.
-	 */
-	Checksum getFileChecksum() throws IOException {
-		if (appendChecksum == null)
-			throw new IOException("Checksum is invalid!"); //$NON-NLS-1$
-		return appendChecksum;
-	}
-
-	/**
-	 * Create a checksum implementation used by ReliableFile.
-	 *
-	 * @return Object implementing Checksum interface used to calculate
-	 * a reliable file checksum
-	 */
-	Checksum getChecksumCalculator() {
-		// Using CRC32 because Adler32 isn't in the eeMinimum library.
-		return new CRC32();
-	}
-
-	/**
-	 * Determine if a File is a valid ReliableFile
-	 *
-	 * @return <code>true</code> if the file is a valid ReliableFile
-	 * @throws IOException If an error occurs verifying the file.
-	 */
-	private int getStreamType(InputStream is, Checksum crc) throws IOException {
-		boolean markSupported = is.markSupported();
-		if (markSupported)
-			is.mark(is.available());
-		try {
-			int len = is.available();
-			if (len < 16) {
-				if (crc != null) {
-					byte data[] = new byte[16];
-					int num = is.read(data);
-					if (num > 0)
-						crc.update(data, 0, num);
-				}
-				return FILETYPE_NOSIGNATURE;
-			}
-			len -= 16;
-
-			int pos = 0;
-			byte data[] = new byte[BUF_SIZE];
-
-			while (pos < len) {
-				int read = data.length;
-				if (pos + read > len)
-					read = len - pos;
-
-				int num = is.read(data, 0, read);
-				if (num == -1) {
-					throw new IOException("Unable to read entire file."); //$NON-NLS-1$
-				}
-
-				crc.update(data, 0, num);
-				pos += num;
-			}
-
-			int num = is.read(data); // read last 16-byte signature
-			if (num != 16) {
-				throw new IOException("Unable to read entire file."); //$NON-NLS-1$
-			}
-
-			int i, j;
-			for (i = 0; i < 4; i++)
-				if (identifier1[i] != data[i]) {
-					crc.update(data, 0, 16); // update crc w/ sig bytes
-					return FILETYPE_NOSIGNATURE;
-				}
-			for (i = 0, j = 12; i < 4; i++, j++)
-				if (identifier2[i] != data[j]) {
-					crc.update(data, 0, 16); // update crc w/ sig bytes
-					return FILETYPE_NOSIGNATURE;
-				}
-			long crccmp;
-			try {
-				crccmp = Long.valueOf(new String(data, 4, 8, "UTF-8"), 16).longValue(); //$NON-NLS-1$
-			} catch (UnsupportedEncodingException e) {
-				crccmp = Long.valueOf(new String(data, 4, 8), 16).longValue();
-			}
-			if (crccmp == crc.getValue()) {
-				return FILETYPE_VALID;
-			}
-			// do not update CRC
-			return FILETYPE_CORRUPT;
-		} finally {
-			if (markSupported)
-				is.reset();
-		}
-	}
-
-	private static byte[] intToHex(int l) {
-		byte[] buffer = new byte[8];
-		int count = 8;
-
-		do {
-			int ch = (l & 0xf);
-			if (ch > 9)
-				ch = ch - 10 + 'a';
-			else
-				ch += '0';
-			buffer[--count] = (byte) ch;
-			l >>= 4;
-		} while (count > 0);
-		return buffer;
-	}
-
-	private class CacheInfo {
-		int filetype;
-		Checksum checksum;
-		long timeStamp;
-
-		CacheInfo(int filetype, Checksum checksum, long timeStamp) {
-			this.filetype = filetype;
-			this.checksum = checksum;
-			this.timeStamp = timeStamp;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileInputStream.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileInputStream.java
deleted file mode 100644
index a22466d..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileInputStream.java
+++ /dev/null
@@ -1,209 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.reliablefile;
-
-import java.io.*;
-
-/**
- * A ReliableFile FileInputStream replacement class.
- * This class can be used just like FileInputStream. The class
- * is in partnership with ReliableFileOutputStream to avoid losing
- * file data by using multiple files.
- *
- * @see			ReliableFileOutputStream
- */
-public class ReliableFileInputStream extends FilterInputStream {
-	/**
-	 * ReliableFile object for this file.
-	 */
-	private ReliableFile reliable;
-
-	/** 
-	 * size of crc and signature
-	 */
-	private int sigSize;
-
-	/** 
-	 * current position reading from file
-	 */
-	private int readPos;
-
-	/** 
-	 * total file length available for reading
-	 */
-	private int length;
-
-	/**
-	 * Constructs a new ReliableFileInputStream on the file named <code>name</code>.  If the
-	 * file does not exist, the <code>FileNotFoundException</code> is thrown.
-	 * The <code>name</code> may be absolute or relative
-	 * to the System property <code>"user.dir"</code>.
-	 *
-	 * @param		name	the file on which to stream reads.
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	public ReliableFileInputStream(String name) throws IOException {
-		this(ReliableFile.getReliableFile(name), ReliableFile.GENERATION_LATEST, ReliableFile.OPEN_BEST_AVAILABLE);
-	}
-
-	/**
-	 * Constructs a new ReliableFileInputStream on the File <code>file</code>.  If the
-	 * file does not exist, the <code>FileNotFoundException</code> is thrown.
-	 *
-	 * @param		file		the File on which to stream reads.
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	public ReliableFileInputStream(File file) throws IOException {
-		this(ReliableFile.getReliableFile(file), ReliableFile.GENERATION_LATEST, ReliableFile.OPEN_BEST_AVAILABLE);
-	}
-
-	/**
-	 * Constructs a new ReliableFileInputStream on the File <code>file</code>.  If the
-	 * file does not exist, the <code>FileNotFoundException</code> is thrown.
-	 * 
-	 * @param file the File on which to stream reads.
-	 * @param generation a specific generation requested.
-	 * @param openMask mask used to open data.
-	 * are invalid (corrupt, missing, etc).
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	public ReliableFileInputStream(File file, int generation, int openMask) throws IOException {
-		this(ReliableFile.getReliableFile(file), generation, openMask);
-	}
-
-	/**
-	 * 
-	 * @param reliable The ReliableFile on which to read.
-	 * @param generation a specific generation requested.
-	 * @param openMask mask used to open data. 
-	 * are invalid (corrupt, missing, etc).
-	 * @throws IOException If an error occurs opening the file.
-	 */
-	private ReliableFileInputStream(ReliableFile reliable, int generation, int openMask) throws IOException {
-		super(reliable.getInputStream(generation, openMask));
-
-		this.reliable = reliable;
-		sigSize = reliable.getSignatureSize();
-		readPos = 0;
-		length = super.available();
-		if (sigSize > length)
-			length = 0; // shouldn't ever happen
-		else
-			length -= sigSize;
-	}
-
-	/**
-	 * Closes this input stream and releases any system resources associated
-	 * with the stream.
-	 *
-	 * @exception 	java.io.IOException If an error occurs closing the file.
-	 */
-	public synchronized void close() throws IOException {
-		if (reliable != null) {
-			try {
-				super.close();
-			} finally {
-				reliable.closeInputFile();
-				reliable = null;
-			}
-		}
-	}
-
-	/**
-	 * Override default FilterInputStream method.
-	 * @see FilterInputStream#read(byte[], int, int)
-	 */
-	public synchronized int read(byte b[], int off, int len) throws IOException {
-		if (readPos >= length) {
-			return -1;
-		}
-		int num = super.read(b, off, len);
-
-		if (num != -1) {
-			if (num + readPos > length) {
-				num = length - readPos;
-			}
-			readPos += num;
-		}
-		return num;
-	}
-
-	/**
-	 * Override default FilterInputStream method.
-	 * @see FilterInputStream#read(byte[])
-	 */
-	public synchronized int read(byte b[]) throws IOException {
-		return read(b, 0, b.length);
-	}
-
-	/**
-	 * Override default FilterInputStream method.
-	 * @see FilterInputStream#read()
-	 */
-	public synchronized int read() throws IOException {
-		if (readPos >= length) {
-			return -1;
-		}
-		int num = super.read();
-
-		if (num != -1) {
-			readPos++;
-		}
-		return num;
-	}
-
-	/**
-	 * Override default available method.
-	 * @see FilterInputStream#available()
-	 */
-	public synchronized int available() throws IOException {
-		if (readPos < length) // just in case
-			return (length - readPos);
-		return 0;
-	}
-
-	/**
-	 * Override default skip method.
-	 * @see FilterInputStream#skip(long)
-	 */
-	public synchronized long skip(long n) throws IOException {
-		long len = super.skip(n);
-		if (readPos + len > length)
-			len = length - readPos;
-		readPos += len;
-		return len;
-	}
-
-	/**
-	 * Override default markSupported method.
-	 * @see FilterInputStream#markSupported()
-	 */
-	public boolean markSupported() {
-		return false;
-	}
-
-	/**
-	 * Override default mark method.
-	 * @see FilterInputStream#mark(int)
-	 */
-	public void mark(int readlimit) {
-		//ignore
-	}
-
-	/**
-	 * Override default reset method.
-	 * @see FilterInputStream#reset()
-	 */
-	public void reset() throws IOException {
-		throw new IOException("reset not supported."); //$NON-NLS-1$
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileOutputStream.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileOutputStream.java
deleted file mode 100644
index c149297..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFileOutputStream.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.reliablefile;
-
-import java.io.*;
-import java.util.zip.Checksum;
-
-/**
- * A ReliableFile FileOutputStream replacement class.
- * This class can be used just like FileOutputStream. The class
- * is in partnership with ReliableFileInputStream to avoid losing
- * file data by using multiple files.
- *
- * @see			ReliableFileInputStream
- */
-public class ReliableFileOutputStream extends FilterOutputStream {
-	/**
-	 * ReliableFile object for the file.
-	 */
-	private ReliableFile reliable;
-
-	/**
-	 * Checksum calculator
-	 */
-	private Checksum crc;
-
-	private boolean outputOpen = false;
-
-	/**
-	 * Constructs a new ReliableFileOutputStream on the File <code>file</code>.  If the
-	 * file exists, it is written over.  See the constructor which can append to
-	 * the file if so desired.
-	 *
-	 * @param		file		the File on which to stream reads.
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	public ReliableFileOutputStream(File file) throws IOException {
-		this(ReliableFile.getReliableFile(file), false);
-	}
-
-	/**
-	 * Constructs a new ReliableFileOutputStream on the File <code>file</code>.
-	 *
-	 * @param		file		the File on which to stream reads.
-	 * @param		append		a boolean indicating whether or not to append to an existing file.
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	public ReliableFileOutputStream(File file, boolean append) throws IOException {
-		this(ReliableFile.getReliableFile(file), append);
-	}
-
-	/**
-	 * Constructs a new ReliableFileOutputStream on the file named <code>name</code>. If
-	 * the file exists, it is written over.  See the constructor which can append to
-	 * the file if so desired.
-	 * The <code>name</code> may be absolute or relative
-	 * to the System property <code>"user.dir"</code>.
-	 *
-	 * @param		name	the file on which to stream writes.
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	public ReliableFileOutputStream(String name) throws IOException {
-		this(ReliableFile.getReliableFile(name), false);
-	}
-
-	/**
-	 * Constructs a new ReliableFileOutputStream on the file named <code>name</code>.
-	 * The <code>name</code> may be absolute or relative
-	 * to the System property <code>"user.dir"</code>.
-	 *
-	 * @param		name	the file on which to stream writes.
-	 * @param		append		a boolean indicating whether or not to append to an existing file.
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	public ReliableFileOutputStream(String name, boolean append) throws IOException {
-		this(ReliableFile.getReliableFile(name), append);
-	}
-
-	/**
-	 * Private constructor used by other constructors.
-	 *
-	 * @param		reliable		the ReliableFile on which to read.
-	 * @param		append		a boolean indicating whether or not to append to an existing file.
-	 * @exception 	java.io.IOException If an error occurs opening the file.
-	 */
-	private ReliableFileOutputStream(ReliableFile reliable, boolean append) throws IOException {
-		super(reliable.getOutputStream(append, ReliableFile.GENERATION_LATEST));
-
-		this.reliable = reliable;
-		outputOpen = true;
-		if (append)
-			crc = reliable.getFileChecksum();
-		else
-			crc = reliable.getChecksumCalculator();
-	}
-
-	/**
-	 * Closes this output stream and releases any system resources
-	 * associated with this stream. The general contract of <code>close</code>
-	 * is that it closes the output stream. A closed stream cannot perform
-	 * output operations and cannot be reopened.
-	 *
-	 * @exception 	java.io.IOException If an error occurs closing the file.
-	 */
-	public synchronized void close() throws IOException {
-		closeIntermediateFile();
-		reliable.closeOutputFile(crc);
-		// if the previouse closeOutpuFile() throws exception,
-		//  we don't null out reliable to give another opportunity
-		//  to rename the file.
-		reliable = null;
-	}
-
-	public File closeIntermediateFile() throws IOException {
-		if (reliable == null)
-			throw new IOException("ReliableFile stream not open"); //$NON-NLS-1$
-		if (outputOpen) {
-			// tag on our signature and checksum
-			reliable.writeChecksumSignature(out, crc);
-			out.flush();
-			try {
-				((FileOutputStream) out).getFD().sync();
-			} catch (IOException e) {
-				// just ignore this Exception
-				//Debug
-				e.printStackTrace();
-			}
-			out.close();
-			outputOpen = false;
-		}
-		return reliable.getOutputFile();
-	}
-
-	/**
-	 * Override default FilterOutputStream method.
-	 * @see FilterOutputStream#write(byte[])
-	 */
-	public void write(byte[] b) throws IOException {
-		this.write(b, 0, b.length);
-	}
-
-	/**
-	 * Override default FilterOutputStream method.
-	 * @see FilterOutputStream#write(byte[], int, int)
-	 */
-	public void write(byte[] b, int off, int len) throws IOException {
-		out.write(b, off, len);
-		crc.update(b, off, len);
-	}
-
-	/**
-	 * Override default FilterOutputStream method.
-	 * @see FilterOutputStream#write(int)
-	 */
-	public void write(int b) throws IOException {
-		out.write(b);
-		crc.update((byte) b);
-	}
-
-	public void abort() {
-		if (reliable == null)
-			return;
-		if (outputOpen) {
-			try {
-				out.close();
-			} catch (IOException e) {/*ignore*/
-			}
-			outputOpen = false;
-		}
-		reliable.abortOutputFile();
-		reliable = null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLog.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLog.java
deleted file mode 100644
index 123894a..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLog.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.log;
-
-import java.io.*;
-import org.osgi.framework.FrameworkEvent;
-
-/**
- * The FramworkLog interface.  A FrameworkLog implementation is provided by the
- * FrameworkAdaptor and used by the Framework to log any error messages and
- * FrameworkEvents of type ERROR.  The FrameworkLog may persist the log messages 
- * to the filesystem or allow other ways of accessing the log information.
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface FrameworkLog {
-	/**
-	 * A service lookup constant (value "performance") indicating an 
-	 * implementation of the logging service that logs performance events. 
-	 * Create a filter with this property set to <code>"true"</code> in order to 
-	 * obtain a performance log.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String SERVICE_PERFORMANCE = "performance"; //$NON-NLS-1$
-
-	/**
-	 * Logs the information from a FrameworkEvent to the FrameworkLog.
-	 * @param frameworkEvent The FrameworkEvent to log.
-	 */
-	public void log(FrameworkEvent frameworkEvent);
-
-	/**
-	 * Logs the FrameworkLogEntry to the FrameworkLog
-	 * @param logEntry The entry to log.
-	 */
-	public void log(FrameworkLogEntry logEntry);
-
-	/**
-	 * Sets the current Writer used to log messages to the specified
-	 * newWriter.  If append is set to true then the content
-	 * of the current Writer will be appended to the new Writer 
-	 * if possible.
-	 * @param newWriter The Writer to use for logging messages. 
-	 * @param append Indicates whether the content of the current Writer
-	 * used for logging messages should be appended to the end of the new 
-	 * Writer.
-	 */
-	public void setWriter(Writer newWriter, boolean append);
-
-	/** 
-	 * Sets the current File used to log messages to a FileWriter
-	 * using the specified File.  If append is set to true then the 
-	 * content of the current Writer will be appended to the 
-	 * new File if possible.
-	 * @param newFile The File to create a new FileWriter which will be
-	 * used for logging messages.
-	 * @param append Indicates whether the content of the current Writer
-	 * used for logging messages should be appended to the end of the new 
-	 * File.
-	 * @throws IOException if any problem occurs while constructing a
-	 * FileWriter from the newFile.  If this exception is thrown the 
-	 * FrameworkLog will not be effected and will continue to use the 
-	 * current Writer to log messages.
-	 */
-	public void setFile(File newFile, boolean append) throws IOException;
-
-	/**
-	 * Returns the log File if it is set, otherwise null is returned.
-	 * @return the log File if it is set, otherwise null is returned.
-	 */
-	public File getFile();
-
-	/**
-	 * Sets the console log option.  If this is set then all logs will be
-	 * logged to System.out as well as the current Writer.
-	 * @param consoleLog indicates whether to log to System.out
-	 */
-	public void setConsoleLog(boolean consoleLog);
-
-	/**
-	 * Closes the FrameworkLog.  After the FrameworkLog is closed messages may
-	 * no longer be logged to it.
-	 */
-	public void close();
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLogEntry.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLogEntry.java
deleted file mode 100644
index d64a422..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLogEntry.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.log;
-
-/**
- * A framework log entry used to log information to a FrameworkLog
- * @since 3.1
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class FrameworkLogEntry {
-	/**
-	 * Severity constant (value 0) indicating this log entry represents the nominal case.
-	 * @see #getSeverity()
-	 * @since 3.2
-	 */
-	public static final int OK = 0;
-
-	/** 
-	 * Severity constant (bit mask, value 1) indicating this log entry is informational only.
-	 * @see #getSeverity()
-	 * @since 3.2
-	 */
-	public static final int INFO = 0x01;
-
-	/** 
-	 * Severity constant (bit mask, value 2) indicating this log entry represents a warning.
-	 * @see #getSeverity()
-	 * @since 3.2
-	 */
-	public static final int WARNING = 0x02;
-
-	/** 
-	 * Severity constant (bit mask, value 4) indicating this log entry represents an error.
-	 * @see #getSeverity()
-	 * @since 3.2
-	 */
-	public static final int ERROR = 0x04;
-
-	/**
-	 * Status type severity (bit mask, value 8) indicating this log entry represents a cancellation.
-	 * @see #getSeverity()
-	 * @since 3.2
-	 */
-	public static final int CANCEL = 0x08;
-
-	// It would be nice to rename some of these fields but we cannot change the getter method
-	// names without breaking clients.  Changing only the field names would be confusing.
-	//TODO "entry" has another meaning here - title, summary, tag are better names 
-	private String entry;
-	private String message;
-	//TODO get rid of this
-	private int stackCode;
-	//TODO: use "reason" or "cause" instead
-	private Throwable throwable;
-	private FrameworkLogEntry[] children;
-	private int severity = 0;
-	private int bundleCode = 0;
-
-	/**
-	 * Constructs a new FrameworkLogEntry
-	 * @param entry the entry
-	 * @param message the message
-	 * @param stackCode the stack code
-	 * @param throwable the throwable
-	 * @param children the children
-	 */
-	public FrameworkLogEntry(String entry, String message, int stackCode, Throwable throwable, FrameworkLogEntry[] children) {
-		this.entry = entry;
-		this.message = message;
-		this.stackCode = stackCode;
-		this.throwable = throwable;
-		this.children = children;
-	}
-
-	/**
-	 * Constructs a new FrameworkLogEntry
-	 * @param entry the entry
-	 * @param severity the severity
-	 * @param bundleCode the bundle code
-	 * @param message the message
-	 * @param stackCode the stack code
-	 * @param throwable the throwable
-	 * @param children the children
-	 * @since 3.2
-	 */
-	public FrameworkLogEntry(String entry, int severity, int bundleCode, String message, int stackCode, Throwable throwable, FrameworkLogEntry[] children) {
-		this.entry = entry;
-		this.message = message;
-		this.stackCode = stackCode;
-		this.throwable = throwable;
-		this.children = children;
-		this.severity = severity;
-		this.bundleCode = bundleCode;
-	}
-
-	/**
-	 * 
-	 * @return Returns the children.
-	 */
-	public FrameworkLogEntry[] getChildren() {
-		return children;
-	}
-
-	/**
-	 * @return Returns the entry.
-	 */
-	public String getEntry() {
-		return entry;
-	}
-
-	/**
-	 * @return Returns the message.
-	 */
-	public String getMessage() {
-		return message;
-	}
-
-	/**
-	 * @return Returns the stackCode.
-	 */
-	public int getStackCode() {
-		return stackCode;
-	}
-
-	/**
-	 * @return Returns the throwable.
-	 */
-	public Throwable getThrowable() {
-		return throwable;
-	}
-
-	/**
-	 * 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-entry log 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>
-	 * @since 3.2
-	 */
-	public int getSeverity() {
-		return severity;
-	}
-
-	/**
-	 * Returns the bundle-specific code describing the outcome.
-	 *
-	 * @return bundle-specific code
-	 * @since 3.2
-	 */
-	public int getBundleCode() {
-		return bundleCode;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/package.html b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/package.html
deleted file mode 100644
index a4db43c..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/package.html
+++ /dev/null
@@ -1,17 +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 the <tt>FrameworkLog</tt> service.
-<h2>
-Package Specification</h2>
-This package specifies the API for the <tt>FrameworkLog</tt> service.
-<p>
-Clients needing to log entries to the eclipse log will likely be interested 
-in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/util/SecureAction.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/util/SecureAction.java
deleted file mode 100644
index 7a25fb5..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/util/SecureAction.java
+++ /dev/null
@@ -1,443 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.util;
-
-import java.io.*;
-import java.net.*;
-import java.security.*;
-import java.util.Properties;
-import java.util.zip.ZipException;
-import java.util.zip.ZipFile;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Utility class to execute common privileged code.
- * @since 3.1
- */
-public class SecureAction {
-	// make sure we use the correct controlContext;
-	private AccessControlContext controlContext;
-
-	// This ClassLoader is used in loadSystemClass if System.getClassLoader() returns null
-	static final ClassLoader bootClassLoader = (ClassLoader) AccessController.doPrivileged(new PrivilegedAction() {
-		public Object run() {
-			return new ClassLoader(Object.class.getClassLoader()) { /* boot class loader */};
-		}
-	});
-
-	/*
-	 * Package privaet constructor a new SecureAction object.  
-	 * The constructed SecureAction object uses the caller's AccessControlContext 
-	 * to perform security checks 
-	 */
-	SecureAction() {
-		// save the control context to be used.
-		this.controlContext = AccessController.getContext();
-	}
-
-	/**
-	 * Creates a privileged action that can be used to construct a SecureAction object.
-	 * The recommended way to construct a SecureAction object is the following: <p>
-	 * <pre>
-	 * SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-	 * </pre>
-	 * @return a privileged action object that can be used to construct a SecureAction object.
-	 */
-	public static PrivilegedAction createSecureAction() {
-		return new PrivilegedAction() {
-			public Object run() {
-				return new SecureAction();
-			}
-		};
-	}
-
-	/**
-	 * Returns a system property.  Same as calling
-	 * System.getProperty(String).
-	 * @param property the property key.
-	 * @return the value of the property or null if it does not exist.
-	 */
-	public String getProperty(final String property) {
-		if (System.getSecurityManager() == null)
-			return FrameworkProperties.getProperty(property);
-		return (String) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return FrameworkProperties.getProperty(property);
-			}
-		}, controlContext);
-	}
-
-	/**
-	 * Returns a system property.  Same as calling
-	 * System.getProperty(String,String).
-	 * @param property the property key.
-	 * @param def the default value if the property key does not exist.
-	 * @return the value of the property or the def value if the property
-	 * does not exist.
-	 */
-	public String getProperty(final String property, final String def) {
-		if (System.getSecurityManager() == null)
-			return FrameworkProperties.getProperty(property, def);
-		return (String) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return FrameworkProperties.getProperty(property, def);
-			}
-		}, controlContext);
-	}
-
-	/**
-	 * Returns the system properties.  Same as calling
-	 * System.getProperties().
-	 * @return the system properties.
-	 */
-	public Properties getProperties() {
-		if (System.getSecurityManager() == null)
-			return FrameworkProperties.getProperties();
-		return (Properties) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return FrameworkProperties.getProperties();
-			}
-		}, controlContext);
-	}
-
-	/**
-	 * Creates a FileInputStream from a File.  Same as calling
-	 * new FileInputStream(File).
-	 * @param file the File to craete a FileInputStream from.
-	 * @return The FileInputStream.
-	 * @throws FileNotFoundException if the File does not exist.
-	 */
-	public FileInputStream getFileInputStream(final File file) throws FileNotFoundException {
-		if (System.getSecurityManager() == null)
-			return new FileInputStream(file);
-		try {
-			return (FileInputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws FileNotFoundException {
-					return new FileInputStream(file);
-				}
-			}, controlContext);
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof FileNotFoundException)
-				throw (FileNotFoundException) e.getException();
-			throw (RuntimeException) e.getException();
-		}
-	}
-
-	/**
-	 * Creates a FileInputStream from a File.  Same as calling
-	 * new FileOutputStream(File,boolean).
-	 * @param file the File to create a FileOutputStream from.
-	 * @param append indicates if the OutputStream should append content.
-	 * @return The FileOutputStream.
-	 * @throws FileNotFoundException if the File does not exist.
-	 */
-	public FileOutputStream getFileOutputStream(final File file, final boolean append) throws FileNotFoundException {
-		if (System.getSecurityManager() == null)
-			return new FileOutputStream(file.getAbsolutePath(), append);
-		try {
-			return (FileOutputStream) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws FileNotFoundException {
-					return new FileOutputStream(file.getAbsolutePath(), append);
-				}
-			}, controlContext);
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof FileNotFoundException)
-				throw (FileNotFoundException) e.getException();
-			throw (RuntimeException) e.getException();
-		}
-	}
-
-	/**
-	 * Returns the length of a file.  Same as calling
-	 * file.length().
-	 * @param file a file object
-	 * @return the length of a file.
-	 */
-	public long length(final File file) {
-		if (System.getSecurityManager() == null)
-			return file.length();
-		return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return new Long(file.length());
-			}
-		}, controlContext)).longValue();
-	}
-
-	/**
-	 * Returns true if a file exists, otherwise false is returned.  Same as calling
-	 * file.exists().
-	 * @param file a file object
-	 * @return true if a file exists, otherwise false
-	 */
-	public boolean exists(final File file) {
-		if (System.getSecurityManager() == null)
-			return file.exists();
-		return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return file.exists() ? Boolean.TRUE : Boolean.FALSE;
-			}
-		}, controlContext)).booleanValue();
-	}
-
-	/**
-	 * Returns true if a file is a directory, otherwise false is returned.  Same as calling
-	 * file.isDirectory().
-	 * @param file a file object
-	 * @return true if a file is a directory, otherwise false
-	 */
-	public boolean isDirectory(final File file) {
-		if (System.getSecurityManager() == null)
-			return file.isDirectory();
-		return ((Boolean) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return file.isDirectory() ? Boolean.TRUE : Boolean.FALSE;
-			}
-		}, controlContext)).booleanValue();
-	}
-
-	/**
-	 * Returns a file's last modified stamp.  Same as calling
-	 * file.lastModified().
-	 * @param file a file object
-	 * @return a file's last modified stamp.
-	 */
-	public long lastModified(final File file) {
-		if (System.getSecurityManager() == null)
-			return file.lastModified();
-		return ((Long) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return new Long(file.lastModified());
-			}
-		}, controlContext)).longValue();
-	}
-
-	/**
-	 * Returns a file's list.  Same as calling
-	 * file.list().
-	 * @param file a file object
-	 * @return a file's list.
-	 */
-	public String[] list(final File file) {
-		if (System.getSecurityManager() == null)
-			return file.list();
-		return (String[]) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return file.list();
-			}
-		}, controlContext);
-	}
-
-	/**
-	 * Returns a ZipFile. Same as calling
-	 * new ZipFile(file)
-	 * @param file the file to get a ZipFile for
-	 * @return a ZipFile
-	 * @throws IOException if an error occured
-	 */
-	public ZipFile getZipFile(final File file) throws IOException {
-		try {
-			if (System.getSecurityManager() == null)
-				return new ZipFile(file);
-			try {
-				return (ZipFile) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-					public Object run() throws IOException {
-						return new ZipFile(file);
-					}
-				}, controlContext);
-			} catch (PrivilegedActionException e) {
-				if (e.getException() instanceof IOException)
-					throw (IOException) e.getException();
-				throw (RuntimeException) e.getException();
-			}
-		} catch (ZipException e) {
-			ZipException zipNameException = new ZipException("Exception in opening zip file: " + file.getPath()); //$NON-NLS-1$
-			zipNameException.initCause(e);
-			throw zipNameException;
-		} catch (IOException e) {
-			IOException fileNameException = new IOException("Exception in opening zip file: " + file.getPath()); //$NON-NLS-1$
-			fileNameException.initCause(e);
-			throw fileNameException;
-		}
-	}
-
-	/**
-	 * Gets a URL. Same a calling
-	 * {@link URL#URL(java.lang.String, java.lang.String, int, java.lang.String, java.net.URLStreamHandler)}
-	 * @param protocol the protocol
-	 * @param host the host
-	 * @param port the port
-	 * @param file the file
-	 * @param handler the URLStreamHandler
-	 * @return a URL
-	 * @throws MalformedURLException
-	 */
-	public URL getURL(final String protocol, final String host, final int port, final String file, final URLStreamHandler handler) throws MalformedURLException {
-		if (System.getSecurityManager() == null)
-			return new URL(protocol, host, port, file, handler);
-		try {
-			return (URL) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws MalformedURLException {
-					return new URL(protocol, host, port, file, handler);
-				}
-			}, controlContext);
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof MalformedURLException)
-				throw (MalformedURLException) e.getException();
-			throw (RuntimeException) e.getException();
-		}
-	}
-
-	/**
-	 * Creates a new Thread from a Runnable.  Same as calling
-	 * new Thread(target,name).setContextClassLoader(contextLoader).
-	 * @param target the Runnable to create the Thread from.
-	 * @param name The name of the Thread.
-	 * @param contextLoader the context class loader for the thread
-	 * @return The new Thread
-	 */
-	public Thread createThread(final Runnable target, final String name, final ClassLoader contextLoader) {
-		if (System.getSecurityManager() == null)
-			return createThread0(target, name, contextLoader);
-		return (Thread) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return createThread0(target, name, contextLoader);
-			}
-		}, controlContext);
-	}
-
-	Thread createThread0(Runnable target, String name, ClassLoader contextLoader) {
-		Thread result = new Thread(target, name);
-		if (contextLoader != null)
-			result.setContextClassLoader(contextLoader);
-		return result;
-	}
-
-	/**
-	 * Gets a service object. Same as calling
-	 * context.getService(reference)
-	 * @param reference the ServiceReference
-	 * @param context the BundleContext
-	 * @return a service object
-	 */
-	public Object getService(final ServiceReference reference, final BundleContext context) {
-		if (System.getSecurityManager() == null)
-			return context.getService(reference);
-		return AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return context.getService(reference);
-			}
-		}, controlContext);
-	}
-
-	/**
-	 * Returns a Class. Same as calling
-	 * Class.forName(name)
-	 * @param name the name of the class.
-	 * @return a Class
-	 * @throws ClassNotFoundException
-	 */
-	public Class forName(final String name) throws ClassNotFoundException {
-		if (System.getSecurityManager() == null)
-			return Class.forName(name);
-		try {
-			return (Class) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws Exception {
-					return Class.forName(name);
-				}
-			}, controlContext);
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof ClassNotFoundException)
-				throw (ClassNotFoundException) e.getException();
-			throw (RuntimeException) e.getException();
-		}
-	}
-
-	/**
-	 * Returns a Class.
-	 * Tries to load a class from the System ClassLoader or if that doesn't exist tries the boot ClassLoader
-	 * @param name the name of the class.
-	 * @return a Class
-	 * @throws ClassNotFoundException
-	 */
-	public Class loadSystemClass(final String name) throws ClassNotFoundException {
-		if (System.getSecurityManager() == null) {
-			ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
-			return (systemClassLoader != null) ? systemClassLoader.loadClass(name) : bootClassLoader.loadClass(name);
-		}
-		try {
-			return (Class) AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws Exception {
-					ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
-					return (systemClassLoader != null) ? systemClassLoader.loadClass(name) : bootClassLoader.loadClass(name);
-				}
-			}, controlContext);
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof ClassNotFoundException)
-				throw (ClassNotFoundException) e.getException();
-			throw (RuntimeException) e.getException();
-		}
-	}
-
-	/**
-	 * Opens a ServiceTracker. Same as calling tracker.open()
-	 * @param tracker the ServiceTracker to open.
-	 */
-	public void open(final ServiceTracker tracker) {
-		if (System.getSecurityManager() == null) {
-			tracker.open();
-			return;
-		}
-		AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				tracker.open();
-				return null;
-			}
-		}, controlContext);
-	}
-
-	/**
-	 * Starts a bundle.
-	 * @param bundle the bundle to start
-	 * @param options the start options
-	 * @throws BundleException
-	 */
-	public void start(final Bundle bundle, final int options) throws BundleException {
-		if (System.getSecurityManager() == null) {
-			bundle.start(options);
-			return;
-		}
-		try {
-			AccessController.doPrivileged(new PrivilegedExceptionAction() {
-				public Object run() throws BundleException {
-					bundle.start(options);
-					return null;
-				}
-			}, controlContext);
-			return;
-		} catch (PrivilegedActionException e) {
-			if (e.getException() instanceof BundleException)
-				throw (BundleException) e.getException();
-			throw (RuntimeException) e.getException();
-		}
-	}
-
-	/**
-	 * Starts a bundle
-	 * @param bundle
-	 * @throws BundleException
-	 */
-	public void start(final Bundle bundle) throws BundleException {
-		start(bundle, 0);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/Location.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/Location.java
deleted file mode 100644
index 8ae3658..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/Location.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.datalocation;
-
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * A Location represents a URL which may have a default value, may be read only, may 
- * or may not have a current value and may be cascaded on to a parent location.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface Location {
-
-	/**
-	 * Constant which defines the filter string for acquiring the service which
-	 * specifies the instance location.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String INSTANCE_FILTER = "(&(objectClass=" + Location.class.getName() + ")(type=osgi.instance.area))"; //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * Constant which defines the filter string for acquiring the service which
-	 * specifies the install location.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String INSTALL_FILTER = "(&(objectClass=" + Location.class.getName() + ")(type=osgi.install.area))"; //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * Constant which defines the filter string for acquiring the service which
-	 * specifies the configuration location.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String CONFIGURATION_FILTER = "(&(objectClass=" + Location.class.getName() + ")(type=osgi.configuration.area))"; //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * Constant which defines the filter string for acquiring the service which
-	 * specifies the user location.
-	 * 
-	 * @since 3.2
-	 */
-	public static final String USER_FILTER = "(&(objectClass=" + Location.class.getName() + ")(type=osgi.user.area))"; //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * Constant which defines the filter string for acquiring the service which
-	 * specifies the eclipse home location.
-	 * 
-	 * @since 3.4
-	 */
-	public static final String ECLIPSE_HOME_FILTER = "(&(objectClass=" + Location.class.getName() + ")(type=eclipse.home.location))"; //$NON-NLS-1$ //$NON-NLS-2$
-
-	/**
-	 * Returns <code>true</code> if this location allows a default value to be assigned
-	 * and <code>false</code> otherwise.
-	 * 
-	 * @return whether or not this location can have a default value assigned
-	 */
-	public boolean allowsDefault();
-
-	/**
-	 * Returns the default value of this location if any.  If no default is available then
-	 * <code>null</code> is returned. Note that even locations which allow defaults may still
-	 * return <code>null</code>.
-	 * 
-	 * @return the default value for this location or <code>null</code>
-	 */
-	public URL getDefault();
-
-	/**
-	 * Returns the parent of this location or <code>null</code> if none is available.
-	 * 
-	 * @return the parent of this location or <code>null</code>
-	 */
-	public Location getParentLocation();
-
-	/**
-	 * Returns the actual {@link URL} of this location.  If the location's value has been set, 
-	 * that value is returned.  If the value is not set and the location allows defaults, 
-	 * the value is set to the default and returned.  In all other cases <code>null</code>
-	 * is returned.
-	 * 
-	 * @return the URL for this location or <code>null</code> if none
-	 */
-	public URL getURL();
-
-	/**
-	 * Returns <code>true</code> if this location has a value and <code>false</code>
-	 * otherwise.
-	 * 
-	 * @return boolean value indicating whether or not the value is set
-	 */
-	public boolean isSet();
-
-	/**
-	 * Returns <code>true</code> if this location represents a read only location and
-	 * <code>false</code> otherwise.  The read only character
-	 * of a location is not in enforced in any way but rather expresses the intention of the
-	 * location's creator.
-	 * 
-	 * @return boolean value indicating whether the location is read only
-	 */
-	public boolean isReadOnly();
-
-	/**
-	 * Sets and optionally locks the location's value to the given {@link URL}.  If the location 
-	 * already has a value an exception is thrown.  If locking is requested and fails, <code>false</code>
-	 * is returned and the {@link URL} of this location is not set.
-	 * 
-	 * @param value the value of this location
-	 * @param lock whether or not to lock this location 
-	 * @return whether or not the location was successfully set and, if requested, locked.
-	 * @throws IllegalStateException if the location's value is already set
-	 * @deprecated use {@link #set(URL, boolean)} instead.
-	 */
-	public boolean setURL(URL value, boolean lock) throws IllegalStateException;
-
-	/**
-	 * Sets and optionally locks the location's value to the given {@link URL}.  If the location 
-	 * already has a value an exception is thrown.  If locking is requested and fails, <code>false</code>
-	 * is returned and the {@link URL} of this location is not set.
-	 * 
-	 * @param value the value of this location
-	 * @param lock whether or not to lock this location 
-	 * @return whether or not the location was successfully set and, if requested, locked.
-	 * @throws IllegalStateException if the location's value is already set
-	 * @throws IOException if there was an unexpected problem while acquiring the lock
-	 * @since 3.4
-	 */
-	public boolean set(URL value, boolean lock) throws IllegalStateException, IOException;
-
-	/**
-	 * Sets and optionally locks the location's value to the given {@link URL} using the given lock file.  If the location 
-	 * already has a value an exception is thrown.  If locking is requested and fails, <code>false</code>
-	 * is returned and the {@link URL} of this location is not set.
-	 * 
-	 * @param value the value of this location
-	 * @param lock whether or not to lock this location 
-	 * @param lockFilePath the path to the lock file.  This path will be used to establish locks on this location.
-	 * The path may be an absolute path or it may be relative to the given URL.  If a <code>null</code>
-	 * value is used then a default lock path will be used for this location.
-	 * @return whether or not the location was successfully set and, if requested, locked.
-	 * @throws IllegalStateException if the location's value is already set
-	 * @throws IOException if there was an unexpected problem while acquiring the lock
-	 * @since 3.5
-	 */
-	public boolean set(URL value, boolean lock, String lockFilePath) throws IllegalStateException, IOException;
-
-	/**
-	 * Attempts to lock this location with a canonical locking mechanism and return
-	 * <code>true</code> if the lock could be acquired.  Not all locations can be 
-	 * locked.
-	 * <p>
-	 * Locking a location is advisory only.  That is, it does not prevent other applications from 
-	 * modifying the same location
-	 * </p>
-	 * @return true if the lock could be acquired; otherwise false is returned
-	 * 
-	 * @exception IOException if there was an unexpected problem while acquiring the lock
-	 */
-	public boolean lock() throws IOException;
-
-	/**
-	 * Releases the lock on this location.  If the location is not already locked, no action 
-	 * is taken.
-	 */
-	public void release();
-
-	/**
-	 * Returns <code>true</code> if this location is locked and <code>false</code>
-	 * otherwise.
-	 * @return boolean value indicating whether or not this location is locked
-	 * @throws IOException if there was an unexpected problem reading the lock
-	 * @since 3.4
-	 */
-	public boolean isLocked() throws IOException;
-
-	/**
-	 * Constructs a new location.
-	 * @param parent the parent location.  A <code>null</code> value is allowed.
-	 * @param defaultValue the default value of the location. A <code>null</code> value is allowed.
-	 * @param readonly true if the location is read-only.
-	 * @return a new location.
-	 * @since 3.4
-	 */
-	public Location createLocation(Location parent, URL defaultValue, boolean readonly);
-
-	/**
-	 * Returns a URL to the specified path within this location.  The path 
-	 * of the returned URL may not exist yet.  It is the responsibility of the 
-	 * client to create the content of the data area returned if it does not exist.
-	 * <p>
-	 * This method can be used to obtain a private area within the given location. 
-	 * For example use the symbolic name of a bundle to obtain a data area specific 
-	 * to that bundle.
-	 * </p>
-	 * <p>
-	 * Clients should check if the location is read only before writing anything
-	 * to the returned data area.  An <code>IOException</code> will be thrown if
-	 * this method is called and the location URL has not been set and there is
-	 * no default value for this location.
-	 * </p>
-	 * 
-	 * @param path the name of the path to get from this location
-	 * @return the URL to the data area with the specified path.
-	 * @throws IOException if the location URL is not already set
-	 * @since 3.6
-	 */
-	public URL getDataArea(String path) throws IOException;
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/package.html b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/package.html
deleted file mode 100644
index 35cb61c..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/package.html
+++ /dev/null
@@ -1,17 +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 the <tt>Location</tt> service.
-<h2>
-Package Specification</h2>
-This package specifies the API for the <tt>Location</tt> service.
-<p>
-Clients accessing the configuration, install, instance or user locations will likely be interested 
-in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptions.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptions.java
deleted file mode 100644
index 9e6b3bd..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptions.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.debug;
-
-import java.io.File;
-import java.util.Map;
-
-/**
- * Used to get debug options settings and creating a new {@link DebugTrace} instance for
- * a bundle to use for dynamic tracing.
- * 
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- * @since 3.1
- */
-public interface DebugOptions {
-	/**
-	 * The service property (named &quot;listener.symbolic.name&quot;) which specifies 
-	 * the bundle symbolic name of a {@link DebugOptionsListener} service.
-	 * 
-	 * @since 3.5
-	 */
-	public static String LISTENER_SYMBOLICNAME = "listener.symbolic.name"; //$NON-NLS-1$
-
-	/**
-	 * Returns the identified option as a boolean value.  The specified
-	 * defaultValue is returned if no such option is found or if debug is not enabled.   
-	 * 
-	 * <p>
-	 * Options are specified in the general form <i>&lt;Bundle-SymbolicName&gt;/&lt;option-path&gt;</i>.  
-	 * For example, <code>org.eclipse.core.runtime/debug</code>
-	 * </p>
-	 * 
-	 * @param option the name of the option to lookup
-	 * @param defaultValue the value to return if no such option is found
-	 * @return the value of the requested debug option or the
-	 * defaultValue if no such option is found.
-	 */
-	public abstract boolean getBooleanOption(String option, boolean defaultValue);
-
-	/**
-	 * Returns the identified option.  A <code>null</code> value
-	 * is returned if no such option is found or if debug is not enabled.
-	 * 
-	 * <p>
-	 * Options are specified
-	 * in the general form <i>&lt;Bundle-SymbolicName&gt;/&lt;option-path&gt;</i>.  
-	 * For example, <code>org.eclipse.core.runtime/debug</code>
-	 *</p>
-	 * 
-	 * @param option the name of the option to lookup
-	 * @return the value of the requested debug option or <code>null</code>
-	 */
-	public abstract String getOption(String option);
-
-	/**
-	 * Returns the identified option.  The specified defaultValue is 
-	 * returned if no such option is found or if debug is not enabled.
-	 * 
-	 * <p>
-	 * Options are specified
-	 * in the general form <i>&lt;Bundle-SymbolicName&gt;/&lt;option-path&gt;</i>.  
-	 * For example, <code>org.eclipse.core.runtime/debug</code>
-	 * </p>
-	 * 
-	 * @param option the name of the option to lookup
-	 * @param defaultValue the value to return if no such option is found
-	 * @return the value of the requested debug option or the
-	 * defaultValue if no such option is found.
-	 */
-	public abstract String getOption(String option, String defaultValue);
-
-	/**
-	 * Returns the identified option as an int value.  The specified
-	 * defaultValue is returned if no such option is found or if a 
-	 * NumberFormatException is thrown while converting the option value 
-	 * to an integer or if debug is not enabled.
-	 * 
-	 * <p>
-	 * Options are specified
-	 * in the general form <i>&lt;Bundle-SymbolicName&gt;/&lt;option-path&gt;</i>.  
-	 * For example, <code>org.eclipse.core.runtime/debug</code>
-	 * </p>
-	 * 
-	 * @param option the name of the option to lookup
-	 * @param defaultValue the value to return if no such option is found
-	 * @return the value of the requested debug option or the
-	 * defaultValue if no such option is found.
-	 */
-	public abstract int getIntegerOption(String option, int defaultValue);
-
-	/**
-	 * Returns a snapshot of the current options.  All 
-	 * keys and values are of type <code>String</code>.  If no
-	 * options are set then an empty map is returned.
-	 * <p>
-	 * If debug is not enabled then the snapshot of the current disabled 
-	 * values is returned. See {@link DebugOptions#setDebugEnabled(boolean)}.
-	 * </p>
-	 * @return a snapshot of the current options.
-	 * @since 3.6
-	 */
-	public Map /*<String, String>*/getOptions();
-
-	/**
-	 * Sets the identified option to the identified value.  If debug is 
-	 * not enabled then the specified option is not changed.
-	 * @param option the name of the option to set
-	 * @param value the value of the option to set
-	 */
-	public abstract void setOption(String option, String value);
-
-	/**
-	 * Sets the current option key/value pairs to the specified options.
-	 * The specified map replaces all keys and values of the current debug options.
-	 * An <code>IllegalArgumentException</code> is thrown if any key or value 
-	 * in the specified map is not of type <code>String</code>.
-	 * <p>
-	 * If debug is not enabled then the specified options are saved as
-	 * the disabled values and no notifications will be sent. 
-	 * See {@link DebugOptions#setDebugEnabled(boolean)}.
-	 * If debug is enabled then notifications will be sent to the 
-	 * listeners which have options that have been changed, added or removed.
-	 * </p>
-
-	 * @param options the new set of options
-	 * @since 3.6
-	 */
-	public abstract void setOptions(Map /*<String, String>*/options);
-
-	/**
-	 * Removes the identified option.  If debug is not enabled then
-	 * the specified option is not removed.
-	 * @param option the name of the option to remove
-	 * @since 3.5
-	 */
-	public abstract void removeOption(String option);
-
-	/**
-	 * Returns true if debugging/tracing is currently enabled.
-	 * @return true if debugging/tracing is currently enabled;  Otherwise false is returned.
-	 * @since 3.5
-	 */
-	public abstract boolean isDebugEnabled();
-
-	/**
-	 * Enables or disables debugging/tracing.
-	 * <p>
-	 * When debug is disabled all debug options are unset.
-	 * When disabling debug the current debug option values are
-	 * stored in memory as disabled values.  If debug is re-enabled the
-	 * disabled values will be set back and enabled.  The disabled values 
-	 * are only stored in memory and if the framework is restarted then 
-	 * the disabled option values will be lost.
-	 * </p>
-	 * @param value If <code>true</code>, debug is enabled, otherwise
-	 * debug is disabled.
-	 * @since 3.5
-	 */
-	public abstract void setDebugEnabled(boolean value);
-
-	/** 
-	 * Sets the current file used to trace messages to.
-	 * 
-	 * @param newFile The file to be used for tracing messages.
-	 * @since 3.5
-	 */
-	public abstract void setFile(File newFile);
-
-	/**
-	 * Returns the trace file if it is set, otherwise <code>null</code> is returned.
-	 * 
-	 * @return the trace file if it is set, otherwise <code>null</code> is returned.
-	 * @since 3.5
-	 */
-	public abstract File getFile();
-
-	/**
-	 * Creates a new <code>DebugTrace</code> instance for the specified bundle symbolic name.
-	 * If a <code>DebugTrace</code> object has already been created for the specified symbolic
-	 * name then the existing <code>DebugTrace</code> object will be returned.
-	 * 
-	 * The class name, method name, and line number of any callers to the <code>DebugTrace</code>
-	 * API will automatically be determined by parsing the stack trace of the executing thread.
-	 * These attributes will be set based on the first caller of this API. 
-	 * 
-	 * @param bundleSymbolicName The symbolic name of the bundle that is requesting a
-	 * new instance of a <code>DebugTrace</code>.   
-	 * @return A new or existing <code>DebugTrace</code> object for the specified plug-in ID
-	 * @since 3.5
-	 */
-	public abstract DebugTrace newDebugTrace(String bundleSymbolicName);
-
-	/**
-	 * Create a new <code>DebugTrace</code> instance for the specified bundle symbolic name.
-	 * If a <code>DebugTrace</code> object has already been created for the specified symbolic
-	 * name then the existing <code>DebugTrace</code> object will be returned.
-	 *
-	 * The class name, method name, and line number of any callers to the <code>DebugTrace</code>
-	 * API will automatically be determined by parsing the stack trace of the executing thread.
-	 * The values of these attributes will be based on the last invocation to the specified traceEntryClass
-	 * found in the parsed stack trace.
-	 *
-	 * @param bundleSymbolicName The symbolic name of the bundle that is requesting a
-	 * new instance of a <code>DebugTrace</code>.
-	 * @param traceEntryClass The class that is being used to abstract tracing calls for a bundle. 
-	 * @return A new or existing <code>DebugTrace</code> object for the specified plug-in ID
-	 * @since 3.5
-	 */
-	public abstract DebugTrace newDebugTrace(String bundleSymbolicName, Class traceEntryClass);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptionsListener.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptionsListener.java
deleted file mode 100644
index ac6ca3c..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptionsListener.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.debug;
-
-import java.util.EventListener;
-
-/**
- * A debug options listener is notified whenever one of its plug-in option-path entries is 
- * changed.  A listener is registered as an OSGi service using the {@link DebugOptions#LISTENER_SYMBOLICNAME}
- * service property to specify the symbolic name of the debug options listener.
- * <p>
- * The {@link DebugOptionsListener#optionsChanged(DebugOptions)} method will automatically 
- * be called upon registration of the debug options listener service.  This allows the 
- * listener to obtain the initial debug options.  This initial call to the listener 
- * will happen even if debug is not enabled at the time of registration 
- * ({@link DebugOptions#isDebugEnabled()} will return false in this case).
- * </p>
- * A debug options listener allows a bundle to cache trace option values in boolean fields for performance
- * and code cleanliness. For example:
- * <pre>
- * public class Activator implements BundleActivator, DebugOptionsListener {
- * 	public static boolean DEBUG = false;
- * 	public static DebugTrace trace;
- * 	
- * 	public void start(BundleContext context) {
- * 		Hashtable props = new Hashtable(4);
- * 		props.put(DebugOptions.LISTENER_SYMBOLICNAME, "com.mycompany.mybundle");
- * 		context.registerService(DebugOptionsListener.class.getName(), this, props);
- * 	}
- * 
- * 	public void optionsChanged(DebugOptions options) {
- * 		if (trace == null)
- * 			trace = options.newDebugTrace("com.mycompany.mybundle");
- * 		DEBUG = options.getBooleanOption("com.mycompany.mybundle/debug", false);
- * 	}
- * 	
- * 	public void doSomeWork() {
- * 		if (DEBUG)
- * 			trace.trace(null, "Doing some work");
- * 	}
- * 	...
- * } 
- * </pre>
- * @since 3.5
- */
-public interface DebugOptionsListener extends EventListener {
-
-	/**
-	 * Notifies this listener that an option-path for its plug-in has changed.
-	 * This method is also called initially by the DebugOptions implementation 
-	 * when the listener is registered as a service.  This allows the listener
-	 * to obtain the initial set of debug options without the need to 
-	 * acquire the debug options service.
-	 * @param options a reference to the DebugOptions
-	 */
-	public void optionsChanged(DebugOptions options);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugTrace.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugTrace.java
deleted file mode 100644
index a6768b7..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugTrace.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.debug;
-
-/**
- * A DebugTrace is used to record debug trace statements, based on the current
- * option settings in a corresponding {@link DebugOptions} class. The trace implementation
- * will automatically insert additional contextual information such as the bundle, class, 
- * and method performing the tracing. 
- * <p>
- * Trace statements may be written to a file, or onto standard output, depending on 
- * how the {@link DebugOptions} is configured.
- * </p>
- * <p>
- * All methods on this class have an optional <code>option</code> argument.
- * When specified, this argument will cause the tracing to be conditional on the value
- * of {@link DebugOptions#getBooleanOption(String, boolean)}, where the bundle's
- * symbolic name will automatically be prepended to the provided option string. For example,
- * if your bundle symbolic name is "com.acme.bundle", and you provide an option argument
- * of "/debug/parser", the trace will only be printed if the option "com.acme.bundle/debug/parser"
- * has a value of "true".
- * </p>
- * <p>
- * Note that the pipe character ("&#124;") is reserved for internal use. If this character 
- * happens to occur in any of the thread name, the option, the message or an Exception
- * message, it will be escaped to the corresponding HTML representation ("&amp&#35;124&#59;").   
- * </p>
- *  
- * @since 3.5
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface DebugTrace {
-
-	/**
-	 * Traces a message for the specified option.
-	 * 
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 * @param message The trace message to display
-	 */
-	public void trace(final String option, final String message);
-
-	/**
-	 * Traces a message and exception for the specified option.
-	 * 
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 * @param message The trace message to display
-	 * @param error The exception to trace
-	 */
-	public void trace(final String option, final String message, final Throwable error);
-
-	/**
-	 * Adds a trace message showing a thread stack dump for the current class and 
-	 * method being executed for the specified option.
-	 *
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 */
-	public void traceDumpStack(final String option);
-
-	/**
-	 * Add a trace message level stating that a method is being executed for the specified option.
-	 * 
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 */
-	public void traceEntry(final String option);
-
-	/**
-	 * Add a trace message level stating that a method with the specified argument 
-	 * values is being executed for the specified option. The result of {@link String#valueOf(Object)} 
-	 * on the methodArgument will be written to the trace file.
-	 * 
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 * @param methodArgument
-	 *            The single argument for the method being executed
-	 */
-	public void traceEntry(final String option, final Object methodArgument);
-
-	/**
-	 * Add a trace message level stating that a method with the specified arguments 
-	 * values is being executed for the specified option. The result of {@link String#valueOf(Object)} 
-	 * on each argument will be written to the trace file.
-	 * 
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 * @param methodArguments
-	 *            A list of object arguments for the method being executed
-	 */
-	public void traceEntry(final String option, final Object[] methodArguments);
-
-	/**
-	 * Add a trace message level stating that a method has completed execution for the specified option.
-	 * 
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 */
-	public void traceExit(final String option);
-
-	/**
-	 * Add a trace message level stating that a method with the specified result value 
-	 * has completed execution for the specified option. The result of {@link String#valueOf(Object)} 
-	 * on the result object will be written to the trace file.
-	 * 
-	 * @param option The name of the boolean option that will control whether the
-	 * trace statement is printed (e.g., "/debug/myComponent"), or <code>null</code>
-	 * @param result The result being returned from the method that was executed
-	 */
-	public void traceExit(final String option, final Object result);
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/package.html b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/package.html
deleted file mode 100644
index 8c32c76..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/package.html
+++ /dev/null
@@ -1,17 +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 the <tt>DebugOptions</tt> service.
-<h2>
-Package Specification</h2>
-This package specifies the API for the <tt>DebugOptions</tt> service.
-<p>
-Clients accessing debug and trace options will likely be interested 
-in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java
deleted file mode 100644
index 4b017cd..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/Constants.java
+++ /dev/null
@@ -1,218 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.environment;
-
-/**
- * Constants used with the {@link EnvironmentInfo} service.
- * @since 3.0
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @noimplement This interface is not intended to be implemented by clients.
- * @noextend This interface is not intended to be extended by clients.
- */
-public interface Constants {
-	//TODO These constants need to be aligned with the OSGi ones. See page 64-588 of the spec
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * Window 32-bit operating system (e.g., Windows 98, NT, 2000).
-	 */
-	public static final String OS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "linux") indicating the platform is running on a
-	 * Linux-based operating system.
-	 */
-	public static final String OS_LINUX = "linux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "aix") indicating the platform is running on an
-	 * AIX-based operating system.
-	 */
-	public static final String OS_AIX = "aix";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "solaris") indicating the platform is running on a
-	 * Solaris-based operating system.
-	 */
-	public static final String OS_SOLARIS = "solaris";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "hpux") indicating the platform is running on an
-	 * HP/UX-based operating system.
-	 */
-	public static final String OS_HPUX = "hpux";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "qnx") indicating the platform is running on a
-	 * QNX-based operating system.
-	 */
-	public static final String OS_QNX = "qnx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "macosx") indicating the platform is running on a
-	 * Mac OS X operating system.
-	 */
-	public static final String OS_MACOSX = "macosx";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "epoc32") indicating the platform is running on a
-	 * Epoc 32-bit Symbian operating system.
-	 * @since 3.4
-	 */
-	public static final String OS_EPOC32 = "epoc32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "os/400") indicating the platform is running on a
-	 * OS/400 operating system.
-	 * @since 3.5
-	 */
-	public static final String OS_OS400 = "os/400"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "os/390") indicating the platform is running on a
-	 * OS/390 operating system.
-	 * @since 3.5
-	 */
-	public static final String OS_OS390 = "os/390"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "z/os") indicating the platform is running on a
-	 * z/OS operating system.
-	 * @since 3.5
-	 */
-	public static final String OS_ZOS = "z/os"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown operating system.
-	 */
-	public static final String OS_UNKNOWN = "unknown";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "x86") indicating the platform is running on an
-	 * x86-based architecture.
-	 */
-	public static final String ARCH_X86 = "x86";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "PA_RISC") indicating the platform is running on an
-	 * PA_RISC-based architecture.
-	 */
-	public static final String ARCH_PA_RISC = "PA_RISC";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "ppc") indicating the platform is running on an
-	 * PowerPC-based architecture.
-	 */
-	public static final String ARCH_PPC = "ppc";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "ppc64") indicating the platform is running on an
-	 * PowerPC-based 64-bit architecture.
-	 * @since 3.6
-	 */
-	public static final String ARCH_PPC64 = "ppc64";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "sparc") indicating the platform is running on an
-	 * Sparc-based architecture.
-	 */
-	public static final String ARCH_SPARC = "sparc";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "x86_64") indicating the platform is running on an
-	 * x86 64bit-based architecture.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String ARCH_X86_64 = "x86_64";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "amd64") indicating the platform is running on an
-	 * AMD64-based architecture.
-	 * 
-	 * @deprecated use <code>ARCH_X86_64</code> instead. Note the values
-	 * has been changed to be the value of the <code>ARCH_X86_64</code> constant.
-	 */
-	public static final String ARCH_AMD64 = ARCH_X86_64;
-
-	/**
-	 * Constant string (value "ia64") indicating the platform is running on an
-	 * IA64-based architecture.
-	 */
-	public static final String ARCH_IA64 = "ia64"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "ia64_32") indicating the platform is running on an
-	 * IA64 32bit-based architecture.
-	 * 
-	 * @since 3.1
-	 */
-	public static final String ARCH_IA64_32 = "ia64_32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "win32") indicating the platform is running on a
-	 * machine using the Windows windowing system.
-	 */
-	public static final String WS_WIN32 = "win32";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "wpf") indicating the platform is running on a
-	 * machine using the Windows Presentation Foundation sytstem.
-	 */
-	public static final String WS_WPF = "wpf"; //$NON-NLS-1$
-
-	/**
-	 * Constant string (value "motif") indicating the platform is running on a
-	 * machine using the Motif windowing system.
-	 */
-	public static final String WS_MOTIF = "motif";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "gtk") indicating the platform is running on a
-	 * machine using the GTK windowing system.
-	 */
-	public static final String WS_GTK = "gtk";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "photon") indicating the platform is running on a
-	 * machine using the Photon windowing system.
-	 */
-	public static final String WS_PHOTON = "photon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "carbon") indicating the platform is running on a
-	 * machine using the Carbon windowing system (Mac OS X).
-	 */
-	public static final String WS_CARBON = "carbon";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "cocoa") indicating the platform is running on a
-	 * machine using the Cocoa windowing system.
-	 * @since 3.5
-	 */
-	public static final String WS_COCOA = "cocoa";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "s60") indicating the platform is running on a
-	 * machine using the S60 windowing system.
-	 * @since 3.4
-	 */
-	public static final String WS_S60 = "s60";//$NON-NLS-1$
-
-	/**
-	 * Constant string (value "unknown") indicating the platform is running on a
-	 * machine running an unknown windowing system.
-	 */
-	public static final String WS_UNKNOWN = "unknown";//$NON-NLS-1$
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/EnvironmentInfo.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/EnvironmentInfo.java
deleted file mode 100644
index bbb0588..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/EnvironmentInfo.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.environment;
-
-/**
- * A Framework service which gives access to the command line used to start
- * this running framework as well as information about the environment
- * such as the current operating system, machine architecture, locale and 
- * windowing system.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * 
- * @since 3.0
- * @noimplement This interface is not intended to be implemented by clients.
- */
-// TODO  Need to add a method that gets the real application args.
-//We might also want to explain how the command line is organized: fwk / non fwk. Non-fwk is rt args and app args.
-public interface EnvironmentInfo {
-
-	/**
-	 * Returns all command line arguments specified when the running framework was started.
-	 * 
-	 * @return the array of command line arguments.
-	 */
-	public String[] getCommandLineArgs();
-
-	/**
-	 * Returns the arguments consumed by the framework implementation itself.  Which
-	 * arguments are consumed is implementation specific.
-	 * 
-	 * @return the array of command line arguments consumed by the framework.
-	 */
-	public String[] getFrameworkArgs();
-
-	/**
-	 * Returns the arguments not consumed by the framework implementation itself.  Which
-	 * arguments are consumed is implementation specific.
-	 * 
-	 * @return the array of command line arguments not consumed by the framework.
-	 */
-	public String[] getNonFrameworkArgs();
-
-	/**
-	 * Returns the string name of the current system architecture.  
-	 * The value is a user-defined string if the architecture is 
-	 * specified on the command line, otherwise it is the value 
-	 * returned by <code>java.lang.System.getProperty("os.arch")</code>.
-	 * 
-	 * @return the string name of the current system architecture
-	 */
-	public String getOSArch();
-
-	/**
-	 * Returns the string name of the current locale for use in finding files
-	 * whose path starts with <code>$nl$</code>.
-	 *
-	 * @return the string name of the current locale
-	 */
-	public String getNL();
-
-	/**
-	 * Returns the string name of the current operating system for use in finding
-	 * files whose path starts with <code>$os$</code>.  Return {@link Constants#OS_UNKNOWN} 
-	 * if the operating system cannot be determined.
-	 * <p>  
-	 * The value may indicate one of the operating systems known to the platform
-	 * (as specified in <code>org.eclipse.core.runtime.Platform#knownOSValues</code>) 
-	 * or a user-defined string if the operating system name is specified on the command line.
-	 * </p>
-	 *
-	 * @return the string name of the current operating system
-	 */
-	public String getOS();
-
-	/**
-	 * Returns the string name of the current window system for use in finding files
-	 * whose path starts with <code>$ws$</code>.  Return <code>null</code>
-	 * if the window system cannot be determined.
-	 *
-	 * @return the string name of the current window system or <code>null</code>
-	 */
-	public String getWS();
-
-	/**
-	 * Returns <code>true</code> if the framework is in debug mode and
-	 * <code>false</code> otherwise.
-	 * 
-	 * @return whether or not the framework is in debug mode
-	 */
-	public boolean inDebugMode();
-
-	/**
-	 * Returns <code>true</code> if the framework is in development mode
-	 * and <code>false</code> otherwise.
-	 * 
-	 * @return whether or not the framework is in development mode
-	 */
-	public boolean inDevelopmentMode();
-
-	/**
-	 * Returns the value for the specified property.  Environment Properties are 
-	 * backed by the Java system properties.  When the option
-	 * <code>osgi.framework.useSystemProperties</code> is used then 
-	 * the environment properties are specific for each instance of the framework.
-	 * <p>
-	 * This method should be used instead of the <code>System.getProperty(String)</code>
-	 * method to avoid the global nature of system properties.
-	 * </p>
-	 * @param key the property key
-	 * @return the value of the property, or null
-	 * @since 3.4
-	 */
-	public String getProperty(String key);
-
-	/**
-	 * Sets the value for the specified property.  Environment Properties are 
-	 * backed by the Java system properties.  When the option
-	 * <code>osgi.framework.useSystemProperties</code> is used then 
-	 * the environment properties are specific for each instance of the framework.
-	 * <p>
-	 * This method should be used instead of the <code>System.setProperty(String, String)</code>
-	 * method to avoid the global nature of system properties.
-	 * </p>
-	 * @param key the property key
-	 * @param value the value of the property
-	 * @return the old value of the property, or null
-	 * @since 3.4
-	 */
-	public String setProperty(String key, String value);
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/package.html b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/package.html
deleted file mode 100644
index ef6f904..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/environment/package.html
+++ /dev/null
@@ -1,18 +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 the <tt>EnvironmentInfo</tt> service.
-<h2>
-Package Specification</h2>
-This package specifies the API for the <tt>EnvironmentInfo</tt> service.
-<p>
-Clients accessing the command line used to start the running framework 
-as well as information about the environment will likely be interested  
-in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/BundleLocalization.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/BundleLocalization.java
deleted file mode 100644
index ceda998..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/BundleLocalization.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.localization;
-
-import java.util.ResourceBundle;
-import org.osgi.framework.Bundle;
-
-/**
- * The interface of the service that gets {@link ResourceBundle} objects from a given 
- * bundle with a given locale. 
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface BundleLocalization {
-
-	/**
-	 * The getLocalization method gets a ResourceBundle object for the given
-	 * locale and bundle.
-	 * @param bundle the bundle to get localization for
-	 * @param locale the name of the locale to get
-	 * 
-	 * @return A <code>ResourceBundle</code> object for the given bundle and locale.
-	 * 		If <code>null</code> is passed for the locale parameter, the default locale is used.
-	 */
-	public ResourceBundle getLocalization(Bundle bundle, String locale);
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/LocaleProvider.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/LocaleProvider.java
deleted file mode 100644
index 2dde516..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/LocaleProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.localization;
-
-import java.util.Locale;
-
-/**
- * A service that is used to determine what the current locale is for a 
- * particular context or session.  If no <code>LocaleProvider</code> 
- * service is available then the locale must be determined by other 
- * means, for example, by calling {@link Locale#getDefault()}.
- * <p>
- * More advanced environments can support multiple locales within a 
- * single system.  For example, a server may support multiple users, 
- * each needing a different locale.  In such an environment a 
- * <code>LocaleProvider</code> service must be registered that can 
- * determine the current locale for the context of the call to the 
- * {@link #getLocale()} method.
- * </p>
- * @since 1.1
- */
-public interface LocaleProvider {
-
-	/**
-	 * Determines the current locale for the context of the call to 
-	 * this method.  For environments that support a single system wide 
-	 * locale, this is equivalent to calling {@link Locale#getDefault()}.
-	 * <p>
-	 * The result of this method should not be retained or passed to other 
-	 * threads.  The current locale can change any time and may be 
-	 * different for each thread.
-	 * </p>
-	 * @return The current locale.
-	 */
-	public Locale getLocale();
-
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/package.html b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/package.html
deleted file mode 100644
index 07ddb00..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <title>Package-level Javadoc</title>
-</head>
-<body>
-Provides bundle localization and local provider service APIs.
-<h2>
-Package Specification</h2>
-This package specifies the API for the <tt>BundleLocalization</tt> and
-<tt>LocalePrivder</tt> services.
-<p>
-Clients accessing the localization resource bundles use to localize 
-OSGi bundle manifests will likely be interested in the types provided 
-by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java
deleted file mode 100644
index 85128c9..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.service.runnable;
-
-/**
- * An ApplicationLauncher is used to launch ParameterizedRunnable objects using 
- * the main thread.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * <p>
- * This class is for internal use by the platform-related plug-ins.
- * Clients outside of the base platform should not reference or subclass this class.
- * </p>
- * 
- * @since 3.2
- * @noimplement This interface is not intended to be implemented by clients.
- */
-public interface ApplicationLauncher {
-	/**
-	 * Launches the specified runnable using the main thread.
-	 * @param runnable a ParameterizedRunnalbe to run on the main thread.
-	 * @param context the context to launch the runnable with
-	 */
-	void launch(ParameterizedRunnable runnable, Object context);
-
-	/**
-	 * Forces the current runnable which is running to be stopped.  
-	 * This method will return after the currently running ParameterizedRunnable
-	 * has completely stopped.
-	 * <p>
-	 * After this method returns this ApplicationLauncher will no longer allow 
-	 * applications to be launched.
-	 */
-	void shutdown();
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java
deleted file mode 100644
index 1d9efee..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java
+++ /dev/null
@@ -1,26 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.runnable;
-
-/**
- * A parameterized runnable that can be stopped.
- * <p>
- * This class is for internal use by the platform-related plug-ins.
- * Clients outside of the base platform should not reference or subclass this class.
- * </p>
- * @since 3.2
- */
-public interface ApplicationRunnable extends ParameterizedRunnable {
-	/**
-	 * Forces this runnable to stop.
-	 */
-	public void stop();
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java
deleted file mode 100644
index e75c891..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.runnable;
-
-/**
- * Like a {@link java.lang.Runnable}, an object which captures a block of code which can 
- * be passed around and executed.  Unlike standard runnables, paramaterized 
- * runnables allow an arbitrary {@link java.lang.Object} to be passed in when the 
- * block is evaluated.
- * <p>
- * Clients may implement this interface.
- * </p>
- * <p>
- * This class is for internal use by the platform-related plug-ins.
- * Clients outside of the base platform should not reference or subclass this class.
- * </p>
- * @since 3.0
- */
-public interface ParameterizedRunnable {
-
-	/**
-	 * Executes the block of code encapsulated by this runnable in the context of
-	 * the given object and returns the result.  The result may be <code>null</code>.
-	 * 
-	 * @param context the context for evaluating the runnable
-	 * @return the result of evaluating the runnable in the given context
-	 * @throws Exception if there is a problem running this runnable
-	 */
-	public Object run(Object context) throws Exception;
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/StartupMonitor.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/StartupMonitor.java
deleted file mode 100644
index 59ab76b..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/StartupMonitor.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2006, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     Andrew Niefer - IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.runnable;
-
-/**
- * Service interface used to monitor the startup process.
- *  
- * Bundles can register a monitor in order to be given processing time on the 
- * primary thread during the startup process.  Clients with threading restrictions can
- * use this interface to process events that may have been collected from another thread.
- *  <p> 
- * Monitors share time on the primary thread.  The primary thread used to run the application 
- * will not proceed until monitors return from any operation.  Because of this, monitors should 
- * not perform long running operations.
- * </p>
- * <p>
- * Clients may implement this interface but should not invoke it.  The platform 
- * is responsible for invoking the monitor at the appropriate times.
- * </p> 
- * @since 3.3
- */
-public interface StartupMonitor {
-	/** 
-	 * Update the monitor. This method is periodically called by the platform from the primary thread during 
-	 * periods where the primary thread is waiting on another thread (ie start level increasing, refreshing packages)
-	 * <p>
-	 * If multiple monitors are registered then the platform will only call the monitor with the highest service 
-	 * ranking.  In case of a service ranking tie the service with the lowest service id is selected (i.e. the 
-	 * first monitor registered).
-	 * </p>
-	 */
-	public void update();
-
-	/**
-	 * This method is called by the platform from the primary thread once the application is completely 
-	 * initialized and running.  This method should perform certain operations that are needed once an 
-	 * application is running.  One example is bringing down a splash screen if it exists.
-	 * <p>
-	 * If multiple monitors are registered then the platform will call all monitors.  The monitors are called
-	 * according to service ranking; monitors with higher service rankings are called first.  In case of a 
-	 * service ranking tie the service with the lowest service id is called first (i.e. the first monitor registered).
-	 * </p>
-	 */
-	public void applicationRunning();
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/package.html b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/package.html
deleted file mode 100644
index 03dbe8d..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/runnable/package.html
+++ /dev/null
@@ -1,17 +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 API for monitoring and running code on the main thread.
-<h2>
-Package Specification</h2>
-This package specifies the API for monitoring and running code on the main thread.
-<p>
-Clients that monitor the startup sequence will likely be interested  
-in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/urlconversion/URLConverter.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/urlconversion/URLConverter.java
deleted file mode 100644
index 95c05aa..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/urlconversion/URLConverter.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2009 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.service.urlconversion;
-
-import java.io.IOException;
-import java.net.URL;
-
-/**
- * The interface of the service that allows client-defined protocol
- * URLs to be converted to native file URLs on the local file system.
- * <p>
- * Clients may implement this interface.
- * </p>
- * 
- * @since 3.1
- */
-public interface URLConverter {
-
-	/**
-	 * 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
-	 * @since 3.2
-	 */
-	public URL toFileURL(URL url) throws IOException;
-
-	/**
-	 * 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 recognized 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
-	 * @since 3.2
-	 */
-	public URL resolve(URL url) throws IOException;
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/ManagedOutputStream.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/ManagedOutputStream.java
deleted file mode 100644
index 93e8ce8..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/ManagedOutputStream.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2008 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.storagemanager;
-
-import java.io.*;
-
-/**
- * Represents a managed output stream for target managed by a storage manager.
- * @see StorageManager#getOutputStream(String)
- * @see StorageManager#getOutputStreamSet(String[])
- * <p>
- * Clients may not extend this class.
- * </p>
- * @since 3.2
- */
-// Note the implementation of this class originated from the following deprecated classes:
-// /org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/StreamManagerOutputStream.java
-public final class ManagedOutputStream extends FilterOutputStream {
-	static final int ST_OPEN = 0;
-	static final int ST_CLOSED = 1;
-	private String target;
-	private StorageManager manager;
-	private File outputFile;
-	private int state;
-	private ManagedOutputStream[] streamSet = null;
-
-	ManagedOutputStream(OutputStream out, StorageManager manager, String target, File outputFile) {
-		super(out);
-		this.manager = manager;
-		this.target = target;
-		this.outputFile = outputFile;
-		this.state = ST_OPEN;
-	}
-
-	/** 
-	 * Instructs this output stream to be closed and storage manager to 
-	 * be updated as appropriate.  If this managed output stream is part of 
-	 * a set returned by {@link StorageManager#getOutputStreamSet(String[])} then
-	 * the storage manager will only be updated with the new content after all 
-	 * of the managed output streams in the set are closed successfully.
-	 * @see FilterOutputStream#close()
-	 */
-	public void close() throws IOException {
-		manager.closeOutputStream(this);
-	}
-
-	/**
-	 * Instructs this output stream to be closed and the contents discarded.
-	 * If this managed output stream is part of a set returned by 
-	 * {@link StorageManager#getOutputStreamSet(String[])} then the new 
-	 * content of all managed output streams in the set will be discarded.
-	 */
-	public void abort() {
-		manager.abortOutputStream(this);
-	}
-
-	OutputStream getOutputStream() {
-		return out;
-	}
-
-	String getTarget() {
-		return target;
-	}
-
-	File getOutputFile() {
-		return outputFile;
-	}
-
-	int getState() {
-		return state;
-	}
-
-	void setState(int state) {
-		this.state = state;
-	}
-
-	void setStreamSet(ManagedOutputStream[] set) {
-		streamSet = set;
-	}
-
-	ManagedOutputStream[] getStreamSet() {
-		return streamSet;
-	}
-
-	/*
-	 * (non-Javadoc)
-	 * @see java.io.FilterOutputStream#write(byte[], int, int)
-	 * Override this method to prevent single byte writes to the output stream
-	 * which is done by the default implementation of FilteredOutputStream
-	 */
-	public void write(byte[] bytes, int off, int len) throws IOException {
-		out.write(bytes, off, len);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/StorageManager.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/StorageManager.java
deleted file mode 100644
index 3ebfe71..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/StorageManager.java
+++ /dev/null
@@ -1,920 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.storagemanager;
-
-import java.io.*;
-import java.security.AccessController;
-import java.util.*;
-import org.eclipse.core.runtime.internal.adaptor.*;
-import org.eclipse.osgi.framework.internal.reliablefile.*;
-import org.eclipse.osgi.framework.util.SecureAction;
-
-/**
- * Storage managers provide a facility for tracking the state of a group of files having 
- * relationship with each others and being updated by several entities at the same time. 
- * The typical usecase is in shared configuration data areas.
- * <p>
- * The facilities provided here are cooperative. That is, all participants must
- * agree to the conventions and to calling the given API. There is no capacity
- * to enforce these conventions or prohibit corruption.
- * </p>
- * <p>
- * Clients can not extend this class
- * </p>
- * <p>
- * Example
- * <pre>
- * //Open the storage manager
- * org.eclipse.osgi.storagemanager.StorageManager cacheStorageManager = new StorageManager("d:/sharedFolder/bar/", false); //$NON-NLS-1$
- * try {
- *	 cacheStorageManager.open(true);
- * } catch (IOException e) {
- * // Ignore the exception. The registry will be rebuilt from source.
- * }
- *
- * //To read from a file 
- * java.io.File fileA = cacheStorageManager.lookup("fileA", false));
- * java.io.File fileB = cacheStorageManager.lookup("fileB", false));
- * //Do the reading code 
- * new java.io.FileOutputStream(fileA);
- *
- * //To write in files 
- * cacheStorageManager.add("fileC"); //add the file to the filemanager (in this case we assume it is not already here)
- * cacheStorageManager.add("fileD");
- *
- * // The file is never written directly into the file name, so we create some temporary file
- * java.io.File fileC = cacheStorageManager.createTempFile("fileC");
- * java.io.File fileD = cacheStorageManager.createTempFile("fileD");
- *
- * //Do the actual writing here...
- *
- * //Finally update the storagemanager with the actual file to manage. 
- * cacheStorageManager.update(new String[] {"fileC", "fileD"}, new String[] {fileC.getName(), fileD.getName()};
- *
- * //Close the file manager at the end
- * cacheStorageManager.close();
- * </pre>
- * </p>
- * <p>
- * Implementation details <br>
- * The following implementation details are provided to help with understanding the 
- * behavior of this class.
- * The general principle is to maintain a table which maps user-level file names
- * onto an actual disk files.  If a file needs to be modified, 
- * it is stored into a new file.  The old content is not removed from disk until all entities
- * have closed there instance of the storage manager.
- * Once the instance has been created, open() must be called before performing any other operation.
- * On open the storage manager obtains a snapshot of the current managed files contents. If an
- * entity updates a managed file, the storage manager will save the content for that instance of the 
- * storage manager, all other storage manager instances will still have access to that managed file's 
- * content as it was when the instance was first opened.
- * </p>
- * @since 3.2
- */
-
-// Note the implementation of this class originated from the following deprecated classes: 
-// /org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/FileManager.java
-// /org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/StreamManager.java
-public final class StorageManager {
-	private static final int FILETYPE_STANDARD = 0;
-	private static final int FILETYPE_RELIABLEFILE = 1;
-	private static final SecureAction secure = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-	private static final boolean tempCleanup = Boolean.valueOf(secure.getProperty("osgi.embedded.cleanTempFiles")).booleanValue(); //$NON-NLS-1$
-	private static final boolean openCleanup = Boolean.valueOf(secure.getProperty("osgi.embedded.cleanupOnOpen")).booleanValue(); //$NON-NLS-1$
-	private static final String MANAGER_FOLDER = ".manager"; //$NON-NLS-1$
-	private static final String TABLE_FILE = ".fileTable"; //$NON-NLS-1$
-	private static final String LOCK_FILE = ".fileTableLock"; //$NON-NLS-1$
-	private static final int MAX_LOCK_WAIT = 5000; // 5 seconds 
-	// this should be static but the tests expect to be able to create new managers after changing this setting dynamically
-	private final boolean useReliableFiles = Boolean.valueOf(secure.getProperty("osgi.useReliableFiles")).booleanValue(); //$NON-NLS-1$
-
-	private class Entry {
-		int readId;
-		int writeId;
-		int fileType;
-
-		Entry(int readId, int writeId, int type) {
-			this.readId = readId;
-			this.writeId = writeId;
-			this.fileType = type;
-		}
-
-		int getReadId() {
-			return readId;
-		}
-
-		int getWriteId() {
-			return writeId;
-		}
-
-		int getFileType() {
-			return fileType;
-		}
-
-		void setReadId(int value) {
-			readId = value;
-		}
-
-		void setWriteId(int value) {
-			writeId = value;
-		}
-
-		void setFileType(int type) {
-			fileType = type;
-		}
-	}
-
-	private final File base; //The folder managed
-	private final File managerRoot; //The folder that will contain all the file related to the functionning of the manager (typically a subdir of base)
-
-	private final String lockMode;
-	private final File tableFile;
-	private final File lockFile; // The lock file for the table (this file is the same for all the instances)
-	private Locker locker; // The locker for the lock
-
-	private File instanceFile; //The file representing the running instance. It is created when the table file is read.
-	private Locker instanceLocker = null; //The locker for the instance file.
-	private final boolean readOnly; // Whether this storage manager is in read-only mode
-	private boolean open; // Whether this storage manager is open for use
-
-	// locking related fields
-	private int tableStamp = -1;
-
-	private final Properties table = new Properties();
-
-	/**
-	 * Returns a new storage manager for the area identified by the given base
-	 * directory.
-	 * 
-	 * @param base the directory holding the files to be managed
-	 * @param lockMode the lockMode to use for the storage manager. It can have one the 3 values: none, java.io, java.nio 
-	 * and also supports null in which case the lock strategy will be the global one.  
-	 */
-	public StorageManager(File base, String lockMode) {
-		this(base, lockMode, false);
-	}
-
-	/**
-	 * Returns a new storage manager for the area identified by the given base
-	 * directory.
-	 * 
-	 * @param base the directory holding the files to be managed
-	 * @param lockMode the lockMode to use for the storage manager. It can have one the 3 values: none, java.io, java.nio 
-	 * and also supports null in which case the lock strategy will be the global one.  
-	 * @param readOnly true if the managed files are read-only
-	 */
-	public StorageManager(File base, String lockMode, boolean readOnly) {
-		this.base = base;
-		this.lockMode = lockMode;
-		this.managerRoot = new File(base, MANAGER_FOLDER);
-		this.tableFile = new File(managerRoot, TABLE_FILE);
-		this.lockFile = new File(managerRoot, LOCK_FILE);
-		this.readOnly = readOnly;
-		open = false;
-	}
-
-	private void initializeInstanceFile() throws IOException {
-		if (instanceFile != null || readOnly)
-			return;
-		this.instanceFile = File.createTempFile(".tmp", ".instance", managerRoot); //$NON-NLS-1$//$NON-NLS-2$
-		this.instanceFile.deleteOnExit();
-		instanceLocker = BasicLocation.createLocker(instanceFile, lockMode);
-		instanceLocker.lock();
-	}
-
-	private String getAbsolutePath(String file) {
-		return new File(base, file).getAbsolutePath();
-	}
-
-	/**
-	 * Add the given managed file name to the list of files managed by this manager.
-	 * 
-	 * @param managedFile name of the file to manage
-	 * @throws IOException if there are any problems adding the given file name to the manager
-	 */
-	public void add(String managedFile) throws IOException {
-		add(managedFile, FILETYPE_STANDARD);
-	}
-
-	/* (non-Javadoc
-	 * Add the given file name to the list of files managed by this manager.
-	 * 
-	 * @param managedFile name of the file to manage.
-	 * @param fileType the file type. 
-	 * @throws IOException if there are any problems adding the given file to the manager
-	 */
-	private void add(String managedFile, int fileType) throws IOException {
-		if (!open)
-			throw new IOException(EclipseAdaptorMsg.fileManager_notOpen);
-		if (readOnly)
-			throw new IOException(EclipseAdaptorMsg.fileManager_illegalInReadOnlyMode);
-		if (!lock(true))
-			throw new IOException(EclipseAdaptorMsg.fileManager_cannotLock);
-		try {
-			updateTable();
-			Entry entry = (Entry) table.get(managedFile);
-			if (entry == null) {
-				entry = new Entry(0, 1, fileType);
-				table.put(managedFile, entry);
-				// if this managed file existed before, ensure there is not an old
-				// version on the disk to avoid name collisions. If version found,
-				// us the oldest generation+1 for the write ID.
-				int oldestGeneration = findOldestGeneration(managedFile);
-				if (oldestGeneration != 0)
-					entry.setWriteId(oldestGeneration + 1);
-				save();
-			} else {
-				if (entry.getFileType() != fileType) {
-					entry.setFileType(fileType);
-					updateTable();
-					save();
-				}
-			}
-		} finally {
-			release();
-		}
-	}
-
-	/* (non-Javadoc)
-	 * Find the oldest generation of a file still available on disk 
-	 * @param file the file from which to obtain the oldest generation.
-	 * @return the oldest generation of the file or 0 if the file does
-	 * not exist. 
-	 */
-	private int findOldestGeneration(String managedFile) {
-		String[] files = base.list();
-		int oldestGeneration = 0;
-		if (files != null) {
-			String name = managedFile + '.';
-			int len = name.length();
-			for (int i = 0; i < files.length; i++) {
-				if (!files[i].startsWith(name))
-					continue;
-				try {
-					int generation = Integer.parseInt(files[i].substring(len));
-					if (generation > oldestGeneration)
-						oldestGeneration = generation;
-				} catch (NumberFormatException e) {
-					continue;
-				}
-			}
-		}
-		return oldestGeneration;
-	}
-
-	/**
-	 * Update the given managed files with the content in the given source files.
-	 * The managedFiles is a list of managed file names which are currently managed. 
-	 * If a managed file name is not currently managed it will be added as a 
-	 * managed file for this storage manager.
-	 * The sources are absolute (or relative to the current working directory) 
-	 * file paths containing the new content for the corresponding managed files.
-	 * 
-	 * @param managedFiles the managed files to update
-	 * @param sources the new content for the managed files
-	 * @throws IOException if there are any problems updating the given managed files
-	 */
-	public void update(String[] managedFiles, String[] sources) throws IOException {
-		if (!open)
-			throw new IOException(EclipseAdaptorMsg.fileManager_notOpen);
-		if (readOnly)
-			throw new IOException(EclipseAdaptorMsg.fileManager_illegalInReadOnlyMode);
-		if (!lock(true))
-			throw new IOException(EclipseAdaptorMsg.fileManager_cannotLock);
-		try {
-			updateTable();
-			int[] originalReadIDs = new int[managedFiles.length];
-			boolean error = false;
-			for (int i = 0; i < managedFiles.length; i++) {
-				originalReadIDs[i] = getId(managedFiles[i]);
-				if (!update(managedFiles[i], sources[i]))
-					error = true;
-			}
-			if (error) {
-				// restore the original readIDs to avoid inconsistency for this group
-				for (int i = 0; i < managedFiles.length; i++) {
-					Entry entry = (Entry) table.get(managedFiles[i]);
-					entry.setReadId(originalReadIDs[i]);
-				}
-				throw new IOException(EclipseAdaptorMsg.fileManager_updateFailed);
-			}
-			save(); //save only if no errors
-		} finally {
-			release();
-		}
-	}
-
-	/**
-	 * Returns a list of all the managed files currently being managed.
-	 * 
-	 * @return the names of the managed files
-	 */
-	public String[] getManagedFiles() {
-		if (!open)
-			return null;
-		Set set = table.keySet();
-		String[] keys = (String[]) set.toArray(new String[set.size()]);
-		String[] result = new String[keys.length];
-		for (int i = 0; i < keys.length; i++)
-			result[i] = new String(keys[i]);
-		return result;
-	}
-
-	/**
-	 * Returns the directory containing the files being managed by this storage
-	 * manager.
-	 * 
-	 * @return the directory containing the managed files
-	 */
-	public File getBase() {
-		return base;
-	}
-
-	/**
-	 * Returns the current numeric id (appendage) of the given managed file.
-	 * <code>managedFile + "." + getId(target)</code>. A value of -1 is returned 
-	 * if the given name is not managed.
-	 * 
-	 * @param managedFile the name of the managed file
-	 * @return the id of the managed file
-	 */
-	public int getId(String managedFile) {
-		if (!open)
-			return -1;
-		Entry entry = (Entry) table.get(managedFile);
-		if (entry == null)
-			return -1;
-		return entry.getReadId();
-	}
-
-	/**
-	 * Returns if readOnly state this storage manager is using.
-	 * 
-	 * @return if this storage manager update state is read-only.
-	 */
-	public boolean isReadOnly() {
-		return readOnly;
-	}
-
-	/* (non-Javadoc)
-	 * Attempts to lock the state of this manager and returns <code>true</code>
-	 * if the lock could be acquired.
-	 * <p>
-	 * Locking a manager is advisory only. That is, it does not prevent other
-	 * applications from modifying the files managed by this manager.
-	 * </p>
-	 * 
-	 * @exception IOException
-	 *                         if there was an unexpected problem while acquiring the
-	 *                         lock.
-	 */
-	private boolean lock(boolean wait) throws IOException {
-		if (readOnly)
-			return false;
-		if (locker == null) {
-			locker = BasicLocation.createLocker(lockFile, lockMode);
-			if (locker == null)
-				throw new IOException(EclipseAdaptorMsg.fileManager_cannotLock);
-		}
-		boolean locked = locker.lock();
-		if (locked || !wait)
-			return locked;
-		//Someone else must have the directory locked, but they should release it quickly
-		long start = System.currentTimeMillis();
-		while (true) {
-			try {
-				Thread.sleep(200); // 5x per second
-			} catch (InterruptedException e) {/*ignore*/
-			}
-			locked = locker.lock();
-			if (locked)
-				return true;
-			// never wait longer than 5 seconds
-			long time = System.currentTimeMillis() - start;
-			if (time > MAX_LOCK_WAIT)
-				return false;
-		}
-	}
-
-	/**
-	 * Returns the actual file location to use when reading the given managed file. 
-	 * A value of <code>null</code> can be returned if the given managed file name is not 
-	 * managed and add is set to false.  
-	 * <p>
-	 * The returned file should be considered read-only.  Any updates to the content of this
-	 * file should be done using {@link #update(String[], String[])}.
-	 * 
-	 * @param managedFile the managed file to lookup
-	 * @param add indicate whether the managed file name should be added to the manager if 
-	 * it is not already managed.
-	 * @throws IOException if the add flag is set to true and the addition of the managed file failed
-	 * @return the absolute file location to use for the given managed file or
-	 *               <code>null</code> if the given managed file is not managed
-	 */
-	public File lookup(String managedFile, boolean add) throws IOException {
-		if (!open)
-			throw new IOException(EclipseAdaptorMsg.fileManager_notOpen);
-		Entry entry = (Entry) table.get(managedFile);
-		if (entry == null) {
-			if (add) {
-				add(managedFile);
-				entry = (Entry) table.get(managedFile);
-			} else {
-				return null;
-			}
-		}
-		return new File(getAbsolutePath(managedFile + '.' + entry.getReadId()));
-	}
-
-	private boolean move(String source, String managedFile) {
-		File original = new File(source);
-		File targetFile = new File(managedFile);
-		// its ok if the original does not exist. The table entry will capture
-		// that fact. There is no need to put something in the filesystem.
-		if (!original.exists() || targetFile.exists())
-			return false;
-		return original.renameTo(targetFile);
-	}
-
-	/**
-	 * Saves the state of the storage manager and releases any locks held.
-	 */
-	private void release() {
-		if (locker == null)
-			return;
-		locker.release();
-	}
-
-	/**
-	 * Removes the given managed file from management by this storage manager.
-	 * 
-	 * @param managedFile the managed file to remove
-	 * @throws IOException if an error occured removing the managed file
-	 */
-	public void remove(String managedFile) throws IOException {
-		if (!open)
-			throw new IOException(EclipseAdaptorMsg.fileManager_notOpen);
-		if (readOnly)
-			throw new IOException(EclipseAdaptorMsg.fileManager_illegalInReadOnlyMode);
-		// The removal needs to be done eagerly, so the value is effectively removed from the disktable. 
-		// Otherwise, an updateTable() caused by an update(,)  could cause the file to readded to the local table.
-		if (!lock(true))
-			throw new IOException(EclipseAdaptorMsg.fileManager_cannotLock);
-		try {
-			updateTable();
-			table.remove(managedFile);
-			save();
-		} finally {
-			release();
-		}
-	}
-
-	private void updateTable() throws IOException {
-		int stamp;
-		stamp = ReliableFile.lastModifiedVersion(tableFile);
-		if (stamp == tableStamp || stamp == -1)
-			return;
-		Properties diskTable = new Properties();
-		InputStream input = new ReliableFileInputStream(tableFile);
-		try {
-			diskTable.load(input);
-		} finally {
-			try {
-				input.close();
-			} catch (IOException e) {
-				// ignore
-			}
-		}
-		tableStamp = stamp;
-		for (Enumeration e = diskTable.keys(); e.hasMoreElements();) {
-			String file = (String) e.nextElement();
-			String value = diskTable.getProperty(file);
-			if (value != null) {
-				Entry entry = (Entry) table.get(file);
-				// check front of value for ReliableFile
-				int id;
-				int fileType;
-				int idx = value.indexOf(',');
-				if (idx != -1) {
-					id = Integer.parseInt(value.substring(0, idx));
-					fileType = Integer.parseInt(value.substring(idx + 1));
-				} else {
-					id = Integer.parseInt(value);
-					fileType = FILETYPE_STANDARD;
-				}
-				if (entry == null) {
-					table.put(file, new Entry(id, id + 1, fileType));
-				} else {
-					entry.setWriteId(id + 1);
-					//don't change type
-				}
-			}
-		}
-	}
-
-	/*
-	 * This method should be called while the manager is locked.
-	 */
-	private void save() throws IOException {
-		if (readOnly)
-			return;
-		// if the table file has change on disk, update our data structures then
-		// rewrite the file.
-		updateTable();
-
-		Properties props = new Properties();
-		for (Enumeration e = table.keys(); e.hasMoreElements();) {
-			String file = (String) e.nextElement();
-			Entry entry = (Entry) table.get(file);
-			String value;
-			if (entry.getFileType() != FILETYPE_STANDARD) {
-				value = Integer.toString(entry.getWriteId() - 1) + ',' + //In the table we save the write  number  - 1, because the read number can be totally different.
-						Integer.toString(entry.getFileType());
-			} else {
-				value = Integer.toString(entry.getWriteId() - 1); //In the table we save the write  number  - 1, because the read number can be totally different.
-			}
-			props.put(file, value);
-		}
-		ReliableFileOutputStream fileStream = new ReliableFileOutputStream(tableFile);
-		boolean error = true;
-		try {
-			props.store(fileStream, "safe table"); //$NON-NLS-1$
-			fileStream.close();
-			error = false;
-		} finally {
-			if (error)
-				fileStream.abort();
-		}
-		tableStamp = ReliableFile.lastModifiedVersion(tableFile);
-	}
-
-	private boolean update(String managedFile, String source) throws IOException {
-		Entry entry = (Entry) table.get(managedFile);
-		if (entry == null)
-			add(managedFile);
-		int newId = entry.getWriteId();
-		// attempt to rename the file to the next generation
-		boolean success = move(getAbsolutePath(source), getAbsolutePath(managedFile) + '.' + newId);
-		if (!success) {
-			//possible the next write generation file exists? Lets determine the largest
-			//generation number, then use that + 1.
-			newId = findOldestGeneration(managedFile) + 1;
-			success = move(getAbsolutePath(source), getAbsolutePath(managedFile) + '.' + newId);
-		}
-		if (!success)
-			return false;
-		// update the entry. read and write ids should be the same since
-		// everything is in sync
-		entry.setReadId(newId);
-		entry.setWriteId(newId + 1);
-		return true;
-	}
-
-	/**
-	 * This methods remove all the temporary files that have been created by the storage manager.
-	 * This removal is only done if the instance of eclipse calling this method is the last instance using this storage manager.
-	 * @throws IOException
-	 */
-	private void cleanup() throws IOException {
-		if (readOnly)
-			return;
-		//Lock first, so someone else can not start while we're in the middle of cleanup
-		if (!lock(true))
-			throw new IOException(EclipseAdaptorMsg.fileManager_cannotLock);
-		try {
-			//Iterate through the temp files and delete them all, except the one representing this storage manager.
-			String[] files = managerRoot.list();
-			if (files != null) {
-				for (int i = 0; i < files.length; i++) {
-					if (files[i].endsWith(".instance") && instanceFile != null && !files[i].equalsIgnoreCase(instanceFile.getName())) { //$NON-NLS-1$
-						Locker tmpLocker = BasicLocation.createLocker(new File(managerRoot, files[i]), lockMode);
-						if (tmpLocker.lock()) {
-							//If I can lock it is a file that has been left behind by a crash
-							tmpLocker.release();
-							new File(managerRoot, files[i]).delete();
-						} else {
-							tmpLocker.release();
-							return; //The file is still being locked by somebody else
-						}
-					}
-				}
-			}
-
-			//If we are here it is because we are the last instance running. After locking the table and getting its latest content, remove all the backup files and change the table
-			updateTable();
-			Collection managedFiles = table.entrySet();
-			for (Iterator iter = managedFiles.iterator(); iter.hasNext();) {
-				Map.Entry fileEntry = (Map.Entry) iter.next();
-				String fileName = (String) fileEntry.getKey();
-				Entry info = (Entry) fileEntry.getValue();
-				if (info.getFileType() == FILETYPE_RELIABLEFILE) {
-					ReliableFile.cleanupGenerations(new File(base, fileName));
-				} else {
-					//Because we are cleaning up, we are giving up the values from our table, and we must delete all the files that are not referenced by the table
-					String readId = Integer.toString(info.getWriteId() - 1);
-					deleteCopies(fileName, readId);
-				}
-			}
-
-			if (tempCleanup) {
-				files = base.list();
-				if (files != null) {
-					for (int i = 0; i < files.length; i++) {
-						if (files[i].endsWith(ReliableFile.tmpExt)) {
-							new File(base, files[i]).delete();
-						}
-					}
-				}
-			}
-		} finally {
-			release();
-		}
-	}
-
-	private void deleteCopies(String fileName, String exceptionNumber) {
-		String notToDelete = fileName + '.' + exceptionNumber;
-		String[] files = base.list();
-		if (files == null)
-			return;
-		for (int i = 0; i < files.length; i++) {
-			if (files[i].startsWith(fileName + '.') && !files[i].equals(notToDelete))
-				new File(base, files[i]).delete();
-		}
-	}
-
-	/**
-	 * This method declares the storage manager as closed. From thereon, the instance can no longer be used.
-	 * It is important to close the manager as it also cleans up old copies of the managed files.
-	 */
-	public void close() {
-		if (!open)
-			return;
-		open = false;
-		if (readOnly)
-			return;
-		try {
-			cleanup();
-		} catch (IOException e) {
-			//Ignore and close.
-		}
-		if (instanceLocker != null)
-			instanceLocker.release();
-
-		if (instanceFile != null)
-			instanceFile.delete();
-	}
-
-	/**
-	 * This methods opens the storage manager. 
-	 * This method must be called before any operation on the storage manager.
-	 * @param wait indicates if the open operation must wait in case of contention on the lock file.
-	 * @throws IOException if an error occurred opening the storage manager
-	 */
-	public void open(boolean wait) throws IOException {
-		if (openCleanup)
-			cleanup();
-		if (!readOnly) {
-			managerRoot.mkdirs();
-			if (!managerRoot.exists())
-				throw new IOException(EclipseAdaptorMsg.fileManager_cannotLock);
-			boolean locked = lock(wait);
-			if (!locked && wait)
-				throw new IOException(EclipseAdaptorMsg.fileManager_cannotLock);
-		}
-
-		try {
-			initializeInstanceFile();
-			updateTable();
-			open = true;
-		} finally {
-			release();
-		}
-	}
-
-	/**
-	 * Creates a new unique empty temporary-file in the storage manager base directory. The file name
-	 * must be at least 3 characters. This file can later be used to update a managed file.
-	 * 
-	 * @param file the file name to create temporary file from.
-	 * @return the newly-created empty file.
-	 * @throws IOException if the file can not be created.
-	 * @see #update(String[], String[])
-	 */
-	public File createTempFile(String file) throws IOException {
-		if (readOnly)
-			throw new IOException(EclipseAdaptorMsg.fileManager_illegalInReadOnlyMode);
-		File tmpFile = File.createTempFile(file, ReliableFile.tmpExt, base);
-		tmpFile.deleteOnExit();
-		return tmpFile;
-	}
-
-	/**
-	 * Returns a managed <code>InputStream</code> for a managed file. 
-	 * <code>null</code> can be returned if the given name is not managed. 
-	 * 
-	 * @param managedFile the name of the managed file to open.
-	 * @return an input stream to the managed file or 
-	 * <code>null</code> if the given name is not managed.
-	 * @throws IOException if the content is missing, corrupt or an error occurs.
-	 */
-	public InputStream getInputStream(String managedFile) throws IOException {
-		return getInputStream(managedFile, ReliableFile.OPEN_BEST_AVAILABLE);
-	}
-
-	/**
-	 * Returns a managed input stream set for the managed file names. 
-	 * Elements of the returned set may be <code>null</code> if a given name is not managed.
-	 * This method should be used for managed file sets which use the output streams returned 
-	 * by the {@link #getOutputStreamSet(String[])} to save data.
-	 * 
-	 * @param managedFiles the names of the managed files to open.
-	 * @return a set input streams to the given managed files.
-	 * @throws IOException if the content of one of the managed files is missing, corrupt or an error occurs.
-	 */
-	public InputStream[] getInputStreamSet(String[] managedFiles) throws IOException {
-		InputStream[] streams = new InputStream[managedFiles.length];
-		for (int i = 0; i < streams.length; i++)
-			streams[i] = getInputStream(managedFiles[i], ReliableFile.OPEN_FAIL_ON_PRIMARY);
-		return streams;
-	}
-
-	private InputStream getInputStream(String managedFiles, int openMask) throws IOException {
-		if (useReliableFiles) {
-			int id = getId(managedFiles);
-			if (id == -1)
-				return null;
-			return new ReliableFileInputStream(new File(getBase(), managedFiles), id, openMask);
-		}
-		File lookup = lookup(managedFiles, false);
-		if (lookup == null)
-			return null;
-		return new FileInputStream(lookup);
-	}
-
-	/**
-	 * Returns a <code>ManagedOutputStream</code> for a managed file.  
-	 * Closing the ouput stream will update the storage manager with the 
-	 * new content of the managed file.
-	 * 
-	 * @param managedFile the name of the managed file to write.
-	 * @return a managed output stream for the managed file.
-	 * @throws IOException if an error occurs opening the managed file.
-	 */
-	public ManagedOutputStream getOutputStream(String managedFile) throws IOException {
-		if (useReliableFiles) {
-			ReliableFileOutputStream out = new ReliableFileOutputStream(new File(getBase(), managedFile));
-			return new ManagedOutputStream(out, this, managedFile, null);
-		}
-		File tmpFile = createTempFile(managedFile);
-		return new ManagedOutputStream(new FileOutputStream(tmpFile), this, managedFile, tmpFile);
-	}
-
-	/**
-	 * Returns an array of <code>ManagedOutputStream</code> for a set of managed files.
-	 * When all managed output streams in the set have been closed, the storage manager
-	 * will be updated with the new content of the managed files. 
-	 * Aborting any one of the streams will cause the entire content of the set to abort 
-	 * and be discarded.
-	 * 
-	 * @param managedFiles list of names of the managed file to write.
-	 * @return an array of managed output streams respectively of managed files.
-	 * @throws IOException if an error occurs opening the managed files.
-	 */
-	public ManagedOutputStream[] getOutputStreamSet(String[] managedFiles) throws IOException {
-		int count = managedFiles.length;
-		ManagedOutputStream[] streams = new ManagedOutputStream[count];
-		int idx = 0;
-		try {
-			for (; idx < count; idx++) {
-				ManagedOutputStream newStream = getOutputStream(managedFiles[idx]);
-				newStream.setStreamSet(streams);
-				streams[idx] = newStream;
-			}
-		} catch (IOException e) {
-			// cleanup
-			for (int jdx = 0; jdx < idx; jdx++)
-				streams[jdx].abort();
-			throw e;
-		}
-		return streams;
-	}
-
-	/* (non-Javadoc)
-	 * Instructs this manager to abort and discard a managed output stream.
-	 * This method should be used if any errors occur after opening a managed
-	 * output stream where the contents should not be saved.
-	 * If this output stream is part of a set, all other managed output streams in this set
-	 * will also be closed and aborted.
-	 * @param out the managed output stream
-	 * @see #getOutputStream(String)
-	 * @see #getOutputStreamSet(String[])
-	 */
-	void abortOutputStream(ManagedOutputStream out) {
-		ManagedOutputStream[] set = out.getStreamSet();
-		if (set == null) {
-			set = new ManagedOutputStream[] {out};
-		}
-		synchronized (set) {
-			for (int idx = 0; idx < set.length; idx++) {
-				out = set[idx];
-				if (out.getOutputFile() == null) {
-					// this is a ReliableFileOutpuStream
-					ReliableFileOutputStream rfos = (ReliableFileOutputStream) out.getOutputStream();
-					rfos.abort();
-				} else {
-					// plain FileOutputStream();
-					if (out.getState() == ManagedOutputStream.ST_OPEN) {
-						try {
-							out.getOutputStream().close();
-						} catch (IOException e) {/*do nothing*/
-						}
-					}
-					out.getOutputFile().delete();
-				}
-				out.setState(ManagedOutputStream.ST_CLOSED);
-			}
-		}
-	}
-
-	/* (non-Javadoc)
-	 * Close the managed output stream and update the new content to  
-	 * this manager. If this managed output stream is part of a set, only after closing
-	 * all managed output streams in the set will storage manager be updated.
-	 * 
-	 * @param smos the output stream.
-	 * @throws IOException if an errors occur.
-	 * @see #getOutputStream(String)
-	 * @see #getOutputStreamSet(String[])
-	 */
-	void closeOutputStream(ManagedOutputStream smos) throws IOException {
-		if (smos.getState() != ManagedOutputStream.ST_OPEN)
-			return;
-		ManagedOutputStream[] streamSet = smos.getStreamSet();
-		if (smos.getOutputFile() == null) {
-			// this is a ReliableFileOutputStream
-			ReliableFileOutputStream rfos = (ReliableFileOutputStream) smos.getOutputStream();
-			// manage file deletes
-			File file = rfos.closeIntermediateFile();
-			smos.setState(ManagedOutputStream.ST_CLOSED);
-			String target = smos.getTarget();
-			if (streamSet == null) {
-				add(target, StorageManager.FILETYPE_RELIABLEFILE);
-				update(new String[] {smos.getTarget()}, new String[] {file.getName()});
-				ReliableFile.fileUpdated(new File(getBase(), smos.getTarget()));
-			}
-		} else {
-			// this is a plain old file output steam
-			OutputStream out = smos.getOutputStream();
-			out.flush();
-			try {
-				((FileOutputStream) out).getFD().sync();
-			} catch (SyncFailedException e) {/*ignore*/
-			}
-			out.close();
-			smos.setState(ManagedOutputStream.ST_CLOSED);
-			String target = smos.getTarget();
-			if (streamSet == null) {
-				add(target, StorageManager.FILETYPE_STANDARD);
-				update(new String[] {target}, new String[] {smos.getOutputFile().getName()});
-			}
-		}
-
-		if (streamSet != null) {
-			synchronized (streamSet) {
-				//check all the streams to see if there are any left open....
-				for (int idx = 0; idx < streamSet.length; idx++) {
-					if (streamSet[idx].getState() == ManagedOutputStream.ST_OPEN)
-						return; //done
-				}
-				//all streams are closed, we need to update storage manager
-				String[] targets = new String[streamSet.length];
-				String[] sources = new String[streamSet.length];
-				for (int idx = 0; idx < streamSet.length; idx++) {
-					smos = streamSet[idx];
-					targets[idx] = smos.getTarget();
-					File outputFile = smos.getOutputFile();
-					if (outputFile == null) {
-						// this is a ReliableFile 
-						add(smos.getTarget(), StorageManager.FILETYPE_RELIABLEFILE);
-						ReliableFileOutputStream rfos = (ReliableFileOutputStream) smos.getOutputStream();
-						File file = rfos.closeIntermediateFile(); //multiple calls to close() ok
-						sources[idx] = file.getName();
-						ReliableFile.fileUpdated(new File(getBase(), smos.getTarget()));
-					} else {
-						add(smos.getTarget(), StorageManager.FILETYPE_STANDARD);
-						sources[idx] = outputFile.getName();
-					}
-				}
-				update(targets, sources);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/package.html b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/package.html
deleted file mode 100644
index 6607759..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/package.html
+++ /dev/null
@@ -1,17 +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 the storage manager API.
-<h2>
-Package Specification</h2>
-This package specifies the API for managing a group of files that are related to each other.
-<p>
-Clients that manage groups of files that are closely related to each other may be interested  
-in the types provided by this package.
-</p>
-</body>
-</html>
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/ManifestElement.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/ManifestElement.java
deleted file mode 100644
index 17e0c48..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/ManifestElement.java
+++ /dev/null
@@ -1,585 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.util;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.Msg;
-import org.eclipse.osgi.framework.internal.core.Tokenizer;
-import org.osgi.framework.BundleException;
-
-/**
- * This class represents a single manifest element.  A manifest element must consist of a single
- * {@link String} value.  The {@link String} value may be split up into component values each
- * separated by a semi-colon (';').  A manifest element may optionally have a set of 
- * attribute and directive values associated with it. The general syntax of a manifest element is as follows:
- * <p>
- * <pre>
- * ManifestElement ::= component (';' component)* (';' parameter)*
- * component ::= ([^;,:="\#x0D#x0A#x00])+ | quoted-string
- * quoted-string::= '"' ( [^"\#x0D#x0A#x00] | '\"'| '\\')* '"'
- * parameter ::= directive | attribute 
- * directive ::= token ':=' argument
- * attribute ::= token '=' argument
- * argument ::= extended  | quoted-string
- * token ::= ( alphanum | '_' | '-' )+ 
- * extended ::= ( alphanum | '_' | '-' | '.' )+ 
- * </pre>
- * </p>
- * <p>
- * For example, the following is an example of a manifest element to the <tt>Export-Package</tt> header:
- * </p>
- * <p>
- * <pre>
- * org.osgi.framework; specification-version="1.2"; another-attr="examplevalue"
- * </pre>
- * </p>
- * <p>
- * This manifest element has a value of <tt>org.osgi.framework</tt> and it has two attributes, 
- * <tt>specification-version</tt> and <tt>another-attr</tt>. 
- * </p>
- * <p>
- * The following manifest element is an example of a manifest element that has multiple
- * components to its value: 
- * </p>
- * <p>
- * <pre>
- * code1.jar;code2.jar;code3.jar;attr1=value1;attr2=value2;attr3=value3
- * </pre>
- * </p>
- * <p>
- * This manifest element has a value of <tt>code1.jar;code2.jar;code3.jar</tt>.  
- * This is an example of a multiple component value.  This value has three
- * components: <tt>code1.jar</tt>, <tt>code2.jar</tt>, and <tt>code3.jar</tt>.
- * </p>
- * <p>
- * If components contain delimiter characters (e.g ';', ',' ':' "=") then it must be
- * a quoted string.  For example, the following is an example of a manifest element 
- * that has multiple components containing delimiter characters:
- * </p>
- * <pre>
- * "component ; 1"; "component , 2"; "component : 3"; attr1=value1; attr2=value2; attr3=value3
- * </pre>
- * <p>
- * This manifest element has a value of <tt>"component ; 1"; "component , 2"; "component : 3"</tt>.  
- * This value has three components: <tt>"component ; 1"</tt>, <tt>"component , 2"</tt>, <tt>"component : 3"</tt>.
- * </p>
- * <p>
- * This class is not intended to be subclassed by clients.
- * </p>
- * 
- * @since 3.0
- * @noextend This class is not intended to be subclassed by clients.
- */
-public class ManifestElement {
-
-	/**
-	 * The value of the manifest element.
-	 */
-	protected String value;
-
-	/**
-	 * The value components of the manifest element.
-	 */
-	protected String[] valueComponents;
-
-	/**
-	 * The table of attributes for the manifest element.
-	 */
-	protected Hashtable attributes;
-
-	/**
-	 * The table of directives for the manifest element.
-	 */
-	protected Hashtable directives;
-
-	/**
-	 * Constructs an empty manifest element with no value or attributes.
-	 */
-	protected ManifestElement() {
-		super();
-	}
-
-	/**
-	 * Returns the value of the manifest element.  The value returned is the
-	 * complete value up to the first attribute or directive.  For example, the 
-	 * following manifest element: 
-	 * <p>
-	 * <pre>
-	 * test1.jar;test2.jar;test3.jar;selection-filter="(os.name=Windows XP)"
-	 * </pre>
-	 * </p>
-	 * <p>
-	 * This manifest element has a value of <tt>test1.jar;test2.jar;test3.jar</tt>
-	 * </p>
-	 * 
-	 * @return the value of the manifest element.
-	 */
-	public String getValue() {
-		return value;
-	}
-
-	/**
-	 * Returns the value components of the manifest element. The value
-	 * components returned are the complete list of value components up to 
-	 * the first attribute or directive.  
-	 * For example, the following manifest element: 
-	 * <p>
-	 * <pre>
-	 * test1.jar;test2.jar;test3.jar;selection-filter="(os.name=Windows XP)"
-	 * </pre>
-	 * </p>
-	 * <p>
-	 * This manifest element has the value components array 
-	 * <tt>{ "test1.jar", "test2.jar", "test3.jar" }</tt>
-	 * Each value component is delemited by a semi-colon (<tt>';'</tt>).
-	 * </p>
-	 * 
-	 * @return the String[] of value components
-	 */
-	public String[] getValueComponents() {
-		return valueComponents;
-	}
-
-	/**
-	 * Returns the value for the specified attribute or <code>null</code> if it does 
-	 * not exist.  If the attribute has multiple values specified then the last value 
-	 * specified is returned. For example the following manifest element: 
-	 * <p>
-	 * <pre>
-	 * elementvalue; myattr="value1"; myattr="value2"
-	 * </pre>
-	 * </p>
-	 * <p>
-	 * specifies two values for the attribute key <tt>myattr</tt>.  In this case <tt>value2</tt>
-	 * will be returned because it is the last value specified for the attribute
-	 * <tt>myattr</tt>.
-	 * </p>
-	 * 
-	 * @param key the attribute key to return the value for
-	 * @return the attribute value or <code>null</code>
-	 */
-	public String getAttribute(String key) {
-		return getTableValue(attributes, key);
-	}
-
-	/**
-	 * Returns an array of values for the specified attribute or 
-	 * <code>null</code> if the attribute does not exist.
-	 * 
-	 * @param key the attribute key to return the values for
-	 * @return the array of attribute values or <code>null</code> 
-	 * @see #getAttribute(String)
-	 */
-	public String[] getAttributes(String key) {
-		return getTableValues(attributes, key);
-	}
-
-	/**
-	 * Returns an enumeration of attribute keys for this manifest element or
-	 * <code>null</code> if none exist.
-	 * 
-	 * @return the enumeration of attribute keys or null if none exist.
-	 */
-	public Enumeration getKeys() {
-		return getTableKeys(attributes);
-	}
-
-	/**
-	 * Add an attribute to this manifest element.
-	 * 
-	 * @param key the key of the attribute
-	 * @param value the value of the attribute
-	 */
-	protected void addAttribute(String key, String value) {
-		attributes = addTableValue(attributes, key, value);
-	}
-
-	/**
-	 * Returns the value for the specified directive or <code>null</code> if it 
-	 * does not exist.  If the directive has multiple values specified then the 
-	 * last value specified is returned. For example the following manifest element: 
-	 * <p>
-	 * <pre>
-	 * elementvalue; mydir:="value1"; mydir:="value2"
-	 * </pre>
-	 * </p>
-	 * <p>
-	 * specifies two values for the directive key <tt>mydir</tt>.  In this case <tt>value2</tt>
-	 * will be returned because it is the last value specified for the directive <tt>mydir</tt>.
-	 * </p>
-	 * 
-	 * @param key the directive key to return the value for
-	 * @return the directive value or <code>null</code>
-	 */
-	public String getDirective(String key) {
-		return getTableValue(directives, key);
-	}
-
-	/**
-	 * Returns an array of string values for the specified directives or 
-	 * <code>null</code> if it does not exist.
-	 * 
-	 * @param key the directive key to return the values for
-	 * @return the array of directive values or <code>null</code>
-	 * @see #getDirective(String)
-	 */
-	public String[] getDirectives(String key) {
-		return getTableValues(directives, key);
-	}
-
-	/**
-	 * Return an enumeration of directive keys for this manifest element or
-	 * <code>null</code> if there are none.
-	 * 
-	 * @return the enumeration of directive keys or <code>null</code>
-	 */
-	public Enumeration getDirectiveKeys() {
-		return getTableKeys(directives);
-	}
-
-	/**
-	 * Add a directive to this manifest element.
-	 * 
-	 * @param key the key of the attribute
-	 * @param value the value of the attribute
-	 */
-	protected void addDirective(String key, String value) {
-		directives = addTableValue(directives, key, value);
-	}
-
-	/*
-	 * Return the last value associated with the given key in the specified table.
-	 */
-	private String getTableValue(Hashtable table, String key) {
-		if (table == null)
-			return null;
-		Object result = table.get(key);
-		if (result == null)
-			return null;
-		if (result instanceof String)
-			return (String) result;
-
-		ArrayList valueList = (ArrayList) result;
-		//return the last value
-		return (String) valueList.get(valueList.size() - 1);
-	}
-
-	/*
-	 * Return the values associated with the given key in the specified table.
-	 */
-	private String[] getTableValues(Hashtable table, String key) {
-		if (table == null)
-			return null;
-		Object result = table.get(key);
-		if (result == null)
-			return null;
-		if (result instanceof String)
-			return new String[] {(String) result};
-		ArrayList valueList = (ArrayList) result;
-		return (String[]) valueList.toArray(new String[valueList.size()]);
-	}
-
-	/*
-	 * Return an enumeration of table keys for the specified table. 
-	 */
-	private Enumeration getTableKeys(Hashtable table) {
-		if (table == null)
-			return null;
-		return table.keys();
-	}
-
-	/*
-	 * Add the given key/value association to the specified table. If an entry already exists
-	 * for this key, then create an array list from the current value (if necessary) and
-	 * append the new value to the end of the list.
-	 */
-	private Hashtable addTableValue(Hashtable table, String key, String value) {
-		if (table == null) {
-			table = new Hashtable(7);
-		}
-		Object curValue = table.get(key);
-		if (curValue != null) {
-			ArrayList newList;
-			// create a list to contain multiple values
-			if (curValue instanceof ArrayList) {
-				newList = (ArrayList) curValue;
-			} else {
-				newList = new ArrayList(5);
-				newList.add(curValue);
-			}
-			newList.add(value);
-			table.put(key, newList);
-		} else {
-			table.put(key, value);
-		}
-		return table;
-	}
-
-	/**
-	 * Parses a manifest header value into an array of ManifestElements.  Each
-	 * ManifestElement returned will have a non-null value returned by getValue().
-	 * 
-	 * @param header the header name to parse.  This is only specified to provide error messages
-	 * 	when the header value is invalid.
-	 * @param value the header value to parse.
-	 * @return the array of ManifestElements that are represented by the header value; null will be
-	 * 	returned if the value specified is null or if the value does not parse into
-	 * 	one or more ManifestElements.
-	 * @throws BundleException if the header value is invalid
-	 */
-	public static ManifestElement[] parseHeader(String header, String value) throws BundleException {
-		if (value == null)
-			return (null);
-		ArrayList headerElements = new ArrayList(10);
-		Tokenizer tokenizer = new Tokenizer(value);
-		parseloop: while (true) {
-			String next = tokenizer.getString(";,"); //$NON-NLS-1$
-			if (next == null)
-				throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR);
-			ArrayList headerValues = new ArrayList();
-			StringBuffer headerValue = new StringBuffer(next);
-			headerValues.add(next);
-
-			if (Debug.DEBUG && Debug.DEBUG_MANIFEST)
-				Debug.print("parseHeader: " + next); //$NON-NLS-1$
-			boolean directive = false;
-			char c = tokenizer.getChar();
-			// Header values may be a list of ';' separated values.  Just append them all into one value until the first '=' or ','
-			while (c == ';') {
-				next = tokenizer.getString(";,=:"); //$NON-NLS-1$
-				if (next == null)
-					throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR);
-				c = tokenizer.getChar();
-				while (c == ':') { // may not really be a :=
-					c = tokenizer.getChar();
-					if (c != '=') {
-						String restOfNext = tokenizer.getToken(";,=:"); //$NON-NLS-1$
-						if (restOfNext == null)
-							throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR);
-						next += ":" + c + restOfNext; //$NON-NLS-1$
-						c = tokenizer.getChar();
-					} else
-						directive = true;
-				}
-				if (c == ';' || c == ',' || c == '\0') /* more */{
-					headerValues.add(next);
-					headerValue.append(";").append(next); //$NON-NLS-1$
-					if (Debug.DEBUG && Debug.DEBUG_MANIFEST)
-						Debug.print(";" + next); //$NON-NLS-1$
-				}
-			}
-			// found the header value create a manifestElement for it.
-			ManifestElement manifestElement = new ManifestElement();
-			manifestElement.value = headerValue.toString();
-			manifestElement.valueComponents = (String[]) headerValues.toArray(new String[headerValues.size()]);
-
-			// now add any attributes/directives for the manifestElement.
-			while (c == '=' || c == ':') {
-				while (c == ':') { // may not really be a :=
-					c = tokenizer.getChar();
-					if (c != '=') {
-						String restOfNext = tokenizer.getToken("=:"); //$NON-NLS-1$
-						if (restOfNext == null)
-							throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR);
-						next += ":" + c + restOfNext; //$NON-NLS-1$
-						c = tokenizer.getChar();
-					} else
-						directive = true;
-				}
-				String val = tokenizer.getString(";,"); //$NON-NLS-1$
-				if (val == null)
-					throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR);
-
-				if (Debug.DEBUG && Debug.DEBUG_MANIFEST)
-					Debug.print(";" + next + "=" + val); //$NON-NLS-1$ //$NON-NLS-2$
-				try {
-					if (directive)
-						manifestElement.addDirective(next, val);
-					else
-						manifestElement.addAttribute(next, val);
-					directive = false;
-				} catch (Exception e) {
-					throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR, e);
-				}
-				c = tokenizer.getChar();
-				if (c == ';') /* more */{
-					next = tokenizer.getToken("=:"); //$NON-NLS-1$
-					if (next == null)
-						throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR);
-					c = tokenizer.getChar();
-				}
-			}
-			headerElements.add(manifestElement);
-			if (Debug.DEBUG && Debug.DEBUG_MANIFEST)
-				Debug.println(""); //$NON-NLS-1$
-			if (c == ',') /* another manifest element */
-				continue parseloop;
-			if (c == '\0') /* end of value */
-				break parseloop;
-			throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_HEADER_EXCEPTION, header, value), BundleException.MANIFEST_ERROR);
-		}
-		int size = headerElements.size();
-		if (size == 0)
-			return (null);
-
-		ManifestElement[] result = (ManifestElement[]) headerElements.toArray(new ManifestElement[size]);
-		return (result);
-	}
-
-	/**
-	 * Returns the result of converting a list of comma-separated tokens into an array.
-	 * 
-	 * @return the array of string tokens or <code>null</code> if there are none
-	 * @param stringList the initial comma-separated string
-	 */
-	public static String[] getArrayFromList(String stringList) {
-		String[] result = getArrayFromList(stringList, ","); //$NON-NLS-1$
-		return result.length == 0 ? null : result;
-	}
-
-	/**
-	 * Returns the result of converting a list of tokens into an array.  The tokens
-	 * are split using the specified separator.
-	 * 
-	 * @return the array of string tokens.  If there are none then an empty array
-	 * is returned.
-	 * @param stringList the initial string list
-	 * @param separator the separator to use to split the list into tokens.
-	 * @since 3.2
-	 */
-	public static String[] getArrayFromList(String stringList, String separator) {
-		if (stringList == null || stringList.trim().length() == 0)
-			return new String[0];
-		ArrayList list = new ArrayList();
-		StringTokenizer tokens = new StringTokenizer(stringList, separator);
-		while (tokens.hasMoreTokens()) {
-			String token = tokens.nextToken().trim();
-			if (token.length() != 0)
-				list.add(token);
-		}
-		return (String[]) list.toArray(new String[list.size()]);
-	}
-
-	/**
-	 * Parses a bundle manifest and puts the header/value pairs into the supplied Map.
-	 * Only the main section of the manifest is parsed (up to the first blank line).  All
-	 * other sections are ignored.  If a header is duplicated then only the last  
-	 * value is stored in the map.
-	 * <p>
-	 * The supplied input stream is consumed by this method and will be closed.
-	 * If the supplied Map is null then a Map is created to put the header/value pairs into.
-	 * </p>
-	 * @param manifest an input stream for a bundle manifest.
-	 * @param headers a map used to put the header/value pairs from the bundle manifest.  This value may be null.
-	 * @throws BundleException if the manifest has an invalid syntax
-	 * @throws IOException if an error occurs while reading the manifest
-	 * @return the map with the header/value pairs from the bundle manifest
-	 */
-	public static Map parseBundleManifest(InputStream manifest, Map headers) throws IOException, BundleException {
-		if (headers == null)
-			headers = new HashMap();
-		BufferedReader br;
-		try {
-			br = new BufferedReader(new InputStreamReader(manifest, "UTF8")); //$NON-NLS-1$
-		} catch (UnsupportedEncodingException e) {
-			br = new BufferedReader(new InputStreamReader(manifest));
-		}
-		try {
-			String header = null;
-			StringBuffer value = new StringBuffer(256);
-			boolean firstLine = true;
-
-			while (true) {
-				String line = br.readLine();
-				/* The java.util.jar classes in JDK 1.3 use the value of the last
-				 * encountered manifest header. So we do the same to emulate
-				 * this behavior. We no longer throw a BundleException
-				 * for duplicate manifest headers.
-				 */
-
-				if ((line == null) || (line.length() == 0)) /* EOF or empty line */
-				{
-					if (!firstLine) /* flush last line */
-					{
-						headers.put(header, value.toString().trim());
-					}
-					break; /* done processing main attributes */
-				}
-
-				if (line.charAt(0) == ' ') /* continuation */
-				{
-					if (firstLine) /* if no previous line */
-					{
-						throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_SPACE, line), BundleException.MANIFEST_ERROR);
-					}
-					value.append(line.substring(1));
-					continue;
-				}
-
-				if (!firstLine) {
-					headers.put(header, value.toString().trim());
-					value.setLength(0); /* clear StringBuffer */
-				}
-
-				int colon = line.indexOf(':');
-				if (colon == -1) /* no colon */
-				{
-					throw new BundleException(NLS.bind(Msg.MANIFEST_INVALID_LINE_NOCOLON, line), BundleException.MANIFEST_ERROR);
-				}
-				header = line.substring(0, colon).trim();
-				value.append(line.substring(colon + 1));
-				firstLine = false;
-			}
-		} finally {
-			try {
-				br.close();
-			} catch (IOException ee) {
-				// do nothing
-			}
-		}
-		return headers;
-	}
-
-	public String toString() {
-		Enumeration attrKeys = getKeys();
-		Enumeration directiveKeys = getDirectiveKeys();
-		if (attrKeys == null && directiveKeys == null)
-			return value;
-		StringBuffer result = new StringBuffer(value);
-		if (attrKeys != null) {
-			while (attrKeys.hasMoreElements()) {
-				String key = (String) attrKeys.nextElement();
-				addValues(false, key, getAttributes(key), result);
-			}
-		}
-		if (directiveKeys != null) {
-			while (directiveKeys.hasMoreElements()) {
-				String key = (String) directiveKeys.nextElement();
-				addValues(true, key, getDirectives(key), result);
-			}
-		}
-		return result.toString();
-	}
-
-	private void addValues(boolean directive, String key, String[] values, StringBuffer result) {
-		if (values == null)
-			return;
-		for (int i = 0; i < values.length; i++) {
-			result.append(';').append(key);
-			if (directive)
-				result.append(':');
-			result.append("=\"").append(values[i]).append('\"'); //$NON-NLS-1$			
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/NLS.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/NLS.java
deleted file mode 100644
index 058e4a1..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/NLS.java
+++ /dev/null
@@ -1,426 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2010 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of 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.osgi.util;
-
-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.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-
-/**
- * Common superclass for all message bundle classes.  Provides convenience
- * methods for manipulating messages.
- * <p>
- * The <code>#bind</code> methods perform string substitution and should be considered a
- * convenience and <em>not</em> a full substitute replacement for <code>MessageFormat#format</code>
- * method calls. 
- * </p>
- * <p>
- * Text appearing within curly braces in the given message, will be interpreted
- * as a numeric index to the corresponding substitution object in the given array. Calling
- * the <code>#bind</code> methods with text that does not map to an integer will result in an
- * {@link IllegalArgumentException}.
- * </p>
- * <p>
- * Text appearing within single quotes is treated as a literal. A single quote is escaped by
- * a preceeding single quote.
- * </p>
- * <p>
- * Clients who wish to use the full substitution power of the <code>MessageFormat</code> class should
- * call that class directly and not use these <code>#bind</code> methods.
- * </p>
- * <p>
- * Clients may subclass this type.
- * </p>
- * 
- * @since 3.1
- */
-public abstract class NLS {
-
-	private static final Object[] EMPTY_ARGS = new Object[0];
-	private static final String EXTENSION = ".properties"; //$NON-NLS-1$
-	private static String[] nlSuffixes;
-	private static final String PROP_WARNINGS = "osgi.nls.warnings"; //$NON-NLS-1$
-	private static final String IGNORE = "ignore"; //$NON-NLS-1$
-	private static final boolean ignoreWarnings = IGNORE.equals(FrameworkProperties.getProperty(PROP_WARNINGS));
-
-	/*
-	 * NOTE do not change the name of this field; it is set by the Framework using reflection
-	 */
-	private static FrameworkLog frameworkLog;
-
-	static final int SEVERITY_ERROR = 0x04;
-	static final int SEVERITY_WARNING = 0x02;
-	/*
-	 * 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();
-
-	/**
-	 * Creates a new NLS instance.
-	 */
-	protected NLS() {
-		super();
-	}
-
-	/**
-	 * Bind the given message's substitution locations with the given string value.
-	 * 
-	 * @param message the message to be manipulated
-	 * @param binding the object to be inserted into the message
-	 * @return the manipulated String
-	 * @throws IllegalArgumentException if the text appearing within curly braces in the given message does not map to an integer 
-	 */
-	public static String bind(String message, Object binding) {
-		return internalBind(message, null, String.valueOf(binding), null);
-	}
-
-	/**
-	 * Bind the given message's substitution locations with the given string values.
-	 * 
-	 * @param message the message to be manipulated
-	 * @param binding1 An object to be inserted into the message
-	 * @param binding2 A second object to be inserted into the message
-	 * @return the manipulated String
-	 * @throws IllegalArgumentException if the text appearing within curly braces in the given message does not map to an integer
-	 */
-	public static String bind(String message, Object binding1, Object binding2) {
-		return internalBind(message, null, String.valueOf(binding1), String.valueOf(binding2));
-	}
-
-	/**
-	 * Bind the given message's substitution locations with the given string values.
-	 * 
-	 * @param message the message to be manipulated
-	 * @param bindings An array of objects to be inserted into the message
-	 * @return the manipulated String
-	 * @throws IllegalArgumentException if the text appearing within curly braces in the given message does not map to an integer
-	 */
-	public static String bind(String message, Object[] bindings) {
-		return internalBind(message, bindings, null, null);
-	}
-
-	/**
-	 * Initialize the given class with the values from the specified message bundle.
-	 * 
-	 * @param bundleName fully qualified path of the class name
-	 * @param clazz the class where the constants will exist
-	 */
-	public static void initializeMessages(final String bundleName, final Class clazz) {
-		if (System.getSecurityManager() == null) {
-			load(bundleName, clazz);
-			return;
-		}
-		AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				load(bundleName, clazz);
-				return null;
-			}
-		});
-	}
-
-	/*
-	 * Perform the string substitution on the given message with the specified args.
-	 * See the class comment for exact details.
-	 */
-	private static String internalBind(String message, Object[] args, String argZero, String argOne) {
-		if (message == null)
-			return "No message available."; //$NON-NLS-1$
-		if (args == null || args.length == 0)
-			args = EMPTY_ARGS;
-
-		int length = message.length();
-		//estimate correct size of string buffer to avoid growth
-		int bufLen = length + (args.length * 5);
-		if (argZero != null)
-			bufLen += argZero.length() - 3;
-		if (argOne != null)
-			bufLen += argOne.length() - 3;
-		StringBuffer buffer = new StringBuffer(bufLen < 0 ? 0 : bufLen);
-		for (int i = 0; i < length; i++) {
-			char c = message.charAt(i);
-			switch (c) {
-				case '{' :
-					int index = message.indexOf('}', i);
-					// if we don't have a matching closing brace then...
-					if (index == -1) {
-						buffer.append(c);
-						break;
-					}
-					i++;
-					if (i >= length) {
-						buffer.append(c);
-						break;
-					}
-					// look for a substitution
-					int number = -1;
-					try {
-						number = Integer.parseInt(message.substring(i, index));
-					} catch (NumberFormatException e) {
-						throw (IllegalArgumentException) new IllegalArgumentException().initCause(e);
-					}
-					if (number == 0 && argZero != null)
-						buffer.append(argZero);
-					else if (number == 1 && argOne != null)
-						buffer.append(argOne);
-					else {
-						if (number >= args.length || number < 0) {
-							buffer.append("<missing argument>"); //$NON-NLS-1$
-							i = index;
-							break;
-						}
-						buffer.append(args[number]);
-					}
-					i = index;
-					break;
-				case '\'' :
-					// if a single quote is the last char on the line then skip it
-					int nextIndex = i + 1;
-					if (nextIndex >= length) {
-						buffer.append(c);
-						break;
-					}
-					char next = message.charAt(nextIndex);
-					// if the next char is another single quote then write out one
-					if (next == '\'') {
-						i++;
-						buffer.append(c);
-						break;
-					}
-					// otherwise we want to read until we get to the next single quote
-					index = message.indexOf('\'', nextIndex);
-					// if there are no more in the string, then skip it
-					if (index == -1) {
-						buffer.append(c);
-						break;
-					}
-					// otherwise write out the chars inside the quotes
-					buffer.append(message.substring(nextIndex, index));
-					i = index;
-					break;
-				default :
-					buffer.append(c);
-			}
-		}
-		return buffer.toString();
-	}
-
-	/*
-	 * 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;
-	}
-
-	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$
-				if (Debug.DEBUG_MESSAGE_BUNDLES)
-					System.out.println(value);
-				log(SEVERITY_WARNING, value, null);
-				if (!isAccessible)
-					field.setAccessible(true);
-				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.
-	 */
-	static void load(final String bundleName, Class clazz) {
-		long start = System.currentTimeMillis();
-		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++) {
-			// loader==null if we're launched off the Java boot classpath
-			final InputStream input = loader == null ? ClassLoader.getSystemResourceAsStream(variants[i]) : 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);
-		if (Debug.DEBUG_MESSAGE_BUNDLES)
-			System.out.println("Time to load message bundle: " + bundleName + " was " + (System.currentTimeMillis() - start) + "ms."); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	/*
-	 * The method adds a log entry based on the error message and exception. 
-	 * The output is written to the System.err.
-	 * 
-	 * This method is only expected to be called if there is a problem in
-	 * the NLS mechanism. As a result, translation facility is not available 
-	 * here and messages coming out of this log are generally not translated.
-	 * 
-	 * @param severity - severity of the message (SEVERITY_ERROR or SEVERITY_WARNING)
-	 * @param message - message to log
-	 * @param e - exception to log
-	 */
-	static void log(int severity, String message, Exception e) {
-		if (severity == SEVERITY_WARNING && ignoreWarnings)
-			return; // ignoring warnings; bug 292980
-		if (frameworkLog != null) {
-			frameworkLog.log(new FrameworkLogEntry("org.eclipse.osgi", severity, 1, message, 0, e, null)); //$NON-NLS-1$
-			return;
-		}
-		String statusMsg;
-		switch (severity) {
-			case SEVERITY_ERROR :
-				statusMsg = "Error: "; //$NON-NLS-1$
-				break;
-			case SEVERITY_WARNING :
-				// intentionally fall through:
-			default :
-				statusMsg = "Warning: "; //$NON-NLS-1$
-		}
-		if (message != null)
-			statusMsg += message;
-		if (e != null)
-			statusMsg += ": " + e.getMessage(); //$NON-NLS-1$
-		System.err.println(statusMsg);
-		if (e != null)
-			e.printStackTrace();
-	}
-
-	/*
-	 * Class which sub-classes java.util.Properties and uses the #put method
-	 * to set field values rather than storing the values in the table.
-	 */
-	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$
-				if (Debug.DEBUG_MESSAGE_BUNDLES)
-					System.out.println(msg);
-				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)
-					field.setAccessible(true);
-				// 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.
-
-				// Extra care is taken to be sure we create a String with its own backing char[] (bug 287183)
-				// This is to ensure we do not keep the key chars in memory.
-				field.set(null, new String(((String) value).toCharArray()));
-			} catch (Exception e) {
-				log(SEVERITY_ERROR, "Exception setting field value.", e); //$NON-NLS-1$
-			}
-			return null;
-		}
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/systembundle.properties b/bundles/org.eclipse.osgi/systembundle.properties
deleted file mode 100644
index deb9659..0000000
--- a/bundles/org.eclipse.osgi/systembundle.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-###############################################################################
-# Copyright (c) 2003, 2009 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-#
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-systemBundle = OSGi System Bundle
-eclipse.org = Eclipse.org - Equinox
-copyright = 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
diff --git a/features/org.eclipse.equinox.core.sdk/.project b/features/org.eclipse.equinox.core.sdk/.project
deleted file mode 100644
index 2209541..0000000
--- a/features/org.eclipse.equinox.core.sdk/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.core.sdk</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.pde.FeatureBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.FeatureNature</nature>
-	</natures>
-</projectDescription>
diff --git a/features/org.eclipse.equinox.core.sdk/build.properties b/features/org.eclipse.equinox.core.sdk/build.properties
deleted file mode 100644
index 532bf01..0000000
--- a/features/org.eclipse.equinox.core.sdk/build.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 EclipseSource and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     EclipseSource - initial API and implementation
-###############################################################################
-bin.includes = feature.xml,license.html,epl-v10.html,license.html,feature.properties
-
-generate.plugin@org.eclipse.equinox.common.source=org.eclipse.equinox.common
-generate.plugin@org.eclipse.equinox.concurrent.source=org.eclipse.equinox.concurrent
-generate.plugin@org.eclipse.equinox.launcher.source=org.eclipse.equinox.launcher
-generate.plugin@org.eclipse.equinox.registry.source=org.eclipse.equinox.registry
-generate.plugin@org.eclipse.equinox.simpleconfigurator.source=org.eclipse.equinox.simpleconfigurator
-generate.plugin@org.eclipse.equinox.supplement.source=org.eclipse.equinox.supplement
-generate.plugin@org.eclipse.equinox.transforms.hook.source=org.eclipse.equinox.transforms.hook
-generate.plugin@org.eclipse.equinox.transforms.xslt.source=org.eclipse.equinox.transforms.xslt
-generate.plugin@org.eclipse.osgi.services.source=org.eclipse.osgi.services
-generate.plugin@org.eclipse.osgi.source=org.eclipse.osgi
-generate.plugin@org.eclipse.osgi.util.source=org.eclipse.osgi.util
-generate.plugin@org.eclipse.equinox.security.win32.x86.source=org.eclipse.equinox.security.win32.x86
-generate.plugin@org.eclipse.equinox.security.macosx.source=org.eclipse.equinox.security.macosx
-generate.plugin@org.eclipse.equinox.security.source=org.eclipse.equinox.security
-generate.plugin@org.eclipse.equinox.security.ui.source=org.eclipse.equinox.security.ui
diff --git a/features/org.eclipse.equinox.core.sdk/epl-v10.html b/features/org.eclipse.equinox.core.sdk/epl-v10.html
deleted file mode 100755
index ed4b196..0000000
--- a/features/org.eclipse.equinox.core.sdk/epl-v10.html
+++ /dev/null
@@ -1,328 +0,0 @@
-<html xmlns:o="urn:schemas-microsoft-com:office:office"
-xmlns:w="urn:schemas-microsoft-com:office:word"
-xmlns="http://www.w3.org/TR/REC-html40">
-
-<head>
-<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
-<meta name=ProgId content=Word.Document>
-<meta name=Generator content="Microsoft Word 9">
-<meta name=Originator content="Microsoft Word 9">
-<link rel=File-List
-href="./Eclipse%20EPL%202003_11_10%20Final_files/filelist.xml">
-<title>Eclipse Public License - Version 1.0</title>
-<!--[if gte mso 9]><xml>
- <o:DocumentProperties>
-  <o:Revision>2</o:Revision>
-  <o:TotalTime>3</o:TotalTime>
-  <o:Created>2004-03-05T23:03:00Z</o:Created>
-  <o:LastSaved>2004-03-05T23:03:00Z</o:LastSaved>
-  <o:Pages>4</o:Pages>
-  <o:Words>1626</o:Words>
-  <o:Characters>9270</o:Characters>
-   <o:Lines>77</o:Lines>
-  <o:Paragraphs>18</o:Paragraphs>
-  <o:CharactersWithSpaces>11384</o:CharactersWithSpaces>
-  <o:Version>9.4402</o:Version>
- </o:DocumentProperties>
-</xml><![endif]--><!--[if gte mso 9]><xml>
- <w:WordDocument>
-  <w:TrackRevisions/>
- </w:WordDocument>
-</xml><![endif]-->
-<style>
-<!--
- /* Font Definitions */
-@font-face
-	{font-family:Tahoma;
-	panose-1:2 11 6 4 3 5 4 4 2 4;
-	mso-font-charset:0;
-	mso-generic-font-family:swiss;
-	mso-font-pitch:variable;
-	mso-font-signature:553679495 -2147483648 8 0 66047 0;}
- /* Style Definitions */
-p.MsoNormal, li.MsoNormal, div.MsoNormal
-	{mso-style-parent:"";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p
-	{margin-right:0in;
-	mso-margin-top-alt:auto;
-	mso-margin-bottom-alt:auto;
-	margin-left:0in;
-	mso-pagination:widow-orphan;
-	font-size:12.0pt;
-	font-family:"Times New Roman";
-	mso-fareast-font-family:"Times New Roman";}
-p.BalloonText, li.BalloonText, div.BalloonText
-	{mso-style-name:"Balloon Text";
-	margin:0in;
-	margin-bottom:.0001pt;
-	mso-pagination:widow-orphan;
-	font-size:8.0pt;
-	font-family:Tahoma;
-	mso-fareast-font-family:"Times New Roman";}
-@page Section1
-	{size:8.5in 11.0in;
-	margin:1.0in 1.25in 1.0in 1.25in;
-	mso-header-margin:.5in;
-	mso-footer-margin:.5in;
-	mso-paper-source:0;}
-div.Section1
-	{page:Section1;}
--->
-</style>
-</head>
-
-<body lang=EN-US style='tab-interval:.5in'>
-
-<div class=Section1>
-
-<p align=center style='text-align:center'><b>Eclipse Public License - v 1.0</b>
-</p>
-
-<p><span style='font-size:10.0pt'>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER
-THE TERMS OF THIS ECLIPSE PUBLIC LICENSE (&quot;AGREEMENT&quot;). ANY USE,
-REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE
-OF THIS AGREEMENT.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>1. DEFINITIONS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Contribution&quot; means:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and<br clear=left>
-b) in the case of each subsequent Contributor:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-changes to the Program, and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-additions to the Program;</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>where
-such changes and/or additions to the Program originate from and are distributed
-by that particular Contributor. A Contribution 'originates' from a Contributor
-if it was added to the Program by such Contributor itself or anyone acting on
-such Contributor's behalf. Contributions do not include additions to the
-Program which: (i) are separate modules of software distributed in conjunction
-with the Program under their own license agreement, and (ii) are not derivative
-works of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Contributor&quot; means any person or
-entity that distributes the Program.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Licensed Patents &quot; mean patent
-claims licensable by a Contributor which are necessarily infringed by the use
-or sale of its Contribution alone or when combined with the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>&quot;Program&quot; means the Contributions
-distributed in accordance with this Agreement.</span> </p>
-
-<p><span style='font-size:10.0pt'>&quot;Recipient&quot; means anyone who
-receives the Program under this Agreement, including all Contributors.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>2. GRANT OF RIGHTS</span></b> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-Subject to the terms of this Agreement, each Contributor hereby grants Recipient
-a non-exclusive, worldwide, royalty-free copyright license to<span
-style='color:red'> </span>reproduce, prepare derivative works of, publicly
-display, publicly perform, distribute and sublicense the Contribution of such
-Contributor, if any, and such derivative works, in source code and object code
-form.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide,<span style='color:green'> </span>royalty-free
-patent license under Licensed Patents to make, use, sell, offer to sell, import
-and otherwise transfer the Contribution of such Contributor, if any, in source
-code and object code form. This patent license shall apply to the combination
-of the Contribution and the Program if, at the time the Contribution is added
-by the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply to
-any other combinations which include the Contribution. No hardware per se is
-licensed hereunder. </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>c)
-Recipient understands that although each Contributor grants the licenses to its
-Contributions set forth herein, no assurances are provided by any Contributor
-that the Program does not infringe the patent or other intellectual property
-rights of any other entity. Each Contributor disclaims any liability to Recipient
-for claims brought by any other entity based on infringement of intellectual
-property rights or otherwise. As a condition to exercising the rights and
-licenses granted hereunder, each Recipient hereby assumes sole responsibility
-to secure any other intellectual property rights needed, if any. For example,
-if a third party patent license is required to allow Recipient to distribute
-the Program, it is Recipient's responsibility to acquire that license before
-distributing the Program.</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>d)
-Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement. </span></p>
-
-<p><b><span style='font-size:10.0pt'>3. REQUIREMENTS</span></b> </p>
-
-<p><span style='font-size:10.0pt'>A Contributor may choose to distribute the
-Program in object code form under its own license agreement, provided that:</span>
-</p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it complies with the terms and conditions of this Agreement; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b)
-its license agreement:</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>i)
-effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>ii)
-effectively excludes on behalf of all Contributors all liability for damages,
-including direct, indirect, special, incidental and consequential damages, such
-as lost profits; </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iii)
-states that any provisions which differ from this Agreement are offered by that
-Contributor alone and not by any other party; and</span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>iv)
-states that source code for the Program is available from such Contributor, and
-informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.<span style='color:blue'> </span></span></p>
-
-<p><span style='font-size:10.0pt'>When the Program is made available in source
-code form:</span> </p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>a)
-it must be made available under this Agreement; and </span></p>
-
-<p class=MsoNormal style='margin-left:.5in'><span style='font-size:10.0pt'>b) a
-copy of this Agreement must be included with each copy of the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Contributors may not remove or alter any
-copyright notices contained within the Program. </span></p>
-
-<p><span style='font-size:10.0pt'>Each Contributor must identify itself as the
-originator of its Contribution, if any, in a manner that reasonably allows
-subsequent Recipients to identify the originator of the Contribution. </span></p>
-
-<p><b><span style='font-size:10.0pt'>4. COMMERCIAL DISTRIBUTION</span></b> </p>
-
-<p><span style='font-size:10.0pt'>Commercial distributors of software may
-accept certain responsibilities with respect to end users, business partners
-and the like. While this license is intended to facilitate the commercial use
-of the Program, the Contributor who includes the Program in a commercial
-product offering should do so in a manner which does not create potential
-liability for other Contributors. Therefore, if a Contributor includes the
-Program in a commercial product offering, such Contributor (&quot;Commercial
-Contributor&quot;) hereby agrees to defend and indemnify every other
-Contributor (&quot;Indemnified Contributor&quot;) against any losses, damages and
-costs (collectively &quot;Losses&quot;) arising from claims, lawsuits and other
-legal actions brought by a third party against the Indemnified Contributor to
-the extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor
-to control, and cooperate with the Commercial Contributor in, the defense and
-any related settlement negotiations. The Indemnified Contributor may participate
-in any such claim at its own expense.</span> </p>
-
-<p><span style='font-size:10.0pt'>For example, a Contributor might include the
-Program in a commercial product offering, Product X. That Contributor is then a
-Commercial Contributor. If that Commercial Contributor then makes performance
-claims, or offers warranties related to Product X, those performance claims and
-warranties are such Commercial Contributor's responsibility alone. Under this
-section, the Commercial Contributor would have to defend claims against the
-other Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>5. NO WARRANTY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, THE PROGRAM IS PROVIDED ON AN &quot;AS IS&quot; BASIS, WITHOUT
-WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
-WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT,
-MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
-responsible for determining the appropriateness of using and distributing the
-Program and assumes all risks associated with its exercise of rights under this
-Agreement , including but not limited to the risks and costs of program errors,
-compliance with applicable laws, damage to or loss of data, programs or
-equipment, and unavailability or interruption of operations. </span></p>
-
-<p><b><span style='font-size:10.0pt'>6. DISCLAIMER OF LIABILITY</span></b> </p>
-
-<p><span style='font-size:10.0pt'>EXCEPT AS EXPRESSLY SET FORTH IN THIS
-AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY
-OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF
-THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF
-THE POSSIBILITY OF SUCH DAMAGES.</span> </p>
-
-<p><b><span style='font-size:10.0pt'>7. GENERAL</span></b> </p>
-
-<p><span style='font-size:10.0pt'>If any provision of this Agreement is invalid
-or unenforceable under applicable law, it shall not affect the validity or
-enforceability of the remainder of the terms of this Agreement, and without
-further action by the parties hereto, such provision shall be reformed to the
-minimum extent necessary to make such provision valid and enforceable.</span> </p>
-
-<p><span style='font-size:10.0pt'>If Recipient institutes patent litigation
-against any entity (including a cross-claim or counterclaim in a lawsuit)
-alleging that the Program itself (excluding combinations of the Program with
-other software or hardware) infringes such Recipient's patent(s), then such
-Recipient's rights granted under Section 2(b) shall terminate as of the date
-such litigation is filed. </span></p>
-
-<p><span style='font-size:10.0pt'>All Recipient's rights under this Agreement
-shall terminate if it fails to comply with any of the material terms or
-conditions of this Agreement and does not cure such failure in a reasonable
-period of time after becoming aware of such noncompliance. If all Recipient's
-rights under this Agreement terminate, Recipient agrees to cease use and
-distribution of the Program as soon as reasonably practicable. However,
-Recipient's obligations under this Agreement and any licenses granted by
-Recipient relating to the Program shall continue and survive. </span></p>
-
-<p><span style='font-size:10.0pt'>Everyone is permitted to copy and distribute
-copies of this Agreement, but in order to avoid inconsistency the Agreement is
-copyrighted and may only be modified in the following manner. The Agreement
-Steward reserves the right to publish new versions (including revisions) of
-this Agreement from time to time. No one other than the Agreement Steward has
-the right to modify this Agreement. The Eclipse Foundation is the initial
-Agreement Steward. The Eclipse Foundation may assign the responsibility to
-serve as the Agreement Steward to a suitable separate entity. Each new version
-of the Agreement will be given a distinguishing version number. The Program
-(including Contributions) may always be distributed subject to the version of
-the Agreement under which it was received. In addition, after a new version of
-the Agreement is published, Contributor may elect to distribute the Program
-(including its Contributions) under the new version. Except as expressly stated
-in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to
-the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.</span> </p>
-
-<p><span style='font-size:10.0pt'>This Agreement is governed by the laws of the
-State of New York and the intellectual property laws of the United States of
-America. No party to this Agreement will bring a legal action under this
-Agreement more than one year after the cause of action arose. Each party waives
-its rights to a jury trial in any resulting litigation.</span> </p>
-
-<p class=MsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
-
-</div>
-
-</body>
-
-</html>
\ No newline at end of file
diff --git a/features/org.eclipse.equinox.core.sdk/feature.properties b/features/org.eclipse.equinox.core.sdk/feature.properties
deleted file mode 100755
index f9c9561..0000000
--- a/features/org.eclipse.equinox.core.sdk/feature.properties
+++ /dev/null
@@ -1,174 +0,0 @@
-###############################################################################
-# Copyright (c) 2009 EclipseSource and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     EclipseSource - initial API and implementation
-###############################################################################
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "featureName" property - name of the feature
-featureName=Equinox Core SDK
-
-# "providerName" property - name of the company that provides the feature
-providerName=Eclipse Equinox Project
-
-# "updateSiteName" property - label for the update site
-updateSiteName=The Equinox Project Repository
-
-# "description" property - description of the feature
-description=A collection of core Equinox bundles and source including the Equinox framework \
-implementation itself. \n\
-This feature includes the corresponding source and is intended \
-to be added to target platforms at development time rather than \
-deployed with end-user systems.
-
-# "copyright" property - text of the "Feature Update Copyright"
-copyright=\
-Copyright (c) 2009 EclipseSource and others.\n\
-All rights reserved. This program and the accompanying materials\n\
-are made available under the terms of the Eclipse Public License v1.0\n\
-which accompanies this distribution, and is available at\n\
-http://www.eclipse.org/legal/epl-v10.html\n\
-\n\
-Contributors:\n\
-    EclipseSource - initial API and implementation\n
-################ end of copyright property ####################################
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=license.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Eclipse Foundation Software User Agreement\n\
-April 14, 2010\n\
-\n\
-Usage Of Content\n\
-\n\
-THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR\n\
-OTHER MATERIALS FOR OPEN SOURCE PROJECTS (COLLECTIVELY "CONTENT").\n\
-USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS\n\
-AGREEMENT AND/OR THE TERMS AND CONDITIONS OF LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU\n\
-AGREE THAT YOUR USE OF THE CONTENT IS GOVERNED BY THIS AGREEMENT\n\
-AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS\n\
-OR NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE\n\
-TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND CONDITIONS\n\
-OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED\n\
-BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the\n\
-Eclipse Foundation is provided to you under the terms and conditions of\n\
-the Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is\n\
-provided with this Content and is also available at http://www.eclipse.org/legal/epl-v10.html.\n\
-For purposes of the EPL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code,\n\
-documentation and other files maintained in the Eclipse Foundation source code\n\
-repository ("Repository") in software modules ("Modules") and made available\n\
-as downloadable archives ("Downloads").\n\
-\n\
-       - Content may be structured and packaged into modules to facilitate delivering,\n\
-         extending, and upgrading the Content. Typical modules may include plug-ins ("Plug-ins"),\n\
-         plug-in fragments ("Fragments"), and features ("Features").\n\
-       - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java(TM) ARchive)\n\
-         in a directory named "plugins".\n\
-       - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.\n\
-         Each Feature may be packaged as a sub-directory in a directory named "features".\n\
-         Within a Feature, files named "feature.xml" may contain a list of the names and version\n\
-         numbers of the Plug-ins and/or Fragments associated with that Feature.\n\
-       - Features may also include other Features ("Included Features"). Within a Feature, files\n\
-         named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be\n\
-contained in files named "about.html" ("Abouts"). The terms and\n\
-conditions governing Features and Included Features should be contained\n\
-in files named "license.html" ("Feature Licenses"). Abouts and Feature\n\
-Licenses may be located in any directory of a Download or Module\n\
-including, but not limited to the following locations:\n\
-\n\
-       - The top-level (root) directory\n\
-       - Plug-in and Fragment directories\n\
-       - Inside Plug-ins and Fragments packaged as JARs\n\
-       - Sub-directories of the directory named "src" of certain Plug-ins\n\
-       - Feature directories\n\
-\n\
-Note: if a Feature made available by the Eclipse Foundation is installed using the\n\
-Provisioning Technology (as defined below), you must agree to a license ("Feature \n\
-Update License") during the installation process. If the Feature contains\n\
-Included Features, the Feature Update License should either provide you\n\
-with the terms and conditions governing the Included Features or inform\n\
-you where you can locate them. Feature Update Licenses may be found in\n\
-the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the\n\
-terms and conditions (or references to such terms and conditions) that\n\
-govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER\n\
-TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-       - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-       - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-       - Apache Software License 2.0 (available at http://www.apache.org/licenses/LICENSE-2.0)\n\
-       - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-       - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-\n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR\n\
-TO USE OF THE CONTENT. If no About, Feature License, or Feature Update License\n\
-is provided, please contact the Eclipse Foundation to determine what terms and conditions\n\
-govern that particular Content.\n\
-\n\
-\n\Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include,\n\
-but are not limited to, p2 and the Eclipse Update Manager ("Provisioning Technology") for\n\
-the purpose of allowing users to install software, documentation, information and/or\n\
-other materials (collectively "Installable Software"). This capability is provided with\n\
-the intent of allowing such users to install, extend and update Eclipse-based products.\n\
-Information about packaging Installable Software is available at\n\
-http://eclipse.org/equinox/p2/repository_packaging.html ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software.\n\
-You shall be responsible for enabling the applicable license agreements relating to the\n\
-Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-in accordance with the Specification. By using Provisioning Technology in such a manner and\n\
-making it available in accordance with the Specification, you further acknowledge your\n\
-agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-       1. A series of actions may occur ("Provisioning Process") in which a user may execute\n\
-          the Provisioning Technology on a machine ("Target Machine") with the intent of installing,\n\
-          extending or updating the functionality of an Eclipse-based product.\n\
-       2. During the Provisioning Process, the Provisioning Technology may cause third party\n\
-          Installable Software or a portion thereof to be accessed and copied to the Target Machine.\n\
-       3. Pursuant to the Specification, you will provide to the user the terms and conditions that\n\
-          govern the use of the Installable Software ("Installable Software Agreement") and such\n\
-          Installable Software Agreement shall be accessed from the Target Machine in accordance\n\
-          with the Specification. Such Installable Software Agreement must inform the user of the\n\
-          terms and conditions that govern the Installable Software and must solicit acceptance by\n\
-          the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-          indication of agreement by the user, the provisioning Technology will complete installation\n\
-          of the Installable Software.\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are\n\
-currently may have restrictions on the import, possession, and use,\n\
-and/or re-export to another country, of encryption software. BEFORE\n\
-using any encryption software, please check the country's laws,\n\
-regulations and policies concerning the import, possession, or use, and\n\
-re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n
-########### end of license property ##########################################
diff --git a/features/org.eclipse.equinox.core.sdk/feature.xml b/features/org.eclipse.equinox.core.sdk/feature.xml
deleted file mode 100644
index c0e9d25..0000000
--- a/features/org.eclipse.equinox.core.sdk/feature.xml
+++ /dev/null
@@ -1,280 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<feature
-      id="org.eclipse.equinox.core.sdk"
-      label="%featureName"
-      version="3.6.1.qualifier"
-      provider-name="%providerName">
-
-   <description>
-      %description
-   </description>
-
-   <copyright>
-      %copyright
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <plugin
-         id="org.eclipse.osgi"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.osgi.services"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.osgi.services.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.osgi.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.common"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.common.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.launcher"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.launcher.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.registry"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.registry.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.supplement"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.supplement.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.transforms.xslt"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.transforms.xslt.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.transforms.hook"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.transforms.hook.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.osgi.util"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.osgi.util.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.concurrent"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.concurrent.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.simpleconfigurator"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.simpleconfigurator.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.win32.x86"
-         os="win32"
-         arch="x86"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.win32.x86.source"
-         os="win32"
-         arch="x86"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.macosx"
-         os="macosx"
-         arch="x86"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.macosx"
-         os="macosx"
-         arch="x86_64"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.macosx"
-         os="macosx"
-         arch="ppc"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         fragment="true"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.macosx.source"
-         os="macosx"
-         arch="x86"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.macosx.source"
-         os="macosx"
-         arch="x86_64"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.macosx.source"
-         os="macosx"
-         arch="ppc"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.ui"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.equinox.security.ui.source"
-         download-size="0"
-         install-size="0"
-         version="0.0.0"
-         unpack="false"/>
-
-</feature>
diff --git a/features/org.eclipse.equinox.core.sdk/license.html b/features/org.eclipse.equinox.core.sdk/license.html
deleted file mode 100755
index c184ca3..0000000
--- a/features/org.eclipse.equinox.core.sdk/license.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
-<title>Eclipse Foundation Software User Agreement</title>
-</head>
-
-<body lang="EN-US">
-<h2>Eclipse Foundation Software User Agreement</h2>
-<p>April 14, 2010</p>
-
-<h3>Usage Of Content</h3>
-
-<p>THE ECLIPSE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
-   (COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
-   CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
-   OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
-   NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
-   CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.</p>
-
-<h3>Applicable Licenses</h3>
-
-<p>Unless otherwise indicated, all Content made available by the Eclipse Foundation 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 provided with this Content and is also available at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
-   For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
-
-<p>Content includes, but is not limited to, source code, object code, documentation and other files maintained in the Eclipse Foundation source code
-   repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) and made available as downloadable archives (&quot;Downloads&quot;).</p>
-
-<ul>
-       <li>Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).</li>
-       <li>Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java&trade; ARchive) in a directory named &quot;plugins&quot;.</li>
-       <li>A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
-      and/or Fragments associated with that Feature.</li>
-       <li>Features may also include other Features (&quot;Included Features&quot;). Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.</li>
-</ul>
-
-<p>The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;). The terms and conditions governing Features and
-Included Features should be contained in files named &quot;license.html&quot; (&quot;Feature Licenses&quot;).  Abouts and Feature Licenses may be located in any directory of a Download or Module
-including, but not limited to the following locations:</p>
-
-<ul>
-       <li>The top-level (root) directory</li>
-       <li>Plug-in and Fragment directories</li>
-       <li>Inside Plug-ins and Fragments packaged as JARs</li>
-       <li>Sub-directories of the directory named &quot;src&quot; of certain Plug-ins</li>
-       <li>Feature directories</li>
-</ul>
-
-<p>Note: if a Feature made available by the Eclipse Foundation is installed using the Provisioning Technology (as defined below), you must agree to a license (&quot;Feature Update License&quot;) during the
-installation process.  If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions governing the Included Features or
-inform you where you can locate them.  Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions (or references to such terms and conditions) that govern your use of the associated Content in
-that directory.</p>
-
-<p>THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE EPL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.  SOME OF THESE
-OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):</p>
-
-<ul>
-       <li>Common Public License Version 1.0 (available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>)</li>
-       <li>Apache Software License 1.1 (available at <a href="http://www.apache.org/licenses/LICENSE">http://www.apache.org/licenses/LICENSE</a>)</li>
-       <li>Apache Software License 2.0 (available at <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a>)</li>
-       <li>Metro Link Public License 1.00 (available at <a href="http://www.opengroup.org/openmotif/supporters/metrolink/license.html">http://www.opengroup.org/openmotif/supporters/metrolink/license.html</a>)</li>
-       <li>Mozilla Public License Version 1.1 (available at <a href="http://www.mozilla.org/MPL/MPL-1.1.html">http://www.mozilla.org/MPL/MPL-1.1.html</a>)</li>
-</ul>
-
-<p>IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
-contact the Eclipse Foundation to determine what terms and conditions govern that particular Content.</p>
-
-
-<h3>Use of Provisioning Technology</h3>
-
-<p>The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
-   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
-   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at <a
-       href="http://eclipse.org/equinox/p2/repository_packaging.html">http://eclipse.org/equinox/p2/repository_packaging.html</a>
-   (&quot;Specification&quot;).</p>
-
-<p>You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:</p>
-
-<ol>
-       <li>A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
-       on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
-       product.</li>
-       <li>During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
-       accessed and copied to the Target Machine.</li>
-       <li>Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
-       Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
-       Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
-       the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
-       indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.</li>
-</ol>
-
-<h3>Cryptography</h3>
-
-<p>Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
-   another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,
-   possession, or use, and re-export of encryption software, to see if this is permitted.</p>
-
-<p><small>Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.</small></p>
-</body>
-</html>
diff --git a/releng/org.eclipse.equinox.launcher.releng/.project b/releng/org.eclipse.equinox.launcher.releng/.project
new file mode 100644
index 0000000..8433d04
--- /dev/null
+++ b/releng/org.eclipse.equinox.launcher.releng/.project
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.equinox.launcher.releng</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+	</buildSpec>
+	<natures>
+	</natures>
+</projectDescription>
diff --git a/releng/org.eclipse.equinox.launcher.releng/build.xml b/releng/org.eclipse.equinox.launcher.releng/build.xml
new file mode 100644
index 0000000..28d06a6
--- /dev/null
+++ b/releng/org.eclipse.equinox.launcher.releng/build.xml
@@ -0,0 +1,257 @@
+<!--
+    Copyright (c) 2009 IBM Corporation and others.
+    All rights reserved. This program and the accompanying materials
+    are made available under the terms of the Eclipse Public License v1.0
+    which accompanies this distribution, and is available at
+    http://www.eclipse.org/legal/epl-v10.html
+   
+    Contributors:
+        IBM Corporation - initial API and implementation
+ -->
+<project name="Launcher Build" basedir="." default="build">
+	<property name="cvsLogin" value=":pserver:anonymous" />
+	<property name="cvsRoot" value="${cvsLogin}@dev.eclipse.org:/cvsroot/rt" />
+	<property name="cvsrsh" value="ssh" />
+	<property name="cvsExecutablePath" value="org.eclipse.equinox/framework/bundles/org.eclipse.equinox.executable" />
+	<property name="cvsTag" value="HEAD" />
+	
+	<!-- Macro for execing scp -->
+	<macrodef name="SCP">
+		<attribute name="dir" />
+		<attribute name="source"/>
+		<attribute name="destination" />
+		<attribute name="failonerror" default="true" />
+		<sequential>
+			<echo message="Copying @{source} to @{destination}."/>
+			<exec dir="@{dir}" executable="scp" failonerror="@{failonerror}">
+				<arg value="-q"/>
+				<arg line="@{source}" />
+				<arg value="@{destination}" />
+			</exec>
+		</sequential>
+	</macrodef>
+	
+	<!-- macro to resolve properties because we can't do ${${prop}} -->
+	<macrodef name="resolveProperty">
+		<attribute name="name" />
+		<attribute name="value" />
+		<sequential>
+			<condition property="@{name}" value="${@{value}}" >
+				<isset property="@{value}"/>
+			</condition>
+		</sequential>
+	</macrodef>
+	
+	<target name="init_exeFolder" >
+		<!-- set to "bin" or "contributed" according to which folder under org.eclipse.equinox.executable to store the built eclipse -->
+		<condition property="exeFolder" value="contributed" else="bin">
+			<or>
+				<equals arg1="s390" arg2="${arch}" />
+				<equals arg1="s390x" arg2="${arch}" />
+				<equals arg1="motif.sparc" arg2="${ws}.${arch}" />
+				<equals arg1="win32.ia64" arg2="${ws}.${arch}" />
+			</or>
+		</condition>
+	</target>
+	
+	<target name="init_fragment" >
+		<!-- set to "contributed" or "fragments" according to which folder under org.eclipse.equinox.launcher to find the fragment -->
+		<condition property="subFolder" value="contributed" else="fragments">
+			<or>
+				<equals arg1="s390" arg2="${arch}" />
+				<equals arg1="s390x" arg2="${arch}" />
+				<equals arg1="solaris.x86" arg2="${os}.${arch}" />
+			</or>
+		</condition>
+		<!-- mac only has arch in fragment name for x86_64 -->
+		<condition property="fragmentFolder" value="${subFolder}/org.eclipse.equinox.launcher.${ws}.${os}.${arch}" 
+											 else="${subFolder}/org.eclipse.equinox.launcher.${ws}.${os}" >
+			<not>
+				<and>
+					<equals arg1="macosx" arg2="${os}"/>
+					<not> <equals arg1="x86_64" arg2="${arch}"/> </not>
+				</and>
+			</not>
+		</condition>
+	</target>
+
+	<target name="fetchExecutableSource" >
+		<!-- fetch the source and put it in a folder unique to this platform so we don't interfere with other
+		     compiles if the working folder is shared accross multiple machines -->
+		<delete dir="${basedir}/${os}.${ws}.${arch}/library" failonerror="false"/> 
+		<cvs command="export -d ${os}.${ws}.${arch}/library" tag="${cvsTag}" cvsrsh="${cvsrsh}" package="${cvsExecutablePath}/library" cvsRoot="${cvsRoot}" dest="${basedir}" quiet="true" failonerror="true"/>
+	</target>
+	
+	<target name="buildNix" if="buildNix">
+		<!-- exec the build.sh for flavors of unix -->
+		<exec dir="${libraryFolder}/${ws}" executable="sh" failonerror="true">
+				<arg value="build.sh"/>
+				<arg line="-ws ${ws} -os ${os} -arch ${arch}"/>
+				<arg line="-java ${javaHome}"/>
+				<arg value="clean all" />
+				<env key="PATH" value="/bin:/usr/bin:/usr/local/bin:/usr/sbin:/usr/X11R6/bin" />
+		</exec>	
+		
+		<!-- copy the resulting executable and .so -->
+		<SCP dir="${libraryFolder}/${ws}" source="eclipse" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/${arch}" />
+		<SCP dir="${libraryFolder}/${ws}" source="eclipse_${maj_ver}${min_ver}.so" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" />
+		
+		<condition property="copyMotifLib" >
+			<equals arg1="aix.motif" arg2="${os}.${ws}" />
+		</condition>
+		<antcall target="copyMotifLib" />
+	</target>
+			
+	<target name="copyMotifLib" if="copyMotifLib" >
+		<SCP dir="${libraryFolder}/${ws}" source="libeclipse-motif.so" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" failonerror="false" />
+	</target>
+	
+	<target name="buildWindows" if="buildWindows">
+		<!-- exec the batch file to build on windows -->
+		<exec dir="${libraryFolder}/${ws}" executable="cmd" failonerror="true">
+			<arg value="/c" />
+			<arg value="build.bat" />
+			<arg line="${arch}"/>
+			<arg value="-java"/>
+			<arg value="${javaHome}"/>
+			<arg line="clean all" />
+		</exec>
+		
+		<SCP dir="${libraryFolder}/${ws}" source="eclipse.exe eclipsec.exe" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/${arch}" />
+		<SCP dir="${libraryFolder}/${ws}" source="eclipse_${maj_ver}${min_ver}.dll" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" />
+		<condition property="copyWPF">
+			<equals arg1="${ws}" arg2="wpf" />
+		</condition>
+		<antcall target="copyWPF" />
+	</target>
+	
+	<target name="copyWPF" if="copyWPF" >
+		<SCP dir="${libraryFolder}/${ws}" source="com_${maj_ver}${min_ver}.dll" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" failonerror="false" />
+	</target>
+	
+	<target name="buildMac" if="buildMac">
+		<exec dir="${libraryFolder}/carbon" executable="sh" failonerror="true">
+			<arg value="build.sh"/>
+			<arg line="-ws ${ws} -arch ${arch}"/>
+			<arg value="clean all" />
+			<env key="PATH" value="/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:${extraPath}" />
+		</exec>	
+			
+		<SCP dir="${libraryFolder}/carbon" source="eclipse" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/${arch}/Eclipse.app/Contents/MacOS" />
+		<SCP dir="${libraryFolder}/carbon" source="eclipse_${maj_ver}${min_ver}.so" destination="${resultsBaseFolder}/org.eclipse.equinox.launcher/${fragmentFolder}" />
+		<!-- x86 and ppc are the same universal binary, copy to both under the executable feature -->
+		<condition property="copyMacPPC">
+			<equals arg1="${arch}" arg2="x86" />
+		</condition>
+		<antcall target="copyMacPPC" />
+	</target>
+	
+	<target name="copyMacPPC" if="copyMacPPC" >
+		<SCP dir="${libraryFolder}/carbon" source="eclipse" destination="${resultsBaseFolder}/org.eclipse.equinox.executable/${exeFolder}/${ws}/${os}/ppc/Eclipse.app/Contents/MacOS" />
+	</target>
+	
+	<target name="determineBuild" >
+		<condition property="buildWindows" >
+			<equals arg1="${os}" arg2="win32"/>
+		</condition>
+		<condition property="buildMac" >
+			<equals arg1="${os}" arg2="macosx" />
+		</condition>
+		<condition property="buildNix" >
+			<not><or>
+				<isset property="buildWindows" />
+				<isset property="buildMac" />
+			</or></not>
+		</condition>
+	</target>
+	
+	<target name="initProperties" >
+		<property name="ws" value="${env.ws}"/>
+		<property name="os" value="${env.os}" />	
+		<property name="arch" value="${env.arch}" />
+		
+		<resolveProperty name="machine" value="m_${os}.${arch}" />
+		<resolveProperty name="javaArg" value="j_${os}.${arch}" />
+		<resolveProperty name="userName" value="u_${os}.${arch}" />
+		
+		<!-- windows is built locally, everything else is remote -->
+		<condition property="local" >
+			<equals arg1="${os}" arg2="win32"/>
+		</condition>
+		<condition property="remote" >
+			<not> <isset property="local"/> </not>
+		</condition>
+		
+		<!-- working directory defaults for our machines.  Others should
+		     pass in workspace as a property on the command line  -->
+		<condition property="workspace" value="/Users/swtbuild/build/equinox" >
+			<equals arg1="${os}" arg2="macosx"/>
+		</condition>
+		<condition property="workspace" value="~/equinox" >
+			<equals arg1="${os}.${arch}" arg2="solaris.x86" />
+		</condition>
+		<property name="workspace" value="/bluebird/teamswt/equinox" />
+	</target>
+	
+	
+	<!-- 
+		Main entry point.  We expect the following properties:
+			 os, ws, arch  - to be passed as ant properties or set as environment variables.
+			 resultsBaseFolder - location to scp the resulting binaries to, usually a workspace containing the executable & launcher projects (eg: user@machine:~/workspace)
+			 m_<os>.<arch> - name of a machine to ssh to for this os & arch
+			 u_<os>.<arch> - optional user on the machine for this platform
+			 j_<os>.<arch> - location of a jdk we can compile against
+		We expect ssh keys to be set up so that we don't need passwords
+		
+		The j_<os>.<arch> properties work together with remote.sh, and are either
+		   -javaHome /path/to/jdk
+		or -java relative/path/to/jdk
+	-->
+	<target name="build" depends="initProperties">
+		<echo message="Building for ${os}, ${ws}, ${arch}"/>
+		<antcall target="buildLocal" />
+		<antcall target="buildRemote" />
+	</target>
+	
+	<target name="buildLocal" if="local" >
+		<condition property="javaHome" value="${j_win32}" else="${java.home}" >
+			<isset property="j_win32"/>
+		</condition>
+		<antcall target="buildConfig" />
+	</target>
+	
+	<target name="buildRemote" if="remote">
+		<echo message="Machine: ${machine}" />
+		<condition property="scpDest" value="${userName}@${machine}" else="${machine}" >
+			<isset property="userName" />
+		</condition>
+		<condition property="sshUser" value="-l ${userName}" else="" >
+			<isset property="userName" />
+		</condition>
+		<SCP dir="${basedir}" source="remote.sh build.xml" destination="${scpDest}:${workspace}" />
+		<echo message="Execing ssh ${machine}" />
+		<exec executable="ssh" failonerror="true" >
+			<arg line="${sshUser} ${machine}" />
+			<arg line="sh ${workspace}/remote.sh" />
+			<arg line="${javaArg}" />
+			<arg line="-Dos=${os} -Dws=${ws} -Darch=${arch} -DcvsLogin=${cvsLogin} -DcvsTag=${cvsTag}" />
+			<arg value="-DresultsBaseFolder=${resultsBaseFolder}" />
+		</exec>
+	</target>
+
+	<target name="buildConfig" depends="init_exeFolder,init_fragment,determineBuild" >
+		<antcall target="fetchExecutableSource" />
+		<property name="javaHome" value="${java.home}/.." />
+		<property name="libraryFolder" value="${basedir}/${os}.${ws}.${arch}/library" />
+		<property file="${libraryFolder}/make_version.mak" />
+		
+		<antcall target="buildNix" />
+		<antcall target="buildWindows" />
+		<antcall target="buildMac" />
+	</target>
+	
+</project>
+
+
+
+
diff --git a/releng/org.eclipse.equinox.launcher.releng/remote.sh b/releng/org.eclipse.equinox.launcher.releng/remote.sh
new file mode 100644
index 0000000..82eb226
--- /dev/null
+++ b/releng/org.eclipse.equinox.launcher.releng/remote.sh
@@ -0,0 +1,48 @@
+#!/bin/sh
+
+#the directory containing this script
+scriptDir=`dirname "$0"`
+
+ANT_HOME=/bluebird/teamswt/swt-builddir/build/apache-ant-1.7.1
+extraArgs=""
+
+while [ "$1" != "" ]; do
+	if [ "$1" = "-java" ] && [ "$2" != "" ]; then
+        JAVA_HOME=/bluebird/teamswt/swt-builddir/build/JRE/$2
+        shift
+    elif [ "$1" = "-javaHome" ] && [ "$2" != "" ]; then
+		JAVA_HOME="$2"
+		shift
+    elif [ "$1" = "-antHome" ] && [ "$2" != "" ]; then
+		ANT_HOME="$2"
+		shift
+    else
+        extraArgs="$extraArgs $1"
+    fi
+    shift
+done
+
+OS=`uname -s`
+case $OS in 
+	"SunOS")
+		if [ "$PROC" = "" ];  then
+		    PROC=`uname -p`
+		fi
+		case ${PROC} in
+			"i386")
+				ANT_HOME=~/equinox/apache-ant-1.7.1
+				;;
+		esac
+		;;
+	"AIX")
+		PATH=/bluebird/teamswt/swt-builddir/build/cvs_bin/AIX:$PATH
+		;;
+esac
+
+PATH=$JAVA_HOME/jre/bin:$ANT_HOME/bin:$PATH
+
+export JAVA_HOME ANT_HOME PATH
+echo JAVA_HOME = $JAVA_HOME
+echo ANT_HOME = $ANT_HOME
+echo ant -f ${scriptDir}/build.xml buildConfig $extraArgs 
+ant -f ${scriptDir}/build.xml buildConfig $extraArgs