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

Sprout from R3_3_maintenance 2007-08-28 20:37:03 UTC Andrew Niefer <aniefer> 'bug 176021'
Cherrypick from R3_3_1_maintenance 2007-10-19 22:33:38 UTC Andrew Niefer <aniefer> 'bug 203325':
    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.gtk.linux.ppc/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc/META-INF/MANIFEST.MF
    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.linux.x86/META-INF/MANIFEST.MF
    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.wpf.win32.x86/META-INF/MANIFEST.MF
Cherrypick from R_3_3_1_maintenance 2007-10-19 22:31:15 UTC Andrew Niefer <aniefer> 'bug 203325':
    bundles/org.eclipse.equinox.executable/library/eclipse.c
    bundles/org.eclipse.equinox.executable/library/make_version.mak
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/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.motif.hpux.PA_RISC/.project
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/.settings/org.eclipse.pde.core.prefs
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/META-INF/MANIFEST.MF
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/about.html
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/build.properties
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/customBuildCallbacks.xml
    bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/launcher.motif.hpux.PA_RISC.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/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.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/buddy.dependent.a.test1/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi.tests/bundles_src/buddy.dependent.a.test1/resources/test.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/resources/test.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/resources/test.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/resources/test.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/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/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.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/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/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/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/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/bundles/AbstractBundleTests.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/ITestRunner.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/TestResults.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/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/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/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/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/TestDynamic_007.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_004.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_005.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_007.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/TestGrouping_009.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_002.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/TestPropagation_004.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_005.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/TestRFC79_008.java
    bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestReprovide_001.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/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/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/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/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/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/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.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/org.eclipse.core.resources.prefs
    bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
    bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.ui.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/META-INF/MANIFEST.MF
    bundles/org.eclipse.osgi/OSGi_Minimum-1.0.profile
    bundles/org.eclipse.osgi/OSGi_Minimum-1.1.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/component.xml
    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/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/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/ServiceRegistry.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/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/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/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/util/TextProcessor.java
    bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/package.html
    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/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/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/BundleCombinedPermissions.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/BundleLoader.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleLoaderProxy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleNativeCode.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundlePermissionCollection.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleProtectionDomainImpl.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/ConditionalPermissionAdminImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionInfoImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionSet.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissions.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/DependentPolicy.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/FilteredServiceListener.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilteredSourcePackage.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/FrameworkSecurityManager.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/GlobalPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/IBuddyPolicy.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/MultiSourcePackage.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/NullPackageSource.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/OSGi.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/PackageSource.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ParentPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionAdminImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionsHash.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PolicyHandler.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/RegisteredPolicy.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SecurePermissionStorage.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceReferenceImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceRegistrationImpl.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceUse.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SingleSourcePackage.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/StartLevelImpl.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/SystemBundle.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/SystemBundleLoader.java
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemPolicy.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/default.permissions
    bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/implied.permissions
    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/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/framework/launcher/Launcher.java
    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/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/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/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/core/ServiceRegistryImpl.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/environment/Constants.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/environment/EnvironmentInfo.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/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java
    bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/StartupMonitor.java
    bundles/org.eclipse.osgi/hookconfigurators.properties
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/BERProcessor.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/Base64.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DNChainMatching.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DefaultTrustAuthority.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DigestedInputStream.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierConstant.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.properties
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/KeyStores.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7DateParser.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7Processor.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleFile.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleHook.java
    bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedStorageHook.java
    bundles/org.eclipse.osgi/launch/.cvsignore
    bundles/org.eclipse.osgi/launch/.options
    bundles/org.eclipse.osgi/launch/DevFramework.launch
    bundles/org.eclipse.osgi/launch/DevFrameworkSecurity.launch
    bundles/org.eclipse.osgi/launch/osgi.policy
    bundles/org.eclipse.osgi/launch/osgi.properties
    bundles/org.eclipse.osgi/osgi/ee.foundation.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/osgiJavaDoc.zip
    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/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/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/SynchronousBundleListener.java
    bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.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/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/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/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/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/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/osgi/osgi.jar
    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/FrameworkDebugOptions.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/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/localization/BundleLocalization.java
    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/util/ManifestElement.java
    bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/NLS.java
    bundles/org.eclipse.osgi/systembundle.properties
diff --git a/bundles/org.eclipse.equinox.executable/library/eclipse.c b/bundles/org.eclipse.equinox.executable/library/eclipse.c
index db75da0..286b2f2 100644
--- a/bundles/org.eclipse.equinox.executable/library/eclipse.c
+++ b/bundles/org.eclipse.equinox.executable/library/eclipse.c
@@ -1321,7 +1321,7 @@
 	/* resolve symlinks for finding the library */
 	ch = resolveSymlinks(javaVM);
     jniLib = findVMLibrary(ch);
-    if (ch != jniLib)
+    if (ch != jniLib && ch != javaVM)
 		free(ch);
     if (jniLib != NULL) 
     	return LAUNCH_JNI;
diff --git a/bundles/org.eclipse.equinox.executable/library/make_version.mak b/bundles/org.eclipse.equinox.executable/library/make_version.mak
index 952c705..b787250 100644
--- a/bundles/org.eclipse.equinox.executable/library/make_version.mak
+++ b/bundles/org.eclipse.equinox.executable/library/make_version.mak
@@ -10,5 +10,5 @@
 #*******************************************************************************
 
 maj_ver=1
-min_ver=020
+min_ver=021
 LIB_VERSION = $(maj_ver)$(min_ver)
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 751c8f2..0000000
--- a/bundles/org.eclipse.equinox.launcher/.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/.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 29d4e4c..0000000
--- a/bundles/org.eclipse.equinox.launcher/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.equinox.startup</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.ManifestBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.pde.SchemaBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs b/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index f790cbe..0000000
--- a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,316 +0,0 @@
-#Wed Mar 14 12:10:28 EST 2007
-eclipse.preferences.version=1
-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.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=disabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=ignore
-org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
-org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
-org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
-org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=warning
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.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=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=warning
-org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-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.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
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 febeb9a..0000000
--- a/bundles/org.eclipse.equinox.launcher/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Mon Feb 26 10:47:10 EST 2007
-eclipse.preferences.version=1
-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
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 08876c0..0000000
--- a/bundles/org.eclipse.equinox.launcher/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,15 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.equinox.launcher
-Bundle-Version: 1.0.1.qualifier
-Main-Class: org.eclipse.equinox.launcher.Main
-Bundle-ClassPath: .
-Bundle-Vendor: %providerName
-Bundle-RequiredExecutionEnvironment: J2SE-1.4,
- CDC-1.0/Foundation-1.0,
- J2SE-1.3
-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 6589bf4..0000000
--- a/bundles/org.eclipse.equinox.launcher/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               launcher.properties,\
-               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 8df6303..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.s390
-Bundle-Version: 1.0.0
-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
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 121aa3a..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.gtk.linux.s390.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
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 aed684b..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
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 7d184d9..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.s390x
-Bundle-Version: 1.0.0
-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
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 8ac9063..0000000
--- a/bundles/org.eclipse.equinox.launcher/contributed/org.eclipse.equinox.launcher.gtk.linux.s390x/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.gtk.linux.s390x.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
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 f008d25..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
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
index 201aba1..4b6d875 100644
--- 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
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.carbon.macosx
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=carbon) (osgi.os=macosx) (|(osgi.arch=x86)(osgi.arch=ppc)) )
 Bundle-Localization: launcher.carbon.macosx
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF
index 301bf9a..965c325 100644
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.ppc/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.ppc
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=ppc))
 Bundle-Localization: launcher.gtk.linux.ppc
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF
index 51ac434..5b0a0aa 100644
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.x86
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=x86))
 Bundle-Localization: launcher.gtk.linux.x86
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF
index 113993e..d3d6ca4 100644
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.linux.x86_64/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.linux.x86_64
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=linux) (osgi.arch=x86_64))
 Bundle-Localization: launcher.gtk.linux.x86_64
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc/META-INF/MANIFEST.MF
index ac6a6c03..5349ead 100644
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.gtk.solaris.sparc/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.gtk.solaris.sparc
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=gtk) (osgi.os=solaris) (osgi.arch=sparc))
 Bundle-Localization: launcher.gtk.solaris.sparc
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
index 03a3e3a..0e288e3 100644
--- 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
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.motif.aix.ppc
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=motif) (osgi.os=aix) (osgi.arch=ppc))
 Bundle-Localization: launcher.motif.aix.ppc
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/.settings/org.eclipse.pde.core.prefs b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/.settings/org.eclipse.pde.core.prefs
deleted file mode 100644
index acb6b98..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/.settings/org.eclipse.pde.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-#Wed Dec 06 11:43:24 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.hpux.PA_RISC/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/META-INF/MANIFEST.MF
deleted file mode 100644
index 498d29a..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,9 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-Vendor: %providerName
-Bundle-SymbolicName: org.eclipse.equinox.launcher.motif.hpux.PA_RISC
-Bundle-Version: 1.0.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=motif) (osgi.os=hpux) (osgi.arch=PA_RISC))
-Bundle-Localization: launcher.motif.hpux.PA_RISC
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/about.html b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/about.html
deleted file mode 100644
index 395df3b..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/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.PA_RISC/build.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/build.properties
deleted file mode 100644
index 289e4e5..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.motif.hpux.PA_RISC.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/customBuildCallbacks.xml b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/customBuildCallbacks.xml
deleted file mode 100644
index 32c8ef4..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/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.PA_RISC/launcher.motif.hpux.PA_RISC.properties b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/launcher.motif.hpux.PA_RISC.properties
deleted file mode 100644
index 1eb08d2..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.hpux.PA_RISC/launcher.motif.hpux.PA_RISC.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 PA_RISC Fragment
-providerName = Eclipse.org
diff --git a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF
index 50bb70f..7270446 100755
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.linux.x86/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.motif.linux.x86
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=motif) (osgi.os=linux) (osgi.arch=x86))
 Bundle-Localization: launcher.motif.linux.x86
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 802daeb..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,8 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Sparc Fragment
-Bundle-SymbolicName: org.eclipse.equinox.launcher.motif.solaris.sparc
-Bundle-Version: 1.0.1.qualifier
-Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
-Eclipse-PlatformFilter: (& (osgi.ws=motif) (osgi.os=solaris) (osgi.arch=sparc))
-Bundle-Localization: launcher.motif.solaris.sparc
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 518a483..0000000
--- a/bundles/org.eclipse.equinox.launcher/fragments/org.eclipse.equinox.launcher.motif.solaris.sparc/build.properties
+++ /dev/null
@@ -1,6 +0,0 @@
-bin.includes = META-INF/,\
-               eclipse_*.so,\
-               launcher.motif.solaris.sparc.properties,\
-               about.html
-               
-customBuildCallbacks=customBuildCallbacks.xml
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 0cdb794..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
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
index 102d407..e60208c 100644
--- 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
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.win32.win32.x86; singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))
 Bundle-Localization: launcher.win32.win32.x86
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
index 1e23e1a..729a0a6 100644
--- 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
@@ -3,7 +3,7 @@
 Bundle-Name: %pluginName
 Bundle-Vendor: %providerName
 Bundle-SymbolicName: org.eclipse.equinox.launcher.wpf.win32.x86; singleton:=true
-Bundle-Version: 1.0.1.qualifier
+Bundle-Version: 1.0.2.qualifier
 Fragment-Host: org.eclipse.equinox.launcher;bundle-version="[1.0.0,1.1.0)"
 Eclipse-PlatformFilter: (& (osgi.ws=wpf) (osgi.os=win32) (osgi.arch=x86))
 Bundle-Localization: launcher.wpf.win32.x86
diff --git a/bundles/org.eclipse.equinox.launcher/launcher.properties b/bundles/org.eclipse.equinox.launcher/launcher.properties
deleted file mode 100644
index fb5539a..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
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 eb3e600..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/core/launcher/Main.java
+++ /dev/null
@@ -1,33 +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.
- */
-public class Main {
-
-	/**
-	 * Pass our args along to the real Main class.
-	 * @param args
-	 */
-	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 d860ba0..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/internal/launcher/Constants.java
+++ /dev/null
@@ -1,119 +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:
- *     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 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 "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 "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 4f389da..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/JNIBridge.java
+++ /dev/null
@@ -1,134 +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.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.
- */
-public class JNIBridge {
-	//TODO: This class should not be public
-	private native void _set_exit_data(String sharedId, String data);
-	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;
-	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;
-	}
-
-	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;
-		}
-	}
-
-	public boolean showSplash(String bitmap) {
-		try {
-			_show_splash(bitmap);
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if(!libraryLoaded){
-				loadLibrary();
-				return showSplash(bitmap);
-			}
-			return false;
-		}
-	}
-	
-	public boolean updateSplash() {
-		try {
-			_update_splash();
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if(!libraryLoaded){
-				loadLibrary();
-				return updateSplash();
-			}
-			return false;
-		}
-	}
-
-	public long getSplashHandle() {
-		try { 
-			return _get_splash_handle();
-		} catch (UnsatisfiedLinkError e) {
-			if(!libraryLoaded){
-				loadLibrary();
-				return getSplashHandle();
-			}
-			return -1;
-		}
-	}
-	
-	public boolean takeDownSplash() {
-		try {
-			_takedown_splash();
-			return true;
-		} catch (UnsatisfiedLinkError e) {
-			if(!libraryLoaded){
-				loadLibrary();
-				return takeDownSplash();
-			}
-			return false;
-		}
-	}
-	
-	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 4bf79f8..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/Main.java
+++ /dev/null
@@ -1,2427 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 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.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.
- */
-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;
-    private boolean splashDown = false;
-    public final class SplashHandler extends Thread {
-    	public void run() {
-    		takeDownSplash();
-    	}
-    	public void updateSplash() {
-			if(bridge != null) {
-				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_EXITCODE = "eclipse.exitcode"; //$NON-NLS-1$
-    private static final String PROP_EXITDATA = "eclipse.exitdata"; //$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$
-
-    // 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 os = getOS();
-		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_CARBON;
-		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_MOTIF;
-		if (os.equals(Constants.OS_QNX))
-			return Constants.WS_PHOTON;
-		return Constants.WS_UNKNOWN;
-	}
-    private String getOS() {
-		if (os != null)
-			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;
-		// 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 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;
-	}
-    
-    /**
-	 *  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();
-			StringBuffer buffer = new StringBuffer(PLUGIN_ID);
-			buffer.append('.');
-			buffer.append(getWS());
-			buffer.append('.');
-			buffer.append(fragmentOS);
-			if(!fragmentOS.equals("macosx")){ //$NON-NLS-1$
-				buffer.append('.');
-				buffer.append(getArch());
-			}
-			String fragmentName = buffer.toString();
-			String fragment = null;
-			if (inDevelopmentMode) {
-				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 = searchFor("eclipse", fragment); //$NON-NLS-1$
-					}
-				}
-			}
-			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 = searchFor("eclipse", fragment); //$NON-NLS-1$
-					}
-				}
-			}
-			if(libPath == null) {
-				URL install = getInstallLocation();
-				String location = install.getFile();
-				location += "/plugins/"; //$NON-NLS-1$
-				fragment = searchFor(fragmentName, location);
-				if (fragment != null)
-					libPath = searchFor("eclipse", fragment); //$NON-NLS-1$
-			}
-		}
-		library = libPath;
-		if(library != null)
-			bridge = new JNIBridge(library);
-	}
-    
-    /**
-     * 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;
-        
-        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) {
-            SecurityManager sm = System.getSecurityManager();
-            boolean setSM = false;
-            if (sm == null) {
-                if (eclipseSecurity.length() < 1) {
-                    eclipseSecurity = "java.lang.SecurityManager"; //$NON-NLS-1$
-                }
-                try {
-                    Class clazz = Class.forName(eclipseSecurity);
-                    sm = (SecurityManager) clazz.newInstance();
-                    setSM = true;
-                }
-                catch (Throwable t) {
-                	System.getProperties().put("java.security.manager", eclipseSecurity); // let the framework try to load it later. //$NON-NLS-1$
-                }
-            }
-            
-            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);
-            if (setSM)
-                System.setSecurityManager(sm);
-        }
-    }
-
-    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;
-        }
-    }
-    
-    /**
-     * 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 = searchFor(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) 
-                addDevEntries(extensionURL, result, extensions[i]);
-        }
-        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) {
-    	// Note that File.list only gives you file names not the complete path from start
-    	String[] candidates = new File(start).list();
-        if (candidates == null)
-            return null;
-        
-		ArrayList matches = new ArrayList(2);
-		for (int i = 0; i < candidates.length; i++)
-			if (candidates[i].equals(target) || candidates[i].startsWith(target + "_"))  //$NON-NLS-1$
-				matches.add(candidates[i]);
-		String[] names = (String[]) matches.toArray(new String[matches.size()]);
-		int result = findMax(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$
-    }
-
-    protected int findMax(String[] candidates) {
-        int result = -1;
-        Object maxVersion = null;
-        for (int i = 0; i < candidates.length; i++) {
-            String name = candidates[i];
-            String version = ""; //$NON-NLS-1$ // Note: directory with version suffix is always > than directory without version suffix
-            int index = name.indexOf('_');
-            if (index != -1)
-                version = name.substring(index + 1);
-            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));
-                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;
-            }
-        }
-    }
-
-    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 || bridge == null)
-            return;
-        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)) {
-            	//not doing anything with this right now, but still consume it
-                //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;
-                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) {
-            URL url = buildURL(urlString, true);
-            System.getProperties().put(PROP_FRAMEWORK, url.toExternalForm());
-            bootLocation = resolve(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.
-     * We support 2 startup scenarios:
-     * 
-     * (1) the executable launcher put up the splash screen. In that
-     *     scenario we are invoked with -endsplash command which is
-     *     fully formed to take down the splash screen
-     * 
-     * (2) the executable launcher did not put up the splash screen,
-     *     but invokes Eclipse with partially formed -showsplash command.
-     *     In this scenario we determine which splash to display (based on 
-     *     feature information) and then call -showsplash command. 
-     * 
-     * In both scenarios we pass a handler (Runnable) to the platform.
-     * The handler is called as a result of the launched application calling
-     * Platform.endSplash(). In the first scenario this results in the
-     * -endsplash command being executed. In the second scenario this
-     * results in the process created as a result of the -showsplash command
-     * being destroyed.
-     * 
-     * @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.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();
-    	}
-    }
-
-    /*
-     * 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;
-            }
-        }
-
-        // can't find it on the splashPath so look for a default splash
-        String temp = bootPath[0].getFile(); // take the first path element
-        temp = temp.replace('/', File.separatorChar);
-        int ix = temp.lastIndexOf("plugins" + File.separator); //$NON-NLS-1$
-        if (ix != -1) {
-            int pix = temp.indexOf(File.separator, ix + 8);
-            if (pix != -1) {
-                temp = temp.substring(0, pix);
-                result = searchForSplash(new String[] {temp});
-                if (result != null)
-                    System.getProperties().put(PROP_SPLASHLOCATION, 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++) {
-				// do we have a JAR?
-				if (isJAR(searchPath[j])) {
-					String result = extractSplashFromJAR(searchPath[j], nlVariants[i]);
-					if (result != null)
-						return result;
-				} else {
-					// we have a file or a directory
-	                String path = searchPath[j];
-	                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 extractSplashFromJAR(String jarPath, String splashPath) {
-		String configLocation = System.getProperty(PROP_CONFIG_AREA);
-		if (configLocation == null) {
-			log("Configuration area not set yet. Unable to extract splash from JAR'd plug-in: " + jarPath); //$NON-NLS-1$
-			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, splashPath);
-		// 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 splash  in JAR file: " + jarPath); //$NON-NLS-1$
-			log(e);
-			return null;
-		}
-		ZipEntry entry = file.getEntry(splashPath.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) {
-		if (path.endsWith(File.separator))
-			return false;
-		int index = path.lastIndexOf('.');
-		if (index == -1)
-			return false;
-		index++;
-		// handle the case where we have a '.' at the end
-		if (index >= path.length()) 
-			return false;
-		return "JAR".equalsIgnoreCase(path.substring(index)); //$NON-NLS-1$
-	}
-
-	/*
-	 * 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);
-            System.getProperties().put(PROP_FRAMEWORK, urlString);
-        }
-        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.getLocation()))
-                return allPermissions;
-            return policy == null ? allPermissions : policy.getPermissions(codesource);
-        }
-
-        public PermissionCollection getPermissions(ProtectionDomain domain) {
-            if (contains(domain.getCodeSource().getLocation()))
-                return allPermissions;
-            return policy == null ? allPermissions : policy.getPermissions(domain);
-        }
-
-        public boolean implies(ProtectionDomain domain, Permission permission) {
-            if (contains(domain.getCodeSource().getLocation()))
-                return true;
-            return policy == null ? true : policy.implies(domain, permission);
-        }
-
-        public void refresh() {
-            if (policy != null)
-                policy.refresh();
-        }
-
-        private boolean contains(URL url) {
-            // 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 3d36ffb..0000000
--- a/bundles/org.eclipse.equinox.launcher/src/org/eclipse/equinox/launcher/WebStartMain.java
+++ /dev/null
@@ -1,275 +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.equinox.launcher;
-
-import java.io.IOException;
-import java.net.JarURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-import java.util.jar.JarFile;
-import java.util.jar.Manifest;
-
-/**
- * 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.
- */
-//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 
-
-	private class BundleInfo {
-		String bsn;
-		String version;
-		String startData;
-		String location;
-	}
-
-	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(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.size();
-		if (numberOfMatches == 1) {
-			//TODO Need to check the version
-			return (BundleInfo) matches.remove(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)) {
-					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(versions);
-		}
-		return (BundleInfo) matches.remove(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) {
-					return "file:" + ((JarURLConnection) connection).getJarFile().getName();
-				}
-			} finally {
-				if (connection != null)
-					connection.getInputStream().close();
-			}
-		} catch (IOException e) {
-			//Ignore and return the external form
-		}
-		return url.toExternalForm();
-	}
-
-	/*
-	 * 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);
-			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 4b3eaff..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.0" 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 35eb0f4..0000000
--- a/bundles/org.eclipse.osgi.services/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,76 +0,0 @@
-#Tue Jun 06 11:21:05 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.services/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF
deleted file mode 100644
index b5af60c..0000000
--- a/bundles/org.eclipse.osgi.services/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,29 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %osgiServices
-Bundle-SymbolicName: org.eclipse.osgi.services
-Bundle-Version: 3.1.200.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",
- org.osgi.service.component; version="1.0",
- org.osgi.service.device; version="1.1",
- org.osgi.service.event; version="1.1",
- org.osgi.service.http; version="1.2",
- 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.1",
- 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,
- javax.servlet; resolution:="optional",
- javax.servlet.http; resolution:="optional"
-DynamicImport-Package: javax.servlet,
- javax.servlet.http
-Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.0
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 ab74480..0000000
--- a/bundles/org.eclipse.osgi.services/customBuildCallbacks.xml
+++ /dev/null
@@ -1,160 +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">
-	</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 2e13f2e..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 28f590b..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 38549a5..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 2da39b4..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 c8405fb..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 7e9f42b..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 4b40584..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.class b/bundles/org.eclipse.osgi.services/org/osgi/service/event/Event.class
deleted file mode 100644
index b4c7d66..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 3600866..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 72e61c3..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 f095d13..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 59198fe..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 a948c76..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 8bb8648..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 c8de541..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 026e895..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 60298ce..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 df2914f..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 b435268..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 1338b2a..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 a0f0c94..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 43534ed..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 a6cb60c..0000000
--- a/bundles/org.eclipse.osgi.services/plugin.properties
+++ /dev/null
@@ -1,14 +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
-###############################################################################
-osgiServices = OSGi Release 4.0.1 Services
-eclipse.org = Eclipse.org
-osgiServicesDes = OSGi Service Platform Release 4.0.1 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 1d4a4f1..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 fb0c6a2..0000000
--- a/bundles/org.eclipse.osgi.tests/.classpath
+++ /dev/null
@@ -1,33 +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.frag.a" path="bundles_src/fragment.test.attach.frag.a"/>
-	<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="con" path="org.eclipse.pde.core.requiredPlugins"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/bundles/org.eclipse.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 1650a5a..0000000
--- a/bundles/org.eclipse.osgi.tests/.project
+++ /dev/null
@@ -1,31 +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>
-	</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 75e92c4..0000000
--- a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,317 +0,0 @@
-#Mon Feb 26 10:40:24 EST 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.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.deprecation=warning
-org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
-org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled
-org.eclipse.jdt.core.compiler.problem.discouragedReference=ignore
-org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.fieldHiding=warning
-org.eclipse.jdt.core.compiler.problem.finalParameterBound=ignore
-org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
-org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
-org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
-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.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.missingSerialVersion=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.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.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.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.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.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 f46b305..0000000
--- a/bundles/org.eclipse.osgi.tests/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Mon Feb 26 10:49:05 EST 2007
-eclipse.preferences.version=1
-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
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 7e86f28..0000000
--- a/bundles/org.eclipse.osgi.tests/All OSGi Tests.launch
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.eclipse.pde.ui.JunitLaunchConfig">
-<stringAttribute key="org.eclipse.jdt.junit.TEST_KIND" value="org.eclipse.jdt.junit.loader.junit3"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.osgi.tests.AutomatedTests"/>
-<stringAttribute key="org.eclipse.jdt.junit.CONTAINER" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osgi.tests"/>
-<booleanAttribute key="automaticAdd" value="true"/>
-<stringAttribute key="location" value="c:\temp\test-workspaces"/>
-<booleanAttribute key="askclear" value="false"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
-<listEntry value="4"/>
-</listAttribute>
-<booleanAttribute key="clearConfig" value="true"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<booleanAttribute key="useProduct" value="false"/>
-<stringAttribute key="checked" value="[NONE]"/>
-<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
-<listEntry value="/org.eclipse.osgi.tests"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.junit.TESTNAME" value=""/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="location2" value="d:\work\workspaces\runtime-test-workspace"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<stringAttribute key="templateConfig" value=""/>
-<stringAttribute key="location1" value="c:\temp\test-workspaces"/>
-<booleanAttribute key="org.eclipse.jdt.junit.KEEPRUNNING_ATTR" value="false"/>
-<booleanAttribute key="includeFragments" value="false"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="configLocation" value=""/>
-<stringAttribute key="application" value="org.eclipse.pde.junit.runtime.coretestapplication"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<mapAttribute key="org.eclipse.debug.core.environmentVariables">
-<mapEntry key="CommonProgramFiles" value="C:\Program Files\Common Files"/>
-<mapEntry key="PATHEXT" value=".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.pyo;.pyc;.py;.pyw"/>
-<mapEntry key="ComSpec" value="C:\WINDOWS\system32\cmd.exe"/>
-<mapEntry key="tvlogsessioncount" value="5000"/>
-<mapEntry key="SystemDrive" value="C:"/>
-<mapEntry key="TMP" value="C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp"/>
-<mapEntry key="ProgramFiles" value="C:\Program Files"/>
-<mapEntry key="windir" value="C:\WINDOWS"/>
-<mapEntry key="IBMSHARE" value="C:\IBMSHARE"/>
-<mapEntry key="HOMEDRIVE" value="C:"/>
-<mapEntry key="APPDATA" value="C:\Documents and Settings\Administrator\Application Data"/>
-<mapEntry key="PYTHONCASEOK" value="1"/>
-<mapEntry key="COMPUTERNAME" value="IBM-B8AD03D533C"/>
-<mapEntry key="PROMPT" value="$P$G"/>
-<mapEntry key="OS" value="Windows_NT"/>
-<mapEntry key="ALLUSERSPROFILE" value="C:\Documents and Settings\All Users"/>
-<mapEntry key="USERPROFILE" value="C:\Documents and Settings\Administrator"/>
-<mapEntry key="PD_SOCKET" value="6874"/>
-<mapEntry key="PDHOST" value=" "/>
-<mapEntry key="IBM_JAVA_COMMAND_LINE" value="C:\java\ibm-jdk-50-20060511\bin\javaw.exe -Xms40m -Xmx256m -jar C:\dev\latest\eclipse\startup.jar -os win32 -ws win32 -arch x86 -launcher C:\dev\latest\eclipse\eclipse.exe -name Eclipse -showsplash 600 -exitdata 588_68 -vm C:\java\ibm-jdk-50-20060511\bin\javaw.exe -vmargs -Xms40m -Xmx256m -jar C:\dev\latest\eclipse\startup.jar"/>
-<mapEntry key="FP_NO_HOST_CHECK" value="NO"/>
-<mapEntry key="TCL_LIBRARY" value="C:\IBMTOOLS\Python22\tcl\tcl8.4"/>
-<mapEntry key="PROCESSOR_LEVEL" value="6"/>
-<mapEntry key="USERNAME" value="administrator"/>
-<mapEntry key="tvdebugflags" value="0x260"/>
-<mapEntry key="PROCESSOR_IDENTIFIER" value="x86 Family 6 Model 13 Stepping 6, GenuineIntel"/>
-<mapEntry key="RRU" value="C:\Program Files\IBM\IBM Rapid Restore Ultra\"/>
-<mapEntry key="TEMP" value="C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp"/>
-<mapEntry key="TK_LIBRARY" value="C:\IBMTOOLS\Python22\tcl\tk8.4"/>
-<mapEntry key="NUMBER_OF_PROCESSORS" value="1"/>
-<mapEntry key="SystemRoot" value="C:\WINDOWS"/>
-<mapEntry key="USERDOMAIN" value="IBM-B8AD03D533C"/>
-<mapEntry key="PROCESSOR_REVISION" value="0d06"/>
-<mapEntry key="LOGONSERVER" value="\\IBM-B8AD03D533C"/>
-<mapEntry key="PDBASE" value="C:\Program Files\IBM\Infoprint Select"/>
-<mapEntry key="PCOMM_Root" value="C:\Program Files\IBM\Personal Communications\"/>
-<mapEntry key="Path" value="C:\java\ibm-jdk-50-20060511\bin;C:\Program Files\IBM\Infoprint Select;C:\PROGRAM FILES\THINKPAD\UTILITIES;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Notes;C:\Program Files\XLView;C:\lotus\compnent;C:\Utilities;C:\Program Files\IBM\Personal Communications\;C:\Program Files\IBM\Trace Facility\;C:\IBMTOOLS\Python22;C:\WINDOWS\Downloaded Program Files;C:\Program Files\Rational\common;C:\cygwin\usr\bin;C:\cygwin\bin"/>
-<mapEntry key="HOMEPATH" value="\Documents and Settings\Administrator"/>
-<mapEntry key="SESSIONNAME" value="Console"/>
-<mapEntry key="PYTHONPATH" value="C:\IBMTOOLS\utils\support;C:\IBMTOOLS\utils\logger"/>
-<mapEntry key="PROCESSOR_ARCHITECTURE" value="x86"/>
-</mapAttribute>
-<booleanAttribute key="tracing" value="false"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<booleanAttribute key="default" value="true"/>
-</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 4cb4a3b..0000000
--- a/bundles/org.eclipse.osgi.tests/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Core OSGi Tests
-Bundle-SymbolicName: org.eclipse.osgi.tests
-Bundle-Version: 3.3.1
-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
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 eb1c251..0000000
--- a/bundles/org.eclipse.osgi.tests/build.properties
+++ /dev/null
@@ -1,98 +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
-
-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.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/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
-
-jars.compile.order = 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.frag.a.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,\
-                     bundle_tests/buddy.dependent.a.test1.jar,\
-                     bundle_tests/buddy.dependent.a.test2.jar
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/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.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 e7fb086..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
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/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/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.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/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/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 a5d01a6..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/chain.test/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
-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
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/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 74d3278..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
-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.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/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/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/test/META-INF/MANIFEST.MF b/bundles/org.eclipse.osgi.tests/bundles_src/test/META-INF/MANIFEST.MF
deleted file mode 100644
index deb94be..0000000
--- a/bundles/org.eclipse.osgi.tests/bundles_src/test/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,11 +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
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/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 d6e2d03..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/AutomatedTests.java
+++ /dev/null
@@ -1,50 +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.tests;
-
-import junit.framework.*;
-import org.eclipse.osgi.tests.bundles.BundleTests;
-import org.eclipse.osgi.tests.internal.plugins.InstallTests;
-import org.eclipse.osgi.tests.listeners.ExceptionHandlerTests;
-
-public class AutomatedTests extends TestCase {
-	public final static String PI_OSGI_TESTS = "org.eclipse.osgi.tests";
-
-	/**
-	 * AllTests constructor comment.
-	 * @param name java.lang.String
-	 */
-	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(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(BundleTests.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/bundles/AbstractBundleTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/AbstractBundleTests.java
deleted file mode 100644
index 9803016..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/AbstractBundleTests.java
+++ /dev/null
@@ -1,162 +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 junit.framework.*;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.BundleEvent;
-import org.osgi.framework.FrameworkEvent;
-
-public class AbstractBundleTests extends TestCase {
-	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 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));
-	}
-
-
-	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 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_STARTING");
-				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.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();
-	}
-}
\ No newline at end of file
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 838a0cc..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleInstaller.java
+++ /dev/null
@@ -1,140 +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.io.IOException;
-import java.net.URL;
-import java.util.*;
-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;
-
-	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();
-	}
-
-	synchronized public Bundle installBundle(String name) throws BundleException {
-		if (bundles == null)
-			return null;
-		String bundleFileName = rootLocation + "/" + name;
-		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;
-		Bundle bundle =  context.installBundle(location);
-		bundles.put(name, bundle);
-		return bundle;
-	}
-
-	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();
-			bundle.uninstall();
-			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();
-		bundles = null;
-		return result;
-	}
-
-	synchronized public void refreshPackages(Bundle[] refresh) {
-		if (bundles == null)
-			return;
-		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);
-		pa.refreshPackages(refresh);
-		synchronized (flag) {
-			while (!flag[0]) {
-				try {
-					flag.wait(5000);
-				} catch (InterruptedException e) {
-					// do nothing
-				}
-			}
-		}
-		context.removeFrameworkListener(listener);
-	}
-
-	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();
-	}
-}
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 6ecead8..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/BundleTests.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 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(ClassLoadingBundleTests.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 6240826..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/bundles/ClassLoadingBundleTests.java
+++ /dev/null
@@ -1,625 +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.io.*;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.tests.OSGiTestsActivator;
-import org.osgi.framework.*;
-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");
-		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 testChainDepedencies() throws Exception {
-		Bundle chainTest = installer.installBundle("chain.test");
-		Bundle chainTestA = installer.installBundle("chain.test.a");
-		Bundle chainTestB = installer.installBundle("chain.test.b");
-		installer.installBundle("chain.test.c");
-		installer.installBundle("chain.test.d");
-		((ITestRunner) chainTest.loadClass("chain.test.TestSingleChain").newInstance()).testIt();
-
-
-		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();
-
-		Object[] actualEvents = simpleResults.getResults(6);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testMultiChainDepedencies() throws Exception {
-		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");
-		chainTest.loadClass("chain.test.TestMultiChain").newInstance();
-
-
-		Object[] expectedEvents = new Object[8];
-		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);
-
-		installer.refreshPackages(new Bundle[] {chainTestC, chainTestD});
-
-		Object[] actualEvents = simpleResults.getResults(8);
-		compareResults(expectedEvents, actualEvents);
-	}
-
-	public void testClassCircularityError() throws Exception {
-		Bundle circularityTest = installer.installBundle("circularity.test");
-		Bundle circularityTestA = installer.installBundle("circularity.test.a");
-		circularityTest.loadClass("circularity.test.TestCircularity");
-
-		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");
-		Bundle fragA = installer.installBundle("fragment.test.attach.frag.a");
-		assertTrue("Host/Frag resolve", installer.resolveBundles(new Bundle[] {hostA, fragA}));
-
-		ITestRunner testRunner = (ITestRunner) hostA.loadClass("fragment.test.attach.host.a.internal.test.TestPackageAccess").newInstance();
-		try {
-			testRunner.testIt();
-		} catch (Exception e) {
-			fail("Failed package access test: " + e.getMessage());
-		}
-	}
-
-	public void testLegacyLazyStart() throws Exception {
-		Bundle legacy = installer.installBundle("legacy.lazystart");
-		Bundle legacyA = installer.installBundle("legacy.lazystart.a");
-		Bundle legacyB = installer.installBundle("legacy.lazystart.b");
-		Bundle legacyC = installer.installBundle("legacy.lazystart.c");
-		assertTrue("legacy lazy start resolve", installer.resolveBundles(new Bundle[] {legacy, legacyA, legacyB, legacyC}));
-
-		((ITestRunner) legacy.loadClass("legacy.lazystart.SimpleLegacy").newInstance()).testIt();
-		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();
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0);
-		((ITestRunner) legacy.loadClass("legacy.lazystart.TrueExceptionLegacy2").newInstance()).testIt();
-		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();
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0);
-		((ITestRunner) legacy.loadClass("legacy.lazystart.FalseExceptionLegacy2").newInstance()).testIt();
-		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");
-		try {
-			test.loadClass("does.not.exist.Test");
-		} 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");
-		try {
-			legacyA.loadClass("does.not.exist.Test");
-		} 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");
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a");
-		Bundle osgiB = installer.installBundle("osgi.lazystart.b");
-		Bundle osgiC = installer.installBundle("osgi.lazystart.c");
-		assertTrue("osgi lazy start resolve", installer.resolveBundles(new Bundle[] {osgi, osgiA, osgiB, osgiC}));
-
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazySimple").newInstance()).testIt();
-		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();
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0);
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazyExclude2").newInstance()).testIt();
-		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();
-		assertTrue("exceptions no event", simpleResults.getResults(0).length == 0);
-		((ITestRunner) osgi.loadClass("osgi.lazystart.LazyInclude2").newInstance()).testIt();
-		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");
-		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");
-		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 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");
-		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");
-		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);
-		} catch (BundleException e) {
-			// expected
-		}
-		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 testStopTransient() throws Exception {
-		Bundle osgiA = installer.installBundle("osgi.lazystart.a");
-		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 testThreadLock() throws Exception {
-		Bundle threadLockTest = installer.installBundle("thread.locktest");
-		threadLockTest.loadClass("thread.locktest.ATest");
-
-		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");
-		installer.resolveBundles(new Bundle[] {test});
-		URL[] urls = new URL[2];
-		urls[0] = test.getResource("a/b/c/d");
-		urls[1] = test.getEntry("a/b/c/d");
-		assertNotNull("resource", urls[0]);
-		assertNotNull("entry", urls[1]);
-		for (int i = 0; i < urls.length; i++) {
-			URL testURL = new URL(urls[i], "g");
-			assertEquals("g", "/a/b/c/g", testURL.getPath());
-			testURL = new URL(urls[i], "./g");
-			assertEquals("./g", "/a/b/c/g", testURL.getPath());
-			testURL = new URL(urls[i], "g/");
-			assertEquals("g/", "/a/b/c/g/", testURL.getPath());
-			testURL = new URL(urls[i], "/g");
-			assertEquals("/g", "/g", testURL.getPath());
-			testURL = new URL(urls[i], "?y");
-			assertEquals("?y", "/a/b/c/?y", testURL.getPath());
-			testURL = new URL(urls[i], "g?y");
-			assertEquals("g?y", "/a/b/c/g?y", testURL.getPath());
-			testURL = new URL(urls[i], "g#s");
-			assertEquals("g#s", "/a/b/c/g#s", testURL.getPath() + "#s");
-			testURL = new URL(urls[i], "g?y#s");
-			assertEquals("g?y#s", "/a/b/c/g?y#s", testURL.getPath() + "#s");
-			testURL = new URL(urls[i], ";x");
-			assertEquals(";x", "/a/b/c/;x", testURL.getPath());
-			testURL = new URL(urls[i], "g;x");
-			assertEquals("g;x", "/a/b/c/g;x", testURL.getPath());
-			testURL = new URL(urls[i], "g;x?y#s");
-			assertEquals("g;x?y#s", "/a/b/c/g;x?y#s", testURL.getPath() + "#s");
-			testURL = new URL(urls[i], ".");
-			assertEquals(".", "/a/b/c/", testURL.getPath());
-			testURL = new URL(urls[i], "./");
-			assertEquals("./", "/a/b/c/", testURL.getPath());
-			testURL = new URL(urls[i], "..");
-			assertEquals("..", "/a/b/", testURL.getPath());
-			testURL = new URL(urls[i], "../");
-			assertEquals("../", "/a/b/", testURL.getPath());
-			testURL = new URL(urls[i], "../g");
-			assertEquals("../g", "/a/b/g", testURL.getPath());
-			testURL = new URL(urls[i], "../..");
-			assertEquals("../..", "/a/", testURL.getPath());
-			testURL = new URL(urls[i], "../../");
-			assertEquals("../../", "/a/", testURL.getPath());
-			testURL = new URL(urls[i], "../../g");
-			assertEquals("../../g", "/a/g", testURL.getPath());
-		}
-	}
-
-	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");
-		Enumeration manifests = test.getResources("META-INF/MANIFEST.MF");
-		assertNotNull("manifests", manifests);
-		ArrayList manifestURLs = new ArrayList();
-		while(manifests.hasMoreElements())
-			manifestURLs.add(manifests.nextElement());
-		assertEquals("manifest number", 1, manifestURLs.size());
-		URL manifest = (URL) manifestURLs.get(0);
-		assertEquals("host id", test.getBundleId(), Long.parseLong(manifest.getHost()));
-	}
-
-	public void testMultipleGetResources01() throws Exception {
-		Bundle test = installer.installBundle("test");
-		// test that we can get multiple resources from a bundle
-		Enumeration resources = test.getResources("data/resource1");
-		assertNotNull("resources", resources);
-		ArrayList resourceURLs = new ArrayList();
-		while(resources.hasMoreElements())
-			resourceURLs.add(resources.nextElement());
-		assertEquals("resource number", 2, resourceURLs.size());
-		assertEquals("root resource", "root classpath", readURL((URL) resourceURLs.get(0)));
-		assertEquals("stuff resource", "stuff classpath", readURL((URL) resourceURLs.get(1)));
-	}
-
-	public void testMultipleGetResources02() throws Exception {
-		installer.installBundle("test");
-		Bundle test2 = installer.installBundle("test2");
-		// test that we can get multiple resources from a bundle
-		Enumeration resources = test2.getResources("data/resource1");
-		assertNotNull("resources", resources);
-		ArrayList resourceURLs = new ArrayList();
-		while(resources.hasMoreElements())
-			resourceURLs.add(resources.nextElement());
-		assertEquals("resource number", 4, resourceURLs.size());
-		assertEquals("root resource", "root classpath", readURL((URL) resourceURLs.get(0)));
-		assertEquals("stuff resource", "stuff classpath", readURL((URL) resourceURLs.get(1)));
-		assertEquals("root resource", "root classpath test2", readURL((URL) resourceURLs.get(2)));
-		assertEquals("stuff resource", "stuff classpath test2", readURL((URL) resourceURLs.get(3)));
-	}
-
-// TODO temporarily disable til we can debug the build test machine on Win XP
-//	public void testBuddyClassLoadingRegistered1() throws Exception{
-//		Bundle registeredA = installer.installBundle("buddy.registered.a");
-//		installer.resolveBundles(new Bundle[] {registeredA});
-//		Enumeration testFiles = registeredA.getResources("resources/test.txt");
-//		assertNotNull("testFiles", testFiles);
-//		ArrayList testURLs = new ArrayList();
-//		while(testFiles.hasMoreElements())
-//			testURLs.add(testFiles.nextElement());
-//		assertEquals("test.txt number", 1, testURLs.size());
-//		assertEquals("buddy.registered.a", "buddy.registered.a", readURL((URL) testURLs.get(0)));
-//
-//		Bundle registeredATest1 = installer.installBundle("buddy.registered.a.test1");
-//		Bundle registeredATest2 = installer.installBundle("buddy.registered.a.test2");
-//		installer.resolveBundles(new Bundle[] {registeredATest1, registeredATest2});
-//		testFiles = registeredA.getResources("resources/test.txt");
-//		assertNotNull("testFiles", testFiles);
-//		testURLs = new ArrayList();
-//		while(testFiles.hasMoreElements())
-//			testURLs.add(testFiles.nextElement());
-//
-//		// TODO some debug code to figure out why this is failing on the test machine
-//		if (registeredATest1.getState() != Bundle.RESOLVED) {
-//			System.out.println("Bundle is not resolved!! " + registeredATest1.getSymbolicName());
-//			State state = Platform.getPlatformAdmin().getState(false);
-//			BundleDescription aDesc = state.getBundle(registeredATest1.getBundleId());
-//			ResolverError[] errors = state.getResolverErrors(aDesc);
-//			for (int i = 0; i < errors.length; i++)
-//				System.out.println(errors[i]);
-//		}
-//		if (registeredATest2.getState() != Bundle.RESOLVED) {
-//			System.out.println("Bundle is not resolved!! " + registeredATest2.getSymbolicName());
-//			State state = Platform.getPlatformAdmin().getState(false);
-//			BundleDescription bDesc = state.getBundle(registeredATest2.getBundleId());
-//			ResolverError[] errors = state.getResolverErrors(bDesc);
-//			for (int i = 0; i < errors.length; i++)
-//				System.out.println(errors[i]);
-//		}
-//
-//		// The real test
-//		assertEquals("test.txt number", 3, testURLs.size());
-//		assertEquals("buddy.registered.a", "buddy.registered.a", readURL((URL) testURLs.get(0)));
-//		assertEquals("buddy.registered.a.test1", "buddy.registered.a.test1", readURL((URL) testURLs.get(1)));
-//		assertEquals("buddy.registered.a.test2", "buddy.registered.a.test2", readURL((URL) testURLs.get(2)));
-//	}
-//
-//	public void testBuddyClassLoadingDependent1() throws Exception{
-//		Bundle dependentA = installer.installBundle("buddy.dependent.a");
-//		installer.resolveBundles(new Bundle[] {dependentA});
-//		Enumeration testFiles = dependentA.getResources("resources/test.txt");
-//		assertNotNull("testFiles", testFiles);
-//		ArrayList testURLs = new ArrayList();
-//		while(testFiles.hasMoreElements())
-//			testURLs.add(testFiles.nextElement());
-//		assertEquals("test.txt number", 1, testURLs.size());
-//		assertEquals("buddy.dependent.a", "buddy.dependent.a", readURL((URL) testURLs.get(0)));
-//
-//		Bundle dependentATest1 = installer.installBundle("buddy.dependent.a.test1");
-//		Bundle dependentATest2 = installer.installBundle("buddy.dependent.a.test2");
-//		installer.resolveBundles(new Bundle[] {dependentATest1, dependentATest2});
-//		testFiles = dependentA.getResources("resources/test.txt");
-//		assertNotNull("testFiles", testFiles);
-//		testURLs = new ArrayList();
-//		while(testFiles.hasMoreElements())
-//			testURLs.add(testFiles.nextElement());
-//		assertEquals("test.txt number", 3, testURLs.size());
-//		assertEquals("buddy.dependent.a", "buddy.dependent.a", readURL((URL) testURLs.get(0)));
-//		assertEquals("buddy.dependent.a.test1", "buddy.dependent.a.test1", readURL((URL) testURLs.get(1)));
-//		assertEquals("buddy.dependent.a.test2", "buddy.dependent.a.test2", readURL((URL) testURLs.get(2)));
-//	}
-
-	private String readURL(URL url) throws IOException {
-		StringBuffer sb = new StringBuffer();
-		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();
-		}
-		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/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/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/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/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 80b0fd1..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/MovableConfigurationAreaTest.java
+++ /dev/null
@@ -1,128 +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.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
-			BundleTestingHelper.resolveBundles(getContext(), new Bundle[] {installed});
-		} catch (BundleException be) {
-			fail("1.0", 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 538475c..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/configuration/ReadOnlyConfigurationAreaTest.java
+++ /dev/null
@@ -1,133 +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.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
-			BundleTestingHelper.resolveBundles(getContext(), new Bundle[] {installed});
-		} catch (BundleException be) {
-			fail("1.0", 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/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 5d0baef..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/eclipseadaptor/EnvironmentInfoTest.java
+++ /dev/null
@@ -1,80 +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.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_MOTIF, 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_CARBON, 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_MOTIF, 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));
-	}
-}
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/internal/plugins/InstallTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/internal/plugins/InstallTests.java
deleted file mode 100644
index 9fcf5d4..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/internal/plugins/InstallTests.java
+++ /dev/null
@@ -1,184 +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.internal.plugins;
-
-import java.io.IOException;
-import junit.framework.TestCase;
-import org.eclipse.core.tests.harness.BundleTestingHelper;
-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 TestCase {
-
-	public InstallTests() {
-		super();
-	}
-
-	public InstallTests(String name) {
-		super(name);
-	}
-
-	protected void setUp() throws Exception {
-		super.setUp();
-	}
-
-	public void testInstallInvalidManifest() throws BundleException, IOException {
-		Bundle installed = null;
-		try {
-			installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle03");
-			// should have failed with BundleException
-			fail("1.0");
-		} 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();
-		}
-	}
-
-	public void testInstallLocationWithSpaces() throws BundleException, IOException {
-		Bundle installed = null;
-		installed = BundleTestingHelper.installBundle(OSGiTestsActivator.getContext(), OSGiTestsActivator.TEST_FILES_ROOT + "internal/plugins/installTests/bundle 01");
-		try {
-			assertEquals("1.0", "bundle01", installed.getSymbolicName());
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState());
-		} 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");
-		try {
-			assertEquals("1.0", "bundle02", installed.getSymbolicName());
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState());
-			assertEquals("1.2", new Version("2.0"), new Version((String) installed.getHeaders().get(Constants.BUNDLE_VERSION)));
-		} 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");
-		try {
-			assertEquals("1.0", "bundle04", installed.getSymbolicName());
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState());
-			assertEquals("1.2", "1.3.7", installed.getHeaders().get(Constants.BUNDLE_VERSION));
-			String symbolicNameString = (String) installed.getHeaders().get(Constants.BUNDLE_SYMBOLICNAME);
-			assertNotNull("1.3", symbolicNameString);
-			ManifestElement[] symbolicNameHeader = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, symbolicNameString);
-			assertEquals("1.4", 1, symbolicNameHeader.length);
-			assertEquals("1.5", "true", symbolicNameHeader[0].getDirective(Constants.SINGLETON_DIRECTIVE));
-
-		} 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");
-		try {
-			assertEquals("1.0", "bundle05", installed.getSymbolicName());
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState());
-			assertEquals("1.2", "1.3.8", installed.getHeaders().get(Constants.BUNDLE_VERSION));
-			String symbolicNameString = (String) installed.getHeaders().get(Constants.BUNDLE_SYMBOLICNAME);
-			assertNotNull("1.3", symbolicNameString);
-			ManifestElement[] symbolicNameHeader = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, symbolicNameString);
-			assertEquals("1.4", 1, symbolicNameHeader.length);
-			assertEquals("1.5", "true", symbolicNameHeader[0].getDirective(Constants.SINGLETON_DIRECTIVE));
-
-		} 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");
-		try {
-			assertEquals("1.0", "bundle06", installed.getSymbolicName());
-			assertEquals("1.1", Bundle.INSTALLED, installed.getState());
-			assertEquals("1.2", "1.3.9", installed.getHeaders().get(Constants.BUNDLE_VERSION));
-			String symbolicNameString = (String) installed.getHeaders().get(Constants.BUNDLE_SYMBOLICNAME);
-			assertNotNull("1.3", symbolicNameString);
-			ManifestElement[] symbolicNameHeader = ManifestElement.parseHeader(Constants.BUNDLE_SYMBOLICNAME, symbolicNameString);
-			assertEquals("1.4", 1, symbolicNameHeader.length);
-			assertEquals("1.5", "true", symbolicNameHeader[0].getDirective(Constants.SINGLETON_DIRECTIVE));
-
-		} 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");
-		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");
-		packageAdmin.resolveBundles(null);
-		OSGiTestsActivator.getContext().ungetService(packageAdminSR);
-		try {
-			assertEquals("1.0", "bundle07", installed2.getSymbolicName());
-			assertEquals("1.1", Bundle.RESOLVED, installed2.getState());
-			assertEquals("1.2", "1.0.0.b", installed2.getHeaders().get(Constants.BUNDLE_VERSION));
-
-			assertEquals("1.3", "bundle07", installed1.getSymbolicName());
-			assertEquals("1.4", Bundle.RESOLVED, installed1.getState());
-			assertEquals("1.5", "1.0.0", installed1.getHeaders().get(Constants.BUNDLE_VERSION));
-		} 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");
-		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");
-		packageAdmin.resolveBundles(null);
-		OSGiTestsActivator.getContext().ungetService(packageAdminSR);
-		try {
-			assertEquals("1.0", "bundle08", installed1.getSymbolicName());
-			assertEquals("1.1", Bundle.RESOLVED, installed1.getState());
-			assertEquals("1.2", "1.0.0", installed1.getHeaders().get(Constants.BUNDLE_VERSION));
-
-			assertEquals("1.3", "bundle08", installed2.getSymbolicName());
-			assertEquals("1.4", Bundle.INSTALLED, installed2.getState());
-			assertEquals("1.5", "1.0.0.b", installed2.getHeaders().get(Constants.BUNDLE_VERSION));
-		} 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/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 f17354b..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StatePerformanceTest.java
+++ /dev/null
@@ -1,85 +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.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 {
-
-	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) {
-		final State originalState = buildRandomState(stateSize);
-		new PerformanceTestRunner() {
-			protected void test() {
-				originalState.resolve(false);
-			}
-		}.run(this, localName, 10, repetitions);
-	}
-
-	public void testResolution100() throws IOException {
-		testResolution(100, 500, null);
-	}
-
-	public void testResolution1000() throws IOException {
-		testResolution(1000, 15, "State Resolution");
-	}
-
-	public void testResolution500() throws IOException {
-		testResolution(500, 50, null);
-	}
-
-	public void testResolution5000() throws IOException {
-		testResolution(5000, 1, 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 89d2332..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/perf/StateUsesPerformanceTest.java
+++ /dev/null
@@ -1,180 +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.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) throws BundleException {
-		final State originalState = buildRandomState(stateSize);
-		addUsesBundles(originalState);
-		new PerformanceTestRunner() {
-			protected void test() {
-				originalState.resolve(false);
-			}
-		}.run(this, localName, 10, repetitions);
-	}
-
-	public void testUsesResolution00100() throws BundleException {
-		doUsesResolution(100, 100, null);
-	}
-	public void testUsesResolution00500() throws BundleException {
-		doUsesResolution(500, 10, null);
-	}
-	public void testUsesResolution01000() throws BundleException {
-		doUsesResolution(1000, 10, null);
-	}
-	public void testUsesResolution05000() throws BundleException {
-		doUsesResolution(5000, 1, 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/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/TestDynamic_007.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_007.java
deleted file mode 100644
index 953bdc3..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestDynamic_007.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 TestDynamic_007 extends AbstractStateTest {
-	public TestDynamic_007(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();
-
-		// Dynamics
-		ExportPackageDescription exp = state.linkDynamicImport(bundle_1, "p");
-		assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-		assertEquals("Package [p] is wired incorrectly ", exp.getExporter(), bundle_2);
-		
-	} // end of method
-
-	
-	public void checkWiringState_1() {
-	} // 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 exportPackageName = requires[i].getName();
-			assertNotNull("require name is null", exportPackageName);
-			if (exportPackageName.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() {
-	} // 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; bundle-symbolic-name=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", "C; reprovide=true");
-		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
-
-} // 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_004.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_004.java
deleted file mode 100644
index 17dfb20..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_004.java
+++ /dev/null
@@ -1,230 +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_004 extends AbstractStateTest {
-	public TestGrouping_004(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("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} 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);
-			} else if (exportPackageName.equals("z")) {
-				assertNotNull("Package [z] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [z] 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("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_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("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_4);
-			} 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_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("Import-Package", "x, y, z; 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("Reexport-Package", "x, y");
-		dictionary_2.put("Import-Package", "x; y; 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", "z; uses:=\"x,y\"");
-		dictionary_3.put("Reexport-Package", "x; y");
-		dictionary_3.put("Import-Package", "x; y; bundle-symbolic-name=D");
-		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; y; uses:=\"x,y\"");
-		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", "z; version=2.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/TestGrouping_005.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_005.java
deleted file mode 100644
index 7d9093e..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_005.java
+++ /dev/null
@@ -1,230 +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_005 extends AbstractStateTest {
-	public TestGrouping_005(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("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} 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);
-			} else if (exportPackageName.equals("z")) {
-				assertNotNull("Package [z] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [z] 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("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_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("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_4);
-			} 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_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("Import-Package", "x, y, z; 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("Reexport-Package", "x, y");
-		dictionary_2.put("Import-Package", "x; y; 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", "z; uses:=\"x,y\"");
-		dictionary_3.put("Reexport-Package", "x, y");
-		dictionary_3.put("Import-Package", "x; y; bundle-symbolic-name=D");
-		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; y; uses:=\"x,y\"");
-		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", "z; version=2.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/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_007.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_007.java
deleted file mode 100644
index e38fd43..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_007.java
+++ /dev/null
@@ -1,225 +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_007 extends AbstractStateTest {
-	public TestGrouping_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_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("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_2);
-			} 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);
-			} else if (exportPackageName.equals("z")) {
-				assertNotNull("Package [z] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [z] is wired incorrectly ", exp.getExporter(), 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("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() {
-		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("x")) {
-				assertNotNull("Package [x] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [x] is wired incorrectly ", exp.getExporter(), bundle_4);
-			} 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_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("Import-Package", "x; y; bundle-symbolic-name=B, z; 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("Require-Bundle", "C; reprovide=true");
-		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", "z; uses:=\"x,y\"");
-		dictionary_3.put("Reexport-Package", "x; y");
-		dictionary_3.put("Import-Package", "x; y; bundle-symbolic-name=D");
-		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; y; uses:=\"x,y\"");
-		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", "z; version=2.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/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/TestGrouping_009.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_009.java
deleted file mode 100644
index 3a275ea..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestGrouping_009.java
+++ /dev/null
@@ -1,192 +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_009 extends AbstractStateTest {
-	public TestGrouping_009(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++) {
-			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 ", bundle_4, exp.getExporter());
-			} else if (exportPackageName.equals("y")) {
-				assertNotNull("Package [y] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [y] is wired incorrectly ", bundle_4, exp.getExporter());
-			} else if (exportPackageName.equals("p")) {
-				assertNotNull("Package [p] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [p] is wired incorrectly ", bundle_2, exp.getExporter());
-			}
-		} // 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 ", bundle_1, exp.getExporter());
-			} else if (exportPackageName.equals("y")) {
-				assertNotNull("Package [y] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [y] is wired incorrectly ", bundle_1, exp.getExporter());
-			}
-		} // 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, x, y");
-		dictionary_1.put("Reexport-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", "p");
-		dictionary_2.put("Import-Package", "x, y");
-		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", "y; version=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("Export-Package", "x; y; uses:=\"x,y\"");
-		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/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_002.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_002.java
deleted file mode 100644
index 5a632d7..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_002.java
+++ /dev/null
@@ -1,170 +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_002 extends AbstractStateTest {
-	public TestPropagation_002(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = 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);
-		//***************************************************
-		// 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_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, 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("Reexport-Package", "p");
-		dictionary_2.put("Import-Package", "p; 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", "p; q; uses:=\"p,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/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/TestPropagation_004.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_004.java
deleted file mode 100644
index 6268a83..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_004.java
+++ /dev/null
@@ -1,262 +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_004 extends AbstractStateTest {
-	public TestPropagation_004(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_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);
-		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("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_6);
-			} 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() {
-		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("C")) {
-				assertNotNull("Require [C] is not wired when it should be ", requires[i]);
-				assertEquals("Require [C] is wired incorrectly ", requires[i], bundle_3);
-			} else if(requiresName.equals("D")) {
-				assertNotNull("Require [D] is not wired when it should be ", requires[i]);
-				assertEquals("Require [D] is wired incorrectly ", requires[i], bundle_4);
-			}
-		} // 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("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_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("q")) {
-				assertNotNull("Package [q] is not wired when it should be ", exp.getExporter());
-				assertEquals("Package [q] is wired incorrectly ", exp.getExporter(), bundle_6);
-			}
-		} // end for
-	} // end method
-
-	public void checkWiringState_5() {
-	} // end method
-	
-	public void checkWiringState_6() {
-	} // 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", "A");
-		dictionary_1.put("Import-Package", "p, q, s; bundle-symbolic-name=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", "C, D; visibility:=reexport");
-		dictionary_2.put("Export-Package", "p; uses:=s");
-		//dictionary_2.put("Reexport-Package", "s; uses:=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", "r; uses:=q");
-		dictionary_3.put("Import-Package", "q; bundle-symbolic-name=E");
-		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", "s; uses:=q");
-		dictionary_4.put("Import-Package", "q; bundle-symbolic-name=F");
-		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");
-		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", "q");
-		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/TestPropagation_005.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_005.java
deleted file mode 100644
index 729f4fe..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestPropagation_005.java
+++ /dev/null
@@ -1,170 +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_005 extends AbstractStateTest {
-	public TestPropagation_005(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() {
-	} // 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() {
-	} // 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, 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("Reexport-Package", "p");
-		dictionary_2.put("Import-Package", "p; 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", "p; q; uses:=\"p,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/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/TestRFC79_008.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_008.java
deleted file mode 100644
index f06d16a..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestRFC79_008.java
+++ /dev/null
@@ -1,183 +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_008 extends AbstractStateTest {
-	public TestRFC79_008(String testName) {
-		super(testName);
-	}
-
-	BundleDescription bundle_1 = null;
-	BundleDescription bundle_2 = null;
-	BundleDescription bundle_3 = null;
-	BundleDescription bundle_4 = 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);
-		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("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() {
-		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("Y")) {
-				assertNotNull("Require [Y] is not wired when it should be ", requires[i]);
-				assertEquals("Require [Y] is wired incorrectly ", requires[i], bundle_3);
-			} else if(requiresName.equals("Z")) {
-				assertNotNull("Require [Z] is not wired when it should be ", requires[i]);
-				assertEquals("Require [Z] is wired incorrectly ", requires[i], 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", "Ci");
-		dictionary_1.put("Import-Package", "p; foo=bar");
-		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", "X");
-		dictionary_2.put("Reexport-Package", "p; foo=bar");
-		dictionary_2.put("Require-Bundle", "Y, Z");
-		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", "Y");
-		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", "Z");
-		dictionary_4.put("Export-Package", "p");
-		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/TestReprovide_001.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestReprovide_001.java
deleted file mode 100644
index ee7a346..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/resolver/TestReprovide_001.java
+++ /dev/null
@@ -1,190 +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 TestReprovide_001 extends AbstractStateTest {
-	public TestReprovide_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("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() {
-		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("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("D")) {
-				assertNotNull("Require [D] is not wired when it should be ", requires[i]);
-				assertEquals("Require [D] is wired incorrectly ", requires[i], bundle_4);
-			}
-		} // end for
-	} // 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; bundle-symbolic-name=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", "C; reprovide=true");
-		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", "D; reprovide=true");
-		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");
-		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/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/services/datalocation/AllTests.java b/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/AllTests.java
deleted file mode 100644
index 9043223..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/AllTests.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.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(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 044d8b5..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/datalocation/BasicLocationTests.java
+++ /dev/null
@@ -1,153 +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.net.URL;
-import junit.framework.*;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.adaptor.LocationManager;
-import org.eclipse.osgi.service.datalocation.Location;
-
-public class BasicLocationTests extends TestCase {
-
-	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 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/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 bf933dd..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/AllTests.java
+++ /dev/null
@@ -1,38 +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.*;
-
-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(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/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 d71ddf1..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/PlatformAdminTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2003, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.tests.services.resolver;
-
-import java.io.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-import org.eclipse.osgi.service.resolver.State;
-import org.osgi.framework.BundleException;
-
-public class PlatformAdminTest extends AbstractStateTest {
-	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);
-	}
-}
-//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 f0795db..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/R4ResolverTest.java
+++ /dev/null
@@ -1,77 +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.TestCase;
-import junit.framework.TestSuite;
-
-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(TestDynamic_007.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_004.class));
-		suite.addTest(new TestSuite(TestGrouping_005.class));
-		suite.addTest(new TestSuite(TestGrouping_006.class));
-		suite.addTest(new TestSuite(TestGrouping_007.class));
-		suite.addTest(new TestSuite(TestGrouping_008.class));
-		suite.addTest(new TestSuite(TestGrouping_009.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_002.class));
-		suite.addTest(new TestSuite(TestPropagation_003.class));
-		suite.addTest(new TestSuite(TestPropagation_004.class));
-		suite.addTest(new TestSuite(TestPropagation_005.class));
-		suite.addTest(new TestSuite(TestReprovide_001.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(TestRFC79_008.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 7b1da6f..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/StateResolverTest.java
+++ /dev/null
@@ -1,2102 +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.io.File;
-import java.io.IOException;
-import java.util.*;
-import junit.framework.Test;
-import junit.framework.TestSuite;
-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);
-		assertFullyResolved("0.2", b0);
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p1; specification-version=1.0");
-		BundleDescription b1 = null;
-		try {
-			b1 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b1", 1);
-			state.removeBundle(1);
-			state.addBundle(b1);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p1");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p2; specification-version=1.0");
-		BundleDescription b2 = null;
-		try {
-			b2 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b2", 2);
-			state.removeBundle(2);
-			state.addBundle(b2);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b3");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p2");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p3; specification-version=1.0");
-		BundleDescription b3 = null;
-		try {
-			b3 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b3", 3);
-			state.removeBundle(3);
-			state.addBundle(b3);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		delta = state.resolve(new BundleDescription[] {state.getBundle(1)});
-		deltas = delta.getChanges();
-		assertEquals("1.0", 3, deltas.length);
-		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)));
-		assertNotNull("1.2", deltasMap.get(new Long(2)));
-		assertNotNull("1.3", deltasMap.get(new Long(3)));
-		assertEquals("2.1", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(1))).getType());
-		assertEquals("2.2", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(2))).getType());
-		assertEquals("2.3", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(3))).getType());
-	}
-
-	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);
-		assertNotNull("0.2", b2);
-		assertNotNull("0.3", b3);
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 3, changes.length);
-		BundleDelta[] additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("2.0", 3, additions.length);
-		BundleDelta[] resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("3.0", 2, resolutions.length);
-		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()));
-		assertNotNull("3.2", deltasMap.get(b2.getSymbolicName()));
-		// 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);
-		assertFullyResolved("5.2", b2);
-		assertFullyUnresolved("5.3", b3);
-	}
-
-	public void testComplexResolution() throws BundleException {
-		State state = buildComplexState();
-		StateDelta delta = state.resolve();
-		BundleDescription b1 = state.getBundle("org.eclipse.b1", Version.parseVersion("1.0"));
-		BundleDescription b2 = state.getBundle("org.eclipse.b2", Version.parseVersion("2.0"));
-		BundleDescription b3 = state.getBundle("org.eclipse.b3", Version.parseVersion("2.0"));
-		BundleDescription b4 = state.getBundle("org.eclipse.b4", Version.parseVersion("2.0"));
-		BundleDescription b5 = state.getBundle("org.eclipse.b5", Version.parseVersion("1.0"));
-		BundleDescription b6 = state.getBundle("org.eclipse.b6", Version.parseVersion("1.0"));
-		assertNotNull("0.1", b1);
-		assertNotNull("0.2", b2);
-		assertNotNull("0.3", b3);
-		assertNotNull("0.4", b4);
-		assertNotNull("0.5", b5);
-		assertNotNull("0.6", b6);
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 6, changes.length);
-		BundleDelta[] additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("2.0", 6, additions.length);
-		BundleDelta[] resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("3.0", 6, resolutions.length);
-		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()));
-		assertNotNull("3.2", deltasMap.get(b2.getSymbolicName()));
-		assertNotNull("3.3", deltasMap.get(b3.getSymbolicName()));
-		assertNotNull("3.4", deltasMap.get(b4.getSymbolicName()));
-		assertNotNull("3.5", deltasMap.get(b5.getSymbolicName()));
-		assertNotNull("3.6", deltasMap.get(b6.getSymbolicName()));
-		BundleDelta[] unresolutions = delta.getChanges(BundleDelta.UNRESOLVED, false);
-		assertEquals("4.0", 0, unresolutions.length);
-		assertFullyResolved("5.1", b1);
-		assertFullyResolved("5.2", b2);
-		assertFullyResolved("5.3", b3);
-		assertFullyResolved("5.4", b4);
-		assertFullyResolved("5.5", b5);
-		assertFullyResolved("5.6", b6);
-	}
-
-	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);
-		assertEquals("1.1", state.getBundle(2), dependent[0]);
-		dependent = platformAdmin.getStateHelper().getDependentBundles(new BundleDescription[] {state.getBundle(1)});
-		assertEquals("2.0", 4, dependent.length);
-		assertContains("2.1", dependent, state.getBundle(1));
-		assertContains("2.2", dependent, state.getBundle(2));
-		assertContains("2.3", dependent, state.getBundle(4));
-		assertContains("2.4", dependent, state.getBundle(6));
-	}
-
-	public void testPrerequisiteBundle() throws BundleException {
-		State state = buildComplexState();
-		state.resolve();
-		BundleDescription[] prereqs;
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(state.getResolvedBundles());
-		assertEquals("1.0", 6, prereqs.length);
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(1)});
-		assertEquals("2.0", 2, prereqs.length);
-		assertContains("2.1", prereqs, state.getBundle(1));
-		assertContains("2.2", prereqs, state.getBundle(3));
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(2)});
-		assertEquals("3.0", 3, prereqs.length);
-		assertContains("3.1", prereqs, state.getBundle(1));
-		assertContains("3.2", prereqs, state.getBundle(2));
-		assertContains("3.3", prereqs, state.getBundle(3));
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(3)});
-		assertEquals("4.0", 1, prereqs.length);
-		assertContains("4.1", prereqs, state.getBundle(3));
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(4)});
-		assertEquals("5.0", 3, prereqs.length);
-		assertContains("5.1", prereqs, state.getBundle(1));
-		assertContains("5.2", prereqs, state.getBundle(3));
-		assertContains("5.3", prereqs, state.getBundle(4));
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(5)});
-		assertEquals("6.0", 2, prereqs.length);
-		assertContains("6.1", prereqs, state.getBundle(3));
-		assertContains("6.2", prereqs, state.getBundle(5));
-		prereqs = platformAdmin.getStateHelper().getPrerequisites(new BundleDescription[] {state.getBundle(6)});
-		assertEquals("6.0", 4, prereqs.length);
-		assertContains("6.1", prereqs, state.getBundle(1));
-		assertContains("6.2", prereqs, state.getBundle(3));
-		assertContains("6.3", prereqs, state.getBundle(4));
-		assertContains("6.4", prereqs, state.getBundle(6));
-	}
-
-	// temporarily disabled
-	public void testLinkageChange() throws BundleException {
-		State state = buildEmptyState();
-		// don't add b1 for now
-		String B1_LOCATION = "org.eclipse.b1";
-		final String B1_MANIFEST = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n";
-		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";
-		final String B2_MANIFEST = "Bundle-SymbolicName: org.eclipse.b2\n" + "Bundle-Version: 2.0\n" + "Require-Bundle: org.eclipse.b1;optional=true";
-		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";
-		final String B3_MANIFEST = "Bundle-SymbolicName: org.eclipse.b3\n" + "Bundle-Version: 2.0\n" + "Require-Bundle: org.eclipse.b1";
-		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);
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 2, changes.length);
-		BundleDelta[] additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("2.0", 2, additions.length);
-		BundleDelta[] resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("3.0", 1, resolutions.length);
-		assertEquals("3.1", b2, resolutions[0].getBundle());
-		BundleDelta[] addtionsNotResolved = delta.getChanges(BundleDelta.ADDED, true);
-		assertEquals("4.0", 1, addtionsNotResolved.length);
-		assertEquals("4.1", b3, addtionsNotResolved[0].getBundle());
-		state.addBundle(b1);
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("5.0", 2, changes.length);
-		additions = delta.getChanges(BundleDelta.ADDED, false);
-		assertEquals("6.0", 1, additions.length);
-		assertEquals("6.1", b1, additions[0].getBundle());
-		resolutions = delta.getChanges(BundleDelta.RESOLVED, false);
-		assertEquals("7.0", 2, resolutions.length);
-		BundleDelta[] existingResolved = delta.getChanges(BundleDelta.RESOLVED, true);
-		assertEquals("8.0", 1, existingResolved.length);
-		assertEquals("8.1", b3, existingResolved[0].getBundle());
-		// 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);
-		resolutions = delta.getChanges(BundleDelta.RESOLVED, true);
-		assertEquals("9.1", 1, resolutions.length);
-		assertEquals("9.2", b2, resolutions[0].getBundle());
-		assertFullyResolved("10.1", b1);
-		assertFullyResolved("10.2", b2);
-		assertFullyResolved("10.3", b3);
-	}
-
-	// 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);
-		assertEquals("1.1", 4, delta.getChanges(BundleDelta.REMOVED | BundleDelta.UNRESOLVED | BundleDelta.REMOVAL_COMPLETE, true)[0].getBundle().getBundleId());
-		assertEquals("2.0", 1, delta.getChanges(BundleDelta.UNRESOLVED, true).length);
-		assertEquals("2.1", 6, delta.getChanges(BundleDelta.UNRESOLVED, true)[0].getBundle().getBundleId());
-		// 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);
-		assertEquals("3.1", 4, delta.getChanges(BundleDelta.ADDED | BundleDelta.RESOLVED, true)[0].getBundle().getBundleId());
-		assertEquals("4.0", 1, delta.getChanges(BundleDelta.RESOLVED, true).length);
-		assertEquals("4.1", 6, delta.getChanges(BundleDelta.RESOLVED, true)[0].getBundle().getBundleId());
-	}
-
-	public void testRemoval() throws BundleException {
-		String B1_LOCATION = "org.eclipse.b1";
-		final String B1_MANIFEST = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n";
-		String B2_LOCATION = "org.eclipse.b2";
-		final String B2_MANIFEST = "Bundle-SymbolicName: org.eclipse.b2\n" + "Bundle-Version: 1.0\n";
-		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));
-		assertTrue("1.2", contains(state.getResolvedBundles(), b2));
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.3", 2, changes.length);
-		assertEquals("1.4 - " + changes[0].getBundle(), (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[0].getType());
-		assertEquals("1.5 - " + changes[1].getBundle(), (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[1].getType());
-		assertFullyResolved("1.6", b1);
-		assertFullyResolved("1.7", b2);
-		// remove a resolved bundle
-		state.removeBundle(b1);
-		assertTrue("2.0", !contains(state.getResolvedBundles(), b1));
-		assertTrue("2.1", contains(state.getResolvedBundles(), b2));
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("2.2", 1, changes.length);
-		assertEquals("2.3", b1, changes[0].getBundle());
-		assertEquals("2.4", BundleDelta.REMOVED | BundleDelta.UNRESOLVED, changes[0].getType());
-	}
-
-	public void testRemoveAndAdd() throws BundleException {
-		String B_LOCATION = "org.eclipse.b";
-		final String B_MANIFEST = "Bundle-SymbolicName: org.eclipse.b\n" + "Bundle-Version: 1.0\n";
-		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);
-		assertEquals("1.1", b1, changes[0].getBundle());
-		assertEquals("1.2", (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[0].getType());
-		assertFullyResolved("1.3", b1);
-		state.removeBundle(b1);
-		state.addBundle(b2);
-		delta = state.resolve();
-		assertEquals("2.0", 2, delta.getChanges().length);
-		assertEquals("2.1", 1, delta.getChanges(BundleDelta.UNRESOLVED | BundleDelta.REMOVED, true).length);
-		assertEquals("2.2", b1, delta.getChanges(BundleDelta.UNRESOLVED | BundleDelta.REMOVED, true)[0].getBundle());
-		assertEquals("2.3", 1, delta.getChanges(BundleDelta.RESOLVED | BundleDelta.ADDED, true).length);
-		assertEquals("2.3", b2, delta.getChanges(BundleDelta.RESOLVED | BundleDelta.ADDED, true)[0].getBundle());
-	}
-
-	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);
-		assertFullyResolved("0.2", b0);
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p1; specification-version=1.0");
-		BundleDescription b1 = null;
-		try {
-			b1 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b1", 1);
-			state.removeBundle(1);
-			state.addBundle(b1);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p1");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p2; specification-version=1.0");
-		BundleDescription b2 = null;
-		try {
-			b2 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b2", 2);
-			state.removeBundle(2);
-			state.addBundle(b2);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b3");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p2");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p3; specification-version=1.0");
-		BundleDescription b3 = null;
-		try {
-			b3 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b3", 3);
-			state.removeBundle(3);
-			state.addBundle(b3);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		delta = state.resolve(false);
-		deltas = delta.getChanges();
-		assertEquals("1.0", 4, deltas.length);
-		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)));
-		assertNotNull("1.2", deltasMap.get(new Long(2)));
-		assertNotNull("1.3", deltasMap.get(new Long(3)));
-		assertEquals("2.1", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(1))).getType());
-		assertEquals("2.2", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(2))).getType());
-		assertEquals("2.3", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(3))).getType());
-		state.removeBundle(1);
-		delta = state.resolve(false);
-		deltas = delta.getChanges();
-		b2 = state.getBundle(2);
-		b3 = state.getBundle(3);
-		assertEquals("3.1", false, b2.isResolved());
-		assertEquals("3.2", false, b3.isResolved());
-	}
-
-	/**
-	 * 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);
-		assertFullyResolved("0.2", b0);
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p1; specification-version=1.0");
-		BundleDescription b1 = null;
-		try {
-			b1 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b1", 1);
-			state.removeBundle(1);
-			state.addBundle(b1);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p1");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p2; specification-version=1.0");
-		BundleDescription b2 = null;
-		try {
-			b2 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b2", 2);
-			state.removeBundle(2);
-			state.addBundle(b2);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "org.eclipse.b3");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "org.osgi.framework,org.eclipse.p2");
-		manifest.put(Constants.EXPORT_PACKAGE, "org.eclipse.p3; specification-version=1.0");
-		BundleDescription b3 = null;
-		try {
-			b3 = state.getFactory().createBundleDescription(manifest, "org.eclipse.b3", 3);
-			state.removeBundle(3);
-			state.addBundle(b3);
-		} catch (BundleException e) {
-			fail("Failed to create BundleDescription: " + e.getMessage());
-		}
-		delta = state.resolve(new BundleDescription[] {state.getBundle(1)});
-		deltas = delta.getChanges();
-		assertEquals("1.0", 3, deltas.length);
-		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)));
-		assertNotNull("1.2", deltasMap.get(new Long(2)));
-		assertNotNull("1.3", deltasMap.get(new Long(3)));
-		assertEquals("2.1", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(1))).getType());
-		assertEquals("2.2", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(2))).getType());
-		assertEquals("2.3", (BundleDelta.RESOLVED | BundleDelta.ADDED), ((BundleDelta) deltasMap.get(new Long(3))).getType());
-		delta = state.resolve(new BundleDescription[] {state.getBundle(1)});
-		deltas = delta.getChanges();
-		assertEquals("3.0", 3, deltas.length);
-		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)));
-		assertNotNull("3.2", deltasMap.get(new Long(2)));
-		assertNotNull("3.3", deltasMap.get(new Long(3)));
-		assertEquals("3.4", BundleDelta.RESOLVED, ((BundleDelta) deltasMap.get(new Long(1))).getType());
-		assertEquals("3.5", BundleDelta.RESOLVED, ((BundleDelta) deltasMap.get(new Long(2))).getType());
-		assertEquals("3.6", BundleDelta.RESOLVED, ((BundleDelta) deltasMap.get(new Long(3))).getType());
-
-	}
-
-	public void testUpdate() throws BundleException {
-		State state = buildEmptyState();
-		String B1_LOCATION = "org.eclipse.b";
-		final String B1_RESOLVED = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 1.0\n";
-		final String B1_UNRESOLVED = "Bundle-SymbolicName: org.eclipse.b1\n" + "Bundle-Version: 2.0\nRequire-Bundle: non.existant.bundle\n";
-		BundleDescription b1 = state.getFactory().createBundleDescription(parseManifest(B1_RESOLVED), B1_LOCATION, 1);
-		assertTrue("0.9", state.addBundle(b1));
-		StateDelta delta = state.resolve();
-		b1 = state.getBundleByLocation(b1.getLocation());
-		BundleDelta[] changes = delta.getChanges();
-		assertEquals("1.0", 1, changes.length);
-		assertEquals("1.1", b1, changes[0].getBundle());
-		assertEquals("1.2", (BundleDelta.ADDED | BundleDelta.RESOLVED), changes[0].getType());
-		assertFullyResolved("1.3", b1);
-		assertTrue("1.8", contains(state.getResolvedBundles(), b1));
-		BundleDescription b11 = state.getFactory().createBundleDescription(parseManifest(B1_UNRESOLVED), B1_LOCATION, 1);
-		assertTrue("1.8b", state.updateBundle(b11));
-		b11 = state.getBundle(b11.getBundleId());
-		assertTrue("1.9", !contains(state.getResolvedBundles(), b11));
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("2.0", 2, changes.length);
-		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));
-		assertNotNull("2.2", deltasMap.get(b11));
-		assertEquals("2.3", BundleDelta.UNRESOLVED, ((BundleDelta) deltasMap.get(b1)).getType());
-		assertEquals("2.4", BundleDelta.UPDATED, ((BundleDelta) deltasMap.get(b11)).getType());
-		BundleDescription b111 = state.getFactory().createBundleDescription(parseManifest(B1_RESOLVED), B1_LOCATION, 1);
-		assertTrue("3.0", state.updateBundle(b111));
-		b111 = state.getBundle(b111.getBundleId());
-		assertTrue("3.1", !contains(state.getResolvedBundles(), b111));
-		delta = state.resolve();
-		changes = delta.getChanges();
-		assertEquals("3.2", 1, changes.length);
-		assertEquals("3.1", b111, changes[0].getBundle());
-		assertEquals("3.2", BundleDelta.UPDATED | BundleDelta.RESOLVED, changes[0].getType());
-		assertFullyResolved("3.3", b111);
-	}
-
-	public void testSingletons() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1");
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1");
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 3);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.dependent; singleton:=true");
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.host; bundle-version=\"[1.0.1,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testDependent = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 4);
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.addBundle(testDependent);
-		state.resolve();
-		assertFalse("1.0", testHost100.isResolved());
-		assertTrue("1.1", testHost101.isResolved());
-		assertFalse("1.2", testFrag100.isResolved());
-		assertTrue("1.3", testFrag101.isResolved());
-		assertTrue("1.4", testDependent.isResolved());
-	}
-
-	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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 3);
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.resolve();
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.resolve();
-		assertTrue("1.0", testHost100.isResolved());
-		assertFalse("1.1", testHost101.isResolved());
-		assertTrue("1.2", testFrag100.isResolved());
-		assertFalse("1.3", testFrag101.isResolved());
-	}
-
-	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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\"");
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", 3);
-
-		state.addBundle(sdk10);
-		state.addBundle(platform10);
-		state.addBundle(rcp10);
-		state.addBundle(gef10);
-		state.resolve();
-
-		assertTrue("1.0", sdk10.isResolved());
-		assertTrue("1.1", platform10.isResolved());
-		assertTrue("1.2", rcp10.isResolved());
-		assertTrue("1.3", gef10.isResolved());
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", 4);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", 5);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", 6);
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved());
-		assertTrue("2.1", platform20.isResolved());
-		assertTrue("2.2", rcp10.isResolved());
-		assertTrue("2.3", gef10.isResolved());
-		assertFalse("2.4", sdk10.isResolved());
-		assertFalse("2.5", platform10.isResolved());
-		assertFalse("2.6", rcp20.isResolved());
-	}
-
-	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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\", cycle");
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\", sdk");
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", 3);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "cycle; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "gef");
-		BundleDescription cycle10 = state.getFactory().createBundleDescription(state, manifest, "gef10", 4);
-
-
-		state.addBundle(sdk10);
-		state.addBundle(platform10);
-		state.addBundle(rcp10);
-		state.addBundle(gef10);
-		state.addBundle(cycle10);
-		state.resolve();
-
-		assertTrue("1.0", sdk10.isResolved());
-		assertTrue("1.1", platform10.isResolved());
-		assertTrue("1.2", rcp10.isResolved());
-		assertTrue("1.3", gef10.isResolved());
-		assertTrue("1.4", cycle10.isResolved());
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", 5);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", 6);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", 7);
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved());
-		assertTrue("2.1", platform20.isResolved());
-		assertTrue("2.2", rcp10.isResolved());
-		assertTrue("2.3", gef10.isResolved());
-		assertTrue("2.4", cycle10.isResolved());
-		assertFalse("2.5", sdk10.isResolved());
-		assertFalse("2.6", platform10.isResolved());
-		assertFalse("2.7", rcp20.isResolved());
-	}
-
-	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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "sdk");
-		BundleDescription sdk_frag10 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "sdk; bundle-version=2.0");
-		BundleDescription sdk_frag210 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag210", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "platform");
-		BundleDescription platform_frag10 = state.getFactory().createBundleDescription(state, manifest, "platform.frag10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "platform; bundle-version=2.0");
-		BundleDescription platform_frag210 = state.getFactory().createBundleDescription(state, manifest, "platform.frag210", bundleID++);
-
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "rcp");
-		BundleDescription rcp_frag10 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "rcp; bundle-version=2.0");
-		BundleDescription rcp_frag210 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag210", bundleID++);
-
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,1.0]\"");
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", bundleID++);
-
-		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());
-		assertTrue("1.0.1", sdk_frag10.isResolved());
-		assertFalse("1.0.2", sdk_frag210.isResolved());
-		assertTrue("1.1", platform10.isResolved());
-		assertTrue("1.1.1", platform_frag10.isResolved());
-		assertFalse("1.1.2", platform_frag210.isResolved());
-		assertTrue("1.2", rcp10.isResolved());
-		assertTrue("1.2.1", rcp_frag10.isResolved());
-		assertFalse("1.2.2", rcp_frag210.isResolved());
-		assertTrue("1.3", gef10.isResolved());
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "platform; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "rcp; bundle-version=\"[1.0,2.0]\"");
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", bundleID++);
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved());
-		assertTrue("2.0.1", sdk_frag10.isResolved());
-		assertTrue("2.0.2", sdk_frag210.isResolved());
-		assertTrue("2.1", platform20.isResolved());
-		assertTrue("2.1.1", platform_frag10.isResolved());
-		assertTrue("2.1.2", platform_frag210.isResolved());
-		assertTrue("2.2", rcp10.isResolved());
-		assertTrue("2.2.1", rcp_frag10.isResolved());
-		assertTrue("2.3", gef10.isResolved());
-		assertFalse("2.4", sdk10.isResolved());
-		assertFalse("2.5", platform10.isResolved());
-		assertFalse("2.6", rcp20.isResolved());
-		assertFalse("2.2.2", rcp_frag210.isResolved());
-	}
-
-	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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "sdk; version=1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "platform; version=\"[1.0,2.0]\"");
-		BundleDescription sdk10 = state.getFactory().createBundleDescription(state, manifest, "sdk10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "sdk");
-		BundleDescription sdk_frag10 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "sdk; bundle-version=2.0");
-		BundleDescription sdk_frag210 = state.getFactory().createBundleDescription(state, manifest, "sdk.frag210", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "platform; version=1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "rcp; version=\"[1.0,2.0]\"");
-		BundleDescription platform10 = state.getFactory().createBundleDescription(state, manifest, "platform10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "platform");
-		BundleDescription platform_frag10 = state.getFactory().createBundleDescription(state, manifest, "platform.frag10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "platform; bundle-version=2.0");
-		BundleDescription platform_frag210 = state.getFactory().createBundleDescription(state, manifest, "platform.frag210", bundleID++);
-
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "rcp; version=1.0");
-		BundleDescription rcp10 = state.getFactory().createBundleDescription(state, manifest, "rcp10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "rcp");
-		BundleDescription rcp_frag10 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag10", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp.frag2; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "rcp; bundle-version=2.0");
-		BundleDescription rcp_frag210 = state.getFactory().createBundleDescription(state, manifest, "rcp.frag210", bundleID++);
-
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "gef; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "rcp; version=\"[1.0,1.0]\"");
-		BundleDescription gef10 = state.getFactory().createBundleDescription(state, manifest, "gef10", bundleID++);
-
-		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());
-		assertTrue("1.0.1", sdk_frag10.isResolved());
-		assertFalse("1.0.2", sdk_frag210.isResolved());
-		assertTrue("1.1", platform10.isResolved());
-		assertTrue("1.1.1", platform_frag10.isResolved());
-		assertFalse("1.1.2", platform_frag210.isResolved());
-		assertTrue("1.2", rcp10.isResolved());
-		assertTrue("1.2.1", rcp_frag10.isResolved());
-		assertFalse("1.2.2", rcp_frag210.isResolved());
-		assertTrue("1.3", gef10.isResolved());
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "sdk; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "sdk; version=2.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "platform; version=\"[1.0,2.0]\"");
-		BundleDescription sdk20 = state.getFactory().createBundleDescription(state, manifest, "sdk20", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "platform; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "platform; version=2.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "rcp; version=\"[1.0,2.0]\"");
-		BundleDescription platform20 = state.getFactory().createBundleDescription(state, manifest, "platform20", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "rcp; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.EXPORT_PACKAGE, "rcp; version=2.0");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0");
-		BundleDescription rcp20 = state.getFactory().createBundleDescription(state, manifest, "rcp20", bundleID++);
-
-		state.addBundle(sdk20);
-		state.addBundle(platform20);
-		state.addBundle(rcp20);
-		state.resolve(false);
-
-		assertTrue("2.0", sdk20.isResolved());
-		assertTrue("2.0.1", sdk_frag10.isResolved());
-		assertTrue("2.0.2", sdk_frag210.isResolved());
-		assertTrue("2.1", platform20.isResolved());
-		assertTrue("2.1.1", platform_frag10.isResolved());
-		assertTrue("2.1.2", platform_frag210.isResolved());
-		assertTrue("2.2", rcp10.isResolved());
-		assertTrue("2.2.1", rcp_frag10.isResolved());
-		assertTrue("2.3", gef10.isResolved());
-		assertFalse("2.4", sdk10.isResolved());
-		assertFalse("2.5", platform10.isResolved());
-		assertFalse("2.6", rcp20.isResolved());
-		assertFalse("2.2.2", rcp_frag210.isResolved());
-	}
-
-	public void testSingletonsSelection5() throws BundleException {
-		State state = buildEmptyState();
-
-		long id = 0;
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "base; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		BundleDescription base10 = state.getFactory().createBundleDescription(state, manifest, "base10", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "base; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.1");
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.6");
-		BundleDescription base11 = state.getFactory().createBundleDescription(state, manifest, "base11", id++);
-	
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "requires; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "base; bundle-version=\"[1.0,1.1)\"");
-		BundleDescription requires10 = state.getFactory().createBundleDescription(state, manifest, "requires10", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "requires; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.1");
-		manifest.put(Constants.REQUIRE_BUNDLE, "base; bundle-version=\"[1.1,1.2)\"");
-		BundleDescription requires11 = state.getFactory().createBundleDescription(state, manifest, "requires11", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.0,1.1)\"");
-		BundleDescription frag10 = state.getFactory().createBundleDescription(state, manifest, "frag10", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "frag; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.1");
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.1,1.2)\"");
-		BundleDescription frag11 = state.getFactory().createBundleDescription(state, manifest, "frag11", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "fragb; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.0,1.1)\"");
-		manifest.put(Constants.EXPORT_PACKAGE, "fragb; version=1.0");
-		BundleDescription fragb10 = state.getFactory().createBundleDescription(state, manifest, "frag10", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "fragb; " + Constants.SINGLETON_DIRECTIVE + ":=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.1");
-		manifest.put(Constants.FRAGMENT_HOST, "requires; bundle-version=\"[1.0,1.1)\"");
-		manifest.put(Constants.EXPORT_PACKAGE, "fragb; version=1.1");
-		BundleDescription fragb11 = state.getFactory().createBundleDescription(state, manifest, "frag11", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "import");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "fragb; version=\"[1.0,1.0]\"");
-		BundleDescription import10 = state.getFactory().createBundleDescription(state, manifest, "import10", id++);
-
-		manifest.clear();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "import");
-		manifest.put(Constants.BUNDLE_VERSION, "1.1");
-		manifest.put(Constants.IMPORT_PACKAGE, "fragb; version=\"[1.1,1.1]\"");
-		BundleDescription import11 = state.getFactory().createBundleDescription(state, manifest, "import11", id++);
-
-		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());
-		assertTrue("1.1", requires10.isResolved());
-		assertTrue("1.2", frag10.isResolved());
-		assertTrue("1.3", fragb11.isResolved());
-		assertTrue("1.4", import11.isResolved());
-		assertFalse("1.5", base11.isResolved());
-		assertFalse("1.6", requires11.isResolved());
-		assertFalse("1.7", frag11.isResolved());
-		assertFalse("1.8", fragb10.isResolved());
-		assertFalse("1.9", import10.isResolved());
-	}
-
-	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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", 3);
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.resolve();
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.resolve();
-		assertTrue("1.0", testHost100.isResolved());
-		assertTrue("1.1", testHost101.isResolved());
-		assertTrue("1.2", testFrag100.isResolved());
-		assertTrue("1.3", testFrag101.isResolved());
-	}
-
-	public void testTransitiveUses() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		BundleDescription a2_100 = state.getFactory().createBundleDescription(state, manifest, "a2_100", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A2");
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b");
-		manifest.put(Constants.IMPORT_PACKAGE, "b");
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 3);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "a, c");
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 4);
-
-		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);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A1");
-		b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2);
-		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);
-	}
-
-	public void testRequireBundleUses() throws BundleException {
-		State state = buildEmptyState();
-		int id = 0;
-		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");
-		BundleDescription a_100 = state.getFactory().createBundleDescription(state, manifest, "a_100", 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");
-		BundleDescription a_200 = state.getFactory().createBundleDescription(state, manifest, "a_200", 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; visibility:=reexport");
-		BundleDescription b_100 = state.getFactory().createBundleDescription(state, manifest, "b_100", 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:=b");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A, B");
-		BundleDescription c_100 = state.getFactory().createBundleDescription(state, manifest, "c_100", id++);
-
-		state.addBundle(a_100);
-		state.addBundle(b_100);
-		// first resolve just A and B
-		state.resolve();
-		assertTrue("0.1", a_100.isResolved());
-		assertTrue("0.2", b_100.isResolved());
-		// now add A v2 and resolve it
-		state.addBundle(a_200);
-		state.resolve();
-		assertTrue("1.1", a_200.isResolved());
-		// 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());
-
-		ExportPackageDescription[] c1ResolvedImports = state.getStateHelper().getVisiblePackages(c_100);
-		assertTrue("2.1", c1ResolvedImports.length == 2);
-		int index = c1ResolvedImports[0].getName().equals("a") ? 0 : c1ResolvedImports[1].getName().equals("a") ? 1 : -1;
-		assertTrue("2.2", index >= 0);
-		assertEquals("2.2", c1ResolvedImports[index].getExporter(), a_100);
-	}
-
-	public void testCyclicTransitiveUses() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d");
-		manifest.put(Constants.IMPORT_PACKAGE, "d");
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d");
-		manifest.put(Constants.IMPORT_PACKAGE, "d");
-		BundleDescription a2_100 = state.getFactory().createBundleDescription(state, manifest, "a2_100", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A2");
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b");
-		manifest.put(Constants.IMPORT_PACKAGE, "b");
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 3);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "d; uses:=c");
-		manifest.put(Constants.IMPORT_PACKAGE, "a, c");
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 4);
-
-		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());
-		assertTrue("0.2", a2_100.isResolved());
-		assertTrue("0.3", b1_100.isResolved());
-		assertTrue("0.4", c1_100.isResolved());
-		assertTrue("0.5", d1_100.isResolved());
-
-		ExportPackageDescription[] b1ResolvedImports = b1_100.getResolvedImports();
-		ExportPackageDescription[] d1ResolvedImports = d1_100.getResolvedImports();
-		ExportPackageDescription[] isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.1 Packages are not consistent: " + isConsistent, isConsistent);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A1");
-		b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2);
-		state.updateBundle(b1_100);
-		state.resolve();
-
-		assertTrue("2.1", a1_100.isResolved());
-		assertFalse("2.2", a2_100.isResolved());
-		assertTrue("2.3", b1_100.isResolved());
-		assertTrue("2.4", c1_100.isResolved());
-		assertTrue("2.5", d1_100.isResolved());
-		
-		b1ResolvedImports = b1_100.getResolvedImports();
-		d1ResolvedImports = d1_100.getResolvedImports();
-		isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("3.1 Packages are not consistent: " + isConsistent, isConsistent);
-	}
-
-	public void testFragmentTransitiveUses() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d");
-		manifest.put(Constants.IMPORT_PACKAGE, "d");
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "A1");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag; uses:=a");
-		BundleDescription a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A2");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d, a.frag; uses:=a");
-		manifest.put(Constants.IMPORT_PACKAGE, "d");
-		BundleDescription a2_100 = state.getFactory().createBundleDescription(state, manifest, "a2_100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A2, a.frag");
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 3);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c; uses:=b");
-		manifest.put(Constants.IMPORT_PACKAGE, "b");
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 4);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "d; uses:=c");
-		manifest.put(Constants.IMPORT_PACKAGE, "a.frag, c");
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 5);
-
-		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());
-		assertTrue("0.2", a2_100.isResolved());
-		assertTrue("0.3", b1_100.isResolved());
-		assertTrue("0.4", c1_100.isResolved());
-		assertTrue("0.5", d1_100.isResolved());
-
-		ExportPackageDescription[] b1ResolvedImports = b1_100.getResolvedImports();
-		ExportPackageDescription[] d1ResolvedImports = d1_100.getResolvedImports();
-		ExportPackageDescription[] isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("1.1 Packages are not consistent: " + isConsistent, isConsistent);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; uses:=a");
-		manifest.put(Constants.IMPORT_PACKAGE, "a;bundle-symbolic-name=A1");
-		b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 2);
-		state.updateBundle(b1_100);
-		state.resolve();
-
-		assertTrue("2.1", a1_100.isResolved());
-		assertFalse("2.2", a2_100.isResolved());
-		assertTrue("2.3", b1_100.isResolved());
-		assertTrue("2.4", c1_100.isResolved());
-		assertTrue("2.5", d1_100.isResolved());
-
-		b1ResolvedImports = b1_100.getResolvedImports();
-		d1ResolvedImports = d1_100.getResolvedImports();
-		isConsistent = isConsistent(b1ResolvedImports, d1ResolvedImports);
-		assertNull("3.1 Packages are not consistent: " + isConsistent, isConsistent);
-	}
-
-	public void testCyclicUsesExportDrop() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "W");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; b; version=1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "c, a, b");
-		BundleDescription w1_100 = state.getFactory().createBundleDescription(state, manifest, "w1_100", 0);
-
-		manifest = new Hashtable();
-		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, "c");
-		manifest.put(Constants.IMPORT_PACKAGE, "d");
-		BundleDescription x1_100 = state.getFactory().createBundleDescription(state, manifest, "x1_100", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Y");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "d");
-		manifest.put(Constants.IMPORT_PACKAGE, "a");
-		BundleDescription y1_100 = state.getFactory().createBundleDescription(state, manifest, "y1_100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Z");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; version = 2.0");
-		BundleDescription z1_100 = state.getFactory().createBundleDescription(state, manifest, "z1_100", 3);
-
-		state.addBundle(w1_100);
-		state.addBundle(x1_100);
-		state.addBundle(y1_100);
-		state.addBundle(z1_100);
-		state.resolve();
-
-		assertTrue("0.1", w1_100.isResolved());
-		assertTrue("0.2", x1_100.isResolved());
-		assertTrue("0.3", y1_100.isResolved());
-		assertTrue("0.4", z1_100.isResolved());
-
-		assertEquals("1.1", 1, w1_100.getSelectedExports().length);
-		assertEquals("1.2", "b", w1_100.getSelectedExports()[0].getName());
-	}
-
-	public void testRemovalPending() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable wManifest = new Hashtable();
-		wManifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		wManifest.put(Constants.BUNDLE_SYMBOLICNAME, "W");
-		wManifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		wManifest.put(Constants.EXPORT_PACKAGE, "a; b; version=1.0");
-		wManifest.put(Constants.IMPORT_PACKAGE, "a, b");
-		BundleDescription w1_100 = state.getFactory().createBundleDescription(state, wManifest, "w1_100", 0);
-
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "X");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "a");
-		BundleDescription x1_100 = state.getFactory().createBundleDescription(state, manifest, "x1_100", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "Y");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "a");
-		BundleDescription y1_100 = state.getFactory().createBundleDescription(state, manifest, "y1_100", 2);
-
-		state.addBundle(w1_100);
-		state.addBundle(x1_100);
-		state.addBundle(y1_100);
-		
-		state.resolve();
-
-		assertTrue("0.1", w1_100.isResolved());
-		assertTrue("0.2", x1_100.isResolved());
-		assertTrue("0.3", y1_100.isResolved());
-
-		BundleDescription w1_100_prime = state.getFactory().createBundleDescription(state, wManifest, "w1_100", 0);
-		state.updateBundle(w1_100_prime);
-		state.resolve(new BundleDescription[0]);
-
-		assertTrue("1.1", w1_100_prime.isResolved());
-		assertTrue("1.2", x1_100.isResolved());
-		assertTrue("1.3", y1_100.isResolved());
-
-		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);
-
-		state.resolve(new BundleDescription[] {w1_100});
-		assertTrue("3.1", w1_100_prime.isResolved());
-		assertTrue("3.2", x1_100.isResolved());
-		assertTrue("3.3", y1_100.isResolved());
-
-		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);
-	}
-
-	public void testFragmentConstraints() throws BundleException {
-		int id = 0;
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "a.frag");
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", id++);
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a; uses:=d");
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=2.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[2.0, 3.0)\"");
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", id++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "A1");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag");
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=1.0");
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[2.0, 3.0)\"");
-		BundleDescription a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", id++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b; version=2.1");
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", id++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1");
-		manifest.put(Constants.BUNDLE_VERSION, "2.0.1");
-		manifest.put(Constants.EXPORT_PACKAGE, "c");
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", id++);
-
-		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());
-		assertTrue("0.2", a1frag_100.isResolved());
-		assertTrue("0.3", b1_100.isResolved());
-		assertTrue("0.4", c1_100.isResolved());
-		assertTrue("0.5", d1_100.isResolved());
-
-		// now use a fragment that has conflicting imports/requires with the host
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "A1");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag");
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=2.1");
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[2.5, 4.0)\"");
-		a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", a1frag_100.getBundleId());
-		state.updateBundle(a1frag_100);
-		state.resolve(new BundleDescription[] {a1frag_100});
-
-		assertTrue("1.1", a1_100.isResolved());
-		assertFalse("1.2", a1frag_100.isResolved());
-		assertTrue("1.3", b1_100.isResolved());
-		assertTrue("1.4", c1_100.isResolved());
-		assertFalse("1.5", d1_100.isResolved());
-		
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "A1");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag");
-		manifest.put(Constants.IMPORT_PACKAGE, "b; version=\"[1.0,2.0)\"");
-		a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", a1frag_100.getBundleId());
-		state.updateBundle(a1frag_100);
-		state.resolve(new BundleDescription[] {a1frag_100});
-
-		assertTrue("2.1", a1_100.isResolved());
-		assertFalse("2.2", a1frag_100.isResolved());
-		assertTrue("2.3", b1_100.isResolved());
-		assertTrue("2.4", c1_100.isResolved());
-		assertFalse("2.5", d1_100.isResolved());
-
-		// now use a fragment that has conflicting imports/requires with the host
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1.Frag");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.FRAGMENT_HOST, "A1");
-		manifest.put(Constants.EXPORT_PACKAGE, "a.frag");
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; bundle-version=\"[1.0, 1.5)\"");
-		a1frag_100 = state.getFactory().createBundleDescription(state, manifest, "a1frag_100", a1frag_100.getBundleId());
-		state.updateBundle(a1frag_100);
-		state.resolve(new BundleDescription[] {a1frag_100});
-
-		assertTrue("3.1", a1_100.isResolved());
-		assertFalse("3.2", a1frag_100.isResolved());
-		assertTrue("3.3", b1_100.isResolved());
-		assertTrue("3.4", c1_100.isResolved());
-		assertFalse("3.5", d1_100.isResolved());
-	}
-
-	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");
-		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, "A", 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, "A", 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, "B", 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, "C", bundleID++);
-
-		state.addBundle(a);
-		state.addBundle(aFrag);
-		state.addBundle(b);
-		state.addBundle(c);
-		state.resolve();
-		assertTrue("0.1", a.isResolved());
-		assertTrue("0.2", aFrag.isResolved());
-		assertTrue("0.3", b.isResolved());
-		assertTrue("0.4", c.isResolved());
-
-		state.removeBundle(c);
-		state.resolve(false);
-		assertFalse("1.1", a.isResolved());
-		assertFalse("1.2", aFrag.isResolved());
-		assertFalse("1.3", b.isResolved());
-
-		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());
-
-		ExportPackageDescription[] aExports = a.getSelectedExports();
-		ExportPackageDescription[] 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]);
-	}
-
-	public void testReexportPackage() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "a");
-		manifest.put(Constants.REQUIRE_BUNDLE, "C1; visibility:=reexport");
-		BundleDescription a1_100 = state.getFactory().createBundleDescription(state, manifest, "a1_100", 0);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "b");
-		manifest.put(Constants.IMPORT_PACKAGE, "a; bundle-symbolic-name=C1, c; d; bundle-symbolic-name=A1");
-		BundleDescription b1_100 = state.getFactory().createBundleDescription(state, manifest, "b1_100", 1);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "C1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "c");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A1; visibility:=reexport, D1; visibility:=reexport");
-		BundleDescription c1_100 = state.getFactory().createBundleDescription(state, manifest, "c1_100", 2);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "D1");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "d");
-		manifest.put(Constants.REQUIRE_BUNDLE, "A1; visibility:=reexport");
-		BundleDescription d1_100 = state.getFactory().createBundleDescription(state, manifest, "d1_100", 3);
-
-
-		state.addBundle(a1_100);
-		state.addBundle(b1_100);
-		state.addBundle(c1_100);
-		state.addBundle(d1_100);
-		state.resolve();
-
-		assertTrue("0.1", a1_100.isResolved());
-		assertTrue("0.2", b1_100.isResolved());
-		assertTrue("0.3", c1_100.isResolved());
-		assertTrue("0.4", d1_100.isResolved());
-
-		// this assumes getResolvedImports will return the imports in the same order they are specified in the Import-Package header
-		ExportPackageDescription[] b1ResolvedImports = b1_100.getResolvedImports();
-		assertEquals("1.1", 3, b1ResolvedImports.length);
-		assertEquals("1.2", b1ResolvedImports[0].getExporter(), c1_100);
-		assertEquals("1.3", b1ResolvedImports[1].getExporter(), a1_100);
-		assertEquals("1.4", b1ResolvedImports[2].getExporter(), a1_100);
-	}
-
-	public void testPlatformProperties() 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, "org.eclipse.osgi");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		BundleDescription systemBundle = state.getFactory().createBundleDescription(state, manifest, "org.eclipse.osgi", bundleID++);
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.b, pkg.system.b");
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.4");
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++);
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.b");
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b");
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++);
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "system.b");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.system.b");
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2");
-		BundleDescription systemB = state.getFactory().createBundleDescription(state, manifest, "system.b", bundleID++);
-
-		Dictionary[] props = new Dictionary[] {new Hashtable(), new Hashtable()};
-		props[0].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.c");
-		props[0].put("org.osgi.framework.executionenvironment", "J2SE-1.2");
-		props[1].put("org.osgi.framework.system.packages", "pkg.system.a, pkg.system.b, pkg.system.c");
-		props[1].put("org.osgi.framework.executionenvironment", "J2SE-1.4");
-
-		state.setPlatformProperties(props);
-		state.addBundle(systemBundle);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.addBundle(systemB);
-		state.resolve();
-
-		assertTrue("1.0", systemBundle.isResolved());
-		assertTrue("1.1", a.isResolved());
-		assertTrue("1.2", b.isResolved());
-		assertTrue("1.3", systemB.isResolved());
-
-		assertTrue("2.0", a.getResolvedImports()[1].getExporter() == systemBundle);
-		assertTrue("2.1", b.getResolvedImports()[0].getExporter() == systemB);
-
-		// 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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put(Constants.EXPORT_PACKAGE, "pkg.b; uses:=\"pkg.system.b\"");
-		manifest.put(Constants.IMPORT_PACKAGE, "pkg.system.b");
-		manifest.put(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, "J2SE-1.2");
-		BundleDescription b_updated = state.getFactory().createBundleDescription(state, manifest, "B", b.getBundleId());
-		state.updateBundle(b_updated);
-		state.resolve(new BundleDescription[] {b_updated});
-
-		assertTrue("3.0", systemBundle.isResolved());
-		assertTrue("3.1", a.isResolved());
-		assertTrue("3.2", b_updated.isResolved());
-		assertTrue("3.3", systemB.isResolved());
-
-		assertTrue("2.0", a.getResolvedImports()[1].getExporter() == systemB);
-		assertTrue("2.1", b_updated.getResolvedImports()[0].getExporter() == systemB);
-	}
-
-
-	public void testPlatformPropertiesBug188075() throws BundleException, IOException {
-		State state = buildEmptyState();
-		int bundleID = 0;
-
-		Hashtable manifest = new Hashtable();
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "A");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put("Eclipse-PlatformFilter", "(!(test=value))");
-		BundleDescription a = state.getFactory().createBundleDescription(state, manifest, "A", bundleID++);
-
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "B");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0");
-		manifest.put("Eclipse-PlatformFilter", "(test=value)");
-		BundleDescription b = state.getFactory().createBundleDescription(state, manifest, "B", bundleID++);
-
-		Dictionary props = new Hashtable();
-		props.put("test", "value");
-
-		state.setPlatformProperties(props);
-		state.addBundle(a);
-		state.addBundle(b);
-		state.resolve();
-
-		assertFalse("1.1", a.isResolved());
-		assertTrue("1.2", b.isResolved());
-
-		BundleContext context = OSGiTestsActivator.getContext();
-		File stateCache = context.getDataFile("statecache");
-		stateCache.mkdirs();
-		StateObjectFactory.defaultFactory.writeState(state, stateCache);
-		state = StateObjectFactory.defaultFactory.readState(stateCache);
-		props = state.getPlatformProperties()[0];
-		assertEquals("2.0", "value",  props.get("test"));
-		BundleDescription aCache = state.getBundle("A", null);
-		BundleDescription bCache = state.getBundle("B", null);
-		assertFalse("2.1", aCache.isResolved());
-		assertTrue("2.2", bCache.isResolved());
-	}
-
-
-	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;
-	}
-
-	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");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1");
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1");
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.dependent; singleton:=true");
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testDependent = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++);
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.addBundle(testDependent);
-		state.resolve();
-		assertTrue("1.0", testHost100.isResolved());
-		assertFalse("1.1", testHost101.isResolved());
-		assertTrue("1.2", testFrag100.isResolved());
-		assertFalse("1.3", testFrag101.isResolved());
-		assertTrue("1.4", testDependent.isResolved());
-	}
-
-	public void testBug187616() throws BundleException {
-		State state = buildEmptyState();
-		Hashtable manifest = new Hashtable();
-		long bundleID = 0;
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testHost100 = state.getFactory().createBundleDescription(state, manifest, "test.host100", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.host; singleton:=true");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1");
-		BundleDescription testHost101 = state.getFactory().createBundleDescription(state, manifest, "test.host101", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testFrag100 = state.getFactory().createBundleDescription(state, manifest, "test.frag100", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.frag; singleton:=true");
-		manifest.put(Constants.FRAGMENT_HOST, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.1");
-		BundleDescription testFrag101 = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++);
-
-		manifest = new Hashtable();
-		manifest.put(Constants.BUNDLE_MANIFESTVERSION, "2");
-		manifest.put(Constants.BUNDLE_SYMBOLICNAME, "test.dependent; singleton:=true");
-		manifest.put(Constants.REQUIRE_BUNDLE, "test.host; bundle-version=\"[1.0.0,2.0.0)\"");
-		manifest.put(Constants.BUNDLE_VERSION, "1.0.0");
-		BundleDescription testDependent = state.getFactory().createBundleDescription(state, manifest, "test.frag101", bundleID++);
-
-		state.addBundle(testHost100);
-		state.addBundle(testFrag100);
-		state.addBundle(testHost101);
-		state.addBundle(testFrag101);
-		state.addBundle(testDependent);
-		StateDelta stateDelta = state.resolve();
-		assertFalse("1.0", testHost100.isResolved());
-		assertTrue("1.1", testHost101.isResolved());
-		assertFalse("1.2", testFrag100.isResolved());
-		assertTrue("1.3", testFrag101.isResolved());
-		assertTrue("1.4", testDependent.isResolved());
-		BundleDelta[] bDelta = stateDelta.getChanges(BundleDelta.ADDED | BundleDelta.RESOLVED, false);
-		assertTrue("2.0", bDelta.length == 5);
-	}
-}
-//testFragmentUpdateNoVersionChanged()
-//testFragmentUpdateVersionChanged()
-//testHostUpdateNoVersionChanged()
-//testHostUpdateVersionChanged()
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 6c7eeec..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/services/resolver/VersionRangeTests.java
+++ /dev/null
@@ -1,65 +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.*;
-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.-)");
-		assertEquals("0.1", Version.parseVersion("1.0"), range.getMinimum());
-		assertTrue("0.9", !range.isIncluded(Version.parseVersion("0.9")));
-		assertTrue("1.0", range.isIncluded(Version.parseVersion("1")));
-		assertTrue("1.1", range.isIncluded(Version.parseVersion("1.0")));
-		assertTrue("1.2", range.isIncluded(Version.parseVersion("1.0.0")));
-		assertTrue("2.1", !range.isIncluded(Version.parseVersion("1.0.0.0")));
-		assertTrue("2.2", !range.isIncluded(Version.parseVersion("1.0.1")));
-		assertTrue("2.3", !range.isIncluded(Version.parseVersion("1.1")));
-		assertTrue("2.4", !range.isIncluded(Version.parseVersion("2")));
-	}
-
-	public void testInvertedRange() {
-		VersionRange range;
-		range = new VersionRange("[2.0.0, 1.0.0]");
-		assertTrue("1.0", !range.isIncluded(Version.parseVersion("1")));
-		assertTrue("1.1", !range.isIncluded(Version.parseVersion("1.5")));
-		assertTrue("1.2", !range.isIncluded(Version.parseVersion("2.0")));
-		assertTrue("1.3", !range.isIncluded(Version.parseVersion("2.5")));
-		assertTrue("1.4", !range.isIncluded(Version.parseVersion("0.5")));
-	}
-
-	public void testGreaterThan() {
-		// any version equal or greater than 1.0 is ok 
-		VersionRange lowerBound = new VersionRange("1.0.0");
-		assertTrue("1.0", !lowerBound.isIncluded(Version.parseVersion("0.9")));
-		assertTrue("1.1", lowerBound.isIncluded(Version.parseVersion("1.0")));
-		assertTrue("1.2", lowerBound.isIncluded(Version.parseVersion("1.9.9.x")));
-		assertTrue("1.3", lowerBound.isIncluded(Version.parseVersion("999.999.999.foo")));
-	}
-
-	public void testLowerThan() {
-		// any version lower than 2.0 is ok 		
-		VersionRange upperBound = new VersionRange("[0,2.0)");
-		assertTrue("1.0", upperBound.isIncluded(Version.parseVersion("0.0")));
-		assertTrue("1.1", upperBound.isIncluded(Version.parseVersion("0.9")));
-		assertTrue("1.2", upperBound.isIncluded(Version.parseVersion("1.0")));
-		assertTrue("1.3", upperBound.isIncluded(Version.parseVersion("1.9.9.x")));
-		assertTrue("1.4", !upperBound.isIncluded(Version.parseVersion("2.0")));
-		assertTrue("1.5", !upperBound.isIncluded(Version.parseVersion("2.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 1d3a76a..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/AllTests.java
+++ /dev/null
@@ -1,37 +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(ManifestElementTestCase.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 497fa11..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/BidiTextProcessorTestCase.java
+++ /dev/null
@@ -1,304 +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 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")) { //$NON-NLS-1$	//$NON-NLS-2$
-																			
-			// 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 28b2bf5..0000000
--- a/bundles/org.eclipse.osgi.tests/src/org/eclipse/osgi/tests/util/ManifestElementTestCase.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.util;
-
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.BundleException;
-
-import junit.framework.TestCase;
-
-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");
-	}
-
-}
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/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.util/.classpath b/bundles/org.eclipse.osgi.util/.classpath
deleted file mode 100644
index f657b79..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.0" 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 c001f49..0000000
--- a/bundles/org.eclipse.osgi.util/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,16 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %osgiUtil
-Bundle-SymbolicName: org.eclipse.osgi.util
-Bundle-Version: 3.1.200.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",
- org.osgi.util.position; version="1.0",
- org.osgi.util.xml; version="1.0"
-Import-Package: org.osgi.framework; version=1.1
-Bundle-RequiredExecutionEnvironment: OSGi/Minimum-1.0
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 ec7b84e..0000000
--- a/bundles/org.eclipse.osgi.util/customBuildCallbacks.xml
+++ /dev/null
@@ -1,160 +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">
-	</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 d638c79..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 05ea03b..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 378235c..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 0fa82fd..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 aa9ff30..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 bf0faa3..0000000
--- a/bundles/org.eclipse.osgi.util/plugin.properties
+++ /dev/null
@@ -1,14 +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
-###############################################################################
-osgiUtil = OSGi Release 4.0.1 Utility Classes
-eclipse.org = Eclipse.org
-osgiUtilDes = OSGi Service Platform Release 4.0.1 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 55c8bf8..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 4ff5649..0000000
--- a/bundles/org.eclipse.osgi/.classpath
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="console/src"/>
-	<classpathentry kind="src" path="supplement/src"/>
-	<classpathentry kind="src" path="osgi/src"/>
-	<classpathentry kind="src" path="core/adaptor"/>
-	<classpathentry kind="src" path="core/framework"/>
-	<classpathentry kind="src" path="defaultAdaptor/src"/>
-	<classpathentry kind="src" path="eclipseAdaptor/src"/>
-	<classpathentry kind="src" path="resolver/src"/>
-	<classpathentry kind="src" path="jarverifier"/>
-	<classpathentry kind="lib" path="osgi/exceptions.jar"/>
-	<classpathentry kind="lib" path="osgi/ee.minimum.jar"/>
-	<classpathentry kind="lib" path="osgi/xmlParserAPIs.jar"/>
-	<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 547c647..0000000
--- a/bundles/org.eclipse.osgi/.options
+++ /dev/null
@@ -1,95 +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
-
-# Eclipse adaptor options
-org.eclipse.osgi/eclipseadaptor/debug = false
-org.eclipse.osgi/eclipseadaptor/debug/location = 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 package grouping information form the "uses" clause
-org.eclipse.osgi/resolver/grouping = 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 337f99e..0000000
--- a/bundles/org.eclipse.osgi/.project
+++ /dev/null
@@ -1,28 +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>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.pde.PluginNature</nature>
-	</natures>
-</projectDescription>
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 1a4cdbd..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,7 +0,0 @@
-#Fri Oct 20 13:22:13 EDT 2006
-eclipse.preferences.version=1
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/default.permissions=UTF-8
-encoding//core/framework/org/eclipse/osgi/framework/internal/core/implied.permissions=UTF-8
-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/<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 832804e..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,328 +0,0 @@
-#Mon Feb 26 10:35:55 EST 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=warning
-org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=private
-org.eclipse.jdt.core.compiler.problem.localVariableHiding=warning
-org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
-org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public
-org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
-org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning
-org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning
-org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
-org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=warning
-org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
-org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning
-org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
-org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
-org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
-org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=warning
-org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
-org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=warning
-org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryElse=warning
-org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
-org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
-org.eclipse.jdt.core.compiler.problem.unsafeTypeOperation=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
-org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=enabled
-org.eclipse.jdt.core.compiler.problem.unusedImport=error
-org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
-org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=enabled
-org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=enabled
-org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
-org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
-org.eclipse.jdt.core.compiler.source=1.3
-org.eclipse.jdt.core.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.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.incompatibleJDKLevel=ignore
-org.eclipse.jdt.core.incompleteClasspath=error
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 4a8d072..0000000
--- a/bundles/org.eclipse.osgi/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Mon Feb 26 10:44:52 EST 2007
-eclipse.preferences.version=1
-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
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 1157a29..0000000
--- a/bundles/org.eclipse.osgi/CDC-1.0_Foundation-1.0.profile
+++ /dev/null
@@ -1,19 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-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
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 374300a..0000000
--- a/bundles/org.eclipse.osgi/CDC-1.1_Foundation-1.1.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,\
- 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,\
- CDC-1.0/Foundation-1.0,\
- CDC-1.1/Foundation-1.1
-osgi.java.profile.name = CDC-1.1/Foundation-1.1
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 28f973a..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.2.profile
+++ /dev/null
@@ -1,42 +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.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
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 b7dbdfa..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.3.profile
+++ /dev/null
@@ -1,63 +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
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 b307c97..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.4.profile
+++ /dev/null
@@ -1,118 +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.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.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,\
- JRE-1.1,\
- J2SE-1.2,\
- J2SE-1.3,\
- J2SE-1.4
-osgi.java.profile.name = J2SE-1.4
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 179b914..0000000
--- a/bundles/org.eclipse.osgi/J2SE-1.5.profile
+++ /dev/null
@@ -1,144 +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.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.events,\
- org.w3c.dom.ls,\
- 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,\
- JRE-1.1,\
- J2SE-1.2,\
- J2SE-1.3,\
- J2SE-1.4,\
- J2SE-1.5
-osgi.java.profile.name = J2SE-1.5
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 9a8d8fd..0000000
--- a/bundles/org.eclipse.osgi/JRE-1.1.profile
+++ /dev/null
@@ -1,17 +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 = \
- JRE-1.1
-osgi.java.profile.name = JRE-1.1
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 8892a29..0000000
--- a/bundles/org.eclipse.osgi/JavaSE-1.6.profile
+++ /dev/null
@@ -1,179 +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.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.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.events,\
- org.w3c.dom.ls,\
- 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,\
- 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
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 e0c341d..0000000
--- a/bundles/org.eclipse.osgi/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,64 +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.0",
- org.eclipse.osgi.framework.eventmgr;version="1.0",
- org.eclipse.osgi.framework.log;version="1.0",
- org.eclipse.osgi.service.datalocation;version="1.0",
- org.eclipse.osgi.service.debug;version="1.0",
- org.eclipse.osgi.service.environment;version="1.0",
- org.eclipse.osgi.service.localization;version="1.0",
- org.eclipse.osgi.service.pluginconversion;version="1.0",
- org.eclipse.osgi.service.resolver;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.osgi.framework;version="1.4",
- org.osgi.service.condpermadmin;version="1.0",
- 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.3.3",
- 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.launcher;x-internal:=true,
- org.eclipse.osgi.framework.util;x-internal:=true,
- org.eclipse.osgi.internal.baseadaptor;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.verifier;x-internal:=true,
- org.eclipse.osgi.internal.provisional.verifier;x-friends:="org.eclipse.update.core,org.eclipse.ui.workbench"
-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.3.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.4,
- OSGi/Minimum-1.1
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 d8c2d3f..0000000
--- a/bundles/org.eclipse.osgi/OSGi_Minimum-1.0.profile
+++ /dev/null
@@ -1,17 +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
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 2d8b661..0000000
--- a/bundles/org.eclipse.osgi/OSGi_Minimum-1.1.profile
+++ /dev/null
@@ -1,18 +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
diff --git a/bundles/org.eclipse.osgi/about.html b/bundles/org.eclipse.osgi/about.html
deleted file mode 100644
index f1349e1..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&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>
-	<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 ad876e0..0000000
--- a/bundles/org.eclipse.osgi/build.properties
+++ /dev/null
@@ -1,32 +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
-###############################################################################
-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/,\
-           resolver/src/,\
-           defaultAdaptor/src/,\
-           eclipseAdaptor/src/,\
-           console/src/,\
-           supplement/src/,\
-           jarverifier/
-output.. = bin/
-jre.compilation.profile = J2SE-1.4
diff --git a/bundles/org.eclipse.osgi/component.xml b/bundles/org.eclipse.osgi/component.xml
deleted file mode 100644
index 25f9529..0000000
--- a/bundles/org.eclipse.osgi/component.xml
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<component xmlns="http://eclipse.org/component"
-   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-   xsi:schemaLocation="http://eclipse.org/component ../component.xsd "
-   name="Eclipse OSGi Framework">
-   <component-depends unrestricted="true"/>
-
- <plugin id="org.eclipse.osgi" />
- <plugin id="org.eclipse.osgi.services" />
- <plugin id="org.eclipse.osgi.util" />
-
- <package name="org.eclipse.osgi.util">
-   <type name="ManifestElement" subclass="false" />
- </package>
- <package name="org.eclipse.osgi.service.datalocation">
-   <type name="Location" implement="false" />
- </package>
-
- <package name="org.osgi.framework">
-   <type name="Bundle" implement="false"/>
-   <type name="BundleContext" implement="false"/>
-   <type name="BundleEvent" subclass="false"/>
-   <type name="Filter" implement="false"/>
-   <type name="FrameworkEvent" subclass="false"/>
-   <type name="ServiceEvent" subclass="false"/>
-   <type name="ServiceReference" implement="false"/>
-   <type name="ServiceRegistration" implement="false"/>
-   <type name="Version" subclass="false"/>
- </package>
- <package name="org.osgi.service.condpermadmin">
-   <type name="BundleLocationCondition" instantiate="false"/>
-   <type name="BundleSignerCondition" instantiate="false"/>
-   <type name="ConditionalPermissionAdmin" implement="false"/>
-   <type name="ConditionalPermissionInfo" implement="false"/>
-   <type name="ConditionInfo" subclass="false"/>
- </package>
- <package name="org.osgi.service.packageadmin">
-   <type name="ExportedPackage" implement="false"/>
-   <type name="PackageAdmin" implement="false"/>
-   <type name="RequiredBundle" implement="false"/>
- </package>
- <package name="org.osgi.service.permissionadmin">
-   <type name="PermissionAdmin" implement="false"/>
-   <type name="PermissionInfo" subclass="false"/>
- </package>
- <package name="org.osgi.service.startlevel">
-   <type name="StartLevel" implement="false"/>
- </package>
- <package name="org.osgi.service.url">
-   <type name="URLStreamHandlerSetter" implement="false"/>
- </package>
- <package name="org.osgi.util.tracker"/>
- 
- <package name="org.osgi.service.cm"/>
- <package name="org.osgi.service.device"/>
- <package name="org.osgi.service.http"/>
- <package name="org.osgi.service.io"/>
- <package name="org.osgi.service.log"/>
- <package name="org.osgi.service.metatype"/>
- <package name="org.osgi.service.provisioning"/>
- <package name="org.osgi.service.upnp"/>
- <package name="org.osgi.service.useradmin"/>
- <package name="org.osgi.service.wireadmin"/>
-
- <package name="org.osgi.util.measurement"/>
- <package name="org.osgi.util.position"/>
- <package name="org.osgi.util.xml"/>
-
-</component>
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 a5738a5..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMessages.properties
+++ /dev/null
@@ -1,151 +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
-###############################################################################
-
-#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_VALID_COMMANDS_HEADER=Valid commands:
-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_LOG_COMMAND_DESCRIPTION=display log entries
-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_STALE_MESSAGE=stale
-CONSOLE_DEBUG_MESSAGE=Debug
-CONSOLE_INFO_MESSAGE=Info
-CONSOLE_WARNING_MESSAGE=Warn
-CONSOLE_ERROR_MESSAGE=Error
-CONSOLE_LOGSERVICE_NOT_REGISTERED_MESSAGE=The LogReaderService is not registered.
-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} ... 
-CONSOLE_TELNET_CONNECTION_REFUSED=Connection refused.
-CONSOLE_TELNET_CURRENTLY_USED=Telnet is currently being used.
-CONSOLE_TELNET_ONE_CLIENT_ONLY=Only one client can access at a time.
-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 2c69070..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/ConsoleMsg.java
+++ /dev/null
@@ -1,167 +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.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_HELP_VALID_COMMANDS_HEADER;
-	public static String CONSOLE_LISTENING_ON_PORT;
-	public static String CONSOLE_PROMPT;
-
-	public static String CONSOLE_TELNET_CONNECTION_REFUSED;
-	public static String CONSOLE_TELNET_CURRENTLY_USED;
-	public static String CONSOLE_TELNET_ONE_CLIENT_ONLY;
-
-	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_LOG_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_DEBUG_MESSAGE;
-	public static String CONSOLE_INFO_MESSAGE;
-	public static String CONSOLE_WARNING_MESSAGE;
-	public static String CONSOLE_ERROR_MESSAGE;
-	public static String CONSOLE_LOGSERVICE_NOT_REGISTERED_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 1307427..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandInterpreter.java
+++ /dev/null
@@ -1,518 +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.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;
-		
-		String arg = tok.nextToken();
-		if (arg.startsWith("\"")) { //$NON-NLS-1$
-			if (arg.endsWith("\"")) { //$NON-NLS-1$
-				if (arg.length() >= 2)
-					// strip the beginning and ending quotes
-					return arg.substring(1, arg.length() - 1);
-			}
-			String remainingArg = tok.nextToken("\""); //$NON-NLS-1$
-			arg = arg.substring(1) + remainingArg;
-			// skip to next whitespace separated token
-			tok.nextToken(WS_DELIM);
-		} else if (arg.startsWith("'")) { //$NON-NLS-1$ //$NON-NLS-2$
-			if (arg.endsWith("'")) { //$NON-NLS-1$
-				if (arg.length() >= 2)
-					// strip the beginning and ending quotes
-					return arg.substring(1, arg.length() - 1);
-			}
-			String remainingArg = tok.nextToken("'"); //$NON-NLS-1$
-			arg = arg.substring(1) + remainingArg;
-			// skip to next whitespace separated token
-			tok.nextToken(WS_DELIM);
-		}
-		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") && con.getUseSocketStream()) { //$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.sort(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(newline);
-		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);
-		if (con.getUseSocketStream()) {
-			help.append(newline);
-			help.append(tab);
-			help.append("disconnect - "); //$NON-NLS-1$
-			help.append(ConsoleMsg.CONSOLE_HELP_DISCONNECT);
-		}
-		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.disconnect();
-		}
-	}
-
-	/**
-	 * 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 371d04b..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkCommandProvider.java
+++ /dev/null
@@ -1,1889 +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.core;
-
-import java.io.*;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-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.framework.launcher.Launcher;
-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.ConditionalPermissionAdmin;
-import org.osgi.service.condpermadmin.ConditionalPermissionInfo;
-import org.osgi.service.packageadmin.PackageAdmin;
-import org.osgi.service.packageadmin.RequiredBundle;
-import org.osgi.service.permissionadmin.PermissionAdmin;
-
-/**
- * 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
- ---Log Commands---
- log {(<id>|<location>)} - display log entries
- ---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 OSGi osgi;
-	/** The system bundle context */
-	private org.osgi.framework.BundleContext context;
-	/** The start level implementation */
-	private StartLevelManager slImpl;
-	private ConditionalPermissionAdmin condPermAdmin;
-	private PermissionAdmin permAdmin;
-
-	/** Strings used to format other strings */
-	private String tab = "\t"; //$NON-NLS-1$
-	private 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 osgi The current instance of OSGi
-	 */
-	public FrameworkCommandProvider(OSGi osgi) {
-		this.osgi = osgi;
-		context = osgi.getBundleContext();
-		slImpl = osgi.framework.startLevelManager;
-		condPermAdmin = osgi.framework.condPermAdmin;
-		permAdmin = osgi.framework.permissionAdmin;
-	}
-	
-	/**
-	 *  Intialize this CommandProvider.
-	 *
-	 *  Registers this object as a CommandProvider with the highest ranking possible.
-	 *  Adds this object as a SynchronousBundleListener.
-	 *
-	 *	@return this
-	 */
-	public FrameworkCommandProvider intialize() {
-		Dictionary props = new Hashtable();
-		props.put(Constants.SERVICE_RANKING, new Integer(Integer.MAX_VALUE));
-		context.registerService(CommandProvider.class.getName(), this, props);
-		
-		context.addBundleListener(this);
-		return this;
-	}
-
-	/**
-	 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);
-		help.append(newline);
-		help.append(ConsoleMsg.CONSOLE_HELP_VALID_COMMANDS_HEADER);
-		help.append(newline);
-		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$ 
-		addCommand("log", ConsoleMsg.CONSOLE_HELP_IDLOCATION_ARGUMENT_DESCRIPTION, ConsoleMsg.CONSOLE_HELP_LOG_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 {
-		osgi.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 {
-		osgi.shutdown();
-	}
-
-	/**
-	 *  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 (Launcher.matchCommand("start", start, 1)) { //$NON-NLS-1$
-					bundle.start();
-				}
-			}
-		}
-
-	}
-
-	/**
-	 *  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")) {
-			String searchedState = intp.nextArgument();
-			StringTokenizer tokens = new StringTokenizer(searchedState, ",");
-			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);
-					return null;
-				} catch (IllegalAccessException e) {
-					intp.println(ConsoleMsg.CONSOLE_INVALID_INPUT + ": " + desiredState);
-					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 (osgi.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());
-					AbstractBundle[] users = (AbstractBundle[]) 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 = osgi.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 = osgi.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) {
-								ExportPackageDescription[] imports = desc.getContainingState().getStateHelper().getVisiblePackages(desc, StateHelper.VISIBLE_INCLUDE_EE_PACKAGES);
-								title = printImportedPackages(imports, intp, title);
-							}
-
-							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) & PackageAdminImpl.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;
-	}
-
-	/**
-	 *  Handle the log command's abbreviation.  Invoke _log()
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _l(CommandInterpreter intp) throws Exception {
-		_log(intp);
-	}
-
-	/**
-	 *  Handle the log command.  Display log entries.
-	 *
-	 *  @param intp A CommandInterpreter object containing the command and it's arguments.
-	 */
-	public void _log(CommandInterpreter intp) throws Exception {
-		long logid = -1;
-		String token = intp.nextArgument();
-		if (token != null) {
-			AbstractBundle bundle = getBundleFromToken(intp, token, false);
-
-			if (bundle == null) {
-				try {
-					logid = Long.parseLong(token);
-				} catch (NumberFormatException e) {
-					return;
-				}
-			} else {
-				logid = bundle.getBundleId();
-			}
-		}
-
-		org.osgi.framework.ServiceReference logreaderRef = context.getServiceReference("org.osgi.service.log.LogReaderService"); //$NON-NLS-1$
-		if (logreaderRef != null) {
-			Object logreader = context.getService(logreaderRef);
-			if (logreader != null) {
-				try {
-					Enumeration logs = (Enumeration) (logreader.getClass().getMethod("getLog", null).invoke(logreader, null)); //$NON-NLS-1$
-					ArrayList entriesList = new ArrayList();
-					while (logs.hasMoreElements())
-						entriesList.add(0, logs.nextElement());
-					Object[] entries = entriesList.toArray();
-					if (entries.length == 0)
-						return;
-					Class clazz = entries[0].getClass();
-					Method getBundle = clazz.getMethod("getBundle", null); //$NON-NLS-1$
-					Method getLevel = clazz.getMethod("getLevel", null); //$NON-NLS-1$
-					Method getMessage = clazz.getMethod("getMessage", null); //$NON-NLS-1$
-					Method getServiceReference = clazz.getMethod("getServiceReference", null); //$NON-NLS-1$
-					Method getException = clazz.getMethod("getException", null); //$NON-NLS-1$
-
-					for (int i = 0; i < entries.length; i++) {
-						Object logentry = entries[i];
-						AbstractBundle bundle = (AbstractBundle) getBundle.invoke(logentry, null);
-
-						if ((logid == -1) || ((bundle != null) && (logid == bundle.getBundleId()))) {
-							Integer level = (Integer) getLevel.invoke(logentry, null);
-							switch (level.intValue()) {
-								case 4 :
-									intp.print(">"); //$NON-NLS-1$
-									intp.print(ConsoleMsg.CONSOLE_DEBUG_MESSAGE);
-									intp.print(" "); //$NON-NLS-1$
-									break;
-								case 3 :
-									intp.print(">"); //$NON-NLS-1$
-									intp.print(ConsoleMsg.CONSOLE_INFO_MESSAGE);
-									intp.print(" "); //$NON-NLS-1$
-									break;
-								case 2 :
-									intp.print(">"); //$NON-NLS-1$
-									intp.print(ConsoleMsg.CONSOLE_WARNING_MESSAGE);
-									intp.print(" "); //$NON-NLS-1$
-									break;
-								case 1 :
-									intp.print(">"); //$NON-NLS-1$
-									intp.print(ConsoleMsg.CONSOLE_ERROR_MESSAGE);
-									intp.print(" "); //$NON-NLS-1$
-									break;
-								default :
-									intp.print(">"); //$NON-NLS-1$
-									intp.print(level);
-									intp.print(" "); //$NON-NLS-1$
-									break;
-							}
-
-							if (bundle != null) {
-								intp.print("["); //$NON-NLS-1$
-								intp.print(new Long(bundle.getBundleId()));
-								intp.print("] "); //$NON-NLS-1$
-							}
-
-							intp.print(getMessage.invoke(logentry, null));
-							intp.print(" "); //$NON-NLS-1$
-
-							ServiceReferenceImpl svcref = (ServiceReferenceImpl) getServiceReference.invoke(logentry, null);
-							if (svcref != null) {
-								intp.print("{"); //$NON-NLS-1$
-								intp.print(Constants.SERVICE_ID);
-								intp.print("="); //$NON-NLS-1$
-								intp.print(svcref.getProperty(Constants.SERVICE_ID).toString());
-								intp.println("}"); //$NON-NLS-1$
-							} else {
-								if (bundle != null) {
-									intp.println(bundle.getLocation());
-								} else {
-									intp.println();
-								}
-							}
-
-							Throwable t = (Throwable) getException.invoke(logentry, null);
-							if (t != null) {
-								intp.printStackTrace(t);
-							}
-						}
-					}
-				} finally {
-					context.ungetService(logreaderRef);
-				}
-				return;
-			}
-		}
-
-		intp.println(ConsoleMsg.CONSOLE_LOGSERVICE_NOT_REGISTERED_MESSAGE);
-	}
-
-	/**
-	 *  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 (osgi.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 (permAdmin != null) {
-			// clear the permissions from permission admin
-			permAdmin.setDefaultPermissions(null);
-			String[] permLocations = permAdmin.getLocations();
-			if (permLocations != null)
-				for (int i = 0; i < permLocations.length; i++)
-					permAdmin.setPermissions(permLocations[i], null);
-		}
-		// clear the permissions from conditional permission admin
-		if (condPermAdmin != null)
-			for (Enumeration infos = condPermAdmin.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();
-		osgi.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 (osgi.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()) {
-					BundleLoaderProxy[] hosts = b.getHosts();
-					if (hosts != null)
-						for (int j = 0; j < hosts.length; j++)
-							intp.println("\t            Master=" + hosts[j].getBundleHost().getBundleId()); //$NON-NLS-1$
-				} else {
-					org.osgi.framework.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.sort(threadGroups);
-
-		ThreadGroup tg = getTopThreadGroup();
-		Thread[] threads = new Thread[tg.activeCount()];
-		int count = tg.enumerate(threads, true);
-		Util.sort(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);
-			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 state value, return the string describing that state.
-	 *
-	 *  @param state An int containing a state value
-	 *  @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 :
-				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);
-		}
-	}
-
-	/**
-	 * 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();
-		Enumeration propertyNames = allProperties.keys();
-		while (propertyNames.hasMoreElements()) {
-			String prop = (String) propertyNames.nextElement();
-			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 10f4bb2..0000000
--- a/bundles/org.eclipse.osgi/console/src/org/eclipse/osgi/framework/internal/core/FrameworkConsole.java
+++ /dev/null
@@ -1,467 +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.core;
-
-import java.io.*;
-import java.net.*;
-import org.eclipse.osgi.framework.console.CommandInterpreter;
-import org.eclipse.osgi.framework.console.CommandProvider;
-import org.eclipse.osgi.util.NLS;
-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  */
-	protected BufferedReader in;
-	/** The stream to write command results to */
-	protected PrintWriter out;
-	/** The current bundle context */
-	protected final org.osgi.framework.BundleContext context;
-	/** The current osgi instance */
-	protected final OSGi osgi;
-	/** The command line arguments passed at launch time*/
-	protected final String[] args;
-	/** The OSGi Command Provider */
-	protected final CommandProvider osgicp;
-	/** A tracker containing the service object of all registered command providers */
-	protected final ServiceTracker cptracker;
-
-	/** 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$
-
-	/** set to true if accepting commands from port */
-	protected final boolean useSocketStream;
-	protected boolean disconnect = false;
-	protected final int port;
-	protected ConsoleSocketGetter scsg = null;
-	protected Socket s;
-	boolean blockOnready = FrameworkProperties.getProperty("osgi.dev") != null || FrameworkProperties.getProperty("osgi.console.blockOnReady") != null; //$NON-NLS-1$ //$NON-NLS-2$
-	volatile boolean shutdown = false;
-
-	/**
-	 Constructor for FrameworkConsole.
-	 It creates a service tracker to track CommandProvider registrations.
-	 The console InputStream is set to System.in and the console PrintStream is set to System.out.
-	 @param osgi - an instance of an osgi framework
-	 @param args - any arguments passed on the command line when Launcher is started.
-	 */
-	public FrameworkConsole(OSGi osgi, String[] args) {
-		this(osgi, args, 0, false);
-	}
-
-	/**
-	 Constructor for FrameworkConsole.
-	 It creates a service tracker to track CommandProvider registrations.
-	 The console InputStream is set to System.in and the console PrintStream is set to System.out.
-	 @param osgi - an instance of an osgi framework
-	 @param args - any arguments passed on the command line when Launcher is started.
-	 */
-	public FrameworkConsole(OSGi osgi, int port, String[] args) {
-		this(osgi, args, port, true);
-	}
-
-	private FrameworkConsole(OSGi osgi, String[] args, int port, boolean useSocketStream) {
-		this.args = args;
-		this.osgi = osgi;
-		this.useSocketStream = useSocketStream;
-		this.port = port;
-		this.context = osgi.getBundleContext();
-
-		// set up a service tracker to track CommandProvider registrations
-		this.cptracker = new ServiceTracker(context, CommandProvider.class.getName(), null);
-		this.cptracker.open();
-
-		// register the OSGi command provider
-		this.osgicp = new FrameworkCommandProvider(osgi).intialize();
-	}
-
-	/**
-	 *  Open streams for system.in and system.out
-	 */
-	private void getDefaultStreams() {
-		InputStream is = new FilterInputStream(System.in) {
-			public void close() throws IOException {
-				// We don't want to close System.in
-			}
-		};
-		in = createBufferedReader(is);
-
-		OutputStream os = new FilterOutputStream(System.out) {
-			public void close() throws IOException {
-				// We don't want to close System.out
-			}
-		};
-		out = createPrintWriter(os);
-		disconnect = false;
-	}
-
-	/**
-	 *  Open a socket and create input and output streams
-	 *
-	 * @param port number to listen on
-	 */
-	private void getSocketStream() {
-		try {
-			System.out.println(NLS.bind(ConsoleMsg.CONSOLE_LISTENING_ON_PORT, String.valueOf(port)));
-			synchronized (this) {
-				if (scsg == null)
-					scsg = new ConsoleSocketGetter(new ServerSocket(port));
-				scsg.setAcceptConnections(true);
-			}
-			// get socket outside of sync block
-			Socket temp = scsg.getSocket();
-			if (temp == null)
-				return;
-			synchronized (this) {
-				s = temp;
-				in = createBufferedReader(s.getInputStream());
-				out = createPrintWriter(s.getOutputStream());
-				disconnect = false;
-			}
-		} catch (UnknownHostException uhe) {
-			uhe.printStackTrace();
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-	}
-
-	/**
-	 * Return a BufferedReader from an InputStream.  Handle encoding.
-	 *
-	 * @param _in An InputStream to wrap with a BufferedReader
-	 * @return a BufferedReader
-	 */
-	private 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
-	 */
-	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 encodiing 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;
-	}
-
-	/**
-	 *  Return the current input BufferedReader
-	 * @return The currently active BufferedReader
-	 */
-	public BufferedReader getReader() {
-		return in;
-	}
-
-	/**
-	 *  Return if the SocketSteam (telnet to the console) is being used 
-	 * @return Return if the SocketSteam is being used 
-	 */
-	public boolean getUseSocketStream() {
-		return useSocketStream;
-	}
-
-	/**
-	 * Begin doing the active part of the class' code. Starts up the console.
-	 */
-	public void run() {
-		// always grap the default streams
-		getDefaultStreams();
-		try {
-			console(args);
-		} catch (IOException e) {
-			e.printStackTrace(out);
-		}
-		while (!shutdown) {
-			if (useSocketStream)
-				getSocketStream();
-			try {
-				console();
-			} catch (IOException e) {
-				if (!shutdown)
-					e.printStackTrace(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.
-	 *
-	 * @param args Initial set of commands to execute.
-	 * @throws IOException
-	 */
-	public void console(String args[]) throws IOException {
-		// first handle any args passed in from launch
-		if (args != null) {
-			for (int i = 0; i < args.length; i++) {
-				docommand(args[i]);
-			}
-		}
-	}
-
-	/**
-	 * 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.
-	 * @throws IOException
-	 */
-	protected void console() throws IOException {
-		// wait to receive commands from console and handle them
-		BufferedReader br = in;
-		//cache the console prompt String
-		String consolePrompt = "\r\n" + ConsoleMsg.CONSOLE_PROMPT; //$NON-NLS-1$
-		while (!disconnected()) {
-			out.print(consolePrompt);
-			out.flush();
-
-			String cmdline = null;
-			if (blockOnready && !useSocketStream) {
-				// bug 40066: avoid waiting on input stream - apparently generates contention with other native calls 
-				try {
-					while (!br.ready())
-						Thread.sleep(300);
-					cmdline = br.readLine();
-				} catch (InterruptedException e) {
-					// do nothing; probably got disconnected
-				}
-			} else
-				cmdline = br.readLine();
-
-			if (cmdline != null && !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);
-			}
-		}
-	}
-
-	/**
-	 * Disconnects from console if useSocketStream is set to true.  This
-	 * will cause the console to close from a telnet session.
-	 */
-	public synchronized void disconnect() {
-		if (!disconnect) {
-			disconnect = true;
-			// We don't want to close System.in and System.out
-			if (useSocketStream) {
-				if (s != null)
-					try {
-						s.close();
-					} catch (IOException ioe) {
-						// do nothing
-					}
-				if (out != null)
-					out.close();
-				if (in != null)
-					try {
-						in.close();
-					} catch (IOException ioe) {
-						// do nothing
-					}
-			}
-		}
-	}
-
-	/**
-	 * @return are we still connected?
-	 */
-	private synchronized boolean disconnected() {
-		return disconnect;
-	}
-
-	/**
-	 * 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 or <tt>null</tt> if no service
-	 * are being tracked.
-	 */
-	public Object[] getServices() {
-		ServiceReference[] serviceRefs = cptracker.getServiceReferences();
-		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
-	 * @throws IOException 
-	 *
-	 */
-	public synchronized void shutdown() {
-		shutdown = true;
-		cptracker.close();
-		disconnect();
-		if (scsg != null)
-			try {
-				scsg.shutdown();
-			} catch (IOException e) {
-				System.err.println(e.getMessage());
-			}
-	}
-
-	/**
-	 * ConsoleSocketGetter - provides a Thread that listens on the port
-	 * for FrameworkConsole.  If acceptConnections is set to true then
-	 * the thread will notify the getSocket method to return the socket.
-	 * If acceptConnections is set to false then the client is notified
-	 * that connections are not currently accepted and closes the socket.
-	 */
-	class ConsoleSocketGetter implements Runnable {
-
-		/** The ServerSocket to accept connections from */
-		private final ServerSocket server;
-		/** The current socket to be returned by getSocket */
-		private Socket socket;
-		/** if set to true then allow the socket to be returned by getSocket */
-		private boolean acceptConnections = true;
-		/** Lock object to synchronize returning of the socket */
-		private final Object lock = new Object();
-
-		/**
-		 * 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;
-			Thread t = new Thread(this, "ConsoleSocketGetter"); //$NON-NLS-1$
-			t.setDaemon(true);
-			t.start();
-		}
-
-		public void run() {
-			while (!shutdown) {
-				try {
-					socket = server.accept();
-					if (!acceptConnections) {
-						PrintWriter o = createPrintWriter(socket.getOutputStream());
-						o.println(ConsoleMsg.CONSOLE_TELNET_CONNECTION_REFUSED);
-						o.println(ConsoleMsg.CONSOLE_TELNET_CURRENTLY_USED);
-						o.println(ConsoleMsg.CONSOLE_TELNET_ONE_CLIENT_ONLY);
-						o.close();
-						socket.close();
-					} else {
-						synchronized (lock) {
-							lock.notify();
-						}
-					}
-				} catch (Exception e) {
-					if (!shutdown)
-						e.printStackTrace();
-				}
-
-			}
-		}
-
-		/**
-		 * Method to get a socket connection from a client.
-		 *
-		 * @return - Socket from a connected client
-		 */
-		public Socket getSocket() throws InterruptedException {
-			// wait for a socket to get assigned from the accepter thread
-			synchronized (lock) {
-				lock.wait(); //TODO spurious wakeup not handled
-			}
-			setAcceptConnections(false);
-			return socket;
-		}
-
-		/**
-		 * Method to indicate if connections are accepted or not.  If set
-		 * to false then the clients will be notified that connections
-		 * are not accepted.
-		 */
-		public void setAcceptConnections(boolean acceptConnections) {
-			this.acceptConnections = acceptConnections;
-		}
-
-		public void shutdown() throws IOException {
-			server.close();
-		}
-	}
-
-}
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 a588f8b..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleClassLoader.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.framework.adaptor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.ProtectionDomain;
-import java.util.Enumeration;
-
-/**
- * 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*/{
-
-	/**
-	 * 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 6769ca8..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleData.java
+++ /dev/null
@@ -1,275 +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 java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import org.osgi.framework.*;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-/**
- * 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;
-	
-
-	/**
-	 * 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();
-
-	/**
-	 * Matches the distinguished name chains of a bundle's signers against a 
-	 * pattern of a distinguished name chain.
-	 * 
-	 * @param pattern the pattern of distinguished name (DN) chains to match
-	 *        against the dnChain. Wildcards "*" can be used in three cases:
-	 *        <ol>
-	 *        <li>As a DN. In this case, the DN will consist of just the "*".
-	 *        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,c=CA;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 a dnChain matches the pattern. A value of false is returned
-	 * if bundle signing is not supported.
-	 * @throws IllegalArgumentException
-	 */
-	public boolean matchDNChain(String pattern);
-}
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 c51fd69..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleOperation.java
+++ /dev/null
@@ -1,77 +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.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 24be0f9..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleProtectionDomain.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.adaptor;
-
-import java.security.PermissionCollection;
-import java.security.ProtectionDomain;
-
-/**
- * 
- * This is a specialized ProtectionDomain for a bundle.
- * <p>
- * This class is not intended to be extended by clients.
- * </p>
- * @since 3.1
- */
-public abstract class BundleProtectionDomain extends ProtectionDomain {
-
-	/**
-	 * Constructs a special ProtectionDomain for a bundle.
-	 * 
-	 * @param permCollection
-	 *            the PermissionCollection for the Bundle
-	 */
-	public BundleProtectionDomain(PermissionCollection permCollection) {
-		super(null, permCollection);
-	}
-}
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 e414f7f..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/BundleWatcher.java
+++ /dev/null
@@ -1,90 +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.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 c7b6c95..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ClassLoaderDelegate.java
+++ /dev/null
@@ -1,92 +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.framework.adaptor;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-
-/**
- * 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>
- * @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);
-
-}
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 df0e16d..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FilePath.java
+++ /dev/null
@@ -1,257 +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.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); //TODO add message
-			}
-		}
-		// 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 07c294d..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/FrameworkAdaptor.java
+++ /dev/null
@@ -1,320 +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;
-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;
-
-	/**
-	 * Returns the <code>ServiceRegistry</code> object which will be used
-	 * to manage ServiceReference bindings.
-	 * @return The ServiceRegistry object for the adaptor.
-	 */
-	public ServiceRegistry getServiceRegistry();
-
-	/**
-	 * 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);
-
-	/**
-	 * Matches the distinguished name chain against a 
-	 * pattern of a distinguished name chain.
-	 * 
-	 * @param pattern the pattern of distinguished name (DN) chains to match
-	 *        against the dnChain. Wildcards "*" can be used in three cases:
-	 *        <ol>
-	 *        <li>As a DN. In this case, the DN will consist of just the "*".
-	 *        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,c=CA;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>
-	 * @param dnChain a distinguished name (DN) chain
-	 * @return true if a dnChain matches the pattern. A value of false is returned
-	 * if bundle signing is not supported.
-	 * @throws IllegalArgumentException
-	 */
-	public boolean matchDNChain(String pattern, String dnChain[]);
-}
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/ServiceRegistry.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ServiceRegistry.java
deleted file mode 100644
index abdd045..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/ServiceRegistry.java
+++ /dev/null
@@ -1,72 +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.*;
-
-/**
- * The ServiceRegistry interface is used by the framework to store and
- * lookup currently registered services.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface ServiceRegistry {
-
-	/**
-	 * Publishes a service to this ServiceRegistry.
-	 * @param context the BundleContext that registered the service.
-	 * @param serviceReg the ServiceRegistration to register.
-	 */
-	public void publishService(BundleContext context, ServiceRegistration serviceReg);
-
-	/**
-	 * Unpublishes a service from this ServiceRegistry
-	 * @param context the BundleContext that registered the service. 
-	 * @param serviceReg the ServiceRegistration to unpublish.
-	 */
-	public void unpublishService(BundleContext context, ServiceRegistration serviceReg);
-
-	/**
-	 * Unpublishes all services from this ServiceRegistry that the
-	 * specified BundleContext registered.
-	 * @param context the BundleContext to unpublish all services for.
-	 */
-	public void unpublishServices(BundleContext context);
-
-	/**
-	 * Performs a lookup for ServiceReferences that are bound to this 
-	 * ServiceRegistry. If both clazz and filter are null then all bound
-	 * ServiceReferences are returned.
-	 * @param clazz A fully qualified class name.  All ServiceReferences that
-	 * reference an object that implement this class are returned.  May be
-	 * null.
-	 * @param filter Used to match against published Services.  All 
-	 * ServiceReferences that match the filter are returned.  If a clazz is
-	 * specified then all ServiceReferences that match the clazz and the
-	 * filter parameter are returned. May be null.
-	 * @return An array of all matching ServiceReferences or null
-	 * if none exist.
-	 */
-	public ServiceReference[] lookupServiceReferences(String clazz, Filter filter);
-
-	/**
-	 * Performs a lookup for ServiceReferences that are bound to this 
-	 * ServiceRegistry using the specified BundleContext.
-	 * @param context The BundleContext to lookup the ServiceReferences on.
-	 * @return An array of all matching ServiceReferences or null if none
-	 * exist.
-	 */
-	public ServiceReference[] lookupServiceReferences(BundleContext context);
-
-}
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 6b8d612..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/adaptor/StatusException.java
+++ /dev/null
@@ -1,45 +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.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 364d1d4..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/framework/util/Headers.java
+++ /dev/null
@@ -1,299 +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.util;
-
-import java.io.*;
-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, 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/service/resolver/BaseDescription.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BaseDescription.java
deleted file mode 100644
index 32f60a0..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BaseDescription.java
+++ /dev/null
@@ -1,42 +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.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>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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 6ea5453..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDelta.java
+++ /dev/null
@@ -1,123 +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.resolver;
-
-/**
- * BundleDeltas represent the changes related to an individual bundle between two
- * states.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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 3444067..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleDescription.java
+++ /dev/null
@@ -1,230 +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.service.resolver;
-
-/**
- * This class represents a specific version of a bundle in the system.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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();
-}
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 62b5f40..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/BundleSpecification.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.service.resolver;
-
-/**
- * A representation of one bundle import constraint as seen in a 
- * bundle manifest and managed by a state and resolver.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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/ExportPackageDescription.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ExportPackageDescription.java
deleted file mode 100644
index d1817db..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ExportPackageDescription.java
+++ /dev/null
@@ -1,56 +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.resolver;
-
-import java.util.Map;
-
-/**
- * This class represents a specific version of an exported package in the system.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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
-	 */
-	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 39e5de9..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericDescription.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.service.resolver;
-
-import java.util.Dictionary;
-
-/**
- * A description of a generic capability.
- * @since 3.2
- */
-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 4b0a12d..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/GenericSpecification.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.service.resolver;
-
-/**
- * A specification which depends on a generic capability
- * @since 3.2
- */
-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 bb127d7..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/HostSpecification.java
+++ /dev/null
@@ -1,33 +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.resolver;
-
-/**
- * A representation of one host bundle constraint as seen in a 
- * bundle manifest and managed by a state and resolver.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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 3a196fb..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ImportPackageSpecification.java
+++ /dev/null
@@ -1,67 +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.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>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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/PlatformAdmin.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/PlatformAdmin.java
deleted file mode 100644
index 607bfd2..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/PlatformAdmin.java
+++ /dev/null
@@ -1,92 +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.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>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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
-	 */
-	public Resolver getResolver();
-
-	/**
-	 * 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();
-}
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 d83d296..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/Resolver.java
+++ /dev/null
@@ -1,145 +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.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 f325615..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/ResolverError.java
+++ /dev/null
@@ -1,151 +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.service.resolver;
-
-/**
- * ResolverErrors represent a single error that prevents a bundle from resolving
- * in a <code>State</code> object.
- * @since 3.2
- */
-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;
-
-	/**
-	 * 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 ead46fc..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/State.java
+++ /dev/null
@@ -1,442 +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.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>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-public interface State {
-	/**
-	 * Adds the given bundle to this state.
-	 * 
-	 * @param description the description to add
-	 * @return a boolean indicating whether the bundle was successfully added
-	 */
-	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>
-	 */
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, 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(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 match platform filters that are specified in Eclipse-PlatformFilter
-	 * bundle manifest header.  The following propreties are supported by the
-	 * state: <p>
-	 * osgi.nl - the platform language setting<br>
-	 * osgi.os - the platform operating system<br>
-	 * osgi.arch - the platform architecture<br>
-	 * osgi.ws - the platform windowing system<br>
-	 * org.osgi.framework.system.packages - the packages exported by the system bundle <br>
-	 * osgi.resolverMode - the resolver mode.  A value of "strict" will set the resolver mode to strict.<br>
-	 * org.osgi.framework.executionenvironment - the comma separated list of supported execution environments <br>
-	 * <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.  
-	 * The platform properties are used to match platform filters that are specified 
-	 * in Eclipse-PlatformFilter bundle manifest header. 
-	 * @see #setPlatformProperties(Dictionary) for a list of supported properties.  
-	 * 
-	 * @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();
-}
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 d35c966..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateDelta.java
+++ /dev/null
@@ -1,45 +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.resolver;
-
-/**
- * A state delta contains all the changes to bundles within a state.
- * <p>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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 b6d44a2..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateHelper.java
+++ /dev/null
@@ -1,205 +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.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>
- * Clients should not implement this interface.
- * </p>
- * @since 3.1
- * @see PlatformAdmin#getStateHelper
- */
-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.
-	 * @see StateHelper#getVisiblePackages(BundleDescription, int)
-	 */
-	public static int VISIBLE_INCLUDE_EE_PACKAGES = 0x01;
-
-	/**
-	 * 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.  This takes into account all constraint specifications
-	 * from the specified bundle (Import-Package, Require-Bundle etc).  A deep dependancy
-	 * 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.) <p>
-	 * 
-	 * The returned list will not include any packages which are exported by the system bundle 
-	 * on the behave of the running execution environment.  For example, when running on a 
-	 * 1.4.2 JRE the system bundle will export the javax.xml.parsers package.  These types of 
-	 * system packages will are not included in the returned list.
-	 * <p>
-	 * Same as calling getVisiblePackages(bundle, 0)
-	 * @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
-	 * from the specified bundle (Import-Package, Require-Bundle etc).  A deep dependancy
-	 * 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
-	 * @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 3500986..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/StateObjectFactory.java
+++ /dev/null
@@ -1,351 +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.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>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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 createResolver 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.
-	 *  
-	 * @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);
-
-
-	/**
-	 * 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 dynamally 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 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 9dec12f..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionConstraint.java
+++ /dev/null
@@ -1,71 +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.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>
- * Clients may implement this interface.
- * </p>
- * @since 3.1
- */
-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 0bf9dd3..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/service/resolver/VersionRange.java
+++ /dev/null
@@ -1,166 +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.resolver;
-
-import org.osgi.framework.Version;
-
-/**
- * This class represents a version range.
- * @since 3.1
- */
-public class VersionRange {
-	private static final Version versionMax = new Version(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE);
-	/**
-	 * An empty version
-	 */
-	public static final VersionRange emptyRange = new VersionRange(null);
-
-	private Version minVersion;
-	private boolean includeMin; 
-	private Version maxVersion;
-	private boolean includeMax;
-
-	/**
-	 * Constructs a VersionRange with the specified minVersion and maxVersion.
-	 * @param minVersion the minimum version of the range
-	 * @param maxVersion the maximum version of the range
-	 */
-	public VersionRange(Version minVersion, boolean includeMin, Version maxVersion, boolean includeMax) {
-		this.minVersion = minVersion;
-		this.includeMin = includeMin;
-		this.maxVersion = maxVersion;
-		this.includeMax = includeMax;
-	}
-
-	/**
-	 * Constructs a VersionRange from the given versionRange String.
-	 * @param versionRange a version range String that specifies a range of
-	 * versions.
-	 */
-	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. 
-	 * (may be <code>null</code>)
-	 * @return <code>true</code> if the version is include, 
-	 * <code>false</code> otherwise 
-	 */
-	public boolean isIncluded(Version version) {
-		Version minRequired = getMinimum();
-		if (minRequired == null)
-			return true;
-		if (version == null)
-			return false;
-		Version maxRequired = getMaximum() == null ? VersionRange.versionMax : getMaximum();
-		int minCheck = includeMin ? 0 : 1;
-		int maxCheck = includeMax ? 0 : -1;
-		return version.compareTo(minRequired) >= minCheck && version.compareTo(maxRequired) <= maxCheck;
-
-	}
-
-	public boolean equals(Object object) {
-		if (!(object instanceof VersionRange))
-			return false;
-		VersionRange vr = (VersionRange) object;
-		if (minVersion != null && vr.getMinimum() != null) {
-			if (minVersion.equals(vr.getMinimum()) && includeMin == vr.includeMin)
-				if (maxVersion != null && vr.getMaximum() != null) {
-					if (maxVersion.equals(vr.getMaximum()) && includeMax == vr.includeMax)
-						return true;
-				}
-				else
-					return maxVersion == vr.getMaximum();
-		}
-		else {
-			return minVersion == vr.getMinimum();
-		}
-		return false;
-	}
-
-	public String toString() {
-		if (minVersion == null)
-			return Version.emptyVersion.toString();
-		if (VersionRange.versionMax.equals(maxVersion))
-			return minVersion.toString();
-		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/util/TextProcessor.java b/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java
deleted file mode 100644
index f4b8ec9..0000000
--- a/bundles/org.eclipse.osgi/core/adaptor/org/eclipse/osgi/util/TextProcessor.java
+++ /dev/null
@@ -1,301 +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.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
- */
-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 the locale BiDi
-	private static boolean isBidi = false;
-
-	// whether or not the current platform supports directional characters
-	private static boolean isSupportedPlatform = 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$
-			isBidi = true;
-		
-		String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
-		if (osName.startsWith("windows") || osName.startsWith("linux")) { //$NON-NLS-1$	//$NON-NLS-2$
-																			
-			// Only consider platforms that can support control characters
-			isSupportedPlatform = 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) {
-		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 (str == null || str.length() <= 1 || !isSupportedPlatform || !isBidi)
-			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){
-		// don't do all the work if not a valid case 
-		if (str == null || str.length() <= 1 || !isSupportedPlatform || !isBidi)
-			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/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 10ac08d..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandInterpreter.java
+++ /dev/null
@@ -1,90 +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.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
- */
-public interface CommandInterpreter {
-	/**
-	 *	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.
-	 */
-	public String nextArgument();
-
-	/**
-	 *	Execute a command line as if it came from the end user
-	 *	and return the result.
-	 *           
-	 *          Throws any exceptions generated by the command that executed.
-	 */
-	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 c91a78d..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/console/CommandProvider.java
+++ /dev/null
@@ -1,46 +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.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/eventmgr/EventDispatcher.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventDispatcher.java
deleted file mode 100644
index e858d05..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventDispatcher.java
+++ /dev/null
@@ -1,49 +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.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 listener must be cast 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 optional companion object that was 
-	 * specified when the listener was added to the EventListeners object.
-	 * @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 86c760b..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventListeners.java
+++ /dev/null
@@ -1,234 +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.eventmgr;
-
-/**
- * This class manages a list of listeners.
- * Listeners may be added or removed as necessary.
- * @since 3.1
- */
-public class EventListeners {
-	/**
-	 * The empty array singleton instance, returned by getListeners()
-	 * when size == 0.
-	 */
-	private static final ListElement[] emptyArray = new ListElement[0];
-
-	/**
-	 * The initial capacity of the list. Always >= 1.
-	 */
-	private final int initialCapacity;
-
-	/**
-	 * The list of elements.  Initially <code>null</code> but initialized
-	 * to an array of size initialCapacity the first time an element is added.
-	 * Maintains invariants: 
-	 * 	list != null IFF size != 0
-	 * 	list[size] == null
-	 *  for all i < size: list[i] != null
-     * Access to this field must be protected by a synchronized region.
-	 */
-	private ListElement[] list = null;
-
-	/**
-	 * The current number of elements.
-	 * Maintains invariant: 0 <= size <= list.length.
-     * Access to this field must be protected by a synchronized region.
-	 */
-	private int size = 0;
-
-	/**
-	 * If true and about to modify the list,
-	 * then the list must be copied first.
-     * Access to this field must be protected by a synchronized region.
-	 */
-	private boolean copyOnWrite = false;
-
-	/**
-	 * Creates a listener list with an initial capacity of 10.
-	 *
-	 */
-	public EventListeners() {
-		this(10);
-	}
-
-	/**
-	 * Creates a listener list with the given initial capacity.
-	 *
-	 * @param capacity The number of listeners which this list can initially 
-	 *    accept without growing its internal representation; must be at
-	 *    least 1
-	 * @throws IllegalArgumentException If capacity is less than 1.
-	 */
-	public EventListeners(int capacity) {
-		if (capacity < 1)
-			throw new IllegalArgumentException();
-		this.initialCapacity = capacity;
-	}
-
-	/**
-	 * Add a listener to the list.
-	 * If a listener object is already in the list, then it is replaced.
-	 *
-	 * @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 synchronized void addListener(Object listener, Object listenerObject) { 
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-
-		if (size == 0) {
-			list = new ListElement[initialCapacity];
-		} 
-		else {
-			// copy array if necessary
-			if (copyOnWrite) {
-				copyList(size);
-				copyOnWrite = false;
-			}
-
-			// check for duplicates using identity
-			for (int i = 0; i < size; i++) {
-				if (list[i].primary == listener) {
-					list[i] = new ListElement(listener, listenerObject); /* use the most recent companion */
-					return;
-				}
-			}
-
-			// grow array if necessary
-			// This wont recopy list if copy on write occured above since that
-			// would have grown the list.
-			if (size == list.length) {
-				copyList(size);
-			}
-		}
-
-		list[size] = new ListElement(listener, listenerObject);
-		size++;
-	}
-
-	/**
-	 * Remove a listener from the list.
-	 *
-	 * @param listener This is the listener object to be removed from the list.
-	 * @throws IllegalArgumentException If listener is null.
-	 */
-	public synchronized void removeListener(Object listener) {
-		if (listener == null) {
-			throw new IllegalArgumentException();
-		}
-
-		for (int i = 0; i < size; i++) {
-			if (list[i].primary == listener) {
-				size--;
-				if (size == 0) {
-					list = null; /* invariant: list must be null iff size is zero */
-					return;
-				}
-				if (copyOnWrite) {
-					copyList(i);
-					copyOnWrite = false;
-				}
-				else {
-					System.arraycopy(list, i + 1, list, i, size - i);
-					list[size] = null; /* invariant: end of list must be null */
-				}
-				return;
-			}
-		}
-	}
-
-	/**
-	 * Remove all listeners from the list.
-	 */
-	public synchronized void removeAllListeners() {
-		/* invariant: list must be null iff size is zero */
-		list = null;
-		size = 0;
-	}
-
-	/**
-	 * Return the list of (listener, listenerObject) pairs.
-	 * Package private method.
-	 * The array may be longer than the number of pairs in the array.
-	 * The end of the pairs is signalled by a null element or
-	 * end of array. 
-	 * This array must not be modified by anyone and should not be 
-	 * exposed outside of this package.
-	 * To reduce memory allocations, the internal array is shared
-	 * with the rest of this package. However an array returned by this method
-	 * must not be modified in anyway.
-	 * 
-	 * @return A shared array that must not be modified by anyone. 
-	 */
-	synchronized ListElement[] getListeners() {
-		if (size == 0) {
-			return emptyArray;
-		}
-		copyOnWrite = true;
-		return list;
-	}
-	
-	/**
-	 * Copy the array.
-	 * @param i Index of element to remove from array. Must be equal to size to 
-	 * copy entire array.
-	 * @throws IndexOutOfBoundsException If i < 0 or i > size.
-	 */
-	private void copyList(int i) {
-		if (i > size) {
-			throw new IndexOutOfBoundsException();
-		}
-		int capacity = (size * 3) / 2 + 1;
-		if (capacity < initialCapacity) {
-			capacity = initialCapacity;
-		}
-		ListElement[] newList = new ListElement[capacity];
-		System.arraycopy(list, 0, newList, 0, i);
-		if (i < size) {
-			System.arraycopy(list, i + 1, newList, i, size - i);
-		}
-		list = newList;
-	}
-
-	/**
-	 * ListElement is a package private class. This class
-	 * represents a primary object (e.g. listener) and its companion object.
-	 * ListElements are stored in EventListeners.
-	 * ListElements are immutable.
-	 */
-	static class ListElement {
-		/**
-		 * Primary object.
-		 */
-		final Object primary;
-
-		/**
-		 * Companion object.
-		 */
-		final Object companion;
-
-		/**
-		 * Constructor for ElementList element
-		 * @param primary Primary object in element. Used for uniqueness.
-		 * @param companion Companion object stored with primary object.
-		 */
-		ListElement(final Object primary, final Object companion) {
-			this.primary = primary;
-			this.companion = companion;
-		}
-	}
-}
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 956614a..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/EventManager.java
+++ /dev/null
@@ -1,374 +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.eventmgr;
-
-import org.eclipse.osgi.framework.eventmgr.EventListeners.ListElement;
-
-/**
- * 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. EventListeners objects
- * should be used to manage listener lists.
- *
- * <p>This example uses the ficticous 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 an EventListeners to hold the list of SomeEventListeners
- *		EventListeners eventListeners = new EventListeners();
- *
- *		// Add a SomeEventListener to the listener list
- *	    eventListeners.addListener(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, 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.removeListener(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 (EventListeners) for each listener type (4 types). 
- * Level one is managed by the framework and contains the list of BundleContexts which have 
- * registered a listener. Level 2 is managed by each 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 shares the array of listeners with the EventListeners object.
- * EventListeners uses copy-on-write semantics for managing the array and will copy the array
- * before changing it IF the array has been shared with a ListenerQueue. This minimizes 
- * object creation while guaranteeing 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 bewteen 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
- */
-
-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;
-
-	/**
-	 * EventThread Name
-	 */
-	protected final String threadName;
-
-	/**
-	 * EventManager constructor. An EventManager object is responsible for
-	 * the delivery of events to listeners via an EventDispatcher.
-	 *
-	 */
-	public EventManager() {
-		this(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.
-	 */
-	public EventManager(String threadName) {
-		thread = null;
-		this.threadName = threadName;
-	}
-
-	/**
-	 * 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 (thread != null) {
-			thread.close();
-			thread = null;
-		}
-	}
-
-	/**
-	 * 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 (thread == null) {
-			/* if there is no thread, then create a new one */
-			if (threadName == null) {
-				thread = new EventThread();
-			} 
-			else {
-				thread = new EventThread(threadName);
-			}
-			thread.start(); /* start the new thread */
-		}
-
-		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 null terminated array of ListElements with each element containing the primary and 
-	 * companion object for a listener. This array must not be modified.
-	 * @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(ListElement[] listeners, EventDispatcher dispatcher, int eventAction, Object eventObject) {
-		int size = listeners.length;
-		for (int i = 0; i < size; i++) { /* iterate over the list of listeners */
-			ListElement listener = listeners[i];
-			if (listener == null) {		/* a null element terminates the list */
-				break;
-			}
-			try {
-				/* Call the EventDispatcher to complete the delivery of the event. */
-				dispatcher.dispatchEvent(listener.primary, listener.companion, eventAction, eventObject);
-			} 
-			catch (Throwable t) {
-				/* Consume and ignore any exceptions thrown by the listener */
-				if (DEBUG) {
-					System.out.println("Exception in " + listener.primary); //$NON-NLS-1$
-					t.printStackTrace();
-				}
-			}
-		}
-	}
-
-	/**
-	 * This package private class is used for asynchronously dispatching events.
-	 */
-
-	static class EventThread extends Thread {
-		/**
-		 * 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 ListElement[] 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(ListElement[] 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(String threadName) {
-			super(threadName);
-			init();
-		}
-
-		/**
-		 * Constructor for the event thread.
-		 */
-		EventThread() {
-			super();
-			init();
-		}
-
-		private void init() {
-			running = true;
-			head = null;
-			tail = null;
-
-			setDaemon(true); /* Mark thread as daemon thread */
-		}
-
-		/**
-		 * 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);
-				}
-			}
-			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(ListElement[] 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 (!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 ff6cabf..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/eventmgr/ListenerQueue.java
+++ /dev/null
@@ -1,144 +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.eventmgr;
-
-import java.util.ArrayList;
-import org.eclipse.osgi.framework.eventmgr.EventListeners.ListElement;
-import org.eclipse.osgi.framework.eventmgr.EventManager.EventThread;
-
-/**
- * The ListenerQueue is used to snapshot the set 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
- * using asynchronous delivery. No delivery order is guaranteed for synchronous
- * delivery to avoid any potential deadly embraces.
- *
- * <p>ListenerQueue objects are created as necesssary to build a set of listeners
- * that should receive a specific event or events. Once the set is created, the event
- * can then be synchronously or asynchronously delivered to the set 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 memory cost of a ListenerQueue object is
- * low since the ListenerQueue object shares the array of listeners with the EventListeners 
- * object which are queued.
- * EventListeners uses copy-on-write semantics for managing the array and will copy the array
- * before changing it once the array has been shared with a ListenerQueue. This minimizes 
- * object creation while guaranteeing the snapshot list is never modified once created.
- * @since 3.1
- */
-public class ListenerQueue {
-	/**
-	 * EventManager with which this queue is associated.
-	 */
-	protected final EventManager manager;
-	/**
-	 * A list of listener lists.
-	 */
-	private final ArrayList 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 snapshop 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 ArrayList();
-		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.
-	 */
-	public synchronized void queueListeners(EventListeners listeners, EventDispatcher dispatcher) {
-		if (readOnly) {
-			throw new IllegalStateException();
-		}
-
-		if (listeners != null) {
-			ListElement[] list = listeners.getListeners();
-
-			if (list.length > 0) {
-				queue.add(new EventListeners.ListElement(list, 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 */
-			int size = queue.size();
-			for (int i = 0; i < size; i++) { /* iterate over the list of listener lists */
-				ListElement list = (ListElement)queue.get(i);
-				eventThread.postEvent((ListElement[]) list.primary, (EventDispatcher) list.companion, 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.
-		int size = queue.size();
-		for (int i = 0; i < size; i++) { /* iterate over the list of listener lists */
-			ListElement list = (ListElement)queue.get(i);
-			EventManager.dispatchEvent((ListElement[]) list.primary, (EventDispatcher) list.companion, eventAction, eventObject);
-		}
-	}
-}
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 a4b2044..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/AbstractBundle.java
+++ /dev/null
@@ -1,1576 +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.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.*;
-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.service.resolver.*;
-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;
-
-	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) throws BundleException {
-		if ((bundledata.getType() & BundleData.TYPE_FRAGMENT) > 0)
-			return new BundleFragment(bundledata, framework);
-		return new BundleHost(bundledata, framework);
-	}
-
-	/**
-	 * 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;
-		bundledata.setBundle(this);
-	}
-
-	/**
-	 * 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()), 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);
-	}
-
-	/**
-	 * Return true if the bundle is starting or active.
-	 *  
-	 */
-	protected boolean isActive() {
-		return ((state & (ACTIVE | STARTING)) != 0);
-	}
-
-	/**
-	 * Return true if the bundle is resolved.
-	 *  
-	 */
-	protected 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();
-			}
-		}
-	}
-
-	/**
-	 * Update this bundle. If the bundle is {@link #ACTIVE}, the bundle will
-	 * be stopped before the update and started after the update successfully
-	 * completes.
-	 * 
-	 * <p>
-	 * The following steps are followed to update 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, the exception is rethrown terminating the update.
-	 * <li>The location for the new version of the bundle is determined from
-	 * either the manifest header <code>Bundle-UpdateLocation</code> if
-	 * available or the original location.
-	 * <li>The location is interpreted in an implementation dependent way
-	 * (typically as a URL) and the new version of the bundle is obtained from
-	 * the location.
-	 * <li>The new version of the bundle is installed. If the framework is
-	 * unable to install the new version of the bundle, the original version of
-	 * the bundle will be restored and a {@link BundleException}will be thrown
-	 * after completion of the remaining steps.
-	 * <li>The state of the bundle is set to {@link #INSTALLED}.
-	 * <li>If the new version of the bundle was successfully installed, a
-	 * {@link BundleEvent}of type {@link BundleEvent#UPDATED}is broadcast.
-	 * <li>If the bundle was originally {@link #ACTIVE}, the updated bundle
-	 * is started as described in the {@link #start()}method. If {@link #start()}
-	 * throws an exception, a {@link FrameworkEvent}of type
-	 * {@link FrameworkEvent#ERROR}is broadcast containing the exception.
-	 * </ol>
-	 * 
-	 * <h5>Preconditions</h5>
-	 * <ul>
-	 * <li>getState() not in {{@link #UNINSTALLED}}.
-	 * </ul>
-	 * <h5>Postconditons, no exceptions thrown</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #INSTALLED},{@link #RESOLVED},
-	 * {@link #ACTIVE}}.
-	 * <li>The bundle has been updated.
-	 * </ul>
-	 * <h5>Postconditions, when an exception is thrown</h5>
-	 * <ul>
-	 * <li>getState() in {{@link #INSTALLED},{@link #RESOLVED},
-	 * {@link #ACTIVE}}.
-	 * <li>Original bundle is still used, no update took place.
-	 * </ul>
-	 * 
-	 * @exception BundleException
-	 *                If the update fails.
-	 * @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()
-	 * @see #start()
-	 */
-	public void update() throws BundleException {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("update location " + bundledata.getLocation()); //$NON-NLS-1$
-		}
-		framework.checkAdminPermission(this, AdminPermission.LIFECYCLE);
-		if ((bundledata.getType() & (BundleData.TYPE_BOOTCLASSPATH_EXTENSION | BundleData.TYPE_FRAMEWORK_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 */
-					String updateLocation = bundledata.getLocation();
-					if (bundledata.getManifest().get(Constants.BUNDLE_UPDATELOCATION) != null) {
-						updateLocation = (String) bundledata.getManifest().get(Constants.BUNDLE_UPDATELOCATION);
-						if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-							Debug.println("   from location: " + updateLocation); //$NON-NLS-1$
-						}
-					}
-					/* Map the identity to a URLConnection */
-					URLConnection source = framework.adaptor.mapLocationToURLConnection(updateLocation);
-					/* call the worker */
-					updateWorkerPrivileged(source, callerContext);
-					return null;
-				}
-			});
-		} finally {
-			completeStateChange();
-		}
-	}
-
-	/**
-	 * Update this bundle from an InputStream.
-	 * 
-	 * <p>
-	 * This method performs all the steps listed in {@link #update()}, except
-	 * the bundle will be read in through the supplied <code>InputStream</code>,
-	 * rather than a <code>URL</code>.
-	 * 
-	 * @param in
-	 *            The InputStream from which to read the new bundle.
-	 * @see #update()
-	 */
-	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)) != 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 {
-					/* Map the InputStream to a URLConnection */
-					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 {
-		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);
-				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 (bundleActive) {
-				try {
-					startWorker(START_TRANSIENT);
-				} 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);
-		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);
-			String[] nativepaths = framework.selectNativeCode(newBundle);
-			if (nativepaths != null) {
-				newBundleData.installNativeCode(nativepaths);
-			}
-			boolean exporting;
-			int st = getState();
-			synchronized (bundles) {
-				exporting = reload(newBundle);
-				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)) != 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, 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) {
-						reload(oldBundle); /* revert to old version */
-					}
-				}
-			} 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)) != 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);
-		try {
-			initializeManifestLocalization();
-		} catch (BundleException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, this, e);
-			// return an empty dictinary.
-			return new Hashtable();
-		}
-		if (localeString == null)
-			localeString = Locale.getDefault().toString();
-		return manifestLocalization.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 FrameworkSecurityManager) {
-					/*
-					 * 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()), 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 != null) {
-				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() {
-		return (bundledata.getLocation() + " [" + 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.
-	 */
-	protected BundleProtectionDomain getProtectionDomain() {
-		return domain;
-	}
-
-	/**
-	 * The bundle must unresolve the permissions.
-	 */
-	protected void unresolvePermissions() {
-		if (domain != null) {
-			BundlePermissionCollection collection = (BundlePermissionCollection) domain.getPermissions();
-			if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-				Debug.println("Unresolving permissions in bundle " + this); //$NON-NLS-1$
-			}
-			collection.unresolvePermissions();
-		}
-	}
-
-	protected Bundle[] getFragments() {
-		checkValid();
-		return null;
-	}
-
-	protected boolean isFragment() {
-		return false;
-	}
-
-	protected BundleLoaderProxy[] 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;
-		}
-		checkValid();
-		if (System.getSecurityManager() == null)
-			return bundledata.getEntry(fileName);
-		final String ffileName = fileName;
-		// TODO this doPrivileged is probably not needed.  The adaptor isolates callers from disk access
-		return (URL) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return bundledata.getEntry(ffileName);
-			}
-		});
-	}
-
-	public String getSymbolicName() {
-		return bundledata.getSymbolicName();
-	}
-
-	public long getLastModified() {
-		return bundledata.getLastModified();
-	}
-
-	public BundleData getBundleData() {
-		return bundledata;
-	}
-
-	public Version getVersion() {
-		return bundledata.getVersion();
-	}
-
-	protected 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 String getResolutionFailureMessage() {
-		BundleDescription bundleDescription = getBundleDescription();
-		if (bundleDescription == null)
-			return Msg.BUNDLE_UNRESOLVED_EXCEPTION;
-		// just a sanity check - this would be an inconsistency between the framework and the state
-		if (bundleDescription.isResolved())
-			throw new IllegalStateException(Msg.BUNDLE_UNRESOLVED_STATE_CONFLICT);
-		return NLS.bind(Msg.BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION, getResolverError(bundleDescription));
-	}
-
-	private String getResolverError(BundleDescription bundleDesc) {
-		ResolverError[] errors = framework.adaptor.getState().getResolverErrors(bundleDesc);
-		if (errors == null || errors.length == 0)
-			return Msg.BUNDLE_UNRESOLVED_EXCEPTION;
-		StringBuffer message = new StringBuffer();
-		for (int i = 0; i < errors.length; i++) {
-			message.append(errors[i].toString());
-			if (i < errors.length - 1)
-				message.append(", "); //$NON-NLS-1$
-		}
-		return message.toString();
-	}
-
-	public int getKeyHashCode() {
-		return (int) getBundleId();
-	}
-
-	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) {
-		try {
-			initializeManifestLocalization();
-		} catch (BundleException ex) {
-			return (null);
-		}
-		if (localeString == null) {
-			localeString = Locale.getDefault().toString();
-		}
-		return manifestLocalization.getResourceBundle(localeString);
-	}
-
-	private void initializeManifestLocalization() throws BundleException {
-		if (manifestLocalization == null) {
-			Dictionary rawHeaders;
-			rawHeaders = bundledata.getManifest();
-			manifestLocalization = new ManifestLocalization(this, rawHeaders);
-		}
-	}
-
-	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 = new FilterImpl("(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 Bundle[] 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 = getEntry(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++].getEntry(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;
-		}
-		
-	}
-}
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 4c30525..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, 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.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/BundleCombinedPermissions.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleCombinedPermissions.java
deleted file mode 100644
index 44d136f..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleCombinedPermissions.java
+++ /dev/null
@@ -1,158 +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.internal.core;
-
-import java.security.Permission;
-import java.util.*;
-
-/**
- * A combination of two BundlePermissionCollection classes.
- *
- */
-final class BundleCombinedPermissions extends BundlePermissionCollection {
-	private static final long serialVersionUID = 4049357526208360496L;
-	// Note that this forces the Enumeration inner class to be loaded as soon as possible (see bug 119069)  
-    private static final Enumeration EMPTY_ENUMERATION = new Enumeration() {
-        public boolean hasMoreElements() {
-            return false;
-        }
-        public Object nextElement() {
-            throw new NoSuchElementException();
-        }
-    };	
-	private BundlePermissionCollection assigned;
-	private BundlePermissionCollection implied;
-	private ConditionalPermissions conditional;
-	private ConditionalPermissionSet restrictedPermissions;
-	private boolean isDefault;
-
-	/**
-	 * Create a permission combiner class.
-	 *
-	 * @param implied The permissions a bundle always has.
-	 */
-	BundleCombinedPermissions(BundlePermissionCollection implied) {
-		this.implied = implied;
-
-		setReadOnly(); /* this doesn't really mean anything */
-	}
-
-	/**
-	 * Assign the administrator defined permissions.
-	 *
-	 * @param assigned The permissions assigned by the administrator.
-	 * @param isDefault If true, the assigned permissions are the default permissions.
-	 */
-	void setAssignedPermissions(BundlePermissionCollection assigned, boolean isDefault) {
-		this.assigned = assigned;
-		this.isDefault = isDefault;
-	}
-
-	/**
-	 * Assign the conditional permissions
-	 * 
-	 * @param conditional The conditional permissions assigned by the administrator
-	 */
-	void setConditionalPermissions(ConditionalPermissions conditional) {
-		this.conditional = conditional;
-	}
-
-	void checkConditionalPermissionInfo(ConditionalPermissionInfoImpl cpi) {
-		if (conditional != null) {
-			conditional.checkConditionalPermissionInfo(cpi);
-		}
-	}
-
-	void unresolvePermissions() {
-		if (assigned != null)
-			assigned.unresolvePermissions();
-		if (implied != null)
-			implied.unresolvePermissions();
-		if (conditional != null)
-			conditional.unresolvePermissions();
-		if (restrictedPermissions != null)
-			restrictedPermissions.unresolvePermissions();
-	}
-
-	/**
-	 * Adds the argument to the collection.
-	 *
-	 * @param		permission java.security.Permission
-	 *					the permission to add to the collection.
-	 * @exception	SecurityException
-	 *					if the collection is read only.
-	 */
-	public void add(Permission permission) {
-		throw new SecurityException();
-	}
-
-	/**
-	 * Answers an enumeration of the permissions
-	 * in the receiver.
-	 *
-	 * @return		Enumeration
-	 *					the permissions in the receiver.
-	 */
-	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;
-	}
-
-	/**
-	 * 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		permission java.security.Permission
-	 *					the permission to check
-	 */
-	public boolean implies(Permission permission) {
-		if ((implied != null) && implied.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;
-		}
-
-		/* If we aren't using the default permissions, then the assigned
-		 * permission are the exact permissions the bundle has. */
-		if (!isDefault && assigned != null)
-			return assigned.implies(permission);
-		if (conditional != null) {
-			boolean conditionalImplies = conditional.implies(permission);
-			if (!conditional.isEmpty()) {
-				return conditionalImplies;
-			}
-		}
-		/* If there aren't any conditional permissions that apply, we use
-		 * the default. */
-		return assigned.implies(permission);
-	}
-
-	/**
-	 * Sets the restricted Permissions of the Bundle. This set of Permissions limit the
-	 * Permissions available to the Bundle.
-	 * 
-	 * @param restrictedPermissions the maximum set of permissions allowed to the Bundle 
-	 * irrespective of the actual permissions assigned to it.
-	 */
-	public void setRestrictedPermissions(ConditionalPermissionSet restrictedPermissions) {
-		this.restrictedPermissions = restrictedPermissions;
-	}
-}
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 d4226a4..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleContextImpl.java
+++ /dev/null
@@ -1,1335 +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.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.EventDispatcher;
-import org.eclipse.osgi.framework.eventmgr.EventListeners;
-import org.eclipse.osgi.internal.profile.Profile;
-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 {
-	public static final String PROP_SCOPE_SERVICE_EVENTS = "osgi.scopeServiceEvents"; //$NON-NLS-1$
-	public static final boolean scopeEvents = Boolean.valueOf(FrameworkProperties.getProperty(PROP_SCOPE_SERVICE_EVENTS, "true")).booleanValue(); //$NON-NLS-1$
-	/** true if the bundle context is still valid */
-	private 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.
-	protected BundleHost bundle;
-
-	/** Internal framework object. */
-	protected Framework framework;
-
-	/** Services that bundle has used. Key is ServiceReference,
-	 Value is ServiceUse */
-	protected Hashtable servicesInUse;
-
-	/** Listener list for bundle's BundleListeners */
-	protected EventListeners bundleEvent;
-
-	/** Listener list for bundle's SynchronousBundleListeners */
-	protected EventListeners bundleEventSync;
-
-	/** Listener list for bundle's ServiceListeners */
-	protected EventListeners serviceEvent;
-
-	/** Listener list for bundle's FrameworkListeners */
-	protected EventListeners frameworkEvent;
-
-	/** The current instantiation of the activator. */
-	protected BundleActivator activator;
-
-	/** private object for locking */
-	protected 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;
-		serviceEvent = null;
-		frameworkEvent = null;
-		servicesInUse = null;
-		activator = null;
-	}
-
-	/**
-	 * Destroy the wrapper. This is called when the bundle is stopped.
-	 *
-	 */
-	protected void close() {
-		valid = false; /* invalidate context */
-
-		synchronized (framework.serviceEvent) {
-			if (serviceEvent != null) {
-				framework.serviceEvent.removeListener(this);
-				serviceEvent = null;
-			}
-		}
-		synchronized (framework.frameworkEvent) {
-			if (frameworkEvent != null) {
-				framework.frameworkEvent.removeListener(this);
-				frameworkEvent = null;
-			}
-		}
-		synchronized (framework.bundleEvent) {
-			if (bundleEvent != null) {
-				framework.bundleEvent.removeListener(this);
-				bundleEvent = null;
-			}
-		}
-		synchronized (framework.bundleEventSync) {
-			if (bundleEventSync != null) {
-				framework.bundleEventSync.removeListener(this);
-				bundleEventSync = null;
-			}
-		}
-
-		/* service's registered by the bundle, if any, are unregistered. */
-		ServiceReference[] publishedReferences = null;
-		synchronized (framework.serviceRegistry) {
-			publishedReferences = framework.serviceRegistry.lookupServiceReferences(this);
-		}
-
-		if (publishedReferences != null) {
-			for (int i = 0; i < publishedReferences.length; i++) {
-				try {
-					((ServiceReferenceImpl) publishedReferences[i]).registration.unregister();
-				} catch (IllegalStateException e) {
-					/* already unregistered */
-				}
-			}
-		}
-
-		/* service's used by the bundle, if any, are released. */
-		if (servicesInUse != null) {
-			int usedSize;
-			ServiceReference[] usedRefs = null;
-
-			synchronized (servicesInUse) {
-				usedSize = servicesInUse.size();
-
-				if (usedSize > 0) {
-					if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-						Debug.println("Releasing services"); //$NON-NLS-1$
-					}
-
-					usedRefs = new ServiceReference[usedSize];
-
-					Enumeration refsEnum = servicesInUse.keys();
-					for (int i = 0; i < usedSize; i++) {
-						usedRefs[i] = (ServiceReference) refsEnum.nextElement();
-					}
-				}
-			}
-
-			for (int i = 0; i < usedSize; i++) {
-				((ServiceReferenceImpl) usedRefs[i]).registration.releaseService(this);
-			}
-
-			servicesInUse = null;
-		}
-
-		bundle = 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 org.osgi.framework.Bundle getBundle() {
-		checkValid();
-
-		return (bundle);
-	}
-
-	/**
-	 * Install a bundle from a location.
-	 *
-	 * The bundle is obtained from the location
-	 * parameter as interpreted by the framework
-	 * in an implementation dependent way. Typically, location
-	 * will most likely be a URL.
-	 *
-	 * @param location The location identifier of the bundle to install.
-	 * @return The Bundle object of the installed bundle.
-	 */
-	public org.osgi.framework.Bundle installBundle(String location) throws BundleException {
-		checkValid();
-		//note AdminPermission is checked after bundle is loaded
-		return framework.installBundle(location);
-	}
-
-	/**
-	 * Install a bundle from an InputStream.
-	 *
-	 * <p>This method performs all the steps listed in
-	 * {@link #installBundle(java.lang.String)}, except the
-	 * bundle's content will be read from the InputStream.
-	 * The location identifier specified will be used
-	 * as the identity of the bundle.
-	 *
-	 * @param location The location identifier of the bundle to install.
-	 * @param in The InputStream from which the bundle will be read.
-	 * @return The Bundle of the installed bundle.
-	 */
-	public org.osgi.framework.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 org.osgi.framework.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 org.osgi.framework.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 (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("addServiceListener[" + bundle + "](" + listenerName + ", \"" + filter + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-
-		ServiceListener filteredListener = new FilteredServiceListener(filter, listener, this);
-
-		synchronized (framework.serviceEvent) {
-			if (serviceEvent == null) {
-				serviceEvent = new EventListeners();
-				framework.serviceEvent.addListener(this, this);
-			}
-
-			serviceEvent.addListener(listener, filteredListener);
-		}
-	}
-
-	/**
-	 * 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 (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(listener)); //$NON-NLS-1$
-			Debug.println("removeServiceListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-
-		synchronized (framework.serviceEvent) {
-			if (serviceEvent != null) {
-				serviceEvent.removeListener(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 (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) {
-				if (bundleEventSync == null) {
-					bundleEventSync = new EventListeners();
-					framework.bundleEventSync.addListener(this, this);
-				}
-
-				bundleEventSync.addListener(listener, listener);
-			}
-		} else {
-			synchronized (framework.bundleEvent) {
-				if (bundleEvent == null) {
-					bundleEvent = new EventListeners();
-					framework.bundleEvent.addListener(this, this);
-				}
-
-				bundleEvent.addListener(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 (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.removeListener(listener);
-				}
-			}
-		} else {
-			synchronized (framework.bundleEvent) {
-				if (bundleEvent != null) {
-					bundleEvent.removeListener(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 (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) {
-			if (frameworkEvent == null) {
-				frameworkEvent = new EventListeners();
-				framework.frameworkEvent.addListener(this, this);
-			}
-
-			frameworkEvent.addListener(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 (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.removeListener(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 ServiceRegistrationImpl} object is returned.
-	 * The {@link ServiceRegistrationImpl} 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 ServiceRegistrationImpl} 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 ServiceRegistrationImpl#setProperties ServiceRegistration.setProperties}
-	 *        method.
-	 *        This parameter may be <code>null</code> if the service has no properties.
-	 * @return A {@link ServiceRegistrationImpl} 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 ServiceRegistrationImpl
-	 * @see ServiceFactory
-	 */
-	public org.osgi.framework.ServiceRegistration registerService(String[] clazzes, Object service, Dictionary properties) {
-		checkValid();
-
-		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. */
-		String[] copy = new String[clazzes.length];
-		// doing this the hard way so we can intern the strings
-		for (int i = clazzes.length - 1; i >= 0; i--)
-			copy[i] = clazzes[i].intern();
-		clazzes = copy;
-
-		/* check for ServicePermissions. */
-		framework.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)); 
-			}
-		}
-
-		return (createServiceRegistration(clazzes, service, properties));
-	}
-
-	//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; i < clazzes.length; 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; i < interfaces.length; i++)
-			if (!extensiveCheckServiceClass(clazz, interfaces[i]))
-				return false;
-		Class superClazz = serviceClazz.getSuperclass();
-		if (superClazz != null)
-			if (!extensiveCheckServiceClass(clazz, superClazz))
-				return false;
-		return true;
-	}
-
-	/**
-	 * Create a new ServiceRegistration object. This method is used so that it may be overridden
-	 * by a secure implementation.
-	 *
-	 * @param clazzes The class names under which the service can be located.
-	 * @param service The service object or a {@link ServiceFactory} object.
-	 * @param properties The properties for this service.
-	 * @return A {@link ServiceRegistrationImpl} object for use by the bundle.
-	 */
-	protected ServiceRegistrationImpl createServiceRegistration(String[] clazzes, Object service, Dictionary properties) {
-		return (new ServiceRegistrationImpl(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 org.osgi.framework.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 FilterImpl}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 org.osgi.framework.ServiceReference[] getServiceReferences(String clazz, String filter) throws InvalidSyntaxException {
-		checkValid();
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("getServiceReferences(" + clazz + ", \"" + filter + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-		return (framework.getServiceReferences(clazz, filter, this, false));
-	}
-
-	public ServiceReference[] getAllServiceReferences(String clazz, String filter) throws InvalidSyntaxException {
-		checkValid();
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("getAllServiceReferences(" + clazz + ", \"" + filter + "\")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		}
-		return (framework.getServiceReferences(clazz, filter, this, true));
-	}
-
-	/**
-	 * Get a service reference.
-	 * Retrieves a {@link ServiceReferenceImpl} 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 ServiceReferenceImpl}
-	 * is returned.
-	 *
-	 * @param clazz The class name which the service must implement.
-	 * @return A {@link ServiceReferenceImpl} object, or <code>null</code>
-	 * if no services are registered which implement the named class.
-	 * @see #getServiceReferences
-	 */
-	public org.osgi.framework.ServiceReference getServiceReference(String clazz) {
-		checkValid();
-
-		if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-			Debug.println("getServiceReference(" + clazz + ")"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-
-		try {
-			ServiceReference[] references = framework.getServiceReferences(clazz, null, this, false);
-
-			if (references != null) {
-				int index = 0;
-
-				int length = references.length;
-
-				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++) {
-						int ranking = ((ServiceReferenceImpl) references[i]).getRanking();
-
-						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 = ((ServiceReferenceImpl) references[i]).getId();
-
-								if (id < minId) {
-									index = i;
-									minId = id;
-								}
-							}
-						}
-					}
-				}
-
-				return (references[index]);
-			}
-		} 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);
-	}
-
-	/**
-	 * 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(org.osgi.framework.ServiceReference reference) {
-		checkValid();
-
-		synchronized (contextLock) {
-			if (servicesInUse == null)
-				// Cannot predict how many services a bundle will use, start with a small table.
-				servicesInUse = new Hashtable(10);
-		}
-
-		ServiceRegistrationImpl registration = ((ServiceReferenceImpl) reference).registration;
-
-		framework.checkGetServicePermission(registration.clazzes);
-
-		return registration.getService(BundleContextImpl.this);
-	}
-
-	/**
-	 * 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(org.osgi.framework.ServiceReference reference) {
-		checkValid();
-
-		ServiceRegistrationImpl registration = ((ServiceReferenceImpl) reference).registration;
-
-		return registration.ungetService(BundleContextImpl.this);
-	}
-
-	/**
-	 * 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 org.osgi.framework.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$
-						/* Start the bundle synchronously */
-						bundleActivator.start(BundleContextImpl.this);
-						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()}), t); //$NON-NLS-1$ //$NON-NLS-2$ 
-		} finally {
-			if (Profile.PROFILE && Profile.STARTUP)
-				Profile.logExit("BundleContextImpl.startActivator()"); //$NON-NLS-1$
-		}
-
-	}
-
-	/**
-	 * Call bundle's BundleActivator.stop()
-	 * This method is called by Bundle.stopWorker to stop the bundle.
-	 *
-	 * @exception org.osgi.framework.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) {
-						/* Stop the bundle synchronously */
-						activator.stop(BundleContextImpl.this);
-					}
-					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()}), t); //$NON-NLS-1$ //$NON-NLS-2$ 
-		} finally {
-			activator = null;
-		}
-	}
-
-	/**
-	 * 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 ServiceRegistrationImpl
-	 * @see ServiceReferenceImpl
-	 */
-	protected ServiceReference[] getRegisteredServices() {
-		ServiceReference[] services = null;
-
-		synchronized (framework.serviceRegistry) {
-			services = framework.serviceRegistry.lookupServiceReferences(this);
-			if (services == null) {
-				return null;
-			}
-			int removed = 0;
-			for (int i = services.length - 1; i >= 0; i--) {
-				ServiceReferenceImpl ref = (ServiceReferenceImpl) services[i];
-				String[] classes = ref.getClasses();
-				try { /* test for permission to the classes */
-					framework.checkGetServicePermission(classes);
-				} catch (SecurityException se) {
-					services[i] = null;
-					removed++;
-				}
-			}
-			if (removed > 0) {
-				ServiceReference[] temp = services;
-				services = new ServiceReference[temp.length - removed];
-				for (int i = temp.length - 1; i >= 0; i--) {
-					if (temp[i] == null)
-						removed--;
-					else
-						services[i - removed] = temp[i];
-				}
-			}
-		}
-		return (services);
-
-	}
-
-	/**
-	 * Provides a list of {@link ServiceReferenceImpl}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 ServiceReferenceImpl} or <code>null</code>.
-	 * @exception java.lang.IllegalStateException If the
-	 * bundle has been uninstalled.
-	 * @see ServiceReferenceImpl
-	 */
-	protected ServiceReferenceImpl[] getServicesInUse() {
-		if (servicesInUse == null) {
-			return (null);
-		}
-
-		synchronized (servicesInUse) {
-			int size = servicesInUse.size();
-
-			if (size == 0) {
-				return (null);
-			}
-
-			ServiceReferenceImpl[] references = new ServiceReferenceImpl[size];
-			int refcount = 0;
-
-			Enumeration refsEnum = servicesInUse.keys();
-
-			for (int i = 0; i < size; i++) {
-				ServiceReferenceImpl reference = (ServiceReferenceImpl) refsEnum.nextElement();
-
-				try {
-					framework.checkGetServicePermission(reference.registration.clazzes);
-				} catch (SecurityException se) {
-					continue;
-				}
-
-				references[refcount] = reference;
-				refcount++;
-			}
-
-			if (refcount < size) {
-				if (refcount == 0) {
-					return (null);
-				}
-
-				ServiceReferenceImpl[] refs = references;
-				references = new ServiceReferenceImpl[refcount];
-
-				System.arraycopy(refs, 0, references, 0, refcount);
-			}
-
-			return (references);
-		}
-	}
-
-	/**
-	 * 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;
-		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 Framework.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;
-					}
-				}
-			}
-		} 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);
-			}
-		}
-	}
-
-	/**
-	 * Check for permission to listen to a service.
-	 */
-	protected boolean hasListenServicePermission(ServiceEvent event) {
-		ProtectionDomain domain = bundle.getProtectionDomain();
-
-		if (domain != null) {
-			ServiceReferenceImpl reference = (ServiceReferenceImpl) event.getServiceReference();
-
-			String[] names = reference.getClasses();
-
-			int len = names.length;
-
-			for (int i = 0; i < len; i++) {
-				if (domain.implies(new ServicePermission(names[i], ServicePermission.GET))) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		return (true);
-	}
-
-	/**
-	 * 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 org.osgi.framework.Filter createFilter(String filter) throws InvalidSyntaxException {
-		checkValid();
-
-		return (new FilterImpl(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.
-	 */
-	protected 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;
-	}
-
-	boolean isAssignableTo(ServiceReferenceImpl reference) {
-		if (!scopeEvents)
-			return true;
-		String[] clazzes = reference.getClasses();
-		for (int i = 0; i < clazzes.length; i++)
-			if (!reference.isAssignableTo(bundle, clazzes[i]))
-				return false;
-		return true;
-	}
-}
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 69238ef..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleFragment.java
+++ /dev/null
@@ -1,332 +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.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.util.NLS;
-import org.osgi.framework.*;
-
-public class BundleFragment extends AbstractBundle {
-
-	/** The resolved host that this fragment is attached to */
-	protected BundleLoaderProxy[] 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.permissionAdmin != null) {
-				domain = framework.permissionAdmin.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) {
-					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.permissionAdmin != null)
-			domain = framework.permissionAdmin.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) {
-					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();
-			}
-			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)); 
-	}
-
-	/**
-	 * 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)); 
-	}
-
-	/**
-	 * 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 ServiceRegistrationImpl
-	 * @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;
-	}
-
-	protected BundleLoaderProxy[] getHosts() {
-		return hosts;
-	}
-
-	protected boolean isFragment() {
-		return true;
-	}
-
-	/**
-	 * Adds a host bundle for this fragment.
-	 * @param value the BundleHost to add to the set of host bundles
-	 */
-	protected boolean addHost(BundleLoaderProxy host) {
-		if (host == null) 
-			return false;
-		try {
-			((BundleHost) host.getBundleHost()).attachFragment(this);
-		} catch (BundleException be) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, host.getBundleHost(), be);
-			return false;
-		}
-		if (hosts == null) {
-			hosts = new BundleLoaderProxy[] {host};
-			return true;
-		}
-		for (int i = 0; i < hosts.length; i++) {
-			if (host.getBundleHost() == hosts[i].getBundleHost())
-				return true; // already a host
-		}
-		BundleLoaderProxy[] newHosts = new BundleLoaderProxy[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 8f05137..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleHost.java
+++ /dev/null
@@ -1,617 +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.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.service.resolver.BundleDescription;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-public class BundleHost extends AbstractBundle {
-	/** 
-	 * 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.permissionAdmin != null) {
-				domain = framework.permissionAdmin.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)
-					// make sure the BundleLoader is created.
-					curProxy.getBundleLoader().createClassLoader();
-				else
-					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.permissionAdmin != null)
-			domain = framework.permissionAdmin.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) {
-			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)
-					// make sure the BundleLoader is created.
-					curProxy.getBundleLoader().createClassLoader();
-				else
-					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();
-			}
-		}
-		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
-					framework.secureAction.start(this, START_TRANSIENT);
-				} 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();
-		}
-		if (!framework.active || (state & ACTIVE) != 0)
-			return;
-
-		if (state == INSTALLED) {
-			if (!framework.packageAdmin.resolveBundles(new Bundle[] {this}))
-				throw new BundleException(getResolutionFailureMessage());
-		}
-
-		if (getStartLevel() > framework.startLevelManager.getStartLevel()){
-			if ((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, new BundleStatusException(msg, StatusException.CODE_WARNING, this));
-			}
-			return;
-		}
-		if ((options & START_ACTIVATION_POLICY) != 0 && (state & STARTING) == 0) {
-			// the bundle must use the activation policy here.
-			if ((bundledata.getStatus() & Constants.BUNDLE_LAZY_START) != 0) {
-				// now we must publish the LAZY_ACTIVATION event and return
-				state = STARTING;
-				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$
-		}
-
-		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();
-
-			if (framework.active) {
-				state = ACTIVE;
-
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.println("->started " + this); //$NON-NLS-1$
-				}
-
-				framework.publishBundleEvent(BundleEvent.STARTED, this);
-			}
-
-		} catch (BundleException e) {
-			// we must fire the stopping event
-			state = STOPPING;
-			framework.publishBundleEvent(BundleEvent.STOPPING, this);
-
-			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()));
-		}
-	}
-
-	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)
-			return true;
-		if (!isResolved())
-			// should never transition from UNRESOLVED -> STARTING
-			return false;
-		// now we can publish the LAZY_ACTIVATION event
-		state = STARTING;
-		framework.publishBundleEvent(BundleEvent.LAZY_ACTIVATION, this);
-		return 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();
-		}
-		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 {
-				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);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Provides a list of {@link ServiceReferenceImpl}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 ServiceReferenceImpl} or <code>null</code>.
-	 * @exception java.lang.IllegalStateException If the
-	 * bundle has been uninstalled.
-	 * @see ServiceRegistrationImpl
-	 * @see ServiceReferenceImpl
-	 */
-	public org.osgi.framework.ServiceReference[] getRegisteredServices() {
-		checkValid();
-
-		if (context == null) {
-			return (null);
-		}
-
-		return (context.getRegisteredServices());
-	}
-
-	/**
-	 * Provides a list of {@link ServiceReferenceImpl}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 ServiceReferenceImpl} or <code>null</code>.
-	 * @exception java.lang.IllegalStateException If the
-	 * bundle has been uninstalled.
-	 * @see ServiceReferenceImpl
-	 */
-	public org.osgi.framework.ServiceReference[] getServicesInUse() {
-		checkValid();
-
-		if (context == null) {
-			return (null);
-		}
-
-		return (context.getServicesInUse());
-	}
-
-	protected Bundle[] getFragments() {
-		synchronized (framework.bundles) {
-			if (fragments == null)
-				return null;
-			Bundle[] result = new Bundle[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()));
-					}
-					newFragments[i] = fragment;
-					inserted = true;
-				}
-				newFragments[inserted ? i + 1 : i] = fragments[i];
-			}
-			if (!inserted)
-				newFragments[newFragments.length - 1] = fragment;
-			fragments = newFragments;
-		}
-	}
-
-	protected BundleLoader getBundleLoader() {
-		BundleLoaderProxy curProxy = getLoaderProxy();
-		return curProxy == null ? null : curProxy.getBundleLoader();
-	}
-
-	protected 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;
-	}
-
-	static 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/framework/internal/core/BundleLoader.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleLoader.java
deleted file mode 100644
index 9d18082..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleLoader.java
+++ /dev/null
@@ -1,1094 +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.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.util.KeyedHashSet;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.FrameworkEvent;
-
-/**
- * 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.framework.internal.core.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 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 boolean USE_GLOBAL_DEADLOCK_AVOIDANCE_LOCK = "true".equals(FrameworkProperties.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;
-	/* 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 = exports.length > 10 ? (Collection) new HashSet(exports.length) : new ArrayList(exports.length);
-			for (int i = 0; i < exports.length; i++) {
-				if (proxy.forceSourceCreation(exports[i])) {
-					if (!exportedPackages.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);
-					}
-				}
-				exportedPackages.add(exports[i].getName());
-			}
-		} else {
-			exportedPackages = null;
-		}
-		//This is the fastest way to access to the description for fragments since the hostdescription.getFragments() is slow
-		org.osgi.framework.Bundle[] fragmentObjects = bundle.getFragments();
-		BundleDescription[] fragments = new BundleDescription[fragmentObjects == null ? 0 : fragmentObjects.length];
-		for (int i = 0; i < fragments.length; i++)
-			fragments[i] = ((AbstractBundle) 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) : null;
-	}
-
-	private synchronized KeyedHashSet getImportedSources() {
-		if ((loaderFlags & FLAG_IMPORTSINIT) != 0)
-			return importedSources;
-		ExportPackageDescription[] packages = proxy.getBundleDescription().getResolvedImports();
-		if (packages != null && packages.length > 0) {
-			if (importedSources == null)
-				importedSources = new KeyedHashSet(packages.length, false);
-			for (int i = 0; i < packages.length; i++) {
-				PackageSource source = createExportPackageSource(packages[i]);
-				if (source != null)
-					importedSources.add(source);
-			}
-		}
-		loaderFlags |= FLAG_IMPORTSINIT;
-		return importedSources;
-	}
-
-	final PackageSource createExportPackageSource(ExportPackageDescription export) {
-		BundleLoaderProxy exportProxy = getLoaderProxy(export.getExporter());
-		if (exportProxy == null)
-			// TODO log error!!
-			return null;
-		PackageSource requiredSource = exportProxy.getBundleLoader().findRequiredSource(export.getName());
-		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
-	 */
-	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.framework.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();
-		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 Class loadClass(String name) throws ClassNotFoundException {
-		return createClassLoader().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);
-	}
-
-	final synchronized ClassLoader getParentClassLoader() {
-		if (parent != null)
-			return parent;
-		createClassLoader();
-		return parent;
-	}
-
-	final synchronized BundleClassLoader createClassLoader() {
-		if (classloader != null)
-			return classloader;
-		try {
-			String[] classpath = bundle.getBundleData().getClassPath();
-			if (classpath != null) {
-				BundleClassLoader bcl = createBCLPrevileged(bundle.getProtectionDomain(), classpath);
-				parent = getParentPrivileged(bcl);
-				classloader = bcl;
-			} else {
-				bundle.framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, new BundleException(Msg.BUNDLE_NO_CLASSPATH_MATCH));
-			}
-		} catch (BundleException e) {
-			bundle.framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-		}
-		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 && 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;
-		// 3) search the imported packages
-		PackageSource source = findImportedSource(pkgName);
-		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);
-		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);
-			}
-		}
-
-		// do buddy policy loading
-		if (result == null && policy != null)
-			result = policy.doBuddyClassLoading(name);
-		// hack to support backwards compatibiility for bootdelegation
-		if (parentCL != null && checkParent && !bootDelegation && bundle.framework.compatibiltyBootDelegation && result == null && source == null && !isExportedPackage(pkgName))
-			// we don't need to continue if a CNFE is thrown here.
-			return parentCL.loadClass(name);
-		// last resort; do class context trick to work around VM bugs
-		if (parentCL != null && result == null && !bootDelegation && isRequestFromVM())
-			result = parentCL.loadClass(name);
-		if (result == null)
-			throw new ClassNotFoundException(name);
-		return result;
-	}
-
-	private boolean isRequestFromVM() {
-		if (bundle.framework.bootDelegateAll || !bundle.framework.contextBootDelegation)
-			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 (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;
-		// 3) search the imported packages
-		PackageSource source = findImportedSource(pkgName);
-		if (source != null)
-			// 3) found import source terminate search at the source
-			return source.getResource(name);
-		// 4) search the required bundles
-		source = findRequiredSource(pkgName);
-		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);
-		}
-
-		// do buddy policy loading
-		if (result == null && policy != null)
-			result = policy.doBuddyResourceLoading(name);
-		// hack to support backwards compatibiility for bootdelegation
-		if (parentCL != null && checkParent && !bootDelegation && bundle.framework.compatibiltyBootDelegation && result == null && source == null && !isExportedPackage(pkgName))
-			// we don't need to continue if the resource is not found here
-			return parentCL.getResource(name);
-		// last resort; do class context trick to work around VM bugs
-		if (parentCL != null && result == null && !bootDelegation && isRequestFromVM())
-			result = parentCL.getResource(name);
-		return result;
-	}
-
-	boolean isBootDelegationPackage(String name) {
-		if (bundle.framework.bootDelegateAll)
-			return true;
-		if (bundle.framework.bootDelegation != null)
-			for (int i = 0; i < bundle.framework.bootDelegation.length; i++)
-				if (name.equals(bundle.framework.bootDelegation[i]))
-					return true;
-		if (bundle.framework.bootDelegationStems != null)
-			for (int i = 0; i < bundle.framework.bootDelegationStems.length; i++)
-				if (name.startsWith(bundle.framework.bootDelegationStems[i]))
-					return true;
-		return false;
-	}
-
-	/**
-	 * 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;
-		// start at step 3 because of the comment above about ClassLoader#getResources
-		// 3) search the imported packages
-		PackageSource source = findImportedSource(pkgName);
-		if (source != null)
-			// 3) found import source terminate search at the source
-			return source.getResources(name);
-		// 4) search the required bundles
-		source = findRequiredSource(pkgName);
-		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 (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.
-	 */
-	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) || 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));
-	}
-
-	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 = bundle.getBundleData().findLibrary(name);
-		if (result != null)
-			return result;
-
-		org.osgi.framework.Bundle[] fragments = bundle.getFragments();
-		if (fragments == null || fragments.length == 0)
-			return null;
-
-		// look in fragments imports ...
-		for (int i = 0; i < fragments.length; i++) {
-			result = ((AbstractBundle) fragments[i]).getBundleData().findLibrary(name);
-			if (result != null)
-				return result;
-		}
-		return result;
-	}
-
-	/*
-	 * Return the bundle we are associated with.
-	 */
-	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
-		org.osgi.framework.Bundle[] fragments = bundle.getFragments();
-		if (fragments != null)
-			for (int i = 0; i < fragments.length; i++) {
-				AbstractBundle fragment = (AbstractBundle) fragments[i];
-				try {
-					bcl.attachFragment(fragment.getBundleData(), fragment.domain, fragment.getBundleData().getClassPath());
-				} catch (BundleException be) {
-					bundle.framework.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);
-		// 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)) {
-			if (local instanceof BundleLoaderProxy.ReexportPackageSource)
-				local = new SingleSourcePackage(packageName, -1, proxy);
-			result.add(local);
-		}
-	}
-
-	final boolean isExportedPackage(String name) {
-		return exportedPackages == null ? false : exportedPackages.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()]));
-	}
-
-	final synchronized void attachFragment(BundleFragment fragment) throws BundleException {
-		if (classloader == null)
-			return;
-		String[] classpath = fragment.getBundleData().getClassPath();
-		if (classpath != null)
-			classloader.attachFragment(fragment.getBundleData(), fragment.domain, classpath);
-	}
-
-	/*
-	 * 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);
-		if (result != null)
-			return result;
-		// Note that dynamic imports are not checked to avoid aggressive wiring (bug 105779)  
-		return findRequiredSource(pkgName);
-	}
-
-	private PackageSource findImportedSource(String pkgName) {
-		KeyedHashSet imports = getImportedSources();
-		if (imports == null)
-			return null;
-		synchronized (imports) {
-			return (PackageSource) imports.getByKey(pkgName);
-		}
-	}
-
-	private PackageSource findDynamicSource(String pkgName) {
-		if (isDynamicallyImported(pkgName)) {
-			ExportPackageDescription exportPackage = bundle.framework.adaptor.getState().linkDynamicImport(proxy.getBundleDescription(), pkgName);
-			if (exportPackage != null) {
-				PackageSource source = createExportPackageSource(exportPackage);
-				synchronized (this) {
-					if (importedSources == null)
-						importedSources = new KeyedHashSet(false);
-				}
-				synchronized (importedSources) {
-					importedSources.add(source);
-				}
-				return source;
-			}
-		}
-		return null;
-	}
-
-	private PackageSource findRequiredSource(String pkgName) {
-		if (requiredBundles == null)
-			return null;
-		synchronized (requiredSources) {
-			PackageSource result = (PackageSource) requiredSources.getByKey(pkgName);
-			if (result != null)
-				return result.isNullSource() ? null : result;
-		}
-		KeyedHashSet 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.
-	 */
-	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 (localSource instanceof BundleLoaderProxy.ReexportPackageSource)
-			localSource = new SingleSourcePackage(pkgName, -1, proxy);
-		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();
-			}
-		}
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleLoaderProxy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleLoaderProxy.java
deleted file mode 100644
index e3acede..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleLoaderProxy.java
+++ /dev/null
@@ -1,265 +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.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import org.eclipse.osgi.framework.util.KeyedHashSet;
-import org.eclipse.osgi.service.resolver.*;
-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 {
-	// 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);
-	}
-
-	synchronized BundleLoader getBundleLoader() {
-		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.framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-				return null;
-			}
-		}
-		return loader;
-	}
-
-	BundleLoader getBasicBundleLoader() {
-		return loader;
-	}
-
-	AbstractBundle getBundleHost() {
-		return bundle;
-	}
-
-	void setStale() {
-		stale = true;
-	}
-
-	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 null;
-		ArrayList result = new ArrayList(dependents.length);
-		for (int i = 0; i < dependents.length; i++)
-			addRequirers(dependents[i], result);
-		return result.size() == 0 ? null : (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, -1, this);
-			synchronized (pkgSources) {
-				pkgSources.add(pkgSource);
-			}
-		}
-		return pkgSource;
-	}
-
-	boolean inUse() {
-		return description.getDependents().length > 0;
-	}
-
-	boolean forceSourceCreation(ExportPackageDescription export) {
-		if (!export.isRoot())
-			return true;
-		boolean strict = Constants.STRICT_MODE.equals(bundle.framework.adaptor.getState().getPlatformProperties()[0].get(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)
-	PackageSource createPackageSource(ExportPackageDescription export, boolean storeSource) {
-		PackageSource pkgSource = null;
-		// check to see if it is a reexport
-		if (!export.isRoot()) {
-			pkgSource = new ReexportPackageSource(export.getName());
-		} else {
-			// 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(bundle.framework.adaptor.getState().getPlatformProperties()[0].get(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) {
-				ExportPackageDescription[] exports = description.getExportPackages();
-				int index = -1;
-				int first = -1;
-				for (int i = 0; i < exports.length; i++) {
-					if (first == -1 && exports[i].getName().equals(export.getName()))
-						first = i;
-					if (exports[i] == export && first != i) {
-						index = i;
-						break;
-					}
-				}
-				pkgSource = new FilteredSourcePackage(export.getName(), index, 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());
-		}
-
-		return pkgSource;
-	}
-
-	class ReexportPackageSource extends PackageSource {
-		public ReexportPackageSource(String id) {
-			super(id);
-		}
-
-		public synchronized SingleSourcePackage[] getSuppliers() {
-			PackageSource source = getBundleLoader().getPackageSource(id);
-			if (source == null)
-				return null;
-			return source.getSuppliers();
-		}
-
-		public Class loadClass(String name) {
-			try {
-				return getBundleLoader().findClass(name, false);
-			} catch (ClassNotFoundException e) {
-				return null;
-			}
-		}
-
-		public URL getResource(String name) {
-			return getBundleLoader().findResource(name, false);
-		}
-
-		public Enumeration getResources(String name) throws IOException {
-			return getBundleLoader().findResources(name);
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleNativeCode.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleNativeCode.java
deleted file mode 100644
index e5e3e4c..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleNativeCode.java
+++ /dev/null
@@ -1,417 +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.core;
-
-import java.util.Enumeration;
-import java.util.Vector;
-import org.eclipse.osgi.service.resolver.VersionRange;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-import org.osgi.framework.Constants;
-
-/**
- * This class represents a description of native code.
- * 
- * Native Code dependencies
- * 
- * The Bundle-NativeCode header allows a bundle to carry the native code it
- * needs, and make use of it when it is installed. The bundle must have
- * RuntimePermission in order to run native code in the Framework. The value of
- * the header must conform to the following syntax:
- * 
- * 
- * Bundle-NativeCode: nativecode-clause ( , nativecode-clause)*
- * nativecode-clause: nativepaths ( ; env-parameter )* nativepaths: nativepath ( ;
- * nativepath )* env-parameter: ( processordef | osnamedef | osversiondef |
- * languagedef ) processordef: <I>processor= </I>token osnamedef: <I>osname=
- * </I>token osversiondef: <I>osversion= </I>token languagedef: <I>language=
- * </I>token
- * 
- * For example:
- * 
- * Bundle-NativeCode: http.dll ; osname=Win95; processor=x86; language=en,
- * libhttp.so; osname=Solaris; processor=sparc
- * 
- * The Bundle-NativeCode header allows a bundle programmer to specify an
- * environment, and to declare what native code libraries it carries for that
- * specific environment. The environment is characterized by the following
- * properties:
- * 
- * <UL>
- * <LI><CODE>processor</CODE> The processor on which the hosting the
- * Framework is running. It is compared against <CODE>
- * org.osgi.framework.processor</CODE>.
- * <LI><CODE>osname</CODE> The operating system name. It is compared against
- * <CODE>org.osgi.framework.os.name</CODE>.
- * <LI><CODE>selection-filter</CODE> An optional filter that can be used to
- * match against system properties. If the filter does not match then the
- * native code clause will not be selected.
- * <LI><CODE>osversion</CODE> The version of the operating system. It is
- * compared against <CODE>org.osgi.framework.os.version</CODE>.
- * <LI><CODE>language</CODE> The language. It is compared against <CODE>
- * org.osgi.framework.language</CODE>.
- * </UL>
- * 
- * These properties should follow the conventions and values defined in the
- * "Open Software Description" specification.
- * 
- * The Framework uses the following algorithm to find the "best" matching
- * native code clause:
- * 
- * <ol>
- * <li>Pick the clauses with a matching processor and operating system with
- * the one the Framework runs on. If no clause matches both the required
- * processor and operating system, the bundle installation/activation fails. If
- * only one clause matches, it can be used, otherwise, remaining steps are
- * executed.</li>
- * <li>Pick the clauses that best match the operating system version. If they
- * match each other exactly, that clause is considered the best match. If there
- * is only one clause with an exact match, it can be used. If there are more
- * than one clause that matches the property, these clauses will be picked to
- * perform the next step. Operating system versions are taken to be backward
- * compatible. If there is no exact match in the clauses, clauses with
- * operating system versions lower than the value specified in
- * org.osgi.framework.osversion will be picked. If there is only one clause
- * which has a compatible operating system version, it can be used. Otherwise,
- * all clauses with compatible operating system versions will go through the
- * next step. If no clause has a matching or compatible operating system
- * version, pick the clause that does not have operating system version
- * specified. If that is not possible, the bundle installation fails.</li>
- * <li>Pick the clause that best matches the language. If more than one clause
- * remains at that point, then the Framework is free to pick amongst them
- * randomly. If no clauses have the exact match with the value of the property,
- * pick the clause that does not have language specified. If that is not
- * possible, the bundle installation fails.</li>
- * </ol>
- *  
- */
-public class BundleNativeCode {
-	/**
-	 * The Native Code paths for the Native Code entry
-	 */
-	private Attribute nativepaths;
-	/**
-	 * The processor attribute for this Native Code entry
-	 */
-	private Attribute processor;
-	/**
-	 * The osname attribute for this Native Code entry
-	 */
-	private Attribute osname;
-	/**
-	 * The language attribute for this Native Code entry
-	 */
-	private Attribute language;
-	/**
-	 * The osversion attribute for this Native Code entry
-	 */
-	private Attribute osversion;
-	/**
-	 * The filter attribute for this Native Code entry
-	 */
-	private String filterString;
-	/**
-	 * The Framework for this BundleNativeCode
-	 */
-	private AbstractBundle bundle;
-
-	/**
-	 * The AliasMapper used to alias OS Names.
-	 */
-	private static AliasMapper aliasMapper = Framework.aliasMapper;
-
-	/**
-	 * Constructor for BundleNativeCode. It reads bundle native code data from
-	 * the manifest file.
-	 *  
-	 */
-	protected BundleNativeCode(ManifestElement element, AbstractBundle bundle) {
-		this.bundle = bundle;
-		String[] nativePaths = element.getValueComponents();
-		for (int i = 0; i < nativePaths.length; i++) {
-			addPath(nativePaths[i]);
-		}
-		setAttribute(element, Constants.BUNDLE_NATIVECODE_OSNAME);
-		setAttribute(element, Constants.BUNDLE_NATIVECODE_PROCESSOR);
-		setAttribute(element, Constants.BUNDLE_NATIVECODE_OSVERSION);
-		setAttribute(element, Constants.BUNDLE_NATIVECODE_LANGUAGE);
-		setAttribute(element, Constants.SELECTION_FILTER_ATTRIBUTE);
-	}
-
-	private void setAttribute(ManifestElement element, String attribute) {
-		String[] attrValues = element.getAttributes(attribute);
-		if (attrValues != null) {
-			for (int i = 0; i < attrValues.length; i++) {
-				addAttribute(attribute, attrValues[i]);
-			}
-		}
-	}
-
-	/**
-	 * Returns the native code paths.
-	 * 
-	 * @return Vector of String code paths.
-	 */
-	public String[] getPaths() {
-		if (nativepaths == null) {
-			return null;
-		}
-		String[] paths = new String[nativepaths.size()];
-		nativepaths.toArray(paths);
-		return (paths);
-	}
-
-	/**
-	 * addPath is used to add a new element to the list of native files.
-	 * 
-	 * @param nativepath
-	 *            new native file
-	 */
-	protected void addPath(String nativepath) {
-		if (nativepaths == null) {
-			nativepaths = new Attribute();
-		}
-		nativepaths.addElement(nativepath);
-	}
-
-	/**
-	 * addAttribute is used to add the specification-version string to the
-	 * package description. It is the only key supported at this time.
-	 * 
-	 * @param key
-	 *            attribute key name
-	 * @param value
-	 *            attribute value name
-	 */
-	protected synchronized void addAttribute(String key, String value) {
-		if (key.equals(Constants.BUNDLE_NATIVECODE_PROCESSOR)) {
-			if (processor == null) {
-				processor = new Attribute();
-			}
-			processor.addElement(aliasMapper.aliasProcessor(value));
-			return;
-		}
-		if (key.equals(Constants.BUNDLE_NATIVECODE_OSNAME)) {
-			if (osname == null) {
-				osname = new Attribute();
-			}
-			osname.addElement(aliasMapper.aliasOSName(value));
-			return;
-		}
-		if (key.equals(Constants.BUNDLE_NATIVECODE_OSVERSION)) {
-			if (osversion == null) {
-				osversion = new Attribute();
-			}
-			osversion.addElement(new VersionRange(value));
-			return;
-		}
-		if (key.equals(Constants.SELECTION_FILTER_ATTRIBUTE)) {
-			if (filterString == null) {
-				filterString = value;
-			}
-			return;
-		}
-		if (key.equals(Constants.BUNDLE_NATIVECODE_LANGUAGE)) {
-			if (language == null) {
-				language = new Attribute();
-			}
-			language.addElement(value.toLowerCase());
-			return;
-		}
-	}
-
-	/**
-	 * Override toString. Return a String representation of this object
-	 * 
-	 * @return String representation of the object
-	 */
-	public String toString() {
-		int size = nativepaths.size();
-		StringBuffer sb = new StringBuffer(50 * size);
-		for (int i = 0; i < size; i++) {
-			if (i > 0) {
-				sb.append(';');
-			}
-			sb.append(nativepaths.elementAt(i).toString());
-		}
-		if (processor != null) {
-			size = processor.size();
-			for (int i = 0; i < size; i++) {
-				sb.append(';');
-				sb.append(Constants.BUNDLE_NATIVECODE_PROCESSOR);
-				sb.append('=');
-				sb.append(processor.elementAt(i).toString());
-			}
-		}
-		if (osname != null) {
-			size = osname.size();
-			for (int i = 0; i < size; i++) {
-				sb.append(';');
-				sb.append(Constants.BUNDLE_NATIVECODE_OSNAME);
-				sb.append('=');
-				sb.append(osname.elementAt(i).toString());
-			}
-		}
-		if (osversion != null) {
-			size = osversion.size();
-			for (int i = 0; i < size; i++) {
-				sb.append(';');
-				sb.append(Constants.BUNDLE_NATIVECODE_OSVERSION);
-				sb.append('=');
-				sb.append(osversion.elementAt(i).toString());
-			}
-		}
-		if (language != null) {
-			size = language.size();
-			for (int i = 0; i < size; i++) {
-				sb.append(';');
-				sb.append(Constants.BUNDLE_NATIVECODE_LANGUAGE);
-				sb.append('=');
-				sb.append(language.elementAt(i).toString());
-			}
-		}
-		return (sb.toString());
-	}
-
-	/**
-	 * Return the match value for the given processor and os name. A higher
-	 * value indicates a better match.
-	 * 
-	 * @param processor
-	 *            processor name to match against.
-	 * @param osname
-	 *            os name to match against.
-	 * @return match value
-	 */
-	public int matchProcessorOSNameFilter(String processor, String osname) {
-		if ((this.processor == null) || (this.osname == null)) {
-			return (0);
-		}
-		String otherProcessor = aliasMapper.aliasProcessor(processor);
-		String otherOSName = (String) aliasMapper.aliasOSName(osname);
-		if (this.processor.equals(otherProcessor) && this.osname.equals(otherOSName) && matchFilter()) {
-			return (1);
-		}
-		return (0);
-	}
-
-	/**
-	 * Return the higest matching value for the given os version that is less
-	 * than or equal to the given os version.
-	 * 
-	 * @param version
-	 *            os version to match against.
-	 * @return version or null if no match.
-	 */
-	public Version matchOSVersion(Version version) {
-		if (this.osversion == null)
-			return Version.emptyVersion;
-		Version result = null;
-		int size = this.osversion.size();
-		for (int i = 0; i < size; i++) {
-			// find a matching range and save the highest result
-			VersionRange range = (VersionRange) this.osversion.elementAt(i);
-			if (range.isIncluded(version) && (result == null || (range.getMinimum().compareTo(result) > 0)))
-				result = range.getMinimum();
-		}
-		return result;
-	}
-
-	/**
-	 * Return the match value for the given language. A higher value indicates
-	 * a better match.
-	 * 
-	 * @param language
-	 *            language name to match against.
-	 * @return match value
-	 */
-	public int matchLanguage(String language) {
-		if (this.language == null) {
-			return (1);
-		}
-		if (this.language.equals(language.toLowerCase())) {
-			return (2);
-		}
-		return (0);
-	}
-
-	public boolean matchFilter() {
-		if (filterString == null) {
-			return true;
-		}
-		FilterImpl filter;
-		try {
-			filter = new FilterImpl(filterString);
-		} catch (InvalidSyntaxException e) {
-			BundleException be = new BundleException(Msg.BUNDLE_NATIVECODE_INVALID_FILTER, e); 
-			bundle.framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, be);
-			return false;
-		}
-		try {
-			return filter.match(FrameworkProperties.getProperties());
-		} catch (IllegalArgumentException e) {
-			return filter.matchCase(FrameworkProperties.getProperties());
-		}
-	}
-
-	/**
-	 * Extension of Vector for attributes.
-	 */
-	static class Attribute extends Vector {
-		private static final long serialVersionUID = 3257005440914174512L;
-
-		/**
-		 * Attribute constructor.
-		 *  
-		 */
-		Attribute() {
-			super(10, 10);
-		}
-
-		/**
-		 * Perform an "OR" operation on equals.
-		 * 
-		 * @param obj
-		 *            Object to test against.
-		 * @return true if at least one attribute is equal; false otherwise.
-		 */
-		public synchronized boolean equals(Object obj) {
-			for (int i = 0; i < elementCount; i++) {
-				Object data = elementData[i];
-				if (data instanceof String) {
-					if (elementData[i].equals(obj)) {
-						return (true);
-					}
-				} else {
-					Enumeration e = ((Vector) data).elements();
-					while (e.hasMoreElements()) {
-						if (((String) e.nextElement()).equals(obj)) {
-							return true;
-						}
-					}
-				}
-			}
-			return (false);
-		}
-
-		/**
-		 * Add the object if it is not already in the vector.
-		 * 
-		 * @param obj
-		 *            Object to add to the vector.
-		 */
-		public synchronized void addElement(Object obj) {
-			if (!contains(obj)) {
-				super.addElement(obj);
-			}
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundlePermissionCollection.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundlePermissionCollection.java
deleted file mode 100644
index dd40a98..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundlePermissionCollection.java
+++ /dev/null
@@ -1,27 +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.internal.core;
-
-import java.security.PermissionCollection;
-
-/**
- * An abstract subclass of PermissionCollection.
- *
- */
-abstract class BundlePermissionCollection extends PermissionCollection {
-	/**
-	 * Unresolves all permissions in this collection.  This should flush
-	 * any cached Permission and PermissionCollection objects which may 
-	 * have been created in this BundlePermissionCollection.
-	 */
-	abstract void unresolvePermissions();
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleProtectionDomainImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleProtectionDomainImpl.java
deleted file mode 100644
index 1df1ea9..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleProtectionDomainImpl.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.security.PermissionCollection;
-import org.eclipse.osgi.framework.adaptor.BundleProtectionDomain;
-
-/**
- *
- * This class tracks the signature information for a bundle in addition to
- * managing bundle permissions.
- */
-public class BundleProtectionDomainImpl extends BundleProtectionDomain {
-	AbstractBundle bundle;
-
-	/**
-	 * @param bundle the bundle to which this ProtectionDomain corresponds.
-	 * @param permCollection the PermissionCollection used by this ProtectionDomain.
-	 */
-	public BundleProtectionDomainImpl(AbstractBundle bundle, PermissionCollection permCollection) {
-		super(permCollection);
-		this.bundle = bundle;
-	}
-}
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 efdca93..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/BundleRepository.java
+++ /dev/null
@@ -1,171 +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.*;
-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 not synchronized.  Any access to the bundle
- * repository must be synchronized by the caller.
- */
-public 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) {
-		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 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 AbstractBundle getBundle(long bundleId) {
-		Long key = new Long(bundleId);
-		return (AbstractBundle) bundlesById.getByKey(key);
-	}
-
-	public AbstractBundle[] getBundles(String symbolicName) {
-		if (Constants.OSGI_SYSTEM_BUNDLE.equals(symbolicName))
-			symbolicName = Constants.getInternalSymbolicName();
-		return (AbstractBundle[]) bundlesBySymbolicName.get(symbolicName);
-	}
-
-	public 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 void add(AbstractBundle bundle) {
-		bundlesByInstallOrder.add(bundle);
-		bundlesById.add(bundle);
-		String symbolicName = bundle.getSymbolicName();
-		if (symbolicName != null) {
-			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 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;
-
-		AbstractBundle[] bundles = (AbstractBundle[]) bundlesBySymbolicName.get(symbolicName);
-		if (bundles == null)
-			return true;
-
-		// 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);
-			}
-		}
-
-		return true;
-	}
-
-	public 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 b3c2ecd..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, 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.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/ConditionalPermissionAdminImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionAdminImpl.java
deleted file mode 100644
index 488f706..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionAdminImpl.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.security.*;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.PermissionStorage;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.service.condpermadmin.*;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-/**
- *
- * Implements ConditionalPermissionAdmin.
- */
-public class ConditionalPermissionAdminImpl implements ConditionalPermissionAdmin {
-	public static final ConditionalPermissionInfoImpl[] EMPTY_COND_PERM_INFO = new ConditionalPermissionInfoImpl[0];
-	public static final Condition[] EMPTY_COND = new Condition[0];
-	public static final ConditionInfo[] EMPTY_COND_INFO = new ConditionInfo[0];
-	public static final PermissionInfo[] EMPTY_PERM_INFO = new PermissionInfo[0];
-
-	/**
-	 * The Vector of current ConditionalPermissionInfos.  
-	 */
-	private Vector condPerms;
-	private Framework framework;
-	private PermissionStorage storage;
-	private long nextID = System.currentTimeMillis();
-
-	/**
-	 * @param framework
-	 * @param permissionStorage
-	 */
-	public ConditionalPermissionAdminImpl(Framework framework, PermissionStorage permissionStorage) {
-		ConditionalPermissionInfoImpl.setConditionalPermissionAdminImpl(this);
-		this.framework = framework;
-		this.storage = permissionStorage;
-		try {
-			String[] encodedCondPerms = permissionStorage.getConditionalPermissionInfos();
-			if (encodedCondPerms != null && encodedCondPerms.length > 0) {
-				condPerms = new Vector(encodedCondPerms.length);
-				for (int i = 0; i < encodedCondPerms.length; i++)
-					condPerms.add(new ConditionalPermissionInfoImpl(encodedCondPerms[i]));
-			}
-			else
-				condPerms = new Vector(0);
-		} catch (IOException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, e);
-			condPerms = new Vector();
-		}
-	}
-
-	/**
-	 * @see org.osgi.service.condpermadmin.ConditionalPermissionAdmin#addConditionalPermissionInfo(org.osgi.service.condpermadmin.ConditionInfo[], org.osgi.service.permissionadmin.PermissionInfo[])
-	 */
-	public ConditionalPermissionInfo addConditionalPermissionInfo(ConditionInfo[] conds, PermissionInfo[] perms) {
-		return setConditionalPermissionInfo(null, conds, perms);
-	}
-
-	public ConditionalPermissionInfo setConditionalPermissionInfo(String name, ConditionInfo conds[], PermissionInfo perms[]) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new AllPermission());
-		if (name == null)
-			name = "generated_" + Long.toString(nextID++); //$NON-NLS-1$
-		ConditionalPermissionInfoImpl condPermInfo = null;
-		synchronized (condPerms) {
-			condPermInfo = (ConditionalPermissionInfoImpl) getConditionalPermissionInfo(name);
-			if (condPermInfo == null) {
-				condPermInfo = new ConditionalPermissionInfoImpl(name, conds, perms);
-				condPerms.add(condPermInfo);
-			} else {
-				condPermInfo.conds = conds;
-				condPermInfo.perms = perms;
-			}
-			saveCondPermInfos();
-		}
-		AbstractBundle bundles[] = framework.getAllBundles();
-		for (int i = 0; i < bundles.length; i++) {
-			AbstractBundle bundle = bundles[i];
-			if (bundle.domain == null) {
-				continue;
-			}
-			BundleCombinedPermissions bcp = (BundleCombinedPermissions) bundle.domain.getPermissions();
-			/* TODO I don't think we need this check */
-			if (perms == null) {
-				continue;
-			}
-
-			bcp.checkConditionalPermissionInfo(condPermInfo);
-		}
-		return condPermInfo;
-	}
-
-	public ConditionalPermissionInfo getConditionalPermissionInfo(String name) {
-		for (Enumeration eCondPerms = condPerms.elements(); eCondPerms.hasMoreElements();) {
-			ConditionalPermissionInfoImpl condPerm = (ConditionalPermissionInfoImpl) eCondPerms.nextElement();
-			if (name.equals(condPerm.getName()))
-				return condPerm;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns an Enumeration of current ConditionalPermissionInfos. Each element will be of type 
-	 * ConditionalPermissionInfoImpl.
-	 * @return an Enumeration of current ConditionalPermissionInfos.
-	 * @see org.osgi.service.condpermadmin.ConditionalPermissionAdmin#getConditionalPermissionInfos()
-	 */
-	public Enumeration getConditionalPermissionInfos() {
-		synchronized (condPerms) {
-			return condPerms.elements();
-		}
-	}
-
-	void deleteConditionalPermissionInfo(ConditionalPermissionInfo cpi) {
-		synchronized (condPerms) {
-			condPerms.remove(cpi);
-			saveCondPermInfos();
-		}
-	}
-
-	private void saveCondPermInfos() {
-		try {
-			String [] encodedCondPerms = new String[condPerms.size()];
-			int i = 0;
-			for (Enumeration eCondPerms = condPerms.elements(); eCondPerms.hasMoreElements(); i++)
-				encodedCondPerms[i] = eCondPerms.nextElement().toString();
-			storage.saveConditionalPermissionInfos(encodedCondPerms);
-		} catch (IOException e) {
-			e.printStackTrace();
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, e);
-		}
-	}
-
-	/**
-	 * @see org.osgi.service.condpermadmin.ConditionalPermissionAdmin#getAccessControlContext(java.lang.String[])
-	 */
-	public AccessControlContext getAccessControlContext(String[] signers) {
-		Enumeration infos = getConditionalPermissionInfos();
-		ArrayList permissionInfos = new ArrayList();
-		if (infos != null) {
-			while (infos.hasMoreElements()) {
-				ConditionalPermissionInfoImpl condPermInfo = (ConditionalPermissionInfoImpl) infos.nextElement();
-				ConditionInfo[] condInfo = condPermInfo.getConditionInfos();
-				boolean match = true;
-				for (int i = 0; i < condInfo.length; i++) {
-					if (BundleSignerCondition.class.getName().equals(condInfo[i].getType())) {
-						String[] args = condInfo[i].getArgs();
-						for (int j = 0; j < args.length; j++)
-							if (!framework.adaptor.matchDNChain(args[j], signers)) {
-								match = false;
-								break;
-							}
-					} else {
-						match = false;
-						break;
-					}
-				}
-				if (match) {
-					PermissionInfo[] addPermInfos = condPermInfo.getPermissionInfos();
-					for (int i = 0; i < addPermInfos.length; i++)
-						permissionInfos.add(addPermInfos[i]);
-				}
-			}
-		}
-		BundlePermissionCollection collection = framework.permissionAdmin.createPermissions((PermissionInfo[]) permissionInfos.toArray(new PermissionInfo[permissionInfos.size()]), null, false);
-		return new AccessControlContext(collection == null ? new ProtectionDomain[0] : new ProtectionDomain[] {new ProtectionDomain(null, collection)});
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionInfoImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionInfoImpl.java
deleted file mode 100644
index b7a370c..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionInfoImpl.java
+++ /dev/null
@@ -1,295 +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.framework.internal.core;
-
-import java.io.File;
-import java.io.Serializable;
-import java.lang.reflect.*;
-import java.security.*;
-import java.util.ArrayList;
-import org.osgi.framework.Bundle;
-import org.osgi.service.condpermadmin.*;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-/**
- * 
- * This is a runtime embodiment of the data stored in ConditionalPermissionInfo.
- * It has methods to facilitate the management of Conditions and Permissions at
- * runtime.
- */
-public class ConditionalPermissionInfoImpl implements ConditionalPermissionInfo, Serializable {
-	private static final long serialVersionUID = 3258130245704825139L;
-	/**
-	 * The permissions enabled by the associated Conditions.
-	 */
-	PermissionInfo perms[];
-	/**
-	 * The conditions that must be satisfied to enable the corresponding
-	 * permissions.
-	 */
-	ConditionInfo conds[];
-
-	/**
-	 * The name of the ConditionalPermissionInfo
-	 */
-	private String name;
-
-	/**
-	 * When true, this object has been deleted and any information retrieved
-	 * from it should be discarded.
-	 */
-	private boolean deleted = false;
-
-	/**
-	 * When true, this object has been deleted and any information retrieved
-	 * from it should be discarded.
-	 */
-	boolean isDeleted() {
-		return deleted;
-	}
-
-	public ConditionalPermissionInfoImpl(String encoded) {
-		decode(encoded);
-	}
-
-	public ConditionalPermissionInfoImpl(String name, ConditionInfo conds[], PermissionInfo perms[]) {
-		this.name = name;
-		this.conds = conds;
-		this.perms = perms;
-	}
-
-	private void decode(String encoded) {
-		int start = encoded.indexOf('{');
-		int end = encoded.lastIndexOf('}');
-		if (start < 0 || end < start)
-			throw new IllegalArgumentException(encoded);
-		if (start != 0)
-			name = encoded.substring(0, start);
-		char[] chars = encoded.substring(start + 1, end).toCharArray();
-		ArrayList condList = new ArrayList();
-		ArrayList permList = new ArrayList();
-		int pos = 0;
-		while (pos < chars.length) {
-			while (pos < chars.length && chars[pos] != '[' && chars[pos] != '(')
-				pos++;
-			if (pos == chars.length)
-				break; // no perms or conds left
-			int startPos = pos;
-			char endChar = chars[startPos] == '[' ? ']' : ')';
-			while (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++;
-		}
-		conds = (ConditionInfo[]) condList.toArray(new ConditionInfo[condList.size()]);
-		perms = (PermissionInfo[]) permList.toArray(new PermissionInfo[permList.size()]);
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	/**
-	 * @see org.osgi.service.condpermadmin.ConditionalPermissionInfo#getConditionInfos()
-	 */
-	public ConditionInfo[] getConditionInfos() {
-		if (conds == null)
-			return null;
-		ConditionInfo[] results = new ConditionInfo[conds.length];
-		System.arraycopy(conds, 0, results, 0, conds.length);
-		return results;
-	}
-
-	/* 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};
-	/* Used to find condition constructors getConditions */
-	static private final Class[] condClassArray = new Class[] {Bundle.class, ConditionInfo.class};
-
-	/**
-	 * Adds the permissions of the given type (if any) that are part of this
-	 * ConditionalPermissionInfo to the specified collection. The Permission
-	 * instances are constructed using the specified permClass.
-	 * 
-	 * @param collection the collection to add to.
-	 * @param permClass the class to use to construct Permission instances.
-	 * @return the number of Permissions added.
-	 * @throws NoSuchMethodException
-	 * @throws SecurityException
-	 * @throws InvocationTargetException
-	 * @throws IllegalAccessException
-	 * @throws InstantiationException
-	 * @throws IllegalArgumentException
-	 */
-	int addPermissions(AbstractBundle bundle, PermissionCollection collection, Class permClass) throws SecurityException, NoSuchMethodException, IllegalArgumentException, InstantiationException, IllegalAccessException, 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$
-		int count = 0;
-		/*
-		 * TODO: We need to cache the permission constructors to enhance performance (see bug 118813).
-		 */
-		for (int i = 0; i < perms.length; i++) {
-			if (perms[i].getType().equals(permClassName)) {
-				count++;
-				String args[] = new String[numArgs];
-				if (numArgs > 0)
-					args[0] = perms[i].getName();
-				if (numArgs > 1)
-					args[1] = perms[i].getActions();
-				if (perms[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
-							if (bundle == null) // default permissions
-								continue; // no relative file permissions
-							File target = bundle.framework.getDataFile(bundle, args[0]);
-							if (target == null) // no bundle data file area
-								continue; // no relative file permissions
-							args[0] = target.getPath();
-						}
-					}
-				}
-				collection.add((Permission) constructor.newInstance(args));
-			}
-		}
-		return count;
-	}
-
-	/**
-	 * Returns the Condition objects associated with this ConditionalPermissionInfo.
-	 * 
-	 * @param bundle the bundle to be used to construct the Conditions.
-	 * 
-	 * @return the array of Conditions that must be satisfied before permissions
-	 *         in the ConditionPermissionInfoImpl can be used.
-	 */
-	Condition[] getConditions(Bundle bundle) {
-		Condition conditions[] = new Condition[conds.length];
-		for (int i = 0; i < conds.length; i++) {
-			/*
-			 * TODO: I think we can pre-get the Constructors in our own
-			 * constructor
-			 */
-			Class clazz;
-			try {
-				clazz = Class.forName(conds[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", condClassArray); //$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(condClassArray);
-				} catch (NoSuchMethodException e) {
-					// TODO should post a FrameworkEvent of type error here
-					conditions[i] = Condition.FALSE;
-					continue;
-				}
-
-			Object args[] = {bundle, conds[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;
-	}
-
-	/**
-	 * @see org.osgi.service.condpermadmin.ConditionalPermissionInfo#getPermissionInfos()
-	 */
-	public PermissionInfo[] getPermissionInfos() {
-		if (perms == null)
-			return null;
-		PermissionInfo[] results = new PermissionInfo[perms.length];
-		System.arraycopy(perms, 0, results, 0, perms.length);
-		return results;
-	}
-
-	/**
-	 * 
-	 * @see org.osgi.service.condpermadmin.ConditionalPermissionInfo#delete()
-	 */
-	public void delete() {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new AllPermission());
-		deleted = true;
-		condAdmin.deleteConditionalPermissionInfo(this);
-	}
-
-	private static ConditionalPermissionAdminImpl condAdmin;
-
-	static void setConditionalPermissionAdminImpl(ConditionalPermissionAdminImpl condAdmin) {
-		ConditionalPermissionInfoImpl.condAdmin = condAdmin;
-	}
-
-	public String toString() {
-		StringBuffer result = new StringBuffer();
-		if (name != null)
-			result.append(name);
-		ConditionInfo[] curConds = getConditionInfos();
-		PermissionInfo[] curPerms = getPermissionInfos();
-		result.append('{').append(' ');
-		if (curConds != null)
-			for (int i = 0; i < curConds.length; i++)
-				result.append(curConds[i].getEncoded()).append(' ');
-		if (curPerms != null)
-			for (int i = 0; i < curPerms.length; i++)
-				result.append(curPerms[i].getEncoded()).append(' ');
-		result.append('}');
-		return result.toString();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionSet.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionSet.java
deleted file mode 100644
index f234699..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissionSet.java
+++ /dev/null
@@ -1,259 +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.framework.internal.core;
-
-import java.security.*;
-import java.util.*;
-import org.osgi.service.condpermadmin.Condition;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-/**
- * This class represents a PermissionCollection tied to a set of Conditions.
- * Before the permissions are actually used, isNonEmpty should be called.
- */
-public class ConditionalPermissionSet extends BundlePermissionCollection {
-	private static final long serialVersionUID = 3258411750729920566L;
-	private ConditionalPermissionInfoImpl cpis[] = ConditionalPermissionAdminImpl.EMPTY_COND_PERM_INFO;
-	private HashMap cachedPermissionCollections = new HashMap();
-	private boolean hasAllPermission = false;
-	private AbstractBundle bundle;
-	/**
-	 * These are conditions that need to be satisfied in order to enable the
-	 * permissions. If the array is empty, no conditions need to be satisfied.
-	 * If <code>neededCondititions</code> is null,
-	 */
-	private Condition neededConditions[];
-
-	/*
-	 * TODO: we need to validate the cpis[] to make sure they don't go away.
-	 * Reset everything if they do. We also need to be able to add CPIs
-	 */
-	/**
-	 * Construct a new ConditionalPermission set with an initial set of
-	 * permissions.
-	 */
-	public ConditionalPermissionSet(AbstractBundle bundle, ConditionalPermissionInfoImpl cpis[], Condition neededConditions[]) {
-		this.bundle = bundle;
-		this.cpis = cpis;
-		this.neededConditions = neededConditions;
-		checkForAllPermission();
-	}
-
-	/**
-	 * Adds another ConditionalPermissionInfoImpl to this set. <b>Only a
-	 * CondtitionalPermissionInfo whose Conditions are immutable and satisfied
-	 * may be added. </b>
-	 * 
-	 * @param cpi the ConditionalPermissionInfoImpl to be added to this set.
-	 *        <b>Only a CondtitionalPermissionInfo whose Conditions are
-	 *        immutable and satisfied may be added. </b>
-	 */
-	void addConditionalPermissionInfo(ConditionalPermissionInfoImpl cpi) {
-		if (neededConditions == null || neededConditions.length > 0)
-			throw new RuntimeException("Cannot add ConditionalPermissionInfoImpl to a non satisfied set"); //$NON-NLS-1$
-		synchronized (cachedPermissionCollections) {
-			// first look for a null slot
-			for (int i = 0; i < cpis.length; i++)
-				if (cpis[i] == null) { // found an empty slot; use it
-					cpis[i] = cpi;
-					cachedPermissionCollections.clear();
-					return;
-				}
-			ConditionalPermissionInfoImpl newcpis[] = new ConditionalPermissionInfoImpl[cpis.length + 1];
-			System.arraycopy(cpis, 0, newcpis, 0, cpis.length);
-			newcpis[cpis.length] = cpi;
-			cpis = newcpis;
-			/*
-			 * TODO: I couldn't decide wether it is better to run through the cached
-			 * PermissionCollections and add permissions from this cpi, or to just
-			 * clear out and let them get rebuilt ondemand. The ondemand route is
-			 * simpler and in the end may be more efficient.
-			 */
-			cachedPermissionCollections.clear();
-			checkForAllPermission();
-		}
-	}
-
-	/**
-	 * This runs through the PermissionInfos to see if there is an AllPermission in the mix.
-	 */
-	private void checkForAllPermission() {
-		if (hasAllPermission) {
-			return;
-		}
-		out: for (int i = 0; i < cpis.length; i++) {
-			if (cpis[i] == null) // check for deletions
-				continue;
-			PermissionInfo perms[] = cpis[i].perms;
-			for (int j = 0; j < perms.length; j++) {
-				if (perms[j].getType().equals(AllPermission.class.getName())) {
-					hasAllPermission = true;
-					break out;
-				}
-			}
-		}
-	}
-
-	/**
-	 * Returns true if at least one of the ConditionalPermissionInfos in this
-	 * set is still active. (Not deleted.)
-	 * 
-	 * @return true if there is at least one active ConditionalPermissionInfo.
-	 */
-	boolean isNonEmpty() {
-		boolean nonEmpty = false;
-		boolean forceAllPermCheck = false;
-		synchronized (cachedPermissionCollections) {
-			for (int i = 0; i < cpis.length; i++) {
-				if (cpis[i] != null) {
-					if (cpis[i].isDeleted()) {
-						cpis[i] = null;
-						forceAllPermCheck = true;
-						/*
-						 * We don't have a way to remove from a collection; we can
-						 * only add. Thus, we must clear out everything. TODO:
-						 * Investigate if it would be more efficient to only clear
-						 * the permission collections of the type stored by the cpi.
-						 */
-						cachedPermissionCollections.clear();
-					} else {
-						nonEmpty = true;
-					}
-				}
-			}
-			if (!nonEmpty)
-				cpis = ConditionalPermissionAdminImpl.EMPTY_COND_PERM_INFO;
-			if (forceAllPermCheck) {
-				hasAllPermission = false;
-				checkForAllPermission();
-			}
-		}
-		return nonEmpty;
-	}
-
-	/**
-	 * Returns the conditions that need to be satisfied before the permissions
-	 * embodied in this set can be used.
-	 * 
-	 * @return the array of conditions that need to be satisfied. If the array
-	 *         is empty, no conditions need to be satisfied to use the
-	 *         permissions. If null is returned, these permissions can never be
-	 *         used.
-	 */
-	Condition[] getNeededConditions() {
-		if (neededConditions == null || neededConditions.length == 0)
-			return neededConditions;
-		boolean foundNonNullCondition = false;
-		/* We need to check to see if any conditions became immutable */
-		for (int i = 0; i < neededConditions.length; i++) {
-			Condition cond = neededConditions[i];
-			if (cond == null)
-				continue;
-			if (!cond.isMutable()) {
-				if (cond.isSatisfied()) {
-					neededConditions[i] = null;
-				} else {
-					/*
-					 * We now have an immutable unsatisfied condition, this set
-					 * is no longer valid.
-					 */
-					neededConditions = null;
-					break;
-				}
-			} else {
-				foundNonNullCondition = true;
-			}
-		}
-		if (neededConditions != null && !foundNonNullCondition)
-			neededConditions = ConditionalPermissionAdminImpl.EMPTY_COND;
-		return neededConditions;
-	}
-
-	/**
-	 * We don't do anything here since this isn't a real PermissionCollection.
-	 * 
-	 * @param perm ignored.
-	 * @see java.security.PermissionCollection#add(java.security.Permission)
-	 */
-	public void add(Permission perm) {
-		// do nothing
-	}
-
-	/**
-	 * Checks to see if the desired Permission is implied by this collection of
-	 * ConditionalPermissionInfos.
-	 * 
-	 * @param perm Permission to check.
-	 * @return true if this ConditionPermissionSet implies the passed
-	 *         Permission.
-	 * @see java.security.PermissionCollection#implies(java.security.Permission)
-	 */
-	public boolean implies(Permission perm) {
-		if (hasAllPermission)
-			return true;
-		Class permClass = perm.getClass();
-		PermissionCollection collection;
-		synchronized (cachedPermissionCollections) {
-			collection = (PermissionCollection) cachedPermissionCollections.get(permClass);
-			if (collection == null) {
-				collection = perm.newPermissionCollection();
-				if (collection == null)
-					collection = new PermissionsHash();
-				for (int i = 0; i < cpis.length; i++) {
-					try {
-						ConditionalPermissionInfoImpl cpi = cpis[i];
-						if (cpi != null)
-							cpi.addPermissions(bundle, collection, permClass);
-					} catch (Exception e) {
-						// TODO: we should log this somewhere
-						e.printStackTrace();
-					}
-				}
-				cachedPermissionCollections.put(permClass, collection);
-			}
-		}
-		return collection.implies(perm);
-	}
-
-	/**
-	 * We don't do anything here since this isn't a real PermissionCollection.
-	 * 
-	 * @return always returns null.
-	 * @see java.security.PermissionCollection#elements()
-	 */
-	public Enumeration elements() {
-		return null;
-	}
-
-	/**
-	 * This method simply clears the resolved permission table. I think in both the 
-	 * short-term and the amoritized case, this is more efficient than walking through 
-	 * and clearing specific entries.
-	 */
-	void unresolvePermissions() {
-		synchronized (cachedPermissionCollections) {
-			cachedPermissionCollections.clear();
-		}
-	}
-
-	boolean remove(ConditionalPermissionInfoImpl cpi) {
-		synchronized (cachedPermissionCollections) {
-			for (int i = 0; i < cpis.length; i++)
-				if (cpis[i] == cpi) {
-					cpis[i] = null;
-					cachedPermissionCollections.clear();
-					return true;
-				}
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissions.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissions.java
deleted file mode 100644
index 86aa1e7..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ConditionalPermissions.java
+++ /dev/null
@@ -1,234 +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.framework.internal.core;
-
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.util.Enumeration;
-import java.util.Vector;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.service.condpermadmin.Condition;
-import org.osgi.service.condpermadmin.ConditionalPermissionAdmin;
-
-/**
- * 
- * This class manages the Permissions for a given code source. It tracks the
- * permissions that have yet to be satisfied as well as conditions that are
- * already satisfied.
- */
-public class ConditionalPermissions extends PermissionCollection {
-	private static final long serialVersionUID = 3907215965749000496L;
-	private AbstractBundle bundle;
-	/**
-	 * This is the list of satisfiedCPIs that we are waiting to process in bulk
-	 * when evaluating the satisfied permissions. Elements are of type
-	 * ConditionalPermissionInfoImpl.
-	 */
-	private Vector satisfiedCPIs = new Vector();
-	/**
-	 * This is set contains that ConditionalPermissionInfos that are satisfied
-	 * and immutable.
-	 */
-	private ConditionalPermissionSet satisfiedCPS;
-	/**
-	 * These are the CPIs that may match this CodeSource. Elements are of type
-	 * ConditionalPermissionSet.
-	 */
-	private Vector satisfiableCPSs = new Vector();
-	private boolean empty;
-
-	/**
-	 * Constructs a ConditionalPermission for the given bundle.
-	 * 
-	 * @param bundle the bundle for which this ConditionalPermission tracks Permissions.
-	 */
-	public ConditionalPermissions(AbstractBundle bundle, ConditionalPermissionAdmin cpa) {
-		this.bundle = bundle;
-		satisfiedCPS = new ConditionalPermissionSet(bundle, ConditionalPermissionAdminImpl.EMPTY_COND_PERM_INFO, ConditionalPermissionAdminImpl.EMPTY_COND);
-		Enumeration en = cpa.getConditionalPermissionInfos();
-		while (en.hasMoreElements()) {
-			ConditionalPermissionInfoImpl cpi = (ConditionalPermissionInfoImpl) en.nextElement();
-			checkConditionalPermissionInfo(cpi);
-		}
-	}
-
-	void checkConditionalPermissionInfo(ConditionalPermissionInfoImpl cpi) {
-		try {
-			// first remove the cpi incase of an update
-			removeCPI(cpi);
-			Condition conds[] = cpi.getConditions(bundle);
-			if (conds == null) {
-				/* Couldn't process the conditions, so we can't use them */
-				return;
-			}
-			boolean satisfied = true;
-			for (int i = 0; i < conds.length; i++) {
-				Condition cond = conds[i];
-				if (cond.isMutable()) {
-					satisfied = false;
-				} else if (!cond.isSatisfied()) {// Note: the RFC says if !mutable, evaluated must be true
-					/*
-					 * We can just dump here since we have an immutable and
-					 * unsatisfied condition.
-					 */
-					return;
-				} else {
-					conds[i] = null; /* We can remove satisfied conditions */
-				}
-			}
-			if (satisfied) {
-				satisfiedCPIs.add(cpi);
-			} else {
-				satisfiableCPSs.add(new ConditionalPermissionSet(bundle, new ConditionalPermissionInfoImpl[] {cpi}, conds));
-			}
-		} catch (Exception e) {
-			bundle.framework.publishFrameworkEvent(FrameworkEvent.ERROR, bundle, e);
-		}
-	}
-
-	private void removeCPI(ConditionalPermissionInfoImpl cpi) {
-		satisfiedCPIs.remove(cpi);
-		satisfiedCPS.remove(cpi);
-		ConditionalPermissionSet cpsArray[] = (ConditionalPermissionSet[]) satisfiableCPSs.toArray(new ConditionalPermissionSet[0]);
-		for (int i = 0; i < cpsArray.length; i++)
-			if (cpsArray[i].remove(cpi))
-				satisfiableCPSs.remove(cpsArray[i]);
-	}
-
-	/**
-	 * This method is not implemented since this PermissionCollection should
-	 * only be used by the ConditionalPolicy which never calls this method.
-	 * 
-	 * @see java.security.PermissionCollection#elements()
-	 */
-	public void add(Permission perm) {
-		// do nothing
-	}
-
-	public boolean implies(Permission perm) {
-		processPending();
-		boolean newEmpty = !satisfiedCPS.isNonEmpty();
-		if (!newEmpty && satisfiedCPS.implies(perm)) {
-			this.empty = false;
-			return true;
-		}
-		boolean satisfied = false;
-		Vector unevalCondsSets = null;
-		SecurityManager sm = System.getSecurityManager();
-		FrameworkSecurityManager fsm = null;
-		if (sm instanceof FrameworkSecurityManager)
-			fsm = (FrameworkSecurityManager) sm;
-		ConditionalPermissionSet cpsArray[] = (ConditionalPermissionSet[]) satisfiableCPSs.toArray(new ConditionalPermissionSet[0]);
-		cpsLoop: for (int i = 0; i < cpsArray.length; i++) {
-			if (cpsArray[i].isNonEmpty()) {
-				newEmpty = false;
-				Condition conds[] = cpsArray[i].getNeededConditions();
-				if (conds == null)
-					continue;
-				// check mutable !isPostponed conditions first; 
-				// note that !mutable conditions have already been evaluated
-				for (int j = 0; j < conds.length; j++)
-					if (conds[j] != null && !conds[j].isPostponed() && !conds[j].isSatisfied())
-						continue cpsLoop;
-				// check the implies now
-				if (cpsArray[i].implies(perm)) {
-					// the permission is implied; the only unevaluated conditions left are mutable postponed conditions
-					// postpone their evaluation until the end
-					Vector unevaluatedConds = null;
-					for (int j = 0; j < conds.length; j++) {
-						if (conds[j] != null && conds[j].isPostponed()) {
-							if (fsm == null) {
-								// If there is no FrameworkSecurityManager, we must evaluate now
-								if (!conds[j].isSatisfied())
-									continue cpsLoop;
-							} else {
-								if (unevaluatedConds == null)
-									unevaluatedConds = new Vector();
-								unevaluatedConds.add(conds[j]);
-							}
-						}
-					}
-					if (unevaluatedConds == null) {
-						// no postponed conditions exist return true now
-						this.empty = false;
-						return true;
-					}
-					if (unevalCondsSets == null)
-						unevalCondsSets = new Vector(2);
-					unevalCondsSets.add(unevaluatedConds.toArray(new Condition[unevaluatedConds.size()]));
-					satisfied = true;
-				}
-			} else {
-				satisfiableCPSs.remove(cpsArray[i]);
-			}
-		}
-		this.empty = newEmpty;
-		if (satisfied && fsm != null) {
-			// There must be at least one set of Conditions to evaluate since
-			// we didn't return right we we realized the permission was satisfied
-			// so unevalCondsSets must be non-null.
-			Condition[][] condArray = (Condition[][]) unevalCondsSets.toArray(new Condition[unevalCondsSets.size()][]);
-			satisfied = fsm.addConditionsForDomain(condArray);
-		}
-		return satisfied;
-	}
-
-	/**
-	 * Process any satisfiedCPIs that have been added.
-	 */
-	private void processPending() {
-		if (satisfiedCPIs.size() > 0) {
-			synchronized (satisfiedCPIs) {
-				for (int i = 0; i < satisfiedCPIs.size(); i++) {
-					ConditionalPermissionInfoImpl cpi = (ConditionalPermissionInfoImpl) satisfiedCPIs.get(i);
-					if (!cpi.isDeleted())
-						satisfiedCPS.addConditionalPermissionInfo(cpi);
-				}
-				satisfiedCPIs.clear();
-			}
-		}
-	}
-
-	/**
-	 * This method is not implemented since this PermissionCollection should
-	 * only be used by the ConditionalPolicy which never calls this method.
-	 * 
-	 * @return always returns null.
-	 * 
-	 * @see java.security.PermissionCollection#elements()
-	 */
-	public Enumeration elements() {
-		return null;
-	}
-
-	/**
-	 * This method returns true if there are no ConditionalPermissionInfos in
-	 * this PermissionCollection. The empty condition is only checked during the
-	 * implies method, it should only be checked after implies has been called.
-	 * 
-	 * @return false if there are any Conditions that may provide permissions to
-	 *         this bundle.
-	 */
-	boolean isEmpty() {
-		return empty;
-	}
-
-	void unresolvePermissions() {
-		satisfiedCPS.unresolvePermissions();
-		synchronized (satisfiableCPSs) {
-			Enumeration en = satisfiableCPSs.elements();
-			while (en.hasMoreElements()) {
-				ConditionalPermissionSet cs = (ConditionalPermissionSet) en.nextElement();
-				cs.unresolvePermissions();
-			}
-		}
-	}
-}
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 91d58d6..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Constants.java
+++ /dev/null
@@ -1,276 +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.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$
-
-	/** OSGI system package property */
-	public static final String OSGI_FRAMEWORK_SYSTEM_PACKAGES = "org.osgi.framework.system.packages"; //$NON-NLS-1$
-	public static final String OSGI_BOOTDELEGATION = "org.osgi.framework.bootdelegation"; //$NON-NLS-1$
-	public static final String OSGI_SYSTEM_BUNDLE = "system.bundle"; //$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 OSGI_FRAMEWORKBEGINNINGSTARTLEVEL = "osgi.framework.beginningstartlevel"; //$NON-NLS-1$
-
-	/** Properties defaults */
-	public static final String DEFAULT_STARTLEVEL = "1"; //$NON-NLS-1$
-
-	public static String ECLIPSE_EE_INSTALL_VERIFY = "eclipse.ee.install.verify"; //$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$
-
-	/**
-	 * Manifest header (named &quot;Reexport-Package&quot;) identifying the
-	 * names of the packages that the bundle offers to the Framework for
-	 * reexport.
-	 * 
-	 * <p>
-	 * The attribute value may be retrieved from the <code>Dictionary</code>
-	 * object returned by the <code>Bundle.getHeaders</code> method.
-	 * 
-	 * @deprecated
-	 */
-	 public final static String REEXPORT_PACKAGE = "Reexport-Package"; //$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/DependentPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/DependentPolicy.java
deleted file mode 100644
index e7d2721..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/DependentPolicy.java
+++ /dev/null
@@ -1,117 +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.framework.internal.core;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-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, true);
-			} 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, true);
-			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/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 faa2adb..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ExportedPackageImpl.java
+++ /dev/null
@@ -1,89 +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.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 {
-
-	String specVersion;
-	ExportPackageDescription exportedPackage;
-	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();
-	}
-
-	public String getName() {
-		return exportedPackage.getName();
-	}
-
-	public org.osgi.framework.Bundle getExportingBundle() {
-		if (supplier.isStale())
-			return null;
-		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)
-				continue;
-			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 9660197..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilterImpl.java
+++ /dev/null
@@ -1,1766 +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.core;
-
-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.Iterator;
-
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.util.Headers;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.Filter;
-import org.osgi.framework.InvalidSyntaxException;
-
-/**
- * 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 filter the filter string.
-	 * @exception InvalidSyntaxException If the filter parameter contains
-	 * an invalid filter string that cannot be parsed.
-	 */
-	public FilterImpl(String filter) throws InvalidSyntaxException {
-		topLevel = true;
-		new Parser(filter).parse(this);
-	}
-
-	/**
-	 * Filter using a service's properties.
-	 * The Filter is executed using the referenced service's
-	 * properties.
-	 *
-	 * @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(org.osgi.framework.ServiceReference reference) {
-		return match0(((ServiceReferenceImpl) reference).registration.properties);
-	}
-
-	/**
-	 * Filter using a Dictionary.
-	 * The Filter is executed using the Dictionary's keys.
-	 *
-	 * @param dictionary the dictionary whose keys are used in the match.
-	 * @return <code>true</code> if the Dictionary's keys match this filter;
-	 * <code>false</code> otherwise.
-	 */
-	public boolean match(Dictionary dictionary) {
-		if (dictionary != null) {
-			dictionary = new Headers(dictionary);
-		}
-
-		return match0(dictionary);
-	}
-
-	/**
-	 * Filter with case sensitivity using a <tt>Dictionary</tt> object. The
-	 * Filter is executed using the <tt>Dictionary</tt> object's keys and
-	 * values. The keys are case sensitivley matched with the filter.
-	 * 
-	 * @param dictionary The <tt>Dictionary</tt> object whose keys are used in
-	 *        the match.
-	 * 
-	 * @return <tt>true</tt> if the <tt>Dictionary</tt> object's keys and
-	 *         values match this filter; <tt>false</tt> otherwise.
-	 * 
-	 * @since 1.3
-	 */
-	public boolean matchCase(Dictionary dictionary) {
-		return match0(dictionary);
-	}
-
-	/**
-	 * Returns this Filter object's filter string.
-	 * The filter string is normalized by removing
-	 * whitespace which does not affect the meaning of the filter.
-	 *
-	 * @return filter string.
-	 */
-	public String toString() {
-		if (this.filter == null) {
-			StringBuffer filter = new StringBuffer();
-			filter.append('(');
-
-			switch (operation) {
-				case AND :
-					{
-						filter.append('&');
-
-						FilterImpl[] filters = (FilterImpl[]) value;
-						int size = filters.length;
-
-						for (int i = 0; i < size; i++) {
-							filter.append(filters[i].toString());
-						}
-
-						break;
-					}
-
-				case OR :
-					{
-						filter.append('|');
-
-						FilterImpl[] filters = (FilterImpl[]) value;
-						int size = filters.length;
-
-						for (int i = 0; i < size; i++) {
-							filter.append(filters[i].toString());
-						}
-
-						break;
-					}
-
-				case NOT :
-					{
-						filter.append('!');
-						filter.append(value.toString());
-
-						break;
-					}
-
-				case SUBSTRING :
-					{
-						filter.append(attr);
-						filter.append('=');
-
-						String[] substrings = (String[]) value;
-
-						int size = substrings.length;
-
-						for (int i = 0; i < size; i++) {
-							String substr = substrings[i];
-
-							if (substr == null) /* * */{
-								filter.append('*');
-							} else /* xxx */{
-								filter.append(encodeValue(substr));
-							}
-						}
-
-						break;
-					}
-				case EQUAL :
-					{
-						filter.append(attr);
-						filter.append('=');
-						filter.append(encodeValue(value.toString()));
-
-						break;
-					}
-				case GREATER :
-					{
-						filter.append(attr);
-						filter.append(">="); //$NON-NLS-1$
-						filter.append(encodeValue(value.toString()));
-
-						break;
-					}
-				case LESS :
-					{
-						filter.append(attr);
-						filter.append("<="); //$NON-NLS-1$
-						filter.append(encodeValue(value.toString()));
-
-						break;
-					}
-				case APPROX :
-					{
-						filter.append(attr);
-						filter.append("~="); //$NON-NLS-1$
-						filter.append(encodeValue(approxString(value.toString())));
-
-						break;
-					}
-
-				case PRESENT :
-					{
-						filter.append(attr);
-						filter.append("=*"); //$NON-NLS-1$
-
-						break;
-					}
-			}
-
-			filter.append(')');
-
-			if (topLevel) /* only hold onto String object at toplevel */{
-				this.filter = filter.toString();
-			} else {
-				return filter.toString();
-			}
-		}
-
-		return this.filter;
-	}
-
-	/**
-	 * Compares this Filter object to another object.
-	 *
-	 * @param obj the object to compare.
-	 * @return If the other object is a Filter object, then
-	 * returns <code>this.toString().equals(obj.toString())</code>,
-	 * otherwise <code>false</code>.
-	 */
-	public boolean equals(Object obj) {
-		if (obj == this) {
-			return true;
-		}
-
-		if (!(obj instanceof FilterImpl)) {
-			return false;
-		}
-
-		return this.toString().equals(obj.toString());
-	}
-
-	/**
-	 * Returns the hashCode for this Filter object.
-	 *
-	 * @return The hashCode of the filter string, <i>i.e.</i>
-	 * <code>this.toString().hashCode()</code>.
-	 */
-	public int hashCode() {
-		return this.toString().hashCode();
-	}
-
-	/* Protected fields and methods for the Filter implementation */
-
-	/** filter operation */
-	protected int operation;
-	protected static final int EQUAL = 1;
-	protected static final int APPROX = 2;
-	protected static final int GREATER = 3;
-	protected static final int LESS = 4;
-	protected static final int PRESENT = 5;
-	protected static final int SUBSTRING = 6;
-	protected static final int AND = 7;
-	protected static final int OR = 8;
-	protected static final int NOT = 9;
-
-	/** filter attribute or null if operation AND, OR or NOT */
-	protected String attr;
-	/** filter operands */
-	protected Object value;
-
-	/* normalized filter string for topLevel Filter object */
-	protected String filter;
-
-	/* true if root Filter object */
-	protected boolean topLevel;
-
-	protected FilterImpl() {
-		topLevel = false;
-	}
-
-	protected void setFilter(int operation, String attr, Object value) {
-		this.operation = operation;
-		this.attr = attr;
-		this.value = value;
-	}
-
-	/**
-	 * Filter using a service's properties.
-	 * The Filter is executed using the referenced service's
-	 * properties.
-	 *
-	 * @param reference A reference to the service whose
-	 * properties are used in the match.
-	 * @return If the service's properties match the filter,
-	 * return <code>true</code>. Otherwise, return <code>false</code>.
-	 */
-	protected boolean match(ServiceReferenceImpl reference) {
-		return match0(reference.registration.properties);
-	}
-
-	/**
-	 * 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>.
-	 */
-	protected boolean match0(Dictionary properties) {
-		switch (operation) {
-			case AND :
-				{
-					FilterImpl[] filters = (FilterImpl[]) value;
-					int size = filters.length;
-
-					for (int i = 0; i < size; i++) {
-						if (!filters[i].match0(properties)) {
-							return false;
-						}
-					}
-
-					return true;
-				}
-
-			case OR :
-				{
-					FilterImpl[] filters = (FilterImpl[]) value;
-					int size = filters.length;
-
-					for (int i = 0; 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(operation, 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.
-	 */
-	protected 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;
-	}
-
-	protected 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);
-			} else {
-				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
-	}
-
-	protected boolean compare_Collection(int operation, Collection collection, Object value2) {
-		Iterator iterator = collection.iterator();
-
-		while (iterator.hasNext()) {
-			if (compare(operation, iterator.next(), value2)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	protected boolean compare_ObjectArray(int operation, Object[] array, Object value2) {
-		int size = array.length;
-
-		for (int i = 0; i < size; i++) {
-			if (compare(operation, array[i], value2)) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-
-	protected boolean compare_PrimitiveArray(int operation, Class type, Object primarray, Object value2) {
-		if (Integer.TYPE.isAssignableFrom(type)) {
-			int[] array = (int[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Integer(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Long.TYPE.isAssignableFrom(type)) {
-			long[] array = (long[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Long(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Byte.TYPE.isAssignableFrom(type)) {
-			byte[] array = (byte[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Byte(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Short.TYPE.isAssignableFrom(type)) {
-			short[] array = (short[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Short(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Character.TYPE.isAssignableFrom(type)) {
-			char[] array = (char[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Character(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Float.TYPE.isAssignableFrom(type)) {
-			float[] array = (float[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Float(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Double.TYPE.isAssignableFrom(type)) {
-			double[] array = (double[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Double(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		if (Boolean.TYPE.isAssignableFrom(type)) {
-			boolean[] array = (boolean[]) primarray;
-
-			int size = array.length;
-
-			for (int i = 0; i < size; i++) {
-				if (compare_Boolean(operation, array[i], value2)) {
-					return true;
-				}
-			}
-
-			return false;
-		}
-
-		return false;
-	}
-
-	protected 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;
-		
-					int size = substrings.length;
-		
-					for (int i = 0; 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;
-							} else /* 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;
-	}
-
-	protected boolean compare_Integer(int operation, int intval, Object value2) {
-		int intval2 = Integer.parseInt(((String) value2).trim());
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + intval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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;
-	}
-
-	protected boolean compare_Long(int operation, long longval, Object value2) {
-		long longval2 = Long.parseLong(((String) value2).trim());
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + longval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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;
-	}
-
-	protected boolean compare_Byte(int operation, byte byteval, Object value2) {
-		byte byteval2 = Byte.parseByte(((String) value2).trim());
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + byteval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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;
-	}
-
-	protected boolean compare_Short(int operation, short shortval, Object value2) {
-		short shortval2 = Short.parseShort(((String) value2).trim());
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + shortval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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;
-	}
-
-	protected boolean compare_Character(int operation, char charval, Object value2) {
-		char charval2 = (((String) value2).trim()).charAt(0);
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + charval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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 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;
-	}
-
-	protected boolean compare_Boolean(int operation, boolean boolval, Object value2) {
-		boolean boolval2 = new Boolean(((String) value2).trim()).booleanValue();
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + boolval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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;
-	}
-
-	protected boolean compare_Float(int operation, float floatval, Object value2) {
-		float floatval2 = Float.parseFloat(((String) value2).trim());
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			case EQUAL :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("EQUAL(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return floatval == floatval2;
-				}
-			case APPROX :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("APPROX(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return floatval == floatval2;
-				}
-			case GREATER :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("GREATER(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return floatval >= floatval2;
-				}
-			case LESS :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("LESS(" + floatval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return floatval <= floatval2;
-				}
-		}
-
-		return false;
-	}
-
-	protected boolean compare_Double(int operation, double doubleval, Object value2) {
-		double doubleval2 = Double.parseDouble(((String) value2).trim());
-
-		switch (operation) {
-			case SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			case EQUAL :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("EQUAL(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return doubleval == doubleval2;
-				}
-			case APPROX :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("APPROX(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return doubleval == doubleval2;
-				}
-			case GREATER :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("GREATER(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return doubleval >= doubleval2;
-				}
-			case LESS :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("LESS(" + doubleval + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return doubleval <= doubleval2;
-				}
-		}
-
-		return false;
-	}
-	
-	protected static final Class[] constructorType = new Class [] {String.class};
-
-	protected boolean compare_Comparable(int operation, Comparable value1, Object value2) {
-		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 SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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;
-	}
-
-	protected boolean compare_Unknown(int operation, Object value1, Object value2) { //RFC 59
-		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 SUBSTRING :
-				{
-					if (Debug.DEBUG && Debug.DEBUG_FILTER) {
-						Debug.println("SUBSTRING(" + value1 + "," + value2 + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-					}
-					return false;
-				}
-			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.
-	 */
-	protected static String approxString(String input) {
-		boolean changed = false;
-		char[] output = input.toCharArray();
-
-		int length = output.length;
-
-		int cursor = 0;
-		for (int i = 0; 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 (operation) {
-			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].operation == EQUAL) {
-						String result = clauses[i].getRequiredObjectClass();
-						if (result != null)
-							return result;
-					}
-				break;
-		}
-		return null;
-	}
-
-	/**
-	 * Returns a objectClass filter string for the specified objectClass.
-	 * @return A filter string for the specified objectClass or null if the specified objectClass is null.
-	 */
-	public static String getObjectClassFilterString(String objectClass) {
-		if (objectClass == null)
-			return null;
-		return "(" + org.osgi.framework.Constants.OBJECTCLASS + "=" + objectClass + ")";  //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
-	}
-
-	/**
-	 * 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.
-	 */
-	static class Parser {
-		protected String filterstring;
-		protected char[] filter;
-		protected int pos;
-
-		protected Parser(String filterstring) {
-			this.filterstring = filterstring;
-			filter = filterstring.toCharArray();
-			pos = 0;
-		}
-
-		protected void parse(FilterImpl parent) throws InvalidSyntaxException {
-			try {
-				parse_filter(parent);
-			} catch (ArrayIndexOutOfBoundsException e) {
-				throw new InvalidSyntaxException(Msg.FILTER_TERMINATED_ABRUBTLY, filterstring); 
-			}
-
-			if (pos != filter.length) {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_TRAILING_CHARACTERS, String.valueOf(pos)), filterstring); 
-			}
-		}
-
-		protected void parse_filter(FilterImpl parent) throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			if (filter[pos] != '(') {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_LEFTPAREN, String.valueOf(pos)), filterstring); 
-			}
-
-			pos++;
-
-			parse_filtercomp(parent);
-
-			skipWhiteSpace();
-
-			if (filter[pos] != ')') {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_RIGHTPAREN, String.valueOf(pos)), filterstring); 
-			}
-
-			pos++;
-
-			skipWhiteSpace();
-		}
-
-		protected void parse_filtercomp(FilterImpl parent) throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			char c = filter[pos];
-
-			switch (c) {
-				case '&' :
-					{
-						pos++;
-						parse_and(parent);
-						break;
-					}
-				case '|' :
-					{
-						pos++;
-						parse_or(parent);
-						break;
-					}
-				case '!' :
-					{
-						pos++;
-						parse_not(parent);
-						break;
-					}
-				default :
-					{
-						parse_item(parent);
-						break;
-					}
-			}
-		}
-
-		protected void parse_and(FilterImpl parent) throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			if (filter[pos] != '(') {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_LEFTPAREN, String.valueOf(pos)), filterstring); 
-			}
-
-			ArrayList operands = new ArrayList(10);
-
-			while (filter[pos] == '(') {
-				FilterImpl child = new FilterImpl();
-				parse_filter(child);
-				operands.add(child);
-			}
-
-			int size = operands.size();
-
-			FilterImpl[] children = new FilterImpl[size];
-
-			operands.toArray(children);
-
-			parent.setFilter(FilterImpl.AND, null, children);
-		}
-
-		protected void parse_or(FilterImpl parent) throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			if (filter[pos] != '(') {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_LEFTPAREN, String.valueOf(pos)), filterstring); 
-			}
-
-			ArrayList operands = new ArrayList(10);
-
-			while (filter[pos] == '(') {
-				FilterImpl child = new FilterImpl();
-				parse_filter(child);
-				operands.add(child);
-			}
-
-			int size = operands.size();
-
-			FilterImpl[] children = new FilterImpl[size];
-
-			operands.toArray(children);
-
-			parent.setFilter(FilterImpl.OR, null, children);
-		}
-
-		protected void parse_not(FilterImpl parent) throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			if (filter[pos] != '(') {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_LEFTPAREN, String.valueOf(pos)), filterstring); 
-			}
-
-			FilterImpl child = new FilterImpl();
-			parse_filter(child);
-
-			parent.setFilter(FilterImpl.NOT, null, child);
-		}
-
-		protected void parse_item(FilterImpl parent) throws InvalidSyntaxException {
-			String attr = parse_attr();
-
-			skipWhiteSpace();
-
-			switch (filter[pos]) {
-				case '~' :
-					{
-						if (filter[pos + 1] == '=') {
-							pos += 2;
-							parent.setFilter(FilterImpl.APPROX, attr, parse_value());
-							return;
-						}
-						break;
-					}
-				case '>' :
-					{
-						if (filter[pos + 1] == '=') {
-							pos += 2;
-							parent.setFilter(FilterImpl.GREATER, attr, parse_value());
-							return;
-						}
-						break;
-					}
-				case '<' :
-					{
-						if (filter[pos + 1] == '=') {
-							pos += 2;
-							parent.setFilter(FilterImpl.LESS, attr, parse_value());
-							return;
-						}
-						break;
-					}
-				case '=' :
-					{
-						if (filter[pos + 1] == '*') {
-							int oldpos = pos;
-							pos += 2;
-							skipWhiteSpace();
-							if (filter[pos] == ')') {
-								parent.setFilter(FilterImpl.PRESENT, attr, null);
-								return; /* present */
-							}
-							pos = oldpos;
-						}
-
-						pos++;
-						Object string = parse_substring();
-
-						if (string instanceof String) {
-							parent.setFilter(FilterImpl.EQUAL, attr, string);
-						} else {
-							parent.setFilter(FilterImpl.SUBSTRING, attr, string);
-						}
-
-						return;
-					}
-			}
-
-			throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_INVALID_OPERATOR, String.valueOf(pos)), filterstring); 
-		}
-
-		protected String parse_attr() throws InvalidSyntaxException {
-			skipWhiteSpace();
-
-			int begin = pos;
-			int end = pos;
-
-			char c = filter[pos];
-
-			while ("~<>=()".indexOf(c) == -1) { //$NON-NLS-1$
-				pos++;
-
-				if (!Character.isWhitespace(c)) {
-					end = pos;
-				}
-
-				c = filter[pos];
-			}
-
-			int length = end - begin;
-
-			if (length == 0) {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_ATTR, String.valueOf(pos)), filterstring); 
-			}
-
-			return new String(filter, begin, length);
-		}
-
-		protected String parse_value() throws InvalidSyntaxException {
-			StringBuffer sb = new StringBuffer(filter.length - pos);
-
-			parseloop: while (true) {
-				char c = filter[pos];
-
-				switch (c) {
-					case ')' :
-						{
-							break parseloop;
-						}
-
-					case '(' :
-						{
-							throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_INVALID_VALUE, String.valueOf(pos)), filterstring); 
-						}
-
-					case '\\' :
-						{
-							pos++;
-							c = filter[pos];
-							/* fall through into default */
-						}
-
-					default :
-						{
-							sb.append(c);
-							pos++;
-							break;
-						}
-				}
-			}
-
-			if (sb.length() == 0) {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_VALUE, String.valueOf(pos)), filterstring); 
-			}
-
-			return sb.toString();
-		}
-
-		protected Object parse_substring() throws InvalidSyntaxException {
-			StringBuffer sb = new StringBuffer(filter.length - pos);
-
-			ArrayList operands = new ArrayList(10);
-
-			parseloop: while (true) {
-				char c = filter[pos];
-
-				switch (c) {
-					case ')' :
-						{
-							if (sb.length() > 0) {
-								operands.add(sb.toString());
-							}
-
-							break parseloop;
-						}
-
-					case '(' :
-						{
-							throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_INVALID_VALUE, String.valueOf(pos)), filterstring); 
-						}
-
-					case '*' :
-						{
-							if (sb.length() > 0) {
-								operands.add(sb.toString());
-							}
-
-							sb.setLength(0);
-
-							operands.add(null);
-							pos++;
-
-							break;
-						}
-
-					case '\\' :
-						{
-							pos++;
-							c = filter[pos];
-							/* fall through into default */
-						}
-
-					default :
-						{
-							sb.append(c);
-							pos++;
-							break;
-						}
-				}
-			}
-
-			int size = operands.size();
-
-			if (size == 0) {
-				throw new InvalidSyntaxException(NLS.bind(Msg.FILTER_MISSING_VALUE, String.valueOf(pos)), filterstring); 
-			}
-
-			if (size == 1) {
-				Object single = operands.get(0);
-
-				if (single != null) {
-					return single;
-				}
-			}
-
-			String[] strings = new String[size];
-
-			operands.toArray(strings);
-
-			return strings;
-		}
-
-		protected void skipWhiteSpace() {
-			int length = filter.length;
-
-			while ((pos < length) && Character.isWhitespace(filter[pos])) {
-				pos++;
-			}
-		}
-	}
-
-	static class SetAccessibleAction implements PrivilegedAction {
-		private Constructor constructor;
-		public SetAccessibleAction(Constructor constructor) {
-			this.constructor = constructor;
-		}
-		public Object run() {
-			constructor.setAccessible(true);
-			return null;
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilteredServiceListener.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilteredServiceListener.java
deleted file mode 100644
index 6fba189..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilteredServiceListener.java
+++ /dev/null
@@ -1,107 +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.internal.core;
-
-import org.eclipse.osgi.framework.debug.Debug;
-import org.osgi.framework.*;
-
-public class FilteredServiceListener implements ServiceListener {
-	/** 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;
-
-	/**
-	 * Constructor.
-	 *
-	 * @param filterstring filter for this listener.
-	 * @param listener real listener.
-	 * @exception InvalidSyntaxException if the filter is invalid.
-	 */
-	protected FilteredServiceListener(String filterstring, ServiceListener listener, BundleContextImpl context) throws InvalidSyntaxException {
-		if (filterstring == null) {
-			this.filter = null;
-			this.objectClass = null;
-		}
-		else {
-			FilterImpl filterImpl = new FilterImpl(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 */
-				String objectClassFilter = FilterImpl.getObjectClassFilterString(this.objectClass);
-				this.filter = (objectClassFilter.equals(filterstring)) ? null : filterImpl;
-			}	
-		}
-		this.listener = listener;
-		this.context = context;
-		this.allservices = (listener instanceof AllServiceListener);
-	}
-
-	/**
-	 * Receive notification that a service has had a
-	 * change occur in it's lifecycle.
-	 *
-	 * @param event The ServiceEvent.
-	 */
-	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
-		}
-
-		if (!context.hasListenServicePermission(event))
-			return;
-
-		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {
-			String listenerName = this.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(this)); //$NON-NLS-1$
-			Debug.println("filterServiceEvent(" + listenerName + ", \"" + filter + "\", " + reference.registration.properties + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
-		}
-		
-		if ((filter == null || filter.match(reference)) && (allservices || context.isAssignableTo(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);
-		}
-	}
-
-	/**
-	 * Get the filter string used by this Filtered listener.
-	 *
-	 * @return The filter string used by this listener.
-	 */
-	public String toString() {
-		return filter == null ? listener.toString() : filter.toString();
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilteredSourcePackage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilteredSourcePackage.java
deleted file mode 100644
index e9183c5..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FilteredSourcePackage.java
+++ /dev/null
@@ -1,96 +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.framework.internal.core;
-
-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, int expid, BundleLoaderProxy supplier, String includes, String excludes, String[] friends) {
-		super(name, expid, 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/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 03653ce..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/Framework.java
+++ /dev/null
@@ -1,1908 +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.lang.reflect.*;
-import java.net.*;
-import java.security.*;
-import java.util.*;
-import org.eclipse.core.runtime.internal.adaptor.ContextFinder;
-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.profile.Profile;
-import org.eclipse.osgi.util.ManifestElement;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * Core OSGi Framework class.
- */
-public class Framework implements EventDispatcher, EventPublisher {
-	// 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$
-
-	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 service space been started */
-	protected boolean active;
-	/** The bundles installed in the framework */
-	protected BundleRepository bundles;
-	/** Package Admin object. This object manages the exported packages. */
-	protected PackageAdminImpl packageAdmin;
-	/** Package Admin object. This object manages the exported packages. */
-	protected PermissionAdminImpl permissionAdmin;
-	/**
-	 * Startlevel object. This object manages the framework and bundle
-	 * startlevels
-	 */
-	protected StartLevelManager startLevelManager;
-	/** The ServiceRegistry */
-	protected ServiceRegistry serviceRegistry; //TODO This is duplicated from the adaptor, do we really gain ?
-	/** next free service id. */
-	protected long serviceid;
-
-	/*
-	 * 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 EventListeners bundleEvent;
-	protected static final int BUNDLEEVENT = 1;
-	/** List of BundleContexts for bundle's SynchronousBundleListeners. */
-	protected EventListeners bundleEventSync;
-	protected static final int BUNDLEEVENTSYNC = 2;
-	/** List of BundleContexts for bundle's ServiceListeners. */
-	protected EventListeners serviceEvent;
-	protected static final int SERVICEEVENT = 3;
-	/** List of BundleContexts for bundle's FrameworkListeners. */
-	protected EventListeners 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 SystemBundle systemBundle;
-	String[] bootDelegation;
-	String[] bootDelegationStems;
-	boolean bootDelegateAll = false;
-	boolean contextBootDelegation = "true".equals(FrameworkProperties.getProperty("osgi.context.bootdelegation", "true")); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-	boolean compatibiltyBootDelegation = false;
-
-	/**
-	 * The AliasMapper used to alias OS Names.
-	 */
-	protected static AliasMapper aliasMapper = new AliasMapper();
-	protected ConditionalPermissionAdminImpl condPermAdmin;
-	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;
-
-	/* 
-	 * 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;
-		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 */{
-			e.printStackTrace();
-			throw new RuntimeException(e.getMessage());
-		}
-		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);
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null) {
-			try {
-				permissionAdmin = new PermissionAdminImpl(this, adaptor.getPermissionStorage());
-			} catch (IOException e) /* fatal error */{
-				e.printStackTrace();
-				throw new RuntimeException(e.getMessage());
-			}
-			try {
-				condPermAdmin = new ConditionalPermissionAdminImpl(this, adaptor.getPermissionStorage());
-			} catch (IOException e) /* fatal error */{
-				e.printStackTrace();
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		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 EventListeners();
-		bundleEventSync = new EventListeners();
-		serviceEvent = new EventListeners();
-		frameworkEvent = new EventListeners();
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("Framework.initialze()", "done new EventManager"); //$NON-NLS-1$ //$NON-NLS-2$
-		/* create the service registry */
-		serviceid = 1;
-		serviceRegistry = adaptor.getServiceRegistry();
-		// 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);
-					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$
-	}
-
-	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 SystemBundle(this);
-		} catch (BundleException e) { // fatal error
-			e.printStackTrace();
-			throw new RuntimeException(NLS.bind(Msg.OSGI_SYSTEMBUNDLE_CREATE_EXCEPTION, e.getMessage()));
-		}
-	}
-
-	/**
-	 * 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, 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) {
-				int space = value.indexOf(' ');
-				if (space > 0) {
-					value = value.substring(0, space);
-				}
-				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");
-		properties.put(Constants.SUPPORTS_FRAMEWORK_REQUIREBUNDLE, "true");
-	}
-
-	private void setBootDelegation() {
-		// set the compatibility boot delegation flag
-		compatibiltyBootDelegation = "true".equals(FrameworkProperties.getProperty(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION));  //$NON-NLS-1$
-		// set the boot delegation according to the osgi boot delegation property
-		String bootDelegationProp = properties.getProperty(Constants.OSGI_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.OSGI_FRAMEWORK_SYSTEM_PACKAGES);
-		// set the system exports property using the vm profile; only if the property is not already set
-		if (systemExports == null) {
-			systemExports = profileProps.getProperty(Constants.OSGI_FRAMEWORK_SYSTEM_PACKAGES);
-			if (systemExports != null)
-				properties.put(Constants.OSGI_FRAMEWORK_SYSTEM_PACKAGES, 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.OSGI_BOOTDELEGATION);
-		if (Constants.OSGI_BOOTDELEGATION_OVERRIDE.equals(type)) {
-			if (profileBootDelegation == null)
-				properties.remove(Constants.OSGI_BOOTDELEGATION); // override with a null value
-			else
-				properties.put(Constants.OSGI_BOOTDELEGATION, profileBootDelegation); // override with the profile value
-		} else if (Constants.OSGI_BOOTDELEGATION_NONE.equals(type))
-			properties.remove(Constants.OSGI_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$
-				if ("J2ME Foundation Specification".equals(javaSpecName)) //$NON-NLS-1$
-					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.1.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.1"); //$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.getEntry(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 (active) {
-			shutdown();
-		}
-		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.removeAllListeners();
-			bundleEvent = null;
-		}
-		if (bundleEventSync != null) {
-			bundleEventSync.removeAllListeners();
-			bundleEventSync = null;
-		}
-		if (serviceEvent != null) {
-			serviceEvent.removeAllListeners();
-			serviceEvent = null;
-		}
-		if (frameworkEvent != null) {
-			frameworkEvent.removeAllListeners();
-			frameworkEvent = null;
-		}
-		if (eventManager != null) {
-			eventManager.close();
-			eventManager = null;
-		}
-		permissionAdmin = null;
-		condPermAdmin = null;
-		packageAdmin = null;
-		adaptor = null;
-		uninstallURLStreamHandlerFactory();
-		uninstallContentHandlerFactory();
-	}
-
-	/**
-	 * 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;
-		/* Resume systembundle */
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("Trying to launch framework"); //$NON-NLS-1$
-		}
-		systemBundle.resume();
-	}
-
-	/**
-	 * 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() {
-		/* Return if framework already stopped */
-		if (!active) {
-			return;
-		}
-		/*
-		 * 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);
-		}
-		/* mark framework as stopped */
-		active = false;
-	}
-
-	/**
-	 * Create a new Bundle object.
-	 * 
-	 * @param bundledata the BundleData of the Bundle to create
-	 */
-	AbstractBundle createAndVerifyBundle(BundleData bundledata) 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()) {
-				throw new BundleException(NLS.bind(Msg.BUNDLE_INSTALL_SAME_UNIQUEID, new Object[] {installedBundle.getSymbolicName(), installedBundle.getVersion().toString(), installedBundle.getLocation()}));
-			}
-		}
-		verifyExecutionEnvironment(bundledata.getManifest());
-		return AbstractBundle.createBundle(bundledata, this);
-	}
-
-	/**
-	 * Verifies that the framework supports one of the required Execution
-	 * Environments
-	 * 
-	 * @param manifest
-	 *            BundleManifest of the bundle to verify the Execution
-	 *            Enviroment for
-	 * @return boolean true if the required Execution Enviroment is available.
-	 * @throws BundleException
-	 *             if the framework does not support the required Execution
-	 *             Environment.
-	 */
-	protected boolean verifyExecutionEnvironment(Dictionary manifest) throws BundleException {
-		if (!Boolean.valueOf(FrameworkProperties.getProperty(Constants.ECLIPSE_EE_INSTALL_VERIFY, Boolean.TRUE.toString())).booleanValue()) //$NON-NLS-1$
-			return true;
-		String headerValue = (String) manifest.get(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT);
-		/* If no required EE is in the manifest return true */
-		if (headerValue == null) {
-			return true;
-		}
-		ManifestElement[] bundleRequiredEE = ManifestElement.parseHeader(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, headerValue);
-		if (bundleRequiredEE.length == 0) {
-			return true;
-		}
-		String systemEE = FrameworkProperties.getProperty(Constants.FRAMEWORK_EXECUTIONENVIRONMENT);
-		if (systemEE != null && !systemEE.equals("")) { //$NON-NLS-1$
-			ManifestElement[] systemEEs = ManifestElement.parseHeader(Constants.BUNDLE_REQUIREDEXECUTIONENVIRONMENT, systemEE);
-			for (int i = 0; i < systemEEs.length; i++) {
-				for (int j = 0; j < bundleRequiredEE.length; j++) {
-					if (systemEEs[i].getValue().equals(bundleRequiredEE[j].getValue())) {
-						return true;
-					}
-				}
-			}
-		}
-		/* If we got here then no matching EE is available, throw exception. */
-		StringBuffer bundleEE = new StringBuffer(25);
-		for (int i = 0; i < bundleRequiredEE.length; i++) {
-			if (i > 0) {
-				bundleEE.append(","); //$NON-NLS-1$
-			}
-			bundleEE.append(bundleRequiredEE[i].getValue());
-		}
-		throw new BundleException(NLS.bind(Msg.BUNDLE_INSTALL_REQUIRED_EE_EXCEPTION, bundleEE.toString()));
-	}
-
-	/**
-	 * 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 a location.
-	 * 
-	 * The bundle is obtained from the location parameter as interpreted by the
-	 * framework in an implementation dependent way. Typically, location will
-	 * most likely be a URL.
-	 * 
-	 * @param location
-	 *            The location identifier of the bundle to install.
-	 * @return The Bundle object of the installed bundle.
-	 */
-	public AbstractBundle installBundle(final String location) throws BundleException {
-		if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-			Debug.println("install from location: " + location); //$NON-NLS-1$
-		}
-		final AccessControlContext callerContext = AccessController.getContext();
-		return installWorker(location, new PrivilegedExceptionAction() {
-			public Object run() throws BundleException {
-				/* Map the identity to a URLConnection */
-				URLConnection source = adaptor.mapLocationToURLConnection(location);
-				/* call the worker to install the bundle */
-				return installWorkerPrivileged(location, source, callerContext);
-			}
-		});
-	}
-
-	/**
-	 * Install a bundle from an InputStream.
-	 * 
-	 * <p>
-	 * This method performs all the steps listed in
-	 * {@link #installBundle(java.lang.String)}, except the bundle's content
-	 * will be read from the InputStream. The location identifier specified
-	 * will be used as the identity of the bundle.
-	 * 
-	 * @param location
-	 *            The location identifier of the bundle to install.
-	 * @param in
-	 *            The InputStream from which the bundle will be read.
-	 * @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 to a URLConnection */
-				URLConnection source = new BundleSource(in);
-				/* 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);
-				}
-				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);
-			if (Debug.DEBUG) {
-				BundleWatcher bundleStats = adaptor.getBundleWatcher();
-				if (bundleStats != null)
-					bundleStats.watchBundle(bundle, BundleWatcher.START_INSTALLING);
-			}
-			try {
-				// Select the native code paths for the bundle;
-				// this is not done by the adaptor because this
-				// should be a static algorithm spec'ed by OSGi
-				// that we do not allow to be adapted.
-				String[] nativepaths = selectNativeCode(bundle);
-				if (nativepaths != null) {
-					bundledata.installNativeCode(nativepaths);
-				}
-				bundle.load();
-				if (System.getSecurityManager() != null) {
-					final boolean extension = (bundledata.getType() & (BundleData.TYPE_BOOTCLASSPATH_EXTENSION | BundleData.TYPE_FRAMEWORK_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, 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;
-	}
-
-	/**
-	 * Selects a native code clause and return a list of the bundle entries for
-	 * native code to be installed.
-	 * 
-	 * @param bundle
-	 *            Bundle's manifest
-	 * @return a list of Strings of the bundle entries to install or <tt>null</tt>
-	 *         if there are no native code clauses.
-	 * @throws BundleException
-	 *             If there is no suitable clause.
-	 */
-	String[] selectNativeCode(org.osgi.framework.Bundle bundle) throws BundleException {
-		String headerValue = (String) ((AbstractBundle) bundle).getBundleData().getManifest().get(Constants.BUNDLE_NATIVECODE);
-		if (headerValue == null) {
-			return (null);
-		}
-		ManifestElement[] elements = ManifestElement.parseHeader(Constants.BUNDLE_NATIVECODE, headerValue);
-		ArrayList bundleNativeCodes = new ArrayList(elements.length);
-		int length = elements.length;
-		boolean optional = false;
-		if (elements[length - 1].getValue().equals("*")) { //$NON-NLS-1$
-			optional = true;
-			length--;
-		}
-		String processor = getProperty(Constants.FRAMEWORK_PROCESSOR);
-		String osname = getProperty(Constants.FRAMEWORK_OS_NAME);
-		Version osversion;
-		try {
-			osversion = Version.parseVersion(getProperty(Constants.FRAMEWORK_OS_VERSION));
-		} catch (Exception e) {
-			osversion = Version.emptyVersion;
-		}
-		String language = getProperty(Constants.FRAMEWORK_LANGUAGE);
-		for (int i = 0; i < length; i++) {
-			BundleNativeCode bnc = new BundleNativeCode(elements[i], (AbstractBundle) bundle);
-			// Pass 1: perform processor/osname/filter matching
-			// Pass 2: perform osversion matching
-			// Pass 3: perform language matching
-			// If there is not a match on all three, then the native code clause is not selected.
-			if (bnc.matchProcessorOSNameFilter(processor, osname) > 0 && bnc.matchOSVersion(osversion) != null && bnc.matchLanguage(language) > 0)
-				bundleNativeCodes.add(bnc);
-		}
-
-		if (bundleNativeCodes.size() == 0)
-			return noMatches(optional);
-		// find the highest ranking one with priority on the osversion then the language
-		Iterator iter = bundleNativeCodes.iterator();
-		BundleNativeCode highestRanking = (BundleNativeCode) iter.next();
-		while (iter.hasNext()) {
-			BundleNativeCode bnc = (BundleNativeCode) iter.next();
-			if (isBncGreaterThan(bnc, highestRanking, osversion, language))
-				highestRanking = bnc;
-		}
-		return highestRanking.getPaths();
-	}
-
-	private boolean isBncGreaterThan(BundleNativeCode candidate, BundleNativeCode highestRanking, Version version, String language) {
-		Version currentHigh = highestRanking.matchOSVersion(version);
-		Version candidateHigh = candidate.matchOSVersion(version);
-		if (currentHigh.compareTo(candidateHigh) < 0)
-			return true;
-		if (highestRanking.matchLanguage(language) < candidate.matchLanguage(language))
-			return true;
-		return false;
-	}
-
-	/**
-	 * 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);
-		}
-	}
-
-	/**
-	 * 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);
-		}
-	}
-
-	/**
-	 * 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 FilterImpl}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 filterstring
-	 *            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.
-	 */
-	protected ServiceReference[] getServiceReferences(String clazz, String filterstring, BundleContextImpl context, boolean allservices) throws InvalidSyntaxException {
-		FilterImpl filter = (filterstring == null) ? null : new FilterImpl(filterstring);
-		ServiceReference[] services = null;
-		if (clazz != null) {
-			try /* test for permission to get clazz */{
-				checkGetServicePermission(clazz);
-			} catch (SecurityException se) {
-				return (null);
-			}
-		}
-		synchronized (serviceRegistry) {
-			services = serviceRegistry.lookupServiceReferences(clazz, filter);
-			if (services == null) {
-				return null;
-			}
-			int removed = 0;
-			for (int i = services.length - 1; i >= 0; i--) {
-				ServiceReferenceImpl ref = (ServiceReferenceImpl) services[i];
-				String[] classes = ref.getClasses();
-				if (allservices || context.isAssignableTo((ServiceReferenceImpl) services[i])) {
-					if (clazz == null)
-						try { /* test for permission to the classes */
-							checkGetServicePermission(classes);
-						} catch (SecurityException se) {
-							services[i] = null;
-							removed++;
-						}
-				} else {
-					services[i] = null;
-					removed++;
-				}
-			}
-			if (removed > 0) {
-				ServiceReference[] temp = services;
-				services = new ServiceReference[temp.length - removed];
-				for (int i = temp.length - 1; i >= 0; i--) {
-					if (temp[i] == null)
-						removed--;
-					else
-						services[i - removed] = temp[i];
-				}
-			}
-
-		}
-		return services == null || services.length == 0 ? null : services;
-	}
-
-	/**
-	 * Method to return the next available service id. This method should be
-	 * called while holding the registrations lock.
-	 * 
-	 * @return next service id.
-	 */
-	protected long getNextServiceId() {
-		long id = serviceid;
-		serviceid++;
-		return (id);
-	}
-
-	/**
-	 * 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;
-		}
-	}
-
-	/**
-	 * Check for permission to register a service.
-	 * 
-	 * The caller must have permission for ALL names.
-	 */
-	protected void checkRegisterServicePermission(String[] names) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null) {
-			int len = names.length;
-			for (int i = 0; i < len; i++) {
-				sm.checkPermission(new ServicePermission(names[i], ServicePermission.REGISTER));
-			}
-		}
-	}
-
-	/**
-	 * Check for permission to get a service.
-	 * 
-	 * The caller must have permission for at least ONE name.
-	 */
-	protected void checkGetServicePermission(String[] names) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null) {
-			SecurityException se = null;
-			int len = names.length;
-			for (int i = 0; i < len; i++) {
-				try {
-					sm.checkPermission(new ServicePermission(names[i], ServicePermission.GET));
-					return;
-				} catch (SecurityException e) {
-					se = e;
-				}
-			}
-			throw se;
-		}
-	}
-
-	/**
-	 * Check for permission to get a service.
-	 */
-	protected void checkGetServicePermission(String name) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null) {
-			sm.checkPermission(new ServicePermission(name, ServicePermission.GET));
-		}
-	}
-
-	/**
-	 * This is necessary for running from a JXE, otherwise the SecurityManager
-	 * is set much later than we would like!
-	 */
-	protected void installSecurityManager() {
-		String securityManager = System.getProperty("java.security.manager"); //$NON-NLS-1$
-		if (securityManager != null) {
-			SecurityManager sm = System.getSecurityManager();
-			if (sm == null) {
-				if (securityManager.length() < 1) {
-					securityManager = "java.lang.SecurityManager"; //$NON-NLS-1$
-				}
-				try {
-					Class clazz = Class.forName(securityManager);
-					sm = (SecurityManager) clazz.newInstance();
-					if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-						Debug.println("Setting SecurityManager to: " + sm); //$NON-NLS-1$
-					}
-					System.setSecurityManager(sm);
-					return;
-				} catch (ClassNotFoundException e) {
-					// do nothing
-				} catch (ClassCastException e) {
-					// do nothing
-				} catch (InstantiationException e) {
-					// do nothing
-				} catch (IllegalAccessException e) {
-					// do nothing
-				}
-				throw new NoClassDefFoundError(securityManager);
-			}
-		}
-	}
-
-	/**
-	 * 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, 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, 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, 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);
-		}
-	}
-
-	/**
-	 * Deliver a ServiceEvent.
-	 * 
-	 * @param type
-	 *            ServiceEvent type.
-	 * @param reference
-	 *            Affected service reference.
-	 */
-	public void publishServiceEvent(int type, org.osgi.framework.ServiceReference reference) {
-		if (serviceEvent != null) {
-			final ServiceEvent event = new ServiceEvent(type, reference);
-			if (System.getSecurityManager() == null) {
-				publishServiceEventPrivileged(event);
-			} else {
-				AccessController.doPrivileged(new PrivilegedAction() {
-					public Object run() {
-						publishServiceEventPrivileged(event);
-						return null;
-					}
-				});
-			}
-		}
-	}
-
-	public void publishServiceEventPrivileged(ServiceEvent 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 (serviceEvent) {
-			/* add set of BundleContexts w/ listeners to queue */
-			contexts.queueListeners(serviceEvent, this);
-			/* synchronously dispatch to populate listeners queue */
-			contexts.dispatchEventSynchronous(SERVICEEVENT, listeners);
-		}
-		/* dispatch event to set of listeners */
-		listeners.dispatchEventSynchronous(SERVICEEVENT, event);
-	}
-
-	/**
-	 * 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, context);
-						break;
-					}
-					case BUNDLEEVENTSYNC : {
-						queue.queueListeners(context.bundleEventSync, context);
-						break;
-					}
-					case SERVICEEVENT : {
-						queue.queueListeners(context.serviceEvent, context);
-						break;
-					}
-					case FRAMEWORKEVENT : {
-						queue.queueListeners(context.frameworkEvent, context);
-						break;
-					}
-				}
-			}
-		} 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 String[] noMatches(boolean optional) throws BundleException {
-		if (optional) {
-			return null;
-		}
-		throw new BundleException(Msg.BUNDLE_NATIVECODE_MATCH_EXCEPTION);
-	}
-
-	private void initializeContextFinder() {
-		Thread current = Thread.currentThread();
-		Throwable error = null;
-		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)
-				Method getContextClassLoader = Thread.class.getMethod("getContextClassLoader", null); //$NON-NLS-1$
-				parent = (ClassLoader) getContextClassLoader.invoke(current, null);
-			}
-			Method setContextClassLoader = Thread.class.getMethod("setContextClassLoader", new Class[] {ClassLoader.class}); //$NON-NLS-1$
-			Object[] params = new Object[] {new ContextFinder(parent)};
-			setContextClassLoader.invoke(current, params);
-			return;
-		} catch (SecurityException e) {
-			// log the error
-			error = e;
-		} catch (NoSuchMethodException e) {
-			// Ignore; must be running on a class library that does not support context class loaders.
-			return; // we really do not want to log this
-		} catch (IllegalArgumentException e) {
-			// log the error
-			error = e;
-		} catch (IllegalAccessException e) {
-			// log the error
-			error = e;
-		} catch (InvocationTargetException e) {
-			// log the error; get the target exception
-			error = e.getTargetException();
-		}
-		FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.INFO, 0, NLS.bind(Msg.CANNOT_SET_CONTEXTFINDER, null), 0, error, null);
-		adaptor.getFrameworkLog().log(entry);
-	}
-
-	private static Field getStaticField(Class clazz, Class type) {
-		Field[] fields = clazz.getDeclaredFields();
-		for (int i = 0; i < fields.length; i++)
-			if (Modifier.isStatic(fields[i].getModifiers()) && 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 = getStaticField(URLConnection.class, java.net.ContentHandlerFactory.class);
-		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 = getStaticField(URLConnection.class, java.net.ContentHandlerFactory.class);
-			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 = getStaticField(URLConnection.class, Hashtable.class);
-		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 = getStaticField(URL.class, URLStreamHandlerFactory.class);
-		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 = getStaticField(URL.class, URLStreamHandlerFactory.class);
-			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 = getStaticField(URL.class, Hashtable.class);
-		if (handlersField != null) {
-			Hashtable handlers = (Hashtable) handlersField.get(null);
-			if (handlers != null)
-				handlers.clear();
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FrameworkSecurityManager.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FrameworkSecurityManager.java
deleted file mode 100644
index 707a028..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/FrameworkSecurityManager.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.osgi.framework.internal.core;
-
-import java.security.*;
-import java.util.*;
-import org.osgi.service.condpermadmin.Condition;
-
-/**
- * 
- * This security manager implements the ConditionalPermission processing for
- * OSGi. It is to be used with ConditionalPermissionAdmin.
- * 
- */
-public class FrameworkSecurityManager 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;
-		}
-	}
-
-	/**
-	 * Adds an array of Condition[] for a ProtectionDomain.
-	 * 
-	 * @param condSet the array of Condition[] for the ProtectionDomain.
-	 * @return true if the condSet was added. false if this is a recursive check
-	 *         and ConditionalPermissions cannot be used.
-	 */
-	boolean addConditionsForDomain(Condition condSet[][]) {
-		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;
-		}
-		Vector condSets = (Vector) cc.depthCondSets.get(cc.getDepth());
-		if (condSets == null) {
-			condSets = new Vector(2);
-			cc.depthCondSets.set(cc.getDepth(), condSets);
-		}
-		condSets.add(condSet);
-		return true;
-	}
-
-	ThreadLocal localCheckContext = new ThreadLocal();
-
-	static class CheckPermissionAction implements PrivilegedAction {
-		Permission perm;
-		Object context;
-		FrameworkSecurityManager fsm;
-
-		CheckPermissionAction(FrameworkSecurityManager fsm, Permission perm, Object context) {
-			this.fsm = fsm;
-			this.perm = perm;
-			this.context = context;
-		}
-
-		public Object run() {
-			fsm.internalCheckPermission(perm, context);
-			return 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 evaluted. 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;
-    }
-    
-	public 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
-			Vector remainingSets = (Vector) cc.depthCondSets.get(cc.getDepth());
-			if (remainingSets != null) {
-				/*
-				 * In this bit of code we have to try every possible combination
-				 * of conditional permissions that still need to be evaluated. We
-				 * do this using recursion to keep track of the different
-				 * combinations we have tried. The top call will setup the different
-				 * combinations for the first protection domain with unevaluated 
-				 * conditions. The final call will actually evaluate the condition.
-				 * If a good combination is found, it will immediately bubble
-				 * up.
-				 */
-				Hashtable condContextDict = new Hashtable(2);
-				// The remainder we will process recursively.
-				Condition conds[][] = (Condition[][]) remainingSets.remove(0);
-				for (int i = 0; i < conds.length; i++)
-					if (recursiveCheck(remainingSets, conds[i], null, condContextDict, cc))
-						return; // found a pass return without SecurityException
-				throw new SecurityException("Conditions not satisfied"); //$NON-NLS-1$
-			}
-		} finally {
-			cc.depthCondSets.remove(cc.getDepth());
-            cc.accs.remove(cc.accs.size()-1);
-		}
-	}
-
-	/**
-	 * Checks that at least one combination of the Condition[] in the Vector can
-	 * be satisfied along with the passed array of Conditions.
-	 * 
-	 * @param remainingSets the Vector of Condition[][] to check.
-	 * @param conditions the conditions that must be satisfied.
-	 * @param condDict a dictionary that will be filled with the Conditions to
-	 *        check.
-	 * @param condContextDict a Dictionary of Dictionaries that will be passed
-	 *        to Condition.isSatisfied when performing repeated check.
-	 * @param cc the CheckContext
-	 * @return true if a successful combination was found.
-	 */
-	private boolean recursiveCheck(Vector remainingSets, Condition[] conditions, Hashtable condDict, Hashtable condContextDict, CheckContext cc) {
-		// clone condDict and clone each Vector in the condDict
-		if (condDict == null) {
-			condDict = new Hashtable(2);
-		} else {
-			Hashtable copyCondDict = new Hashtable(2);
-			for (Enumeration keys = condDict.keys(); keys.hasMoreElements();) {
-				Object key = keys.nextElement();
-				copyCondDict.put(key, ((Vector) condDict.get(key)).clone());
-			}
-			condDict = copyCondDict;
-		}
-		for (int i = 0; i < conditions.length; i++) {
-			if (conditions[i] == null)
-				continue;
-			Vector condList = (Vector) condDict.get(conditions[i].getClass());
-			if (condList == null) {
-				condList = new Vector();
-				condDict.put(conditions[i].getClass(), condList);
-			}
-			condList.add(conditions[i]);
-		}
-		if (remainingSets.size() > 0) {
-			Condition conds[][] = (Condition[][]) remainingSets.get(0);
-			Vector newSets = (Vector) remainingSets.clone();
-			newSets.remove(0);
-			for (int i = 0; i < conds.length; i++)
-				if (recursiveCheck(newSets, conds[i], condDict, condContextDict, cc))
-					return true;
-			return false;
-		}
-		Enumeration keys = condDict.keys();
-		while (keys.hasMoreElements()) {
-			Class key = (Class) keys.nextElement();
-			Vector conds = (Vector) condDict.get(key);
-			if (conds.size() == 0)
-				continue; // This should never happen since we only add to the condDict if there is a condition
-			Condition condArray[] = (Condition[]) conds.toArray(new Condition[conds.size()]);
-			Dictionary context = (Dictionary) condContextDict.get(key);
-			if (context == null) {
-				context = new Hashtable(2);
-				condContextDict.put(key, context);
-			}
-			if (cc.CondClassSet == null)
-				cc.CondClassSet = new ArrayList(2);
-			if (cc.CondClassSet.contains(condArray[0].getClass()))
-				return false; // doing recursion into same condition class
-			cc.CondClassSet.add(condArray[0].getClass());
-			try {
-				if (!condArray[0].isSatisfied(condArray, context))
-					return false;
-			} finally {
-				cc.CondClassSet.remove(condArray[0].getClass());
-			}
-		}
-		return true;
-	}
-
-	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/framework/internal/core/GlobalPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/GlobalPolicy.java
deleted file mode 100644
index 91ea232..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/GlobalPolicy.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-
-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/framework/internal/core/IBuddyPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/IBuddyPolicy.java
deleted file mode 100644
index 24abbf2..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/IBuddyPolicy.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-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/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 619f026..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ManifestLocalization.java
+++ /dev/null
@@ -1,219 +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.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();
-		int lastSeparator;
-		while ((lastSeparator = nl.lastIndexOf('_')) != -1) {
-			result.add(nl);
-			if (lastSeparator != -1) {
-				nl = nl.substring(0, lastSeparator);
-			}
-		}
-		result.add(nl);
-		// always add the default locale string
-		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].getBundleHost();
-				if (searchBundle.getState() == Bundle.UNINSTALLED)
-					searchBundle = bundle;
-			}
-			return findInResolved(resource, searchBundle);
-		}
-		return findInBundle(resource, searchBundle);
-	}
-
-	private URL findInResolved(String filePath, AbstractBundle bundleHost) {
-
-		URL result = findInBundle(filePath, bundleHost);
-		if (result != null)
-			return result;
-		return findInFragments(filePath, bundleHost);
-	}
-
-	private URL findInBundle(String filePath, AbstractBundle searchBundle) {
-		return searchBundle.getEntry(filePath);
-	}
-
-	private URL findInFragments(String filePath, AbstractBundle searchBundle) {
-		org.osgi.framework.Bundle[] 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].getEntry(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/MultiSourcePackage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/MultiSourcePackage.java
deleted file mode 100644
index b82ac74..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/MultiSourcePackage.java
+++ /dev/null
@@ -1,54 +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.internal.core;
-
-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/framework/internal/core/NullPackageSource.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/NullPackageSource.java
deleted file mode 100644
index 88eef7f..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/NullPackageSource.java
+++ /dev/null
@@ -1,63 +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.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/framework/internal/core/OSGi.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/OSGi.java
deleted file mode 100644
index 756bd50..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/OSGi.java
+++ /dev/null
@@ -1,107 +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.internal.core;
-
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-
-/**
- * Main class for the OSGi framework. This class is used to start the framework for production use.
- * Objects of this class represent an instance of the OSGi framework and
- * can be used to control the framework.
- */
-public class OSGi {
-	protected Framework framework;
-
-	/**
-	 * Constructs an OSGi object with the specified FrameworkAdaptor.
-	 * This method creates an OSGi framework.
-	 *
-	 * @param adaptor An adaptor object for the framework to use.
-	 */
-	public OSGi(FrameworkAdaptor adaptor) {
-		framework = createFramework(adaptor);
-	}
-
-	/**
-	 * Destroy the OSGi framework. This method stops the framework if
-	 * it has been started. All resources associated with the framework
-	 * are release and the OSGi object is no longer usable.
-	 *
-	 */
-	public void close() {
-		framework.close();
-	}
-
-	/**
-	 * Start the framework.
-	 *
-	 * The framework is started as described in the OSGi Framework
-	 * specification.
-	 */
-	public void launch() {
-		framework.launch();
-	}
-
-	/**
-	 * Stop the framework.
-	 *
-	 * The framework is stopped as described in the OSGi Framework
-	 * specification.
-	 */
-	public void shutdown() {
-		framework.shutdown();
-	}
-
-	/**
-	 * This method returns the state of the OSGi framework.
-	 *
-	 * @return true of the framework is launched, false if shutdown.
-	 */
-	public boolean isActive() {
-		return (framework.isActive());
-	}
-
-	/**
-	 * Retrieve the BundleContext for the system bundle.
-	 *
-	 * @return The system bundle's BundleContext.
-	 */
-	public org.osgi.framework.BundleContext getBundleContext() {
-		return (framework.systemBundle.getContext());
-	}
-
-	/**
-	 * Create the internal framework object.
-	 * This method can be overridden to create a secure framework.
-	 *
-	 * @param adaptor FrameworkAdaptor object for the framework.
-	 * @return New Framework object.
-	 */
-	protected Framework createFramework(FrameworkAdaptor adaptor) {
-		return (new Framework(adaptor));
-	}
-
-	/**
-	 * Display the banner to System.out.
-	 *
-	 */
-	protected void displayBanner() {
-		System.out.println();
-		System.out.print(Msg.ECLIPSE_OSGI_NAME); 
-		System.out.print(" "); //$NON-NLS-1$
-		System.out.println(Msg.ECLIPSE_OSGI_VERSION); 
-		System.out.println();
-		System.out.println(Msg.OSGI_VERSION); 
-		System.out.println();
-		System.out.println(Msg.ECLIPSE_COPYRIGHT); 
-	}
-}
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 b0365b0..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageAdminImpl.java
+++ /dev/null
@@ -1,622 +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.core;
-
-import java.io.IOException;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.util.ArrayList;
-import org.eclipse.osgi.framework.adaptor.BundleClassLoader;
-import org.eclipse.osgi.framework.adaptor.BundleData;
-import org.eclipse.osgi.framework.debug.Debug;
-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;
-
-	/* 
-	 * 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();
-		synchronized (framework.bundles) {
-			ExportPackageDescription[] allDescriptions = framework.adaptor.getState().getExportedPackages();
-			for (int i = 0; i < allDescriptions.length; i++) {
-				if (!allDescriptions[i].isRoot())
-					continue;
-				ExportedPackageImpl exportedPackage = createExportedPackage(allDescriptions[i]);
-				if (exportedPackage == null)
-					continue;
-				if (bundle == null || exportedPackage.supplier.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) {
-		framework.checkAdminPermission(framework.systemBundle, AdminPermission.RESOLVE);
-
-		AbstractBundle[] copy = null;
-		if (input != null) {
-			synchronized (input) {
-				copy = new AbstractBundle[input.length];
-				System.arraycopy(input, 0, copy, 0, input.length);
-			}
-		}
-
-		final AbstractBundle[] bundles = copy;
-		Thread refresh = framework.secureAction.createThread(new Runnable() {
-			public void run() {
-				doResolveBundles(bundles, true);
-				if ("true".equals(FrameworkProperties.getProperty("osgi.forcedRestart"))) //$NON-NLS-1$ //$NON-NLS-2$
-					framework.shutdown();
-			}
-		}, "Refresh Packages"); //$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;
-	}
-
-	synchronized 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);
-			AbstractBundle[] refreshedBundles = null;
-			BundleDescription[] descriptions = null;
-			synchronized (framework.bundles) {
-				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) {
-					ArrayList results = new ArrayList(numBundles);
-					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) {
-							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))
-										results.add(sameName);
-								}
-						}
-					}
-					descriptions = (BundleDescription[]) (results.size() == 0 ? null : results.toArray(new BundleDescription[results.size()]));
-				}
-			}
-			State systemState = framework.adaptor.getState();
-			BundleDelta[] delta = systemState.resolve(descriptions).getChanges();
-			refreshedBundles = processDelta(delta, refreshPackages);
-			// 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;
-			if (refreshPackages) {
-				AbstractBundle[] allBundles = framework.getAllBundles();
-				for (int i = 0; i < allBundles.length; i++)
-					allBundles[i].unresolvePermissions();
-				// 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 (delta.length > 0)
-					systemState.setTimeStamp(systemState.getTimeStamp() == Long.MAX_VALUE ? 0 : systemState.getTimeStamp() + 1);
-			}
-			// always resume bundles incase we have lazy-start bundles
-			resumeBundles(refreshedBundles, refreshPackages);
-		} 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 resumeBundles(AbstractBundle[] bundles, boolean refreshPackages) {
-		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;
-			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);
-			}
-			BundleLoaderProxy proxy = (BundleLoaderProxy) bundle.getUserObject();
-			if (proxy != null) {
-				BundleHost.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.getLoaderProxy());
-			}
-		}
-		if (resolve)
-			bundle.resolve();
-		return bundle;
-	}
-
-	private AbstractBundle[] applyDeltas(BundleDelta[] bundleDeltas) throws BundleException {
-		ArrayList results = new ArrayList(bundleDeltas.length);
-		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())
-					results.add(bundle);
-			}
-		}
-		return (AbstractBundle[]) (results.size() == 0 ? null : results.toArray(new AbstractBundle[results.size()]));
-	}
-
-	private AbstractBundle[] processDelta(BundleDelta[] bundleDeltas, boolean refreshPackages) {
-		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);
-		// then sort by dependency order
-		StartLevelManager.sortByDependency(refresh);
-		boolean[] previouslyResolved = new boolean[refresh.length];
-		AbstractBundle[] resolved = null;
-		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;
-				}
-				if (restart) {
-					FrameworkProperties.setProperty("osgi.forcedRestart", "true"); //$NON-NLS-1$ //$NON-NLS-2$
-					// 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--)
-						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 = 0; i < refresh.length; i++)
-						refresh[i].refresh();
-				}
-				// send out unresolved events outside synch block (defect #80610)
-				for (int i = 0; i < refresh.length; 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) {
-					resolved = 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$
-		if (resolved != null)
-			for (int i = 0; i < resolved.length; i++)
-				framework.publishBundleEvent(BundleEvent.RESOLVED, resolved[i]);
-
-		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;
-			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) {
-		BundleLoaderProxy[] hosts = ((AbstractBundle) bundle).getHosts();
-		if (hosts == null)
-			return null;
-		Bundle[] result = new Bundle[hosts.length];
-		for (int i = 0; i < hosts.length; i++)
-			result[i] = hosts[i].getBundleHost();
-		return result;
-	}
-
-	Bundle getBundlePriv(Class clazz) {
-		ClassLoader cl = clazz.getClassLoader();
-		if (cl instanceof BundleClassLoader)
-			return ((BundleLoader) ((BundleClassLoader) cl).getDelegate()).bundle;
-		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
-	}
-
-	protected void setResolvedBundles(SystemBundle 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(SystemBundle 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()));
-		}
-	}
-
-	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());
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageSource.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageSource.java
deleted file mode 100644
index ca1b02d..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PackageSource.java
+++ /dev/null
@@ -1,75 +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.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) {
-		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/framework/internal/core/ParentPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ParentPolicy.java
deleted file mode 100644
index 7d6e55b..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ParentPolicy.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.osgi.framework.internal.core;
-
-import java.net.URL;
-import java.util.Enumeration;
-
-public class ParentPolicy implements IBuddyPolicy {
-
-	public Class loadClass(String name) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public URL loadResource(String name) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	public Enumeration loadResources(String name) {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionAdminImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionAdminImpl.java
deleted file mode 100644
index ed2fed0..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionAdminImpl.java
+++ /dev/null
@@ -1,525 +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.net.URL;
-import java.security.*;
-import java.util.ArrayList;
-import org.eclipse.osgi.framework.adaptor.BundleProtectionDomain;
-import org.eclipse.osgi.framework.adaptor.PermissionStorage;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.osgi.framework.AdminPermission;
-import org.osgi.framework.FrameworkEvent;
-import org.osgi.service.permissionadmin.PermissionAdmin;
-import org.osgi.service.permissionadmin.PermissionInfo;
-
-/**
- * Permission Admin service for the OSGi specification.
- *
- * The Permission Admin service allows operators to
- * manage the permissions of bundles. There is at most one Permission Admin
- * service present in the Framework.
- * <p>
- * Access to the Permission Admin service is protected by
- * corresponding
- * <tt>ServicePermission</tt>. In addition the <tt>AdminPermission</tt>
- * 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 <tt>PermissionInfo</tt>) granted to the
- * bundle with 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 <tt>setDefaultPermissions</tt> 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 <tt>java.security.ProtectionDomain</tt>
- * is 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
- * <tt>java.security.Permission</tt> 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 <tt>getPermissions</tt>
- * and <tt>getDefaultPermissions</tt>.
- */
-public class PermissionAdminImpl implements PermissionAdmin {
-	private static final String ADMIN_IMPLIED_ACTIONS = AdminPermission.RESOURCE + ',' + AdminPermission.METADATA + ',' + AdminPermission.CLASS;
-
-	/** framework object */
-	protected Framework framework;
-
-	/** permission storage object */
-	protected PermissionStorage storage;
-
-	/** The permissions to use if no other permissions can be determined */
-	protected PermissionInfo[] defaultDefaultPermissionInfos;
-
-	/** The basic implied permissions for a bundle */
-	protected PermissionInfo[] baseImpliedPermissionInfos;
-
-	/** The permission collection containing the default assigned permissions */
-	protected BundleCombinedPermissions defaultAssignedPermissions;
-
-	/**
-	 * Construstor.
-	 *
-	 * @param framework Framework object.
-	 */
-	protected PermissionAdminImpl(Framework framework, PermissionStorage storage) {
-		this.framework = framework;
-		this.storage = storage;
-
-		defaultDefaultPermissionInfos = getPermissionInfos(getClass().getResource(Constants.OSGI_DEFAULT_DEFAULT_PERMISSIONS));
-		baseImpliedPermissionInfos = getPermissionInfos(getClass().getResource(Constants.OSGI_BASE_IMPLIED_PERMISSIONS));
-
-		if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-			Debug.println("Default default assigned bundle permissions"); //$NON-NLS-1$
-			if (defaultDefaultPermissionInfos == null) {
-				Debug.println("  <none>"); //$NON-NLS-1$
-			} else {
-				for (int i = 0; i < defaultDefaultPermissionInfos.length; i++) {
-					Debug.println("  " + defaultDefaultPermissionInfos[i]); //$NON-NLS-1$
-				}
-			}
-
-			Debug.println("Base implied bundle permissions"); //$NON-NLS-1$
-			if (baseImpliedPermissionInfos == null) {
-				Debug.println("  <none>"); //$NON-NLS-1$
-			} else {
-				for (int i = 0; i < baseImpliedPermissionInfos.length; i++) {
-					Debug.println("  " + baseImpliedPermissionInfos[i]); //$NON-NLS-1$
-				}
-			}
-		}
-
-		defaultAssignedPermissions = new BundleCombinedPermissions(null);
-		defaultAssignedPermissions.setAssignedPermissions(createDefaultAssignedPermissions(getDefaultPermissions()), true);
-	}
-
-	/**
-	 * 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 <tt>null</tt> if that bundle has not been assigned any
-	 * permissions.
-	 */
-	public PermissionInfo[] getPermissions(String location) {
-		if (location == null) {
-			throw new NullPointerException();
-		}
-
-		PermissionStorage storage = new org.eclipse.osgi.framework.internal.core.SecurePermissionStorage(this.storage);
-
-		try {
-			String[] data = storage.getPermissionData(location);
-
-			if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-				Debug.println("Getting permissions for location: " + location); //$NON-NLS-1$
-				if (data == null) {
-					Debug.println("  <none>"); //$NON-NLS-1$
-				} else {
-					for (int i = 0; i < data.length; i++) {
-						Debug.println("  " + data[i]); //$NON-NLS-1$
-					}
-				}
-			}
-
-			return makePermissionInfo(data);
-		} catch (IOException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, e);
-
-			return null;
-		}
-	}
-
-	/**
-	 * 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 <tt>null</tt>
-	 * if the specified location is to be removed from the permission table.
-	 * @exception SecurityException if the caller does not have the
-	 * <tt>AllPermission</tt>.
-	 */
-	public void setPermissions(String location, PermissionInfo[] permissions) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new AllPermission());
-		if (location == null) {
-			throw new NullPointerException();
-		}
-
-		PermissionStorage storage = new org.eclipse.osgi.framework.internal.core.SecurePermissionStorage(this.storage);
-
-		try {
-			String[] data = makePermissionData(permissions);
-
-			if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-				Debug.println("Setting permissions for location: " + location); //$NON-NLS-1$
-				if (data == null) {
-					Debug.println("  <none>"); //$NON-NLS-1$
-				} else {
-					for (int i = 0; i < data.length; i++) {
-						Debug.println("  " + data[i]); //$NON-NLS-1$
-					}
-				}
-			}
-
-			storage.setPermissionData(location, data);
-		} catch (IOException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, e);
-
-			return;
-		}
-
-		AbstractBundle bundle = framework.getBundleByLocation(location);
-
-		if ((bundle != null) && (bundle.getBundleId() != 0)) {
-			ProtectionDomain domain = bundle.getProtectionDomain();
-
-			if (domain != null) {
-				BundleCombinedPermissions combined = (BundleCombinedPermissions) domain.getPermissions();
-
-				if (permissions == null) {
-					combined.setAssignedPermissions(defaultAssignedPermissions, true);
-				} else {
-					combined.setAssignedPermissions(createPermissions(permissions, bundle, false), false);
-				}
-			}
-		}
-	}
-
-	/**
-	 * 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 <tt>null</tt> if the permission table is empty.
-	 */
-	public String[] getLocations() {
-		PermissionStorage storage = new org.eclipse.osgi.framework.internal.core.SecurePermissionStorage(this.storage);
-
-		try {
-			String[] locations = storage.getLocations();
-
-			return locations;
-		} catch (IOException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, e);
-
-			return null;
-		}
-	}
-
-	/**
-	 * 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 <tt>null</tt> if default
-	 * permissions have not been defined.
-	 */
-	public PermissionInfo[] getDefaultPermissions() {
-		PermissionStorage storage = new org.eclipse.osgi.framework.internal.core.SecurePermissionStorage(this.storage);
-
-		try {
-			String[] data = storage.getPermissionData(null);
-
-			if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-				Debug.println("Getting default permissions"); //$NON-NLS-1$
-				if (data == null) {
-					Debug.println("  <none>"); //$NON-NLS-1$
-				} else {
-					for (int i = 0; i < data.length; i++) {
-						Debug.println("  " + data[i]); //$NON-NLS-1$
-					}
-				}
-			}
-
-			return makePermissionInfo(data);
-		} catch (IOException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, e);
-
-			return null;
-		}
-	}
-
-	/**
-	 * 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.
-	 * @exception SecurityException if the caller does not have the
-	 * <tt>AllPermission</tt>.
-	 */
-	public void setDefaultPermissions(PermissionInfo[] permissions) {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPermission(new AllPermission());
-		PermissionStorage storage = new org.eclipse.osgi.framework.internal.core.SecurePermissionStorage(this.storage);
-
-		try {
-			String[] data = makePermissionData(permissions);
-
-			if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-				Debug.println("Setting default permissions"); //$NON-NLS-1$
-				if (data == null) {
-					Debug.println("  <none>"); //$NON-NLS-1$
-				} else {
-					for (int i = 0; i < data.length; i++) {
-						Debug.println("  " + data[i]); //$NON-NLS-1$
-					}
-				}
-			}
-
-			storage.setPermissionData(null, data);
-		} catch (IOException e) {
-			framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, e);
-
-			return;
-		}
-
-		defaultAssignedPermissions.setAssignedPermissions(createDefaultAssignedPermissions(permissions), true);
-	}
-
-	/**
-	 * Make a PermissionInfo array from an array of encoded permission Strings.
-	 *
-	 * @param data Array of encoded permission Strings
-	 * @return Array of PermissionInfo objects.
-	 */
-	protected PermissionInfo[] makePermissionInfo(String[] data) {
-		if (data == null) {
-			return null;
-		}
-
-		int size = data.length;
-
-		PermissionInfo[] permissions = new PermissionInfo[size];
-
-		for (int i = 0; i < size; i++) {
-			permissions[i] = new PermissionInfo(data[i]);
-		}
-
-		return permissions;
-	}
-
-	/**
-	 * Make an array of encoded permission Strings from a PermissionInfo array.
-	 *
-	 * @param permissions Array of PermissionInfor objects.
-	 * @return Array of encoded permission Strings
-	 */
-	protected String[] makePermissionData(PermissionInfo[] permissions) {
-		if (permissions == null) {
-			return null;
-		}
-
-		int size = permissions.length;
-
-		String[] data = new String[size];
-
-		for (int i = 0; i < size; i++) {
-			data[i] = permissions[i].getEncoded();
-		}
-
-		return data;
-	}
-
-	/**
-	 * This method is called by the Bundle object to create the
-	 * PermissionCollection used by the bundle's ProtectionDomain.
-	 *
-	 * @param bundle the bundle object
-	 * @return BundleCombinedPermission object with the bundle's
-	 * dynamic permissions.
-	 */
-	protected BundleProtectionDomain createProtectionDomain(AbstractBundle bundle) {
-		BundlePermissionCollection implied = getImpliedPermissions(bundle);
-
-		BundleCombinedPermissions combined = new BundleCombinedPermissions(implied);
-
-		BundlePermissionCollection assigned = getAssignedPermissions(bundle);
-
-		combined.setAssignedPermissions(assigned, assigned == defaultAssignedPermissions);
-
-		combined.setConditionalPermissions(new ConditionalPermissions(bundle, framework.condPermAdmin));
-
-		/* now process the permissions.perm file, if it exists, and build the
-		 * restrictedPermissions using it. */
-		PermissionInfo[] permInfos = getPermissionInfos(bundle.getEntry("OSGI-INF/permissions.perm")); //$NON-NLS-1$
-		if (permInfos != null) {
-			ConditionalPermissionInfoImpl cpiArray[] = new ConditionalPermissionInfoImpl[1];
-			cpiArray[0] = new ConditionalPermissionInfoImpl(null, ConditionalPermissionAdminImpl.EMPTY_COND_INFO, permInfos);
-			ConditionalPermissionSet cps = new ConditionalPermissionSet(bundle, cpiArray, ConditionalPermissionAdminImpl.EMPTY_COND);
-			combined.setRestrictedPermissions(cps);
-		}
-
-		return new BundleProtectionDomainImpl(bundle, combined);
-	}
-
-	/**
-	 * Creates the default assigned permissions for bundles that
-	 * have no assigned permissions.
-	 * The default permissions are assigned via the PermissionAdmin service
-	 * and may change dynamically.
-	 *
-	 * @return A PermissionCollection of the default assigned permissions.
-	 */
-	protected BundlePermissionCollection createDefaultAssignedPermissions(PermissionInfo[] info) {
-		if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-			Debug.println("Creating default assigned permissions"); //$NON-NLS-1$
-		}
-
-		if (info == null) {
-			info = defaultDefaultPermissionInfos;
-		}
-
-		return createPermissions(info, null, false);
-	}
-
-	/**
-	 * Returns the assigned permissions for a bundle.
-	 * These permissions are assigned via the PermissionAdmin service
-	 * and may change dynamically.
-	 *
-	 * @param bundle The bundle to create the permissions for.
-	 * @return A PermissionCollection of the assigned permissions.
-	 */
-	protected BundlePermissionCollection getAssignedPermissions(AbstractBundle bundle) {
-		String location = bundle.getLocation();
-
-		PermissionInfo[] info = getPermissions(location);
-
-		if (info == null) {
-			return defaultAssignedPermissions;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_SECURITY) {
-			Debug.println("Creating assigned permissions for " + bundle); //$NON-NLS-1$
-		}
-
-		return createPermissions(info, bundle, false);
-	}
-
-	/**
-	 * Returns the implied permissions for a bundle.
-	 * These permissions never change.
-	 *
-	 * @param bundle The bundle to create the permissions for.
-	 * @return A PermissionCollection of the implied permissions.
-	 */
-	protected BundlePermissionCollection getImpliedPermissions(AbstractBundle bundle) {
-		if (Debug.DEBUG && Debug.DEBUG_SECURITY)
-			Debug.println("Creating implied permissions for " + bundle); //$NON-NLS-1$
-
-		return createPermissions(baseImpliedPermissionInfos, bundle, true);
-	}
-
-	/**
-	 * Read the permissions from the specified resource.
-	 *
-	 * @return An array of PermissionInfo objects from the specified
-	 * resource.
-	 */
-	protected PermissionInfo[] getPermissionInfos(URL resource) {
-		if (resource == null)
-			return null;
-		PermissionInfo[] info = ConditionalPermissionAdminImpl.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 */
-					framework.publishFrameworkEvent(FrameworkEvent.ERROR, framework.systemBundle, 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;
-	}
-
-	/**
-	 * Create a PermissionCollection from a PermissionInfo array.
-	 *
-	 * @param info Array of PermissionInfo objects.
-	 * @param bundle The target bundle for the permissions.
-	 * @return A PermissionCollection containing Permission objects.
-	 */
-	protected BundlePermissionCollection createPermissions(PermissionInfo[] info, final AbstractBundle bundle, boolean implied) {
-		if (info == null)
-			info = new PermissionInfo[0];
-		if (implied) {
-			// create the implied AdminPermission actions for this bundle
-			PermissionInfo impliedInfo = new PermissionInfo(AdminPermission.class.getName(), "(id=" + bundle.getBundleId() + ")", ADMIN_IMPLIED_ACTIONS); //$NON-NLS-1$ //$NON-NLS-2$
-			if (Debug.DEBUG && Debug.DEBUG_SECURITY)
-				Debug.println("Created permission: " + impliedInfo); //$NON-NLS-1$
-			PermissionInfo[] impliedInfos = new PermissionInfo[info.length + 1];
-			System.arraycopy(info, 0, impliedInfos, 0, info.length);
-			impliedInfos[info.length] = impliedInfo;
-			info = impliedInfos;
-		}
-		ConditionalPermissionInfoImpl cpiArray[] = new ConditionalPermissionInfoImpl[1];
-		cpiArray[0] = new ConditionalPermissionInfoImpl(null, ConditionalPermissionAdminImpl.EMPTY_COND_INFO, info);
-		return new ConditionalPermissionSet(bundle, cpiArray, ConditionalPermissionAdminImpl.EMPTY_COND);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionsHash.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionsHash.java
deleted file mode 100644
index 76daea3..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PermissionsHash.java
+++ /dev/null
@@ -1,104 +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.internal.core;
-
-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/framework/internal/core/PolicyHandler.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PolicyHandler.java
deleted file mode 100644
index e00552e..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/PolicyHandler.java
+++ /dev/null
@@ -1,201 +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.framework.internal.core;
-
-import java.net.URL;
-import java.util.*;
-import org.osgi.framework.*;
-
-public class PolicyHandler {
-	//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.
-	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.
-	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 ThreadLocal beingLoaded;
-
-	private BundleListener listener = new BundleListener() {
-		public void bundleChanged(BundleEvent event) {
-			if (event.getType() == BundleEvent.STARTED || event.getType() == BundleEvent.STOPPED)
-				return;
-			try {
-				String list = (String) policedLoader.getBundle().getBundleData().getManifest().get(Constants.BUDDY_LOADER);
-				synchronized (this) {
-					policies = getArrayFromList(list);
-				}
-			} catch (BundleException e) {
-				//Ignore
-			}
-		}
-	};
-
-	public PolicyHandler(BundleLoader loader, String buddyList) {
-		policedLoader = loader;
-		policies = getArrayFromList(buddyList);
-		beingLoaded = new ThreadLocal();
-		policedLoader.bundle.framework.systemBundle.context.addBundleListener(listener);
-	}
-
-	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 synchronized IBuddyPolicy getPolicyImplementation(int policyOrder) {
-		if (policies[policyOrder] instanceof String) {
-			String buddyName = (String) policies[policyOrder];
-
-			if (REGISTERED_POLICY.equals(buddyName)) {
-				policies[policyOrder] = new RegisteredPolicy(policedLoader);
-				return (IBuddyPolicy) policies[policyOrder];
-			}
-			if (BOOT_POLICY.equals(buddyName)) {
-				policies[policyOrder] = SystemPolicy.getInstance(SystemPolicy.BOOT);
-				return (IBuddyPolicy) policies[policyOrder];
-			}
-			if (APP_POLICY.equals(buddyName)) {
-				policies[policyOrder] = SystemPolicy.getInstance(SystemPolicy.APP);
-				return (IBuddyPolicy) policies[policyOrder];
-			}
-			if (EXT_POLICY.equals(buddyName)) {
-				policies[policyOrder] = SystemPolicy.getInstance(SystemPolicy.EXT);
-				return (IBuddyPolicy) policies[policyOrder];
-			}
-			if (DEPENDENT_POLICY.equals(buddyName)) {
-				policies[policyOrder] = new DependentPolicy(policedLoader);
-				return (IBuddyPolicy) policies[policyOrder];
-			}
-			if (GLOBAL_POLICY.equals(buddyName)) {
-				policies[policyOrder] = new GlobalPolicy(policedLoader.bundle.framework.packageAdmin);
-				return (IBuddyPolicy) policies[policyOrder];
-			}
-			if (PARENT_POLICY.equals(buddyName)) {
-				policies[policyOrder] = new SystemPolicy(policedLoader.getParentClassLoader());
-				return (IBuddyPolicy) policies[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) policies[policyOrder];
-	}
-
-	public Class doBuddyClassLoading(String name) {
-		if (startLoading(name) == false)
-			return null;
-
-		Class result = null;
-		for (int i = 0; i < policies.length && result == null; i++) {
-			result = getPolicyImplementation(i).loadClass(name);
-		}
-		stopLoading(name);
-		return result;
-	}
-
-	public URL doBuddyResourceLoading(String name) {
-		if (startLoading(name) == false)
-			return null;
-
-		if (policies == null)
-			return null;
-		URL result = null;
-		for (int i = 0; i < policies.length && result == null; i++) {
-			result = getPolicyImplementation(i).loadResource(name);
-		}
-		stopLoading(name);
-		return result;
-	}
-
-	public Enumeration doBuddyResourcesLoading(String name) {
-		if (startLoading(name) == false)
-			return null;
-
-		if (policies == null)
-			return null;
-		Vector results = null;
-		for (int i = 0; i < policies.length; i++) {
-			Enumeration result = getPolicyImplementation(i).loadResources(name);
-            if (result != null) {
-            	if (results == null)
-            		results = new Vector(policies.length);
-                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 close() {
-		policedLoader.bundle.framework.systemBundle.context.removeBundleListener(listener);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/RegisteredPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/RegisteredPolicy.java
deleted file mode 100644
index 5bc9ef0..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/RegisteredPolicy.java
+++ /dev/null
@@ -1,117 +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.framework.internal.core;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-
-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.bundle.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, true);
-			} 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, true);
-		}
-		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/framework/internal/core/SecurePermissionStorage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SecurePermissionStorage.java
deleted file mode 100644
index 2cfa422..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SecurePermissionStorage.java
+++ /dev/null
@@ -1,109 +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.internal.core;
-
-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/framework/internal/core/ServiceReferenceImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceReferenceImpl.java
deleted file mode 100644
index fc6be6f..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceReferenceImpl.java
+++ /dev/null
@@ -1,277 +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.internal.core;
-
-import org.osgi.framework.Bundle;
-import org.osgi.framework.ServiceReference;
-
-/**
- * A reference to a service.
- *
- * The framework returns ServiceReference objects from the
- * {@link BundleContextImpl#getServiceReference BundleContext.getServiceReference} and
- * {@link BundleContextImpl#getServiceReferences BundleContext.getServiceReferences} methods.
- * <p>A ServiceReference may be shared between bundles and
- * can be used to examine the properties of the service and to
- * get the service object
- * (See {@link BundleContextImpl#getService BundleContext.getService}).
- * <p>A registered service <i>may</i> have multiple, distinct ServiceReference
- * objects which refer to it.
- * However these ServiceReference objects will have
- * the same <code>hashCode</code> and the <code>equals</code> method
- * will return <code>true</code> when compared.
- */
-
-public class ServiceReferenceImpl implements ServiceReference, Comparable {
-	/** Registered Service object. */
-	protected ServiceRegistrationImpl registration;
-
-	/**
-	 * Construct a reference.
-	 *
-	 */
-	protected ServiceReferenceImpl(ServiceRegistrationImpl registration) {
-		this.registration = registration;
-	}
-
-	/**
-	 * 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.
-	 */
-	public Object getProperty(String key) {
-		return (registration.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.
-	 */
-	public String[] getPropertyKeys() {
-		return (registration.getPropertyKeys());
-	}
-
-	/**
-	 * 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.
-	 */
-	public org.osgi.framework.Bundle getBundle() {
-		return (registration.getBundle());
-	}
-
-	/**
-	 * Return the list of bundles which are using the service.
-	 *
-	 * <p>This method will always return <code>null</code> when the
-	 * service has been unregistered.
-	 *
-	 * @return The array of bundles using the service or null if
-	 * no bundles are using the service.
-	 * @see BundleContextImpl#getService
-	 */
-	public org.osgi.framework.Bundle[] getUsingBundles() {
-		return (registration.getUsingBundles());
-	}
-
-	/**
-	 * Return the classes under which the referenced service was registered.
-	 *
-	 * @return array of class names.
-	 */
-	protected String[] getClasses() {
-		return (registration.clazzes);
-	}
-
-	/**
-	 * Return the serviceid of the ServiceRegistration.
-	 *
-	 * @return service.id of the service
-	 */
-	protected long getId() {
-		return (registration.serviceid);
-	}
-
-	/**
-	 * Return the serviceranking of the ServiceRegistration.
-	 *
-	 * @return service.ranking of the service
-	 */
-	protected int getRanking() {
-		return (registration.serviceranking);
-	}
-
-	/**
-	 * 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());
-	}
-
-	/**
-	 *
-	 *  Compares two service objects and returns an indication as to which is higher ranked
-	 *  based on service ranking and service_ID.
-	 *
-	 * The service with the higher service ranking (as specified in its service.ranking property)
-	 * is defined to be higher ranked.
-	 *
-	 * If there is a tie in ranking, the service with the lowest
-	 * service ID (as specified in its service.id property); that is,
-	 * the service that was registered first is returned.
-	 *
-	 * This is the same algorithm used by BundleContext.getServiceReference.
-	 *
-	 * @return		int
-	 *                                  int = 0 if this object's ranking and
-	 *                                  service id are equivalent
-	 *
-	 *                                  int < 0 if this object's ranking is lower
-	 *                                  than the argument's ranking or if the
-	 *                                  rankings are equal, this object's service
-	 *                                  id is greater than the argument's service
-	 *                                  id.
-	 *
-	 *                                  int > 0 if this object's ranking is higher
-	 *                                  than than the argument's ranking or if the
-	 *                                  rankings are equal, this object's service
-	 *                                  id is less than the argument's service id.
-	 *
-	 *
-	 * @param		object
-	 *					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 object) {
-		ServiceReferenceImpl other = (ServiceReferenceImpl) object;
-		if (this.getRanking() != other.getRanking())
-			return this.getRanking() > other.getRanking() ? -1 : 1;
-		return this.getId() == other.getId() ? 0 : this.getId() > other.getId() ? 1 : -1;
-	}
-
-	public boolean isAssignableTo(Bundle bundle, String className) {
-		AbstractBundle consumer = (AbstractBundle) bundle;
-		// always return false for fragments
-		if (consumer.isFragment())
-			return false;
-		BundleHost producer = (BundleHost) registration.bundle;
-		// 1) if the registrant == consumer always return true
-		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 (producerBL.isBootDelegationPackage(pkgName)) {
-			SystemBundleLoader systemLoader = (SystemBundleLoader) registration.framework.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(registration.service.getClass(), 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) registration.framework.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);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceRegistrationImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceRegistrationImpl.java
deleted file mode 100644
index d7a7672..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceRegistrationImpl.java
+++ /dev/null
@@ -1,652 +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.core;
-
-import java.lang.reflect.Array;
-import java.util.*;
-import org.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.framework.util.Headers;
-import org.osgi.framework.*;
-
-/**
- * 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.
- */
-//TODO That's kind of big
-public class ServiceRegistrationImpl implements ServiceRegistration {
-	/** Reference to this registration. */
-	protected ServiceReferenceImpl reference;
-
-	/** Internal framework object. */
-	protected Framework framework;
-
-	/** context which registered this service. */
-	protected BundleContextImpl context;
-
-	/** bundle which registered this service. */
-	protected AbstractBundle bundle;
-
-	/** list of contexts using the service.
-	 * Access to this should be protected by the registrationLock */
-	protected ArrayList contextsUsing;
-
-	/** service classes for this registration. */
-	protected String[] clazzes;
-
-	/** service object for this registration. */
-	protected Object service;
-
-	/** properties for this registration. */
-	protected Properties properties;
-
-	/** service id. */
-	protected long serviceid;
-
-	/** service ranking. */
-	protected int serviceranking;
-
-	/* internal object to use for synchronization */
-	protected Object registrationLock = new Object();
-
-	/** The registration state */
-	protected int state = REGISTERED;
-	public static final int REGISTERED = 0x00;
-	public static final int UNREGISTERING = 0x01;
-	public static final int UNREGISTERED = 0x02;
-
-	/**
-	 * Construct a ServiceRegistration and register the service
-	 * in the framework's service registry.
-	 *
-	 */
-	protected ServiceRegistrationImpl(BundleContextImpl context, String[] clazzes, Object service, Dictionary properties) {
-		this.context = context;
-		this.bundle = context.bundle;
-		this.framework = context.framework;
-		this.clazzes = clazzes; /* must be set before calling createProperties. */
-		this.service = service;
-		this.contextsUsing = null;
-		this.reference = new ServiceReferenceImpl(this);
-
-		synchronized (framework.serviceRegistry) {
-			serviceid = framework.getNextServiceId(); /* must be set before calling createProperties. */
-			this.properties = createProperties(properties); /* 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$
-			}
-
-			framework.serviceRegistry.publishService(context, this);
-		}
-
-		/* must not hold the registrations lock when this event is published */
-		framework.publishServiceEvent(ServiceEvent.REGISTERED, reference);
-	}
-
-	/**
-	 * 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() {
-		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$
-			}
-
-			synchronized (framework.serviceRegistry) {
-				framework.serviceRegistry.unpublishService(context, this);
-			}
-
-			state = UNREGISTERING; /* mark unregisterING */
-		}
-
-		/* must not hold the registrationLock when this event is published */
-		framework.publishServiceEvent(ServiceEvent.UNREGISTERING, reference);
-
-		/* we have published the ServiceEvent, now mark the service fully unregistered */
-		service = null;
-		state = UNREGISTERED;
-
-		int size = 0;
-		BundleContextImpl[] users = null;
-
-		synchronized (registrationLock) {
-			if (contextsUsing != null) {
-				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]);
-		}
-
-		contextsUsing = null;
-
-		reference = null; /* mark registration dead */
-		context = null;
-
-		/* These fields must be valid after unregister is called:
-		 *   properties
-		 */
-	}
-
-	/**
-	 * 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 org.osgi.framework.ServiceReference getReference() {
-		/* use reference instead of unregistered so that ServiceFactorys, called
-		 * by releaseService after the registration is unregistered, can
-		 * get the ServiceReference. Note this technically may voilate the spec
-		 * but makes more sense.
-		 */
-		if (reference == null) {
-			throw new IllegalStateException(Msg.SERVICE_ALREADY_UNREGISTERED_EXCEPTION);
-		}
-
-		return (reference);
-	}
-
-	/**
-	 * 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) {
-		synchronized (registrationLock) {
-			if (state != REGISTERED) /* in the process of unregistering */
-			{
-				throw new IllegalStateException(Msg.SERVICE_ALREADY_UNREGISTERED_EXCEPTION);
-			}
-
-			this.properties = createProperties(props);
-		}
-
-		/* must not hold the registrationLock when this event is published */
-		framework.publishServiceEvent(ServiceEvent.MODIFIED, reference);
-	}
-
-	/**
-	 * Construct a properties object from the dictionary for this
-	 * ServiceRegistration.
-	 *
-	 * @param props The properties for this service.
-	 * @return A Properties object for this ServiceRegistration.
-	 */
-	protected Properties createProperties(Dictionary props) {
-		Properties properties = new Properties(props);
-
-		properties.set(Constants.OBJECTCLASS, clazzes, true);
-		properties.set(Constants.SERVICE_ID, new Long(serviceid), true);
-		properties.setReadOnly();
-		Object ranking = properties.getProperty(Constants.SERVICE_RANKING);
-
-		serviceranking = (ranking instanceof Integer) ? ((Integer) ranking).intValue() : 0;
-
-		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.
-	 */
-	protected 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.
-	 */
-	protected String[] getPropertyKeys() {
-		synchronized (registrationLock) {
-			return (properties.getPropertyKeys());
-		}
-	}
-
-	/**
-	 * 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.
-	 */
-	protected AbstractBundle getBundle() {
-		if (reference == null) {
-			return (null);
-		}
-
-		return (bundle);
-	}
-
-	/**
-	 * Get a service object for the using BundleContext.
-	 *
-	 * @param user BundleContext using service.
-	 * @return Service object
-	 */
-	protected Object getService(BundleContextImpl user) {
-		synchronized (registrationLock) {
-			if (state == UNREGISTERED) /* service unregistered */
-			{
-				return (null);
-			}
-
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				Debug.println("getService[" + user.bundle + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-
-			Hashtable servicesInUse = user.servicesInUse;
-
-			ServiceUse use = (ServiceUse) servicesInUse.get(reference);
-
-			if (use == null) {
-				use = new ServiceUse(user, this);
-
-				Object service = use.getService();
-
-				if (service != null) {
-					servicesInUse.put(reference, use);
-
-					if (contextsUsing == null) {
-						contextsUsing = new ArrayList(10);
-					}
-
-					contextsUsing.add(user);
-				}
-
-				return (service);
-			} else {
-				return (use.getService());
-			}
-		}
-	}
-
-	/**
-	 * 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>.
-	 */
-	protected boolean ungetService(BundleContextImpl user) {
-		synchronized (registrationLock) {
-			if (state == UNREGISTERED) {
-				return (false);
-			}
-
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				String bundle = (user.bundle == null) ? "" : user.bundle.toString(); //$NON-NLS-1$
-				Debug.println("ungetService[" + bundle + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-
-			Hashtable servicesInUse = user.servicesInUse;
-
-			if (servicesInUse != null) {
-				ServiceUse use = (ServiceUse) servicesInUse.get(reference);
-
-				if (use != null) {
-					if (use.ungetService()) {
-						/* use count is now zero */
-						servicesInUse.remove(reference);
-
-						contextsUsing.remove(user);
-					}
-					return (true);
-				}
-			}
-
-			return (false);
-		}
-	}
-
-	/**
-	 * Release the service for the using BundleContext.
-	 *
-	 * @param user BundleContext using service.
-	 */
-	protected void releaseService(BundleContextImpl user) {
-		synchronized (registrationLock) {
-			if (reference == null) /* registration dead */
-			{
-				return;
-			}
-
-			if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-				String bundle = (user.bundle == null) ? "" : user.bundle.toString(); //$NON-NLS-1$
-				Debug.println("releaseService[" + bundle + "](" + this + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-			}
-
-			Hashtable servicesInUse = user.servicesInUse;
-
-			if (servicesInUse != null) {
-				ServiceUse use = (ServiceUse) servicesInUse.remove(reference);
-
-				if (use != null) {
-					use.releaseService();
-					// contextsUsing may have been nulled out by use.releaseService() if the registrant bundle
-					// is listening for events and unregisters the service
-					if (contextsUsing != null)
-						contextsUsing.remove(user);
-				}
-			}
-		}
-	}
-
-	/**
-	 * Return the list of bundle which are using this service.
-	 *
-	 * @return Array of Bundles using this service.
-	 */
-	protected AbstractBundle[] getUsingBundles() {
-		synchronized (registrationLock) {
-			if (state == UNREGISTERED) /* service unregistered */
-				return (null);
-
-			if (contextsUsing == null)
-				return (null);
-
-			int size = contextsUsing.size();
-			if (size == 0)
-				return (null);
-
-			/* Copy list of BundleContext into an array of Bundle. */
-			AbstractBundle[] bundles = new AbstractBundle[size];
-			for (int i = 0; i < size; i++)
-				bundles[i] = ((BundleContextImpl) contextsUsing.get(i)).bundle;
-
-			return (bundles);
-		}
-	}
-
-	/**
-	 * Return a String representation of this object.
-	 *
-	 * @return String representation of this object.
-	 */
-	public String toString() {
-		String[] clazzes = this.clazzes;
-		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(properties);
-
-		return (sb.toString());
-	}
-
-	/**
-	 * Hashtable for service properties.
-	 */
-	static class Properties extends Headers {
-		/**
-		 * Create a properties object for the service.
-		 *
-		 * @param props The properties for this service.
-		 */
-		private Properties(int size, Dictionary props) {
-			super(size);
-
-			if (props != null) {
-				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.
-		 */
-		protected Properties(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.
-		 */
-		protected 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.
-		 */
-		protected 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.
-		 */
-		protected 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.
-		 */
-		protected 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());
-		}
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceUse.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceUse.java
deleted file mode 100644
index f5ff929..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/ServiceUse.java
+++ /dev/null
@@ -1,250 +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.internal.core;
-
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import org.eclipse.osgi.framework.debug.Debug;
-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.
- */
-
-public class ServiceUse {
-	/** ServiceFactory object if the service instance represents a factory,
-	 null otherwise */
-	protected ServiceFactory factory;
-	/** Service object either registered or that returned by
-	 ServiceFactory.getService() */
-	protected Object service;
-	/** BundleContext associated with this service use */
-	protected BundleContextImpl context;
-	/** ServiceDescription of the registered service */
-	protected ServiceRegistrationImpl registration;
-	/** bundle's use count for this service */
-	protected int useCount;
-
-	/** Internal framework object. */
-
-	/**
-	 * Constructs a service use encapsulating the service object.
-	 * Objects of this class should be constrcuted while holding the
-	 * registrations lock.
-	 *
-	 * @param   context bundle getting the service
-	 * @param   registration ServiceRegistration of the service
-	 */
-	protected ServiceUse(BundleContextImpl context, ServiceRegistrationImpl registration) {
-		this.context = context;
-		this.registration = registration;
-		this.useCount = 0;
-
-		Object service = registration.service;
-		if (service instanceof ServiceFactory) {
-			factory = (ServiceFactory) service;
-			this.service = null;
-		} else {
-			this.factory = null;
-			this.service = service;
-		}
-	}
-
-	/**
-	 * 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.
-	 */
-	protected Object getService() {
-		if ((useCount == 0) && (factory != null)) {
-			AbstractBundle factorybundle = registration.context.bundle;
-			Object service;
-
-			try {
-				service = AccessController.doPrivileged(new PrivilegedAction() {
-					public Object run() {
-						return factory.getService(context.bundle, 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.framework.adaptor.handleRuntimeError(t);
-				BundleException be = new BundleException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, factory.getClass().getName(), "getService"), t); //$NON-NLS-1$ 
-				context.framework.publishFrameworkEvent(FrameworkEvent.ERROR, factorybundle, be);
-				return (null);
-			}
-
-			if (service == null) {
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println(factory + ".getService() returned null."); //$NON-NLS-1$
-				}
-
-				BundleException be = new BundleException(NLS.bind(Msg.SERVICE_OBJECT_NULL_EXCEPTION, factory.getClass().getName())); 
-				context.framework.publishFrameworkEvent(FrameworkEvent.ERROR, factorybundle, be);
-
-				return (null);
-			}
-
-			String[] clazzes = registration.clazzes;
-			String invalidService = BundleContextImpl.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)); 
-			}
-			this.service = service;
-		}
-
-		useCount++;
-
-		return (this.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>.
-	 */
-	protected boolean ungetService() {
-		if (useCount == 0) {
-			return (true);
-		}
-
-		useCount--;
-
-		if (useCount == 0) {
-			if (factory != null) {
-				try {
-					AccessController.doPrivileged(new PrivilegedAction() {
-						public Object run() {
-							factory.ungetService(context.bundle, registration, service);
-
-							return null;
-						}
-					});
-				} catch (Throwable t) {
-					if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-						Debug.println(factory + ".ungetService() exception"); //$NON-NLS-1$
-						Debug.printStackTrace(t);
-					}
-
-					AbstractBundle factorybundle = registration.context.bundle;
-					BundleException be = new BundleException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, factory.getClass().getName(), "ungetService"), t); //$NON-NLS-1$ 
-					context.framework.publishFrameworkEvent(FrameworkEvent.ERROR, factorybundle, be);
-				}
-
-				service = null;
-			}
-
-			return (true);
-		}
-
-		return (false);
-	}
-
-	/**
-	 * 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>
-	 */
-	protected void releaseService() {
-		if ((useCount > 0) && (factory != null)) {
-			try {
-				AccessController.doPrivileged(new PrivilegedAction() {
-					public Object run() {
-						factory.ungetService(context.bundle, registration, service);
-
-						return null;
-					}
-				});
-			} catch (Throwable t) {
-				if (Debug.DEBUG && Debug.DEBUG_SERVICES) {
-					Debug.println(factory + ".ungetService() exception"); //$NON-NLS-1$
-					Debug.printStackTrace(t);
-				}
-
-				AbstractBundle factorybundle = registration.context.bundle;
-				BundleException be = new BundleException(NLS.bind(Msg.SERVICE_FACTORY_EXCEPTION, factory.getClass().getName(), "ungetService"), t); //$NON-NLS-1$ 
-				context.framework.publishFrameworkEvent(FrameworkEvent.ERROR, factorybundle, be);
-			}
-
-			service = null;
-		}
-
-		useCount = 0;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SingleSourcePackage.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SingleSourcePackage.java
deleted file mode 100644
index e5de392..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SingleSourcePackage.java
+++ /dev/null
@@ -1,56 +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.internal.core;
-
-import java.net.URL;
-import java.util.Enumeration;
-
-public class SingleSourcePackage extends PackageSource {
-	BundleLoaderProxy supplier;
-	// this is the index of the ExportPackageDescription 
-	// into the list of exported packages of the supplier
-	// a valid of -1 indicates it is unknown or does not matter
-	protected int expid;
-	public SingleSourcePackage(String id, int expid, BundleLoaderProxy supplier) {
-		super(id);
-		this.expid = expid;
-		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;
-		return supplier == singleSource.supplier && expid == singleSource.expid;
-	}
-}
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 07c2aeb..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, 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.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/StartLevelImpl.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelImpl.java
deleted file mode 100644
index c45cf9f..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelImpl.java
+++ /dev/null
@@ -1,222 +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.internal.core;
-
-import org.osgi.framework.Bundle;
-import org.osgi.service.startlevel.StartLevel;
-
-/**
- * StartLevel service for the OSGi specification.
- *
- * Framework service which allows management of framework and bundle startlevels.
- *
- * If present, there will only be a single instance of this service
- * registered in the framework.
- *
- */
-public class StartLevelImpl implements StartLevel {
-
-	protected StartLevelManager manager;
-	protected Bundle owner;
-
-	/** This constructor is called by the StartLevel factory */
-	protected StartLevelImpl(Bundle owner, Framework framework) {
-		this.owner = owner;
-		this.manager = framework.startLevelManager;
-	}
-
-	/**
-	 * 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 manager.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 <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) {
-		manager.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 manager.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,
-	 * 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) {
-		manager.setStartLevel(newSL, owner);
-	}
-
-	/**
-	 * 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(Bundle bundle) {
-		return manager.isBundlePersistentlyStarted(bundle);
-	}
-
-	
-	public boolean isBundleActivationPolicyUsed(Bundle bundle) {
-		return manager.isBundleActivationPolicyUsed(bundle);
-	}
-
-	/**
-	 * 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(Bundle bundle) {
-		return manager.getBundleStartLevel(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.
-	 *
-	 * 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(Bundle bundle, int newSL) {
-		manager.setBundleStartLevel(bundle, newSL);
-	}
-
-	public boolean isSettingStartLevel() {
-		return manager.isSettingStartLevel();
-	}
-}
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 0f522db..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/StartLevelManager.java
+++ /dev/null
@@ -1,810 +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.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.*;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * 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.
- */
-// TODO there is no need to use ServiceFactory anymore (bug 184275)
-public class StartLevelManager implements EventDispatcher, EventListener, ServiceFactory {
-
-	protected static Framework framework;
-	protected static EventManager eventManager;
-	protected static EventListeners startLevelListeners;
-
-	/** The framework beginning startlevel.  Default is 1 */
-	protected int frameworkBeginningStartLevel = 1;
-
-	/** 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 static int activeSL = 0;
-
-	/** An object used to lock the active startlevel while it is being referenced */
-	private static final Object lock = new Object();
-
-	volatile private boolean settingStartLevel = false;
-
-	private StartLevelImpl implementation;
-
-	/** This constructor is called by the Framework */
-	protected StartLevelManager(Framework framework) {
-		StartLevelManager.framework = framework;
-	}
-
-	protected void initialize() {
-		initialBundleStartLevel = framework.adaptor.getInitialBundleStartLevel();
-
-		// Set Framework Beginning Start Level Property
-		String value = framework.getProperty(Constants.OSGI_FRAMEWORKBEGINNINGSTARTLEVEL);
-		if (value == null) {
-			value = Constants.DEFAULT_STARTLEVEL;
-		} else {
-			try {
-				if (Integer.parseInt(value) <= 0) {
-					System.err.println(NLS.bind(Msg.PROPERTIES_INVALID_FW_STARTLEVEL, Constants.DEFAULT_STARTLEVEL));
-					value = Constants.DEFAULT_STARTLEVEL;
-				}
-			} catch (NumberFormatException nfe) {
-				System.err.println(NLS.bind(Msg.PROPERTIES_INVALID_FW_STARTLEVEL, Constants.DEFAULT_STARTLEVEL));
-				value = Constants.DEFAULT_STARTLEVEL;
-			}
-		}
-		framework.setProperty(Constants.OSGI_FRAMEWORKBEGINNINGSTARTLEVEL, value);
-		frameworkBeginningStartLevel = Integer.parseInt(value);
-
-		// create an event manager and a start level listener
-		eventManager = new EventManager("Start Level Event Dispatcher"); //$NON-NLS-1$
-		startLevelListeners = new EventListeners();
-		startLevelListeners.addListener(this, this);
-	}
-
-	protected void cleanup() {
-		eventManager.close();
-		eventManager = null;
-		startLevelListeners.removeAllListeners();
-		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;
-	}
-
-	/**
-	 * Return the initial start level used when the framework is started.
-	 *
-	 * @return The framework start level.
-	 */
-	public int getFrameworkStartLevel() {
-		return frameworkBeginningStartLevel;
-	}
-
-	/**
-	 * 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));
-
-	}
-
-	protected void setStartLevel(int newSL) {
-		setStartLevel(newSL, framework.systemBundle);
-	}
-
-	/**
-	 *  Internal method to allow the framework to be launched synchronously by calling the
-	 *  StartLevelListener worker calls directly
-	 *
-	 *  This method does not return until all bundles that should be started are started
-	 */
-	protected void launch(int startlevel) {
-
-		doSetStartLevel(startlevel, 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, framework.systemBundle);
-	}
-
-	/**
-	 *  Internal worker method to set the startlevel
-	 *
-	 * @param newSL start level value                  
-	 * @param callerBundle - the bundle initiating the change in start level
-	 */
-	private void doSetStartLevel(int newSL, AbstractBundle callerBundle) {
-		synchronized (lock) {
-			settingStartLevel = true;
-			try {
-				int tempSL = activeSL;
-
-				if (newSL > tempSL) {
-					for (int i = tempSL; i < newSL; i++) {
-						if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-							Debug.println("sync - incrementing Startlevel from " + tempSL); //$NON-NLS-1$
-						}
-						tempSL++;
-						incFWSL(i + 1, callerBundle);
-					}
-				} 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);
-					}
-				}
-				framework.publishFrameworkEvent(FrameworkEvent.STARTLEVEL_CHANGED, callerBundle, null);
-				if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-					Debug.println("StartLevelImpl: doSetStartLevel: STARTLEVEL_CHANGED event published"); //$NON-NLS-1$
-				}
-			} finally {
-				settingStartLevel = false;
-			}
-		}
-	}
-
-	/** 
-	 * 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, 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(), ((StartLevelEvent) eventObject).getBundle());
-					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 callerBundle) {
-		if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-			Debug.println("SLL: incFWSL: saving activeSL of " + incToSL); //$NON-NLS-1$
-		}
-
-		saveActiveStartLevel(incToSL);
-
-		AbstractBundle[] launch;
-		BundleRepository bundles = framework.bundles;
-
-		launch = getInstalledBundles(bundles, false);
-
-		if (incToSL == 1) { // framework was not active
-
-			/* Load all installed bundles */
-			loadInstalledBundles(launch);
-			/* Resume all bundles */
-			resumeBundles(launch, true);
-
-			/* publish the framework started event */
-			if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-				Debug.println("SLL: Framework started"); //$NON-NLS-1$
-			}
-
-			framework.publishFrameworkEvent(FrameworkEvent.STARTED, callerBundle, null);
-
-		} else {
-			// incrementing an already active framework
-			resumeBundles(launch, false);
-		}
-	}
-
-	/**
-	 * 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 
-	 */
-	private 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;
-	}
-
-	static 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 static 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();
-		}
-	}
-
-	/**
-	 * Load all bundles in the list
-	 * @param installedBundles a list of bundles to load
-	 */
-	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();
-		}
-	}
-
-	/**
-	 *  Resume all bundles in the launch list
-	 * @param launch a list of Bundle Objects to launch
-	 * @param launchingFW tells whether or not to launch the framework (system bundle)
-	 */
-	private void resumeBundles(AbstractBundle[] launch, boolean launchingFW) {
-		if (launchingFW) {
-			/* Start the system bundle */
-			try {
-				framework.systemBundle.state = Bundle.STARTING;
-				framework.systemBundle.context.start();
-			} 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());
-			}
-
-		}
-		/* Resume all bundles that were previously started and whose startlevel is <= the active startlevel */
-		int fwsl = getStartLevel();
-		for (int i = 0; i < launch.length; i++) {
-			int bsl = launch[i].getStartLevel();
-			if (bsl < fwsl) {
-				// skip bundles who should have already been started
-				continue;
-			} else if (bsl == fwsl) {
-				if (Debug.DEBUG && Debug.DEBUG_STARTLEVEL) {
-					Debug.println("SLL: Active sl = " + fwsl + "; Bundle " + launch[i].getBundleId() + " sl = " + bsl); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-				}
-				framework.resumeBundle(launch[i]);
-			} else {
-				// can stop resuming bundles since any remaining bundles have a greater startlevel than the framework active startlevel
-				break;
-			}
-		}
-
-		framework.systemBundle.state = Bundle.ACTIVE;
-
-	}
-
-	/** 
-	 *  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
-			// stop and unload all bundles
-			suspendAllBundles(framework.bundles);
-			unloadAllBundles(framework.bundles);
-			return;
-		}
-		// just decrementing the active startlevel - framework is not shutting down
-		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;
-	}
-
-	/**
-	 *  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$
-			}
-		}
-	}
-
-	/**
-	 * Returns a StartLevel object, created for each requesting bundle.
-	 * 
-	 * @param owner bundle, requested to get StartLevel service.
-	 * @pre callerBundle!=null
-	 * @param registration ServiceRegistration of the StartLevel service
-	 * @pre sReg!=null
-	 * @return StartLevel object
-	 */
-	public synchronized Object getService(Bundle owner, ServiceRegistration registration) {
-		if (implementation == null)
-			implementation = new StartLevelImpl(framework.systemBundle, framework);
-		return implementation;
-	}
-
-	/**
-	 * Does nothing, as the StartLevel bundle does not keep references to StartLevel objects.
-	 *
-	 * @param owner bundle requesting to unget StartLevel service.
-	 * @param registration ServiceRegistration of StartLevel
-	 * @param service Service object, already been got by this bundle.
-	 */
-	public void ungetService(Bundle owner, ServiceRegistration registration, Object service) {
-		// do nothing;
-	}
-
-	public boolean isSettingStartLevel() {
-		return settingStartLevel;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundle.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundle.java
deleted file mode 100644
index 8b0c0ae..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundle.java
+++ /dev/null
@@ -1,285 +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.internal.core;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.Permission;
-import java.security.ProtectionDomain;
-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 SystemBundle extends BundleHost {
-
-	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 SystemBundle(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
-	 * and sets the SystemBundle's state to UNINSTALLED.
-	 *
-	 */
-	protected void close() {
-		context.close();
-		context = null;
-
-		state = UNINSTALLED;
-	}
-
-	/**
-	 * 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);
-	}
-
-	/**
-	 * Start the SystemBundle.
-	 * This method launches the framework.
-	 *
-	 */
-	protected void resume() {
-		/* initialize the startlevel service */
-		framework.startLevelManager.initialize();
-
-		framework.startLevelManager.launch(framework.startLevelManager.getFrameworkStartLevel());
-
-	}
-
-	/**
-	 * Stop the framework.
-	 * This method spawns a thread which will call framework.shutdown.
-	 *
-	 */
-	public void stop() {
-		framework.checkAdminPermission(this, AdminPermission.EXECUTE);
-
-		if (state == ACTIVE) {
-			Thread shutdown = framework.secureAction.createThread(new Runnable() {
-				public void run() {
-					try {
-						framework.shutdown();
-					} catch (Throwable t) {
-						// allow the adaptor to handle this unexpected error
-						framework.adaptor.handleRuntimeError(t);
-					}
-				}
-			}, "System Bundle Shutdown"); //$NON-NLS-1$
-
-			shutdown.start();
-		}
-	}
-
-	/**
-	 * 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) {
-			Thread restart = framework.secureAction.createThread(new Runnable() {
-				public void run() {
-					framework.shutdown();
-
-					framework.launch();
-				}
-			}, "System Bundle Update"); //$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); 
-	}
-
-	/**
-	 * 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
-	}
-}
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 63a1b85..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleActivator.java
+++ /dev/null
@@ -1,95 +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.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 {
-	protected BundleContext context;
-	protected SystemBundle bundle;
-	protected Framework framework;
-	protected ServiceRegistration packageAdmin;
-	protected ServiceRegistration permissionAdmin;
-	protected ServiceRegistration condPermAdmin;
-	protected ServiceRegistration startLevel;
-	protected ServiceRegistration debugOptions;
-
-	public SystemBundleActivator() {
-	}
-
-	public void start(BundleContext context) throws Exception {
-		this.context = context;
-		bundle = (SystemBundle) context.getBundle();
-		framework = bundle.framework;
-
-		if (framework.packageAdmin != null)
-			packageAdmin = register(Constants.OSGI_PACKAGEADMIN_NAME, framework.packageAdmin);
-		if (framework.permissionAdmin != null)
-			permissionAdmin = register(Constants.OSGI_PERMISSIONADMIN_NAME, framework.permissionAdmin);
-		if (framework.startLevelManager != null)
-			startLevel = register(Constants.OSGI_STARTLEVEL_NAME, framework.startLevelManager);
-		if (framework.condPermAdmin != null)
-			condPermAdmin = register(ConditionalPermissionAdmin.class.getName(), framework.condPermAdmin);
-		FrameworkDebugOptions dbgOptions = null;
-		if ((dbgOptions = FrameworkDebugOptions.getDefault()) != null)
-			debugOptions = register(org.eclipse.osgi.service.debug.DebugOptions.class.getName(), dbgOptions);
-
-		// 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);
-	}
-
-	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 (permissionAdmin != null)
-			permissionAdmin.unregister();
-		if (condPermAdmin != null)
-			condPermAdmin.unregister();
-		if (startLevel != null)
-			startLevel.unregister();
-		if (debugOptions != null)
-			debugOptions.unregister();
-
-		framework = null;
-		bundle = null;
-		this.context = null;
-	}
-
-	/**
-	 * Register a service object.
-	 *
-	 */
-	protected ServiceRegistration register(String name, Object service) {
-		Hashtable 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(name, service, properties);
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleLoader.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleLoader.java
deleted file mode 100644
index 986dc38..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemBundleLoader.java
+++ /dev/null
@@ -1,115 +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.internal.core;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.service.resolver.ExportPackageDescription;
-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$
-	ClassLoader classLoader;
-	private HashSet eePackages;
-
-	/**
-	 * @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 = 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();
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the class.
-	 */
-	public Class findClass(String name) throws ClassNotFoundException {
-		return classLoader.loadClass(name);
-	}
-
-	/**
-	 * This method will always return null.
-	 */
-	public String findLibrary(String name) {
-		return null;
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the class. 
-	 */
-	Class findLocalClass(String name) {
-		Class clazz = null;
-		try {
-			clazz = classLoader.loadClass(name);
-		} catch (ClassNotFoundException e) {
-			// Do nothing, will return null
-		}
-		return clazz;
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 */
-	URL findLocalResource(String name) {
-		return classLoader.getResource(name);
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 */
-	Enumeration findLocalResources(String name) {
-		try {
-			return classLoader.getResources(name);
-		} catch (IOException e) {
-			return null;
-		}
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 */
-	public URL findResource(String name) {
-		return classLoader.getResource(name);
-	}
-
-	/**
-	 * The ClassLoader that loads OSGi framework classes is used to find the resource.
-	 */
-	public Enumeration findResources(String name) throws IOException {
-		return classLoader.getResources(name);
-	}
-
-	/**
-	 * Do nothing on a close.
-	 */
-	protected void close() {
-		// Do nothing.
-	}
-
-	public boolean isEEPackage(String pkgName) {
-		return eePackages.contains(pkgName);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemPolicy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemPolicy.java
deleted file mode 100644
index b9f5d99..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/SystemPolicy.java
+++ /dev/null
@@ -1,93 +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.framework.internal.core;
-
-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(null);
-		}
-	}
-
-	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/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 ba9ccde..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, 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.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 sort(Object[] array) {
-		qsort(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 qsort(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) {
-			qsort(array, start, right);
-		}
-		// sort the right partition, if the left index has not reached the right side of array
-		if (left < stop) {
-			qsort(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/default.permissions b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/default.permissions
deleted file mode 100644
index 9cada77..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/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/framework/internal/core/implied.permissions b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/implied.permissions
deleted file mode 100644
index edd6862..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/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/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 004bfef..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/core/osname.aliases
+++ /dev/null
@@ -1,41 +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.
-
-#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" Win2003 Win32 # Microsoft
-WindowsVista WinVista "Windows Vista" 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 f667aab..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, 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.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());
-		}
-	}
-
-	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 29a1eeb..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, 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.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 68dba2c..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingFactory.java
+++ /dev/null
@@ -1,145 +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.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
-	private 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 synchronized boolean isMultiplexing() {
-		return factories != null;
-	}
-
-	public synchronized void register(Object factory) {
-		if (factories == null)
-			factories = new LinkedList();
-
-		// 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());
-		}
-		factories.add(factory);
-	}
-
-	public synchronized void unregister(Object factory) {
-		factories.remove(factory);
-		if (factories.isEmpty())
-			factories = null;
-		// 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());
-		}
-	}
-
-	public synchronized Object designateSuccessor() {
-		Object parentFactory = getParentFactory();
-		if (factories == null || factories.isEmpty())
-			return parentFactory;
-
-		Object successor = factories.remove(0);
-		try {
-			Class clazz = successor.getClass();
-			Method register = clazz.getMethod("register", new Class[] {Object.class}); //$NON-NLS-1$		
-			for (Iterator it = factories.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());
-		}
-		factories = null;
-		closePackageAdminTracker(); // close tracker
-		return successor;
-	}
-
-	private void closePackageAdminTracker() {
-		packageAdminTracker.close();
-	}
-
-	public synchronized Object findAuthorizedFactory(List ignoredClasses) {
-		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 (factories == null)
-				continue;
-			for (Iterator it = factories.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());
-				}
-			}
-		}
-		return null;
-	}
-
-	public boolean hasAuthority(Class clazz) {
-		PackageAdmin packageAdminService = (PackageAdmin) packageAdminTracker.getService();
-		if (packageAdminService != null) {
-			return packageAdminService.getBundle(clazz) != null;
-		}
-		return false;
-	}
-}
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 cb5b807..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/MultiplexingURLStreamHandler.java
+++ /dev/null
@@ -1,223 +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.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.net.*;
-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);
-
-			handlerField = URL.class.getDeclaredField("handler"); //$NON-NLS-1$
-			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());
-		}
-		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 (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "openConnection", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		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 (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "equals", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected int getDefaultPort() {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				return ((Integer) getDefaultPortMethod.invoke(handler, null)).intValue();
-			} 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());
-			}
-		}
-		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 (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "hashCode", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		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 (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "hashCode", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		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 (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "hostsEqual", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		throw new IllegalStateException();
-	}
-
-	protected void parseURL(URL arg0, String arg1, int arg2, int arg3) {
-		URLStreamHandler handler = factory.findAuthorizedURLStreamHandler(protocol);
-		if (handler != null) {
-			try {
-				// the handler is set because of a check in setURL (called internally in parseURL)
-				// to ensure that this handler and the URL's handler are the same.				
-				handlerField.set(arg0, handler);
-				parseURLMethod.invoke(handler, new Object[] {arg0, arg1, new Integer(arg2), new Integer(arg3)});
-				handlerField.set(arg0, this);
-				return;
-			} 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());
-			}
-		}
-		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 (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "sameFile", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		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 {
-				// the handler is set because of a check in setURL to ensure that this handler
-				// and the URL's handler are the same.
-				handlerField.set(arg0, handler);
-				setURLMethod.invoke(handler, new Object[] {arg0, arg1, arg2, new Integer(arg3), arg4, arg5, arg6, arg7, arg8});
-				handlerField.set(arg0, this);
-				return;
-			} 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());
-			}
-		}
-		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 (Exception e) {
-				factory.adaptor.getFrameworkLog().log(new FrameworkLogEntry(MultiplexingURLStreamHandler.class.getName(), "toExternalForm", FrameworkLogEntry.ERROR, e, null)); //$NON-NLS-1$
-				throw new RuntimeException(e.getMessage());
-			}
-		}
-		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 cc0ad04..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, 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.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 fc48624..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, 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.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 b6658c9..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/StreamHandlerFactory.java
+++ /dev/null
@@ -1,184 +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.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 Hashtable proxies;
-	private URLStreamHandlerFactory parentFactory;
-
-	/**
-	 * 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) {
-		//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.*)
-	}
-
-	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 = 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());
-		}
-	}
-
-	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/URLStreamHandlerProxy.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerProxy.java
deleted file mode 100644
index e4c5812..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/internal/protocol/URLStreamHandlerProxy.java
+++ /dev/null
@@ -1,218 +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.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 4fc3baa..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, 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.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/framework/launcher/Launcher.java b/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/launcher/Launcher.java
deleted file mode 100644
index f9df59c..0000000
--- a/bundles/org.eclipse.osgi/core/framework/org/eclipse/osgi/framework/launcher/Launcher.java
+++ /dev/null
@@ -1,365 +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.launcher;
-
-import java.lang.reflect.Constructor;
-import java.util.*;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * <p>This class provides an entry point for launching the OSGi framework.
- * It configures the OSGi framework according to the command line arguments:
- * <ul>
- * <li><b>-con[sole][:<i>port</i>]</b><br>
- *   Starts the OSGi framework with a console window.  Any command line arguments not recognized are passed
- *   to the console for it to execute.  If a port is specified the console will listen on that
- *   port for commands.  If no port is specified, the console will use System.in and System.out.
- * </li>
- * <li><b>-adaptor[:adaptor-name][adaptor-args]</b>
- * <pre>
- * [adaptor-name] := "" | fully qualified class name of the FrameworkAdapter
- * [adaptor-args] := *( ":" [value])
- * [value] := [token] | [quoted-string]
- *
- * This allows
- *
- * -adaptor::"bundledir=c:\jarbundles":reset 		DefaultAdaptor is chosen with args[] {"bundledir=c:\jarbundles", "reset"}
- * -adaptor:com.foo.MyAdaptor				com.foo.MyAdaptor chosen with args[] {}
- * </pre>
- *   <p>-adaptor specifies the implementation class for the FrameworkAdapter to be used.
- *   args contains a list of FrameworkAdaptor arguments, separated by ":".  FrameworkAdaptor arguments
- *   format is defined by the adaptor implementation class.  They
- *   are passed to the adaptor class as an array of Strings.
- *   Example arguments used by the DefaultAdaptor are:
- *   <ul>
- *   <li>"bundledir=<i>directory"</i>.  The directory to be used by the adaptor to store data.
- *   <li>reset</i>.  Perform the reset action to clear the bundledir.
- *   <p>Actions can be defined by an adaptor.  Multiple actions can be specified,
- *   separated by ":".
- *   </ul>
- *   <p>It is up to the adaptor implementation to define reasonable defaults if it's required
- *   arguments are not specified.
- *   <p>If -adaptor is not specified, or if no adaptor classname is specified, DefaultAdaptor will be
- *   used, which is file based and stores the files in the \bundles directory
- *   relative to the current directory.
- * </ul>
- * <li>-app[lication]:application-args
- * <pre>
- *    [application-args] := *( ":" [value])
- *    [value] := [token] | [quoted-string]
- * </pre>
- * <p>This argument allows arguments to be passed to specific applications at launch time.  This is for eclipse
- * plugins installed as applications.  The arguments are as Eclipse currently needs them - one list of key=value pairs 
- * which are parsed by the applications.  The application peels off only the args that apply to it.  Others are ignored. 
- * </li>
- * <p>
- * Any other command line arguments are passed on to the console window
- * of the framework if started with the -console option.  If the console is not started,
- * any unrecognized arguments will be ignored and a message displayed.
- * <p>
- * If none of the options above are specified, the OSGi framework is started:
- * <ul>
- * <li>with the Default FrameworkAdaptor
- * <li>without a console window
- * <li>without the remote agent
- * </ul>
- * @since 3.1
- */
-public class Launcher {
-
-	/** default console port */
-	protected String consolePort = ""; //$NON-NLS-1$
-
-	/** flag to indicate whether or not to start the console */
-	protected boolean console = false;
-
-	/** string containing the classname of the adaptor to be used in this framework instance */
-	protected String adaptorClassName = "org.eclipse.osgi.baseadaptor.BaseAdaptor"; //$NON-NLS-1$
-
-	protected final String osgiConsoleClazz = "org.eclipse.osgi.framework.internal.core.FrameworkConsole"; //$NON-NLS-1$
-
-	/** array of adaptor arguments to be passed to FrameworkAdaptor.initialize() */
-	protected String[] adaptorArgs = null;
-
-	/* Components that can be installed and activated optionally. */
-	private static final String OSGI_CONSOLE_COMPONENT_NAME = "OSGi Console"; //$NON-NLS-1$
-	private static final String OSGI_CONSOLE_COMPONENT = "console.jar"; //$NON-NLS-1$
-
-	/**
-	 * main method for Launcher. This method creates an Launcher object
-	 * and kicks off the actual launch of a Framework instance.
-	 *
-	 * @param args The command line arguments
-	 */
-	public static void main(String args[]) {
-
-		new Launcher().doIt(args);
-
-	}
-
-	/**
-	 *  Default constructor.  Nothing at all to do here.
-	 */
-	public Launcher() {
-		// do nothing;
-	}
-
-	/**
-	 *  Performs the actual launch based on the command line arguments
-	 *
-	 *  @param args The command line arguments
-	 */
-	protected void doIt(String[] args) {
-		// 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$
-		String[] consoleArgs = parseArgs(args);
-
-		FrameworkAdaptor adaptor = null;
-		try {
-			adaptor = doAdaptor();
-		} catch (Exception e) {
-			System.out.println(Msg.LAUNCHER_ADAPTOR_ERROR); 
-			e.printStackTrace();
-			return;
-		}
-
-		OSGi osgi = doOSGi(adaptor);
-		if (osgi != null) {
-			if (console) {
-				doConsole(osgi, consoleArgs);
-			} else {
-				osgi.launch();
-			}
-		}
-	}
-
-	/**
-	 *  Parses the command line arguments and remembers them so they can be processed later.
-	 *
-	 *  @param args The command line arguments
-	 *  @return String [] Any arguments that should be passed to the console
-	 */
-	protected String[] parseArgs(String[] args) {
-		Vector consoleArgsVector = new Vector();
-		for (int i = 0; i < args.length; i++) {
-			boolean match = false;
-
-			// Have to check for args that may be contained in double quotes but broken up by spaces - for example
-			// -adaptor::"bundledir=c:/my bundle dir":reset should all be one arg, but java breaks it into 3 args, 
-			// ignoring the quotes.  Must put it back together into one arg.
-			String fullarg = args[i];
-			int quoteidx = fullarg.indexOf("\""); //$NON-NLS-1$
-			if (quoteidx > 0) {
-				if (quoteidx == fullarg.lastIndexOf("\"")) { //$NON-NLS-1$
-					boolean stillparsing = true;
-					i++;
-					while (i < args.length && stillparsing) {
-						fullarg = fullarg + " " + args[i]; //$NON-NLS-1$
-						i++;
-						if (quoteidx < fullarg.lastIndexOf("\"")) { //$NON-NLS-1$
-							stillparsing = false;
-						}
-					}
-				}
-			} else {
-				// IDE can't pass double quotes due to known eclipse bug (see Bugzilla 93201).  Allowing for use of single quotes.
-				quoteidx = fullarg.indexOf("'"); //$NON-NLS-1$
-				if (quoteidx > 0) {
-					if (quoteidx == fullarg.lastIndexOf("'")) { //$NON-NLS-1$
-						boolean stillparsing = true;
-						i++;
-						while (i < args.length && stillparsing) {
-							fullarg = fullarg + " " + args[i]; //$NON-NLS-1$
-							i++;
-							if (quoteidx < fullarg.lastIndexOf("'")) { //$NON-NLS-1$
-								stillparsing = false;
-							}
-						}
-					}
-					fullarg = fullarg.replace('\'', '\"');
-				}
-			}
-
-			Tokenizer tok = new Tokenizer(fullarg);
-			if (tok.hasMoreTokens()) {
-				String command = tok.getString(" "); //$NON-NLS-1$
-				StringTokenizer subtok = new StringTokenizer(command, ":"); //$NON-NLS-1$
-				String subcommand = subtok.nextToken().toLowerCase();
-
-				if (matchCommand("-console", subcommand, 4)) { //$NON-NLS-1$
-					_console(command);
-					match = true;
-				}
-				if (matchCommand("-adaptor", subcommand, 2)) { //$NON-NLS-1$
-					_adaptor(command);
-					match = true;
-				}
-				if (match == false) {
-					// if the command doesn't match any of the known commands, save it to pass
-					// to the console
-					consoleArgsVector.addElement(fullarg);
-				}
-			}
-		}
-		// convert arguments to be passed to console into a string array for the Console
-		String[] consoleArgsArray = new String[consoleArgsVector.size()];
-		Enumeration e = consoleArgsVector.elements();
-		for (int i = 0; i < consoleArgsArray.length; i++) {
-			consoleArgsArray[i] = (String) e.nextElement();
-		}
-		return consoleArgsArray;
-	}
-
-	public 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));
-	}
-
-	/**
-	 *  Remembers that the -console option has been requested.
-	 */
-	protected void _console(String command) {
-		console = true;
-		StringTokenizer tok = new StringTokenizer(command, ":"); //$NON-NLS-1$
-		// first token is always "-console"
-		tok.nextToken();
-		if (tok.hasMoreTokens()) {
-			consolePort = tok.nextToken();
-		}
-	}
-
-	/**
-	 *  Remembers that the -adaptor option has been requested.  Parses off the adaptor class
-	 *  file name, the adaptor file name, and the size if they are there.
-	 *
-	 * @param command The rest of the -adaptor parameter string that contains the class file name,
-	 * and possibly the adaptor file and file size.
-	 */
-	protected void _adaptor(String command) {
-		Tokenizer tok = new Tokenizer(command);
-		// first token is always "-adaptor"
-		tok.getToken(":"); //$NON-NLS-1$
-		tok.getChar(); // advance to next token
-		// and next token is either adaptor class name or ":" if we should use the default adaptor
-		String adp = tok.getToken(":"); //$NON-NLS-1$
-		if (adp != null && adp.length() > 0) {
-			adaptorClassName = adp;
-		}
-
-		// The following tokens are arguments to be processed by the adaptor implementation class.
-		// They may be enclosed in quotes.
-		// Store them in a vector until we know how many there are.
-		Vector v = new Vector();
-		parseloop: while (true) {
-			tok.getChar(); // advance to next token
-			String arg = tok.getString(":"); //$NON-NLS-1$
-			if (arg == null)
-				break parseloop;
-			v.addElement(arg);
-		}
-		// now that we know how many args there are, move args from vector to String[]
-		if (v != null) {
-			int numArgs = v.size();
-			adaptorArgs = new String[numArgs];
-			Enumeration e = v.elements();
-			for (int i = 0; i < numArgs; i++) {
-				adaptorArgs[i] = (String) e.nextElement();
-			}
-		}
-	}
-
-	/**
-	 *  Processes the -adaptor command line argument.
-	 * 
-	 *  Parses the arguments to get the adaptor class name, the adaptor dir or filename,
-	 *  and the adaptor file size.
-	 *
-	 *  @return a FrameworkAdaptor object
-	 */
-	protected FrameworkAdaptor doAdaptor() throws Exception {
-
-		Class adaptorClass = Class.forName(adaptorClassName);
-		Class[] constructorArgs = new Class[] {String[].class};
-		Constructor constructor = adaptorClass.getConstructor(constructorArgs);
-		return (FrameworkAdaptor) constructor.newInstance(new Object[] {adaptorArgs});
-	}
-
-	/**
-	 * Creates the OSGi framework object.
-	 *
-	 * @param adaptor The FrameworkAdaptor object
-	 */
-	private OSGi doOSGi(FrameworkAdaptor adaptor) {
-		return new OSGi(adaptor);
-	}
-
-	/**
-	 *  Invokes the OSGi Console on another thread
-	 *
-	 * @param osgi The current OSGi instance for the console to attach to
-	 * @param consoleArgs An String array containing commands from the command line
-	 * for the console to execute
-	 */
-	private void doConsole(OSGi osgi, String[] consoleArgs) {
-
-		Constructor consoleConstructor;
-		Object osgiconsole;
-		Class[] parameterTypes;
-		Object[] parameters;
-
-		try {
-			Class osgiconsoleClass = Class.forName(osgiConsoleClazz);
-			if (consolePort.length() == 0) {
-				parameterTypes = new Class[] {OSGi.class, String[].class};
-				parameters = new Object[] {osgi, consoleArgs};
-			} else {
-				parameterTypes = new Class[] {OSGi.class, int.class, String[].class};
-				parameters = new Object[] {osgi, new Integer(consolePort), consoleArgs};
-			}
-			consoleConstructor = osgiconsoleClass.getConstructor(parameterTypes);
-			osgiconsole = consoleConstructor.newInstance(parameters);
-
-			Thread t = new Thread(((Runnable) osgiconsole), OSGI_CONSOLE_COMPONENT_NAME);
-			t.start();
-		} catch (NumberFormatException nfe) {
-			System.err.println(NLS.bind(Msg.LAUNCHER_INVALID_PORT, consolePort)); 
-		} catch (Exception ex) {
-			informAboutMissingComponent(OSGI_CONSOLE_COMPONENT_NAME, OSGI_CONSOLE_COMPONENT);
-		}
-
-	}
-
-	/**
-	 * Informs the user about a missing component.
-	 *
-	 * @param component The name of the component
-	 * @param jar The jar file that contains the component
-	 */
-	void informAboutMissingComponent(String component, String jar) {
-		System.out.println();
-		System.out.print(NLS.bind(Msg.LAUNCHER_COMPONENT_MISSING, component)); 
-		System.out.println(NLS.bind(Msg.LAUNCHER_COMPONENT_JAR, jar)); 
-		System.out.println();
-	}
-}
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/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 158a738..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseAdaptor.java
+++ /dev/null
@@ -1,518 +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;
-
-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.*;
-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.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 ParentClassLoader();
-	}
-
-	// Empty parent classloader.  This is used by default as the BundleClassLoader parent.
-	private static class ParentClassLoader extends ClassLoader {
-		protected ParentClassLoader() {
-			super(null);
-		}
-	}
-
-	private EventPublisher eventPublisher;
-	private ServiceRegistry serviceRegistry;
-	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;
-		serviceRegistry = new ServiceRegistryImpl();
-		((ServiceRegistryImpl) serviceRegistry).initialize();
-		// 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();
-	}
-
-	/**
-	 * @see FrameworkAdaptor#getServiceRegistry()
-	 */
-	public ServiceRegistry getServiceRegistry() {
-		return serviceRegistry;
-	}
-
-	/**
-	 * 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;
-		BundleResourceHandler.setContext(fwContext);
-		// 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);
-		fwContext = null;
-	}
-
-	/**
-	 * 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);
-	}
-
-	/**
-	 * This method calls all the configured adaptor hooks {@link AdaptorHook#matchDNChain(String, String[])} methods 
-	 * until one returns a true value.
-	 * @see FrameworkAdaptor#matchDNChain(String, String[])
-	 */
-	public boolean matchDNChain(String pattern, String[] dnChain) {
-		AdaptorHook[] adaptorHooks = getHookRegistry().getAdaptorHooks();
-		for (int i = 0; i < adaptorHooks.length; i++)
-			if (adaptorHooks[i].matchDNChain(pattern, dnChain))
-				return true;
-		return false;
-	}
-
-	/**
-	 * 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 90e928c..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/BaseData.java
+++ /dev/null
@@ -1,492 +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;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleFile;
-import org.eclipse.osgi.baseadaptor.hooks.*;
-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.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 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(String path) {
-		BundleEntry entry = getBundleFile().getEntry(path);
-		if (entry == null)
-			return null;
-		if (path.length() == 0 || path.charAt(0) != '/')
-			path = '/' + path;
-		try {
-			//use the constant string for the protocol to prevent duplication
-			return new URL(Constants.OSGI_ENTRY_URL_PROTOCOL, Long.toString(id), 0, path, new Handler(entry));
-		} 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)) {
-					// 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;
-	}
-
-	/**
-	 * This method calls each configured storage hook {@link StorageHook#matchDNChain(String)} method 
-	 * until one returns true.  If no configured storage hook returns true then false is returned.
-	 * @see BundleData#matchDNChain(String)
-	 */
-	public final boolean matchDNChain(String pattern) {
-		StorageHook[] hooks = getStorageHooks();
-		for (int i = 0; i < hooks.length; i++)
-			if (hooks[i].matchDNChain(pattern))
-				return true;
-		return false;
-	}
-
-	/**
-	 * 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 new IllegalArgumentException(e.getMessage());
-			}
-		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 54c8222..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/HookRegistry.java
+++ /dev/null
@@ -1,308 +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;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.hooks.*;
-import org.eclipse.osgi.framework.adaptor.BundleWatcher;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-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 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();
-			try {
-				// check each file for a hook.configurators property
-				Properties configuratorProps = new Properties();
-				configuratorProps.load(url.openStream());
-				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
-			}
-		}
-	}
-
-	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 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 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 3e097c4..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleEntry.java
+++ /dev/null
@@ -1,134 +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.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 3ccfecc..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/BundleFile.java
+++ /dev/null
@@ -1,192 +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.baseadaptor.bundlefile;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.AccessController;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-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
-	 */
-	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
-	 */
-	public URL getResourceURL(String path, long hostBundleID, int index) {
-		BundleEntry bundleEntry = getEntry(path);
-		if (bundleEntry == null)
-			return null;
-		if (path.length() == 0 || path.charAt(0) != '/')
-			path = '/' + path;
-		try {
-			//use the constant string for the protocol to prevent duplication
-			return secureAction.getURL(Constants.OSGI_RESOURCE_URL_PROTOCOL, Long.toString(hostBundleID), index, path, new Handler(bundleEntry));
-		} 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 dependant 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)
-			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])) { //$NON-NLS-1$
-				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);
-	}
-}
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 0272fe5..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/DirZipBundleEntry.java
+++ /dev/null
@@ -1,74 +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.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:file:" + bundleFile.basefile.getAbsolutePath() + "!/" + 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 074aa10..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/FileBundleEntry.java
+++ /dev/null
@@ -1,93 +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.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 File file;
-	/**
-	 * The name for this entry
-	 */
-	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;
-		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 1c9ef28..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java
+++ /dev/null
@@ -1,197 +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.bundlefile;
-
-import java.io.IOException;
-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;
-	static {
-		int propValue = 0;
-		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 EventListeners bundleFileCloser;
-	// the current number of open bundle files
-	private int numOpen = 0;
-	// the current use stamp
-	private long curUseStamp = 0;
-
-	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 EventListeners();
-			this.bundleFileCloser.addListener(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 queue 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) {
-		try {
-			((BundleFile) eventObject).close();
-		} catch (IOException e) {
-			// TODO should log ??
-		}
-	}
-
-	private void closeBundleFile(BundleFile toRemove) {
-		if (toRemove == null)
-			return;
-		/* queue to hold set of listeners */
-		ListenerQueue queue = new ListenerQueue(bundleFileCloserManager);
-		/* add bundle file closer to the queue */
-		queue.queueListeners(bundleFileCloser, this);
-		/* dispatch event to set of listeners */
-		queue.dispatchEventAsynchronous(0, toRemove);
-	}
-
-	/**
-	 * Closes the bundle file closer thread for the MRU list
-	 */
-	public void shutdown() {
-		if (bundleFileCloserManager != null)
-			bundleFileCloserManager.close();
-	}
-}
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 28a705b..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/NestedDirBundleFile.java
+++ /dev/null
@@ -1,82 +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.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.basefile);
-		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 d69edd5..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleEntry.java
+++ /dev/null
@@ -1,102 +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.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 ZipEntry zipEntry;
-
-	/**
-	 * The BundleFile for this entry.
-	 */
-	protected BundleFile 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, BundleFile 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 {
-		return ((ZipBundleFile) bundleFile).getZipFile().getInputStream(zipEntry);
-	}
-
-	/**
-	 * 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:file:" + bundleFile.basefile.getAbsolutePath() + "!/" + 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;
-	}
-}
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 204c2dc..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/ZipBundleFile.java
+++ /dev/null
@@ -1,304 +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.*;
-import java.util.*;
-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 {
-	protected static MRUBundleFileList mruList = new MRUBundleFileList();
-
-	/**
-	 * The bundle data
-	 */
-	protected BaseData bundledata;
-	/**
-	 * The zip file
-	 */
-	protected ZipFile zipFile;
-	/**
-	 * The closed flag
-	 */
-	protected boolean closed = true;
-
-	/**
-	 * Constructs a ZipBundle File
-	 * @param basefile the base file
-	 * @param bundledata the bundle data
-	 * @throws IOException
-	 */
-	public ZipBundleFile(File basefile, BaseData bundledata) 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;
-	}
-
-	/**
-	 * 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) {
-			mruList.add(this);
-			zipFile = basicOpen();
-			closed = false;
-		} else
-			mruList.use(this);
-		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) {
-			closed = true;
-			zipFile.close();
-			mruList.remove(this);
-		}
-	}
-
-	public void open() throws IOException {
-		//do nothing
-	}
-
-	/**
-	 * Shutsdown the bundle file closer thread for zip bundle files
-	 */
-	public static void shutdown() {
-		mruList.shutdown();
-	}
-}
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 16f6f01..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/AdaptorHook.java
+++ /dev/null
@@ -1,111 +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 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#matchDNChain(String, String[])}.
-	 * The adaptor will call this method for each configured adaptor hook until one 
-	 * adaptor hook returns a true value.  If no adaptor hook returns a true value 
-	 * then the adaptor will return false.
-	 * @param pattern A
-	 * @param dnChain
-	 * @return true if the pattern matches
-	 */
-	public boolean matchDNChain(String pattern, String[] dnChain);
-
-	/**
-	 * 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 7b04c76..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/BundleFileWrapperFactoryHook.java
+++ /dev/null
@@ -1,38 +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.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 9a73870..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/hooks/StorageHook.java
+++ /dev/null
@@ -1,149 +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.*;
-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);
-
-	/**
-	 * Gets called by a base data during {@link BundleData#matchDNChain(String)}.
-	 * 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 value then the BaseAdaptor will return false.
-	 * @param pattern the pattern of distinguished name (DN) chains to match
-	 * @return true if the pattern matches. A value of false is returned
-	 * if bundle signing is not supported.
-	 */
-	boolean matchDNChain(String pattern);
-}
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 0597ee1..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/BaseClassLoader.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.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 {@link 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 {@link 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 {@link 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 2f0cd1d..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathEntry.java
+++ /dev/null
@@ -1,81 +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.loader;
-
-import java.security.ProtectionDomain;
-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 BundleFile bundlefile;
-	private ProtectionDomain domain;
-	private KeyedHashSet userObjects = null;
-
-	/**
-	 * 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 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 f0b61d7..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/ClasspathManager.java
+++ /dev/null
@@ -1,562 +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.loader;
-
-import java.io.*;
-import java.net.URL;
-import java.security.ProtectionDomain;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.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.debug.Debug;
-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 seaching 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 BaseData data;
-	private String[] classpath;
-	private ClasspathEntry[] entries;
-	private BaseClassLoader classloader;
-	private FragmentClasspath[] fragments = emptyFragments;
-	// a colloction of String[2], each element is {"libname", "libpath"}
-	private Collection loadedLibraries = null;
-
-	/**
-	 * 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;
-	}
-
-	/**
-	 * 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()));
-			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));
-			return true;
-		}
-		Object 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);
-		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);
-		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) {
-		return classloader.createClassPathEntry(bundlefile, cpDomain);
-	}
-
-	/**
-	 * 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);
-			return result;
-		} finally {
-			for (int i = 0; i < hooks.length; i++)
-				hooks[i].postFindLocalResource(resource, result, this);
-		}
-	}
-
-	private URL findLocalResourceImpl(String resource) {
-		URL result = null;
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				result = findResourceImpl(resource, entries[i].getBundleFile());
-				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 = findResourceImpl(resource, fragEntries[j].getBundleFile());
-				if (result != null)
-					return result;
-			}
-		}
-		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
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				URL url = findResourceImpl(resource, entries[i].getBundleFile(), resources.size());
-				if (url != null)
-					resources.addElement(url);
-			}
-		}
-		// 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(), resources.size());
-				if (url != null)
-					resources.addElement(url);
-			}
-		}
-		if (resources.size() > 0)
-			return resources.elements();
-		return null;
-	}
-
-	private URL findResourceImpl(String name, BundleFile bundlefile) {
-		return findResourceImpl(name, bundlefile, 0);
-	}
-
-	private URL findResourceImpl(String name, BundleFile bundlefile, int index) {
-		return bundlefile.getResourceURL(name, data.getBundleID(), 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) {
-		BundleEntry result = null;
-		for (int i = 0; i < entries.length; i++) {
-			if (entries[i] != null) {
-				result = findEntryImpl(path, entries[i].getBundleFile());
-				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 = findEntryImpl(path, fragEntries[j].getBundleFile());
-				if (result != null)
-					return result;
-			}
-		}
-		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);
-			result = findLocalClassImpl(classname, hooks);
-			return result;
-		} finally {
-			for (int i = 0; i < hooks.length; i++)
-				hooks[i].postFindLocalClass(classname, result, this);
-		}
-	}
-
-	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
-		synchronized (classloader) {
-			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 Class findClassImpl(String name, ClasspathEntry classpathEntry, ClassLoadingStatsHook[] hooks) {
-		if (Debug.DEBUG && Debug.DEBUG_LOADER)
-			Debug.println("BundleClassLoader[" + data + "].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 " + data); //$NON-NLS-1$ //$NON-NLS-2$
-			return null;
-		}
-
-		if (Debug.DEBUG && Debug.DEBUG_LOADER) {
-			Debug.println("  read " + classbytes.length + " bytes from " + filename); //$NON-NLS-1$ //$NON-NLS-2$
-			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 e9e8a60..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/loader/FragmentClasspath.java
+++ /dev/null
@@ -1,73 +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.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;
-	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/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 0de516f..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/BundleResourceHandler.java
+++ /dev/null
@@ -1,279 +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.net.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.loader.BaseClassLoader;
-import org.eclipse.osgi.internal.baseadaptor.AdaptorMsg;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * URLStreamHandler the bundleentry and bundleresource protocols.
- */
-
-public abstract class BundleResourceHandler extends URLStreamHandler {
-	public static final String SECURITY_AUTHORIZED = "SECURITY_AUTHORIZED"; //$NON-NLS-1$
-	protected static BundleContext context;
-	protected BundleEntry bundleEntry;
-
-	/**
-	 * Constructor for a bundle protocol resource URLStreamHandler.
-	 */
-	public BundleResourceHandler() {
-		this(null);
-	}
-
-	public BundleResourceHandler(BundleEntry bundleEntry) {
-		this.bundleEntry = bundleEntry;
-	}
-
-	/** 
-	 * 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 bundleId = url.getHost();
-		int resIndex = 0; // must start at 0 index if using a context
-		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
-				}
-			bundleId = 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.
-		checkAdminPermission(context.getBundle(Long.parseLong(bundleId)));
-
-		// 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(), bundleId, resIndex, SECURITY_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 bidString = url.getHost();
-		if (bidString == null) {
-			throw new IOException(NLS.bind(AdaptorMsg.URL_NO_BUNDLE_ID, url.toExternalForm()));
-		}
-		AbstractBundle bundle = null;
-		long bundleID;
-		try {
-			bundleID = Long.parseLong(bidString);
-		} catch (NumberFormatException nfe) {
-			throw new MalformedURLException(NLS.bind(AdaptorMsg.URL_INVALID_BUNDLE_ID, bidString));
-		}
-		bundle = (AbstractBundle) context.getBundle(bundleID);
-		// 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_AUTHORIZED)) {
-			// No admin security check was made better check now.
-			checkAdminPermission(bundle);
-		}
-
-		if (bundle == null) {
-			throw new IOException(NLS.bind(AdaptorMsg.URL_NO_BUNDLE_FOUND, url.toExternalForm()));
-		}
-		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 bundleId = url.getHost();
-		if ((bundleId != null) && (bundleId.length() > 0))
-			result.append(bundleId);
-		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());
-	}
-
-	public static void setContext(BundleContext context) {
-		BundleResourceHandler.context = context;
-	}
-
-	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();
-
-		String path = url.getPath();
-		if (path != null)
-			hash += path.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) {
-		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 a1 = url1.getAuthority();
-		String a2 = url2.getAuthority();
-		if (!((a1 == a2) || (a1 != null && a1.equals(a2))))
-			return false;
-
-		String path1 = url1.getPath();
-		String path2 = url2.getPath();
-		if (!((path1 == path2) || (path1 != null && path1.equals(path2))))
-			return false;
-
-		return true;
-	}
-
-	protected void checkAdminPermission(Bundle bundle) {
-		SecurityManager sm = System.getSecurityManager();
-
-		if (sm != null) {
-			sm.checkPermission(new AdminPermission(bundle, AdminPermission.RESOURCE));
-		}
-	}
-
-	protected static BaseClassLoader getBundleClassLoader(AbstractBundle bundle) {
-		BundleLoader loader = bundle.getBundleLoader();
-		if (loader == null)
-			return null;
-		return (BaseClassLoader) loader.createClassLoader();
-	}
-}
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 7afdb94..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, 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.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/core/ServiceRegistryImpl.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/ServiceRegistryImpl.java
deleted file mode 100644
index 1663b5a..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/core/ServiceRegistryImpl.java
+++ /dev/null
@@ -1,200 +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.util.ArrayList;
-import java.util.HashMap;
-import org.osgi.framework.*;
-
-/**
- * A default implementation of the ServiceRegistry.
- */
-public class ServiceRegistryImpl implements org.eclipse.osgi.framework.adaptor.ServiceRegistry {
-
-	/** Published services by class name. Key is a String class name; Value is a ArrayList of ServiceRegistrations */
-	protected HashMap publishedServicesByClass;
-	/** All published services. Value is ServiceRegistrations */
-	protected ArrayList allPublishedServices;
-	/** Published services by BundleContext.  Key is a BundleContext; Value is a ArrayList of ServiceRegistrations*/
-	protected HashMap publishedServicesByContext;
-
-	/**
-	 * Initializes the internal data structures of this ServiceRegistry.
-	 *
-	 */
-	public void initialize() {
-		publishedServicesByClass = new HashMap(50);
-		publishedServicesByContext = new HashMap(50);
-		allPublishedServices = new ArrayList(50);
-	}
-
-	/**
-	 * @see org.eclipse.osgi.framework.adaptor.ServiceRegistry#publishService(BundleContext, ServiceRegistration)
-	 */
-	public void publishService(BundleContext context, ServiceRegistration serviceReg) {
-
-		// Add the ServiceRegistration to the list of Services published by BundleContext.
-		ArrayList contextServices = (ArrayList) publishedServicesByContext.get(context);
-		if (contextServices == null) {
-			contextServices = new ArrayList(10);
-			publishedServicesByContext.put(context, contextServices);
-		}
-		contextServices.add(serviceReg);
-
-		// Add the ServiceRegistration to the list of Services published by Class Name.
-		String[] clazzes = ((ServiceRegistrationImpl) serviceReg).clazzes;
-		int size = clazzes.length;
-
-		for (int i = 0; i < size; i++) {
-			String clazz = clazzes[i];
-
-			ArrayList services = (ArrayList) publishedServicesByClass.get(clazz);
-
-			if (services == null) {
-				services = new ArrayList(10);
-				publishedServicesByClass.put(clazz, services);
-			}
-
-			services.add(serviceReg);
-		}
-
-		// Add the ServiceRegistration to the list of all published Services.
-		allPublishedServices.add(serviceReg);
-	}
-
-	/**
-	 * @see org.eclipse.osgi.framework.adaptor.ServiceRegistry#unpublishService(BundleContext, ServiceRegistration)
-	 */
-	public void unpublishService(BundleContext context, ServiceRegistration serviceReg) {
-
-		// Remove the ServiceRegistration from the list of Services published by BundleContext.
-		ArrayList contextServices = (ArrayList) publishedServicesByContext.get(context);
-		if (contextServices != null) {
-			contextServices.remove(serviceReg);
-		}
-
-		// Remove the ServiceRegistration from the list of Services published by Class Name.
-		String[] clazzes = ((ServiceRegistrationImpl) serviceReg).clazzes;
-		int size = clazzes.length;
-
-		for (int i = 0; i < size; i++) {
-			String clazz = clazzes[i];
-			ArrayList services = (ArrayList) publishedServicesByClass.get(clazz);
-			services.remove(serviceReg);
-		}
-
-		// Remove the ServiceRegistration from the list of all published Services.
-		allPublishedServices.remove(serviceReg);
-
-	}
-
-	/**
-	 * @see org.eclipse.osgi.framework.adaptor.ServiceRegistry#unpublishServices(BundleContext)
-	 */
-	public void unpublishServices(BundleContext context) {
-		// Get all the Services published by the BundleContext.
-		ArrayList serviceRegs = (ArrayList) publishedServicesByContext.get(context);
-		if (serviceRegs != null) {
-			// Remove this list for the BundleContext
-			publishedServicesByContext.remove(context);
-			int size = serviceRegs.size();
-			for (int i = 0; i < size; i++) {
-				ServiceRegistrationImpl serviceReg = (ServiceRegistrationImpl) serviceRegs.get(i);
-				// Remove each service from the list of all published Services
-				allPublishedServices.remove(serviceReg);
-
-				// Remove each service from the list of Services published by Class Name. 
-				String[] clazzes = serviceReg.clazzes;
-				int numclazzes = clazzes.length;
-
-				for (int j = 0; j < numclazzes; j++) {
-					String clazz = clazzes[j];
-					ArrayList services = (ArrayList) publishedServicesByClass.get(clazz);
-					services.remove(serviceReg);
-				}
-			}
-		}
-	}
-
-	/**
-	 * @see org.eclipse.osgi.framework.adaptor.ServiceRegistry#lookupServiceReferences(String, Filter)
-	 */
-	public ServiceReference[] lookupServiceReferences(String clazz, Filter filter) {
-		int size;
-		ArrayList references;
-		ArrayList serviceRegs;
-		if (clazz == null) /* all services */
-			serviceRegs = allPublishedServices;
-		else
-			/* services registered under the class name */
-			serviceRegs = (ArrayList) publishedServicesByClass.get(clazz);
-
-		if (serviceRegs == null)
-			return (null);
-
-		size = serviceRegs.size();
-
-		if (size == 0)
-			return (null);
-
-		references = new ArrayList(size);
-		for (int i = 0; i < size; i++) {
-			ServiceRegistration registration = (ServiceRegistration) serviceRegs.get(i);
-
-			ServiceReference reference = registration.getReference();
-			if ((filter == null) || filter.match(reference)) {
-				references.add(reference);
-			}
-		}
-
-		if (references.size() == 0) {
-			return null;
-		}
-
-		return (ServiceReference[]) references.toArray(new ServiceReference[references.size()]);
-
-	}
-
-	/**
-	 * @see org.eclipse.osgi.framework.adaptor.ServiceRegistry#lookupServiceReferences(BundleContext)
-	 */
-	public ServiceReference[] lookupServiceReferences(BundleContext context) {
-		int size;
-		ArrayList references;
-		ArrayList serviceRegs = (ArrayList) publishedServicesByContext.get(context);
-
-		if (serviceRegs == null) {
-			return (null);
-		}
-
-		size = serviceRegs.size();
-
-		if (size == 0) {
-			return (null);
-		}
-
-		references = new ArrayList(size);
-		for (int i = 0; i < size; i++) {
-			ServiceRegistration registration = (ServiceRegistration) serviceRegs.get(i);
-
-			ServiceReference reference = registration.getReference();
-			references.add(reference);
-		}
-
-		if (references.size() == 0) {
-			return null;
-		}
-
-		return (ServiceReference[]) references.toArray(new ServiceReference[references.size()]);
-	}
-
-}
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 ee2586b..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleentry/Handler.java
+++ /dev/null
@@ -1,47 +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.protocol.bundleentry;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URL;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.framework.internal.core.*;
-
-/**
- * URLStreamHandler the bundleentry protocol.
- */
-
-public class Handler extends BundleResourceHandler {
-
-	/**
-	 * Constructor for a bundle protocol resource URLStreamHandler.
-	 */
-	public Handler() {
-		super();
-	}
-
-	public Handler(BundleEntry bundleEntry) {
-		super(bundleEntry);
-	}
-
-	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 dea7f77..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/bundleresource/Handler.java
+++ /dev/null
@@ -1,61 +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.protocol.bundleresource;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Enumeration;
-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) {
-		super(bundleEntry);
-	}
-
-	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();
-		int index = url.getPort();
-		BundleEntry entry = null;
-		if (index == 0) {
-			entry = cpManager.findLocalEntry(url.getPath());
-		} else {
-			Enumeration entries = cpManager.findLocalEntries(url.getPath());
-			if (entries != null)
-				for (int i = 0; entries.hasMoreElements() && i <= index; i++)
-					entry = (BundleEntry) entries.nextElement();
-		}
-		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 95fe716..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, 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.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 ff246c3..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/framework/internal/protocol/reference/ReferenceURLConnection.java
+++ /dev/null
@@ -1,82 +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.*;
-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.
-			File file = new File(url.getPath().substring(5));
-			URL ref;
-			if (!file.isAbsolute()) {
-				String installPath = getInstallPath();
-				if (installPath != null)
-					file = makeAbsolute(installPath, file);
-			}
-			ref = file.toURL();
-			if (!file.exists())
-				throw new FileNotFoundException(file.toString());
-			reference = ref;
-		}
-	}
-
-	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 43ca2b8..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorMsg.java
+++ /dev/null
@@ -1,59 +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 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_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 3c09222..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/AdaptorUtil.java
+++ /dev/null
@@ -1,199 +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.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.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.
-	 * @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);
-			}
-
-			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;
-		}
-	}
-
-	/**
-	 * 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);
-		} 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()), e);
-		}
-	}
-
-}
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 f48ca23..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseClassLoadingHook.java
+++ /dev/null
@@ -1,123 +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.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;
-
-public class BaseClassLoadingHook implements ClassLoadingHook {
-	private static final String[] LIB_EXTENSIONS = ManifestElement.getArrayFromList(FrameworkProperties.getProperty("osgi.framework.library.extensions"), ","); //$NON-NLS-1$ //$NON-NLS-2$
-	private static final String[] EMPTY_STRINGS = new String[0];
-
-	/*
-	 * 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 57fa14e..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorage.java
+++ /dev/null
@@ -1,1226 +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.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.*;
-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 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 Method addURLMethod;
-	/**
-	 * The list of configured framework extensions
-	 */
-	private String[] configuredExtensions;
-
-	private long timeStamp = 0;
-	private int initialBundleStartLevel = 1;
-	private 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
-	}
-
-	public void initialize(BaseAdaptor adaptor) throws IOException {
-		this.adaptor = adaptor;
-		setDebugOptions();
-		if (Boolean.valueOf(FrameworkProperties.getProperty(BaseStorage.PROP_CLEAN)).booleanValue())
-			cleanOSGiCache();
-		// initialize the addURLMethod to support framework extensions
-		ClassLoader fwloader = BaseStorage.class.getClassLoader();
-		if (fwloader != null)
-			addURLMethod = findaddURLMethod(fwloader.getClass());
-		// 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 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) {
-		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);
-		}
-		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()));
-		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() {
-		return readBundleDatas();
-	}
-
-	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 (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;
-		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;
-		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 (stateManager == null || isReadOnly() || !stateManager.saveNeeded())
-			return;
-		try {
-			File stateTmpFile = File.createTempFile(LocationManager.STATE_FILE, ".new", LocationManager.getOSGiConfigurationDir()); //$NON-NLS-1$
-			File 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));
-		}
-	}
-
-	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);
-		}
-
-		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();
-		for (int i = 0; i < wrapperFactories.length; i++) {
-			BundleFile wrapperBundle = wrapperFactories[i].wrapBundleFile(result, content, data, base);
-			if (wrapperBundle != null)
-				result = wrapperBundle;
-		}
-		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);
-	}
-
-	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 (addURLMethod != 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)) {
-			// TODO log error?
-		}
-	}
-
-	/**
-	 * 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);
-		}
-	}
-
-	/**
-	 * 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()));
-		if (extensionManifest.get(Constants.REQUIRE_BUNDLE) != null)
-			throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_EXTENSION_REQUIRE_ERROR, bundleData.getLocation()));
-		if (extensionManifest.get(Constants.BUNDLE_NATIVECODE) != null)
-			throw new BundleException(NLS.bind(AdaptorMsg.ADAPTOR_EXTENSION_NATIVECODE_ERROR, bundleData.getLocation()));
-	}
-
-	/**
-	 * 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 (addURLMethod == null)
-			throw new BundleException("Framework extensions are not supported.", new UnsupportedOperationException()); //$NON-NLS-1$
-		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;
-		ClassLoader cl = getClass().getClassLoader();
-		for (int i = 0; i < files.length; i++) {
-			if (files[i] == null)
-				continue;
-			Throwable exceptionLog = null;
-			try {
-				addURLMethod.invoke(cl, new Object[] {files[i].toURL()});
-			} catch (InvocationTargetException e) {
-				exceptionLog = e.getTargetException();
-			} catch (Throwable t) {
-				exceptionLog = t;
-			} finally {
-				if (exceptionLog != null)
-					adaptor.getEventPublisher().publishFrameworkEvent(FrameworkEvent.ERROR, bundleData.getBundle(), exceptionLog);
-			}
-		}
-		try {
-			cl.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.", 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();
-			// TODO need to be smarter about dev path here
-			if (FrameworkProperties.getProperty("osgi.dev") != null) { //$NON-NLS-1$
-				String[] origPaths = paths;
-				paths = new String[origPaths.length + 1];
-				System.arraycopy(origPaths, 0, paths, 0, origPaths.length);
-				paths[paths.length - 1] = "bin"; //$NON-NLS-1$
-			}
-			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();
-		switch (type) {
-			case BundleEvent.UPDATED :
-				systemState.removeBundle(bundleData.getBundleID());
-				// fall through to INSTALLED
-			case BundleEvent.INSTALLED :
-				BundleDescription newDescription = stateManager.getFactory().createBundleDescription(systemState, bundleData.getManifest(), bundleData.getLocation(), bundleData.getBundleID());
-				systemState.addBundle(newDescription);
-				break;
-			case BundleEvent.UNINSTALLED :
-				systemState.removeBundle(bundleData.getBundleID());
-				break;
-		}
-	}
-
-	private static Method findaddURLMethod(Class clazz) {
-		if (clazz == null)
-			return null; // ends the recursion when getSuperClass returns null
-		try {
-			Method result = clazz.getDeclaredMethod("addURL", new Class[] {URL.class}); //$NON-NLS-1$ 
-			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 findaddURLMethod(clazz.getSuperclass());
-	}
-
-	private class StateSaver implements Runnable {
-		private long delay_interval = 30000; // 30 seconds.
-		private long max_total_delay_interval = 1800000; // 30 minutes.
-		private boolean shutdown = false;
-		private long lastSaveTime = 0;
-		private Thread runningThread = null;
-
-		StateSaver() {
-			String prop = FrameworkProperties.getProperty("eclipse.stateSaveDelayInterval"); //$NON-NLS-1$
-			if (prop != null) {
-				try {
-					long val = Long.parseLong(prop);
-					if (val >= 1000 && val <= 1800000) {
-						delay_interval = val;
-						max_total_delay_interval = val * 60;
-					}
-				} catch (NumberFormatException e) {
-					// ignore
-				}
-			}
-		}
-
-		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
-			}
-		}
-
-		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)
-					// There should be no deadlock when 'shutdown' is true.
-					joinWith.join();
-			} catch (InterruptedException ie) {
-				if (Debug.DEBUG && Debug.DEBUG_GENERAL) {
-					Debug.println("Error shutdowning StateSaver: " + ie.getMessage()); //$NON-NLS-1$
-					Debug.printStackTrace(ie);
-				}
-			}
-		}
-
-		void requestSave() {
-			State systemState = adaptor.getState();
-			synchronized (systemState) {
-				lastSaveTime = System.currentTimeMillis();
-				if (runningThread == null) {
-					runningThread = new Thread(this, "State Saver"); //$NON-NLS-1$
-					runningThread.start();
-				}
-			}
-		}
-	}
-
-	public long getNextBundleId() {
-		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);
-		} 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 2c6bdb4..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/BaseStorageHook.java
+++ /dev/null
@@ -1,431 +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.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.*;
-import org.eclipse.osgi.baseadaptor.bundlefile.BundleEntry;
-import org.eclipse.osgi.baseadaptor.bundlefile.ZipBundleFile;
-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 = '$';
-
-	/** 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;
-		}
-		target.setClassPathString((String) manifest.get(Constants.BUNDLE_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.OSGI_SYSTEM_BUNDLE.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
-					bundleType |= BundleData.TYPE_BOOTCLASSPATH_EXTENSION;
-			}
-		}
-		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 {
-		this.nativePaths = installPaths;
-		for (int i = 0; i < installPaths.length; i++) {
-			if (installPaths[i].startsWith(EXTERNAL_LIB_PREFIX)) {
-				String path = substituteVars(installPaths[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()));
-				continue; // continue to next path
-			}
-			// ensure the file exists in the bundle; it will get extracted later on demand
-			BundleEntry nativeEntry = bundleData.getBundleFile().getEntry(installPaths[i]);
-			if (nativeEntry == null)
-				throw new BundleException(NLS.bind(AdaptorMsg.BUNDLE_NATIVECODE_EXCEPTION, installPaths[i]));
-		}
-	}
-
-	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 boolean matchDNChain(String pattern) {
-		// 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 {
-		// shutdown the bundle file closer thread if it exists
-		ZipBundleFile.shutdown();
-	}
-
-	public void frameworkStopping(BundleContext context) {
-		// do nothing
-	}
-
-	public void addProperties(Properties properties) {
-		// do nothing
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		// 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 boolean matchDNChain(String pattern, String[] dnChain) {
-		// do nothing
-		return false;
-	}
-
-	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 61770b0..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DefaultClassLoader.java
+++ /dev/null
@@ -1,236 +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.net.MalformedURLException;
-import java.net.URL;
-import java.security.*;
-import java.security.cert.Certificate;
-import java.util.Enumeration;
-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.eclipse.osgi.framework.debug.Debug;
-import org.eclipse.osgi.internal.provisional.verifier.CertificateChain;
-import org.eclipse.osgi.internal.provisional.verifier.CertificateVerifier;
-
-/**
- * The default implemention of <code>BaseClassLoader</code>.  This implementation extends
- * <code>ClassLoader</code>.
- * @see BaseClassLoader
- * @see ClasspathManager
- */
-public class DefaultClassLoader extends ClassLoader implements BaseClassLoader {
-	/**
-	 * A PermissionCollection for AllPermissions; shared across all ProtectionDomains when security is disabled
-	 */
-	protected static final PermissionCollection ALLPERMISSIONS;
-	static {
-		AllPermission allPerm = new AllPermission();
-		ALLPERMISSIONS = allPerm.newPermissionCollection();
-		if (ALLPERMISSIONS != null)
-			ALLPERMISSIONS.add(allPerm);
-	}
-
-	protected ClassLoaderDelegate delegate;
-	protected ProtectionDomain domain;
-	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 {
-		return (delegate.findResources(name));
-	}
-
-	/**
-	 * 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;
-			if (bundlefile instanceof CertificateVerifier) {
-				CertificateChain[] chains = ((CertificateVerifier) bundlefile).getChains();
-				certs = chains == null || chains.length == 0 ? null : chains[0].getCertificates();
-			}
-			return new ProtectionDomain(new CodeSource(bundlefile.getBaseFile().toURL(), certs), permissions);
-		} catch (MalformedURLException e) {
-			// Failed to create our own domain; just return the baseDomain
-			return baseDomain;
-		}
-	}
-
-	public ClasspathManager getClasspathManager() {
-		return manager;
-	}
-}
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 43e2b85..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/DevClassLoadingHook.java
+++ /dev/null
@@ -1,98 +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 java.security.ProtectionDomain;
-import java.util.ArrayList;
-import org.eclipse.osgi.baseadaptor.*;
-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.util.KeyedElement;
-
-public class DevClassLoadingHook implements ClassLoadingHook, HookConfigurator, KeyedElement {
-	public static final String KEY = DevClassLoadingHook.class.getName();
-	public static final int HASHCODE = KEY.hashCode();
-
-	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
-				ClasspathEntry entry = hostmanager.getExternalClassPath(devClassPath[i], sourcedata, 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;
-	}
-
-	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 2734809..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/ExternalMessages.properties
+++ /dev/null
@@ -1,37 +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
-###############################################################################
-
-#External Messages for EN locale
-
-ADAPTOR_STORAGE_EXCEPTION=The FrameworkAdaptor object could not perform the operation
-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 not 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 foundURL_NO_BUNDLE_ID=No bundle ID specified: {0}
-URL_INVALID_BUNDLE_ID=Invalid Bundle ID specified: {0}
-URL_NO_BUNDLE_ID=No bundle ID found: {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 82ce147..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/InvalidVersion.java
+++ /dev/null
@@ -1,43 +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 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 0647a91..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/StateManager.java
+++ /dev/null
@@ -1,308 +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.internal.baseadaptor;
-
-import java.io.File;
-import java.io.IOException;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-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();
-		if (removalPendings.length > 0)
-			systemState.resolve(removalPendings);
-		writeState(systemState, stateFile, lazyFile);
-		stopDataManager();
-	}
-
-	/**
-	 * 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(getResolver(System.getSecurityManager() != null));
-			state.setPlatformProperties(FrameworkProperties.getProperties());
-			state.resolve(false);
-		}
-		writeState(state, stateFile, lazyFile);
-		lastTimeStamp = state.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(getResolver(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()
-	 */
-	public Resolver getResolver() {
-		return getResolver(false);
-	}
-
-	private Resolver getResolver(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(expireTime);
-				}
-		}
-	}
-}
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 142b7da..0000000
--- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/internal/baseadaptor/SystemBundleData.java
+++ /dev/null
@@ -1,183 +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.*;
-import java.net.URL;
-import java.util.Enumeration;
-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.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);
-		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 File getDataFile(String path) {
-		return null;
-	}
-
-	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 f311311..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseLog.java
+++ /dev/null
@@ -1,665 +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.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 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;
-
-	/**
-	 * 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;
-		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.getAbsolutePath());
-	}
-
-	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
-	 * 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 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());
-		if (entry.getSeverity() != 0 || entry.getBundleCode() != 0) {
-			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 ((outFile.length() >> 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;
-			}
-		}
-	}
-}
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 2bb24b2..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/EclipseStarter.java
+++ /dev/null
@@ -1,1619 +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
- *     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.FilePath;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-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
- */
-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 OSGi osgi = 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 CONFIGURATION = "-configuration"; //$NON-NLS-1$	
-	private static final String USER = "-user"; //$NON-NLS-1$
-	private static final String NOEXIT = "-noExit"; //$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$
-	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$
-	// Console information
-	protected static final String DEFAULT_CONSOLE_CLASS = "org.eclipse.osgi.framework.internal.core.FrameworkConsole"; //$NON-NLS-1$
-	private static final String CONSOLE_NAME = "OSGi Console"; //$NON-NLS-1$
-
-	private static Runnable console;
-	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;
-
-	/**
-	 * 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$
-		run(args, null);
-	}
-
-	/**
-	 * Launches the platform and runs a single application. The application is either identified
-	 * in the given arguments (e.g., -application &ltapp 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);
-				if (context != null) // this can be null if OSGi failed to launch (bug 151413)
-					logUnresolvedBundles(context.getBundles());
-			} 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
-		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 &ltapp 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);
-		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$
-		osgi = new OSGi(adaptor);
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "OSGi created"); //$NON-NLS-1$ //$NON-NLS-2$
-		context = osgi.getBundleContext();
-		registerFrameworkShutdownHandlers();
-		publishSplashScreen(endSplashHandler);
-		osgi.launch();
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "osgi launched"); //$NON-NLS-1$ //$NON-NLS-2$
-		String consolePort = FrameworkProperties.getProperty(PROP_CONSOLE);
-		if (consolePort != null) {
-			startConsole(osgi, new String[0], consolePort);
-			if (Profile.PROFILE && Profile.STARTUP)
-				Profile.logTime("EclipseStarter.startup()", "console started"); //$NON-NLS-1$ //$NON-NLS-2$
-		}
-		if ("true".equals(FrameworkProperties.getProperty(PROP_REFRESH_BUNDLES)) && refreshPackages(getCurrentBundles(false))) //$NON-NLS-1$
-			return context; // cannot continue; refreshPackages shutdown the framework
-		if (Profile.PROFILE && Profile.STARTUP)
-			Profile.logTime("EclipseStarter.startup()", "loading basic bundles"); //$NON-NLS-1$ //$NON-NLS-2$
-		long stateStamp = adaptor.getState().getTimeStamp();
-		Bundle[] startBundles = loadBasicBundles();
-		if (startBundles == null)
-			return context; // cannot continue; loadBasicBundles caused refreshPackages to shutdown the framework
-		// 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);
-		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);
-	}
-
-	/**
-	 * 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 || osgi == null)
-			return;
-		if (appLauncherRegistration != null)
-			appLauncherRegistration.unregister();
-		if (splashStreamRegistration != null)
-			splashStreamRegistration.unregister();
-		if (defaultMonitorRegistration != null)
-			defaultMonitorRegistration.unregister();
-		appLauncherRegistration = null;
-		appLauncher = null;
-		splashStreamRegistration = null;
-		defaultMonitorRegistration = null;
-		stopConsole();
-		osgi.close();
-		osgi = 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 htat 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() throws IOException {
-		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) throws MalformedURLException {
-		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.indexOf('@');
-			if (index >= 0) {
-				String[] attributes = getArrayFromList(name.substring(index + 1, name.length()), ":"); //$NON-NLS-1$
-				name = name.substring(0, index);
-				for (int j = 0; j < attributes.length; j++) {
-					String attribute = attributes[j];
-					if (attribute.equals("start")) //$NON-NLS-1$
-						start = true;
-					else
-						level = Integer.parseInt(attribute);
-				}
-			}
-			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));
-		}
-		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);
-		FrameworkListener listener = new FrameworkListener() {
-			public void frameworkEvent(FrameworkEvent event) {
-				if (event.getType() == FrameworkEvent.PACKAGES_REFRESHED)
-					semaphore.release();
-			}
-		};
-		context.addFrameworkListener(listener);
-		packageAdmin.refreshPackages(bundles);
-		context.ungetService(packageAdminRef);
-		updateSplash(semaphore, listener);
-		if (isForcedRestart()) {
-			// wait for the system bundle to stop
-			Bundle systemBundle = context.getBundle(0);
-			int i = 0;
-			while (i < 5000 && (systemBundle.getState() & (Bundle.ACTIVE | Bundle.STOPPING)) != 0) {
-				i += 200;
-				try {
-					Thread.sleep(200);
-				} catch (InterruptedException e) {
-					break;
-				}
-			}
-			return true;
-		}
-		return false;
-	}
-
-	/**
-	 *  Invokes the OSGi Console on another thread
-	 *
-	 * @param equinox The current OSGi instance for the console to attach to
-	 * @param consoleArgs An String array containing commands from the command line
-	 * for the console to execute
-	 * @param consolePort the port on which to run the console.  Empty string implies the default port.
-	 */
-	private static void startConsole(OSGi equinox, String[] consoleArgs, String consolePort) {
-		try {
-			String consoleClassName = FrameworkProperties.getProperty(PROP_CONSOLE_CLASS, DEFAULT_CONSOLE_CLASS);
-			Class consoleClass = Class.forName(consoleClassName);
-			Class[] parameterTypes;
-			Object[] parameters;
-			if (consolePort.length() == 0) {
-				parameterTypes = new Class[] {OSGi.class, String[].class};
-				parameters = new Object[] {equinox, consoleArgs};
-			} else {
-				parameterTypes = new Class[] {OSGi.class, int.class, String[].class};
-				parameters = new Object[] {equinox, new Integer(consolePort), consoleArgs};
-			}
-			Constructor constructor = consoleClass.getConstructor(parameterTypes);
-			console = (Runnable) constructor.newInstance(parameters);
-			Thread t = new Thread(console, CONSOLE_NAME);
-			t.start();
-		} catch (NumberFormatException nfe) {
-			// TODO log or something other than write on System.err
-			System.err.println(NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_INVALID_PORT, consolePort));
-		} catch (Exception ex) {
-			System.out.println(NLS.bind(EclipseAdaptorMsg.ECLIPSE_STARTUP_FAILED_FIND, CONSOLE_NAME));
-		}
-
-	}
-
-	/**
-	 *  Stops the OSGi Command console
-	 *
-	 */
-	private static void stopConsole() {
-		if (console == null)
-			return;
-		try {
-			Method shutdownMethod = console.getClass().getMethod("shutdown", null); //$NON-NLS-1$
-			shutdownMethod.invoke(console, null);
-		} catch (Exception ex) {
-			System.err.println(ex.getMessage());
-		}
-	}
-
-	/**
-	 *  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 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;
-			}
-			// 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 = null;
-		try {
-			url = new URL(urlSpec);
-		} catch (MalformedURLException e) {
-			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();
-						osgiBundle = context.installBundle(initialBundles[i].locationString, in);
-						// 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);
-		FrameworkListener listener = new FrameworkListener() {
-			public void frameworkEvent(FrameworkEvent event) {
-				if (event.getType() == FrameworkEvent.STARTLEVEL_CHANGED && startLevel.getStartLevel() == value)
-					semaphore.release();
-			}
-		};
-		context.addFrameworkListener(listener);
-		startLevel.setStartLevel(value);
-		context.ungetService(reference);
-		updateSplash(semaphore, listener);
-	}
-
-	private static void updateSplash(Semaphore semaphore, FrameworkListener 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);
-			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;
-			if (candidateName.length() > target.length() && candidateName.charAt(target.length()) != '_') {
-				// 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 && candidateName.charAt(target.length()) == '_' ? 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 initializeProperties() {
-		// initialize some framework properties that must always be set
-		if (FrameworkProperties.getProperty(PROP_FRAMEWORK) == null || FrameworkProperties.getProperty(PROP_INSTALL_AREA) == null) {
-			CodeSource cs = EclipseStarter.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 (FrameworkProperties.getProperty(PROP_FRAMEWORK) == null)
-				FrameworkProperties.setProperty(PROP_FRAMEWORK, url.toExternalForm());
-			if (FrameworkProperties.getProperty(PROP_INSTALL_AREA) == null) {
-				String filePart = url.getFile();
-				FrameworkProperties.setProperty(PROP_INSTALL_AREA, filePart.substring(0, filePart.lastIndexOf('/')));
-			}
-		}
-		// always decode these properties
-		FrameworkProperties.setProperty(PROP_FRAMEWORK, decode(FrameworkProperties.getProperty(PROP_FRAMEWORK)));
-		FrameworkProperties.setProperty(PROP_INSTALL_AREA, decode(FrameworkProperties.getProperty(PROP_INSTALL_AREA)));
-	}
-
-	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;
-		}
-	}
-
-	private 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$
-		}
-	}
-
-	/**
-	 * 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 84250a8..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/adaptor/LocationManager.java
+++ /dev/null
@@ -1,348 +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.adaptor;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Properties;
-import org.eclipse.core.runtime.internal.adaptor.BasicLocation;
-import org.eclipse.core.runtime.internal.adaptor.LocationHelper;
-import org.eclipse.osgi.framework.adaptor.FrameworkAdaptor;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-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
- */
-public class LocationManager {
-	private static Location installLocation = null;
-	private static Location configurationLocation = null;
-	private static Location userLocation = null;
-	private static Location instanceLocation = 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$
-
-	// 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$
-
-	/**
-	 * 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); //$NON-NLS-1$
-		
-		Location temp = buildLocation(PROP_USER_AREA_DEFAULT, null, "", false); //$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); //$NON-NLS-1$
-
-		temp = buildLocation(PROP_INSTANCE_AREA_DEFAULT, null, "", false); //$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); //$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); //$NON-NLS-1$
-		defaultLocation = temp == null ? null : temp.getURL();
-		if (defaultLocation == null)
-			defaultLocation = buildURL(computeDefaultConfigurationLocation(), true);
-		configurationLocation = buildLocation(PROP_CONFIG_AREA, defaultLocation, "", false); //$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);
-			((BasicLocation) configurationLocation).setParent(parent);
-		}
-		initializeDerivedConfigurationLocations();
-	}
-
-	private static Location buildLocation(String property, URL defaultLocation, String userDefaultAppendage, boolean readOnlyDefault) {
-		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, readOnly);
-		String trimmedLocation = location.trim();
-		if (trimmedLocation.equalsIgnoreCase(NONE))
-			return null;
-		if (trimmedLocation.equalsIgnoreCase(NO_DEFAULT))
-			return new BasicLocation(property, null, readOnly);
-		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, readOnly);
-			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) {
-			try {
-				return new URL(property);
-			} catch (MalformedURLException e) {
-				// do nothing here since it is basically impossible to get a bogus url
-			}
-		}
-		return null;
-	}
-
-	private static URL computeSharedConfigurationLocation() {
-		String property = FrameworkProperties.getProperty(PROP_SHARED_CONFIG_AREA);
-		if (property == null)
-			return null;
-		try {
-			URL sharedConfigurationURL = new URL(property);
-			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 installDir = new File(installURL.getFile());
-			if ("file".equals(installURL.getProtocol()) && canWrite(installDir)) //$NON-NLS-1$
-				return new File(installDir, CONFIG_DIR).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(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;
-	}
-
-	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;
-	}
-
-	/**
-	 * 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 351f3f2..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, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.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 db4d3b7..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/CachedManifest.java
+++ /dev/null
@@ -1,117 +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;
-
-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.util.NLS;
-import org.osgi.framework.*;
-
-/**
- * Internal class.
- */
-public class CachedManifest extends Dictionary {
-
-	private Dictionary manifest = null;
-	private EclipseStorageHook storageHook;
-
-	public CachedManifest(EclipseStorageHook storageHook) {
-		this.storageHook = storageHook;
-	}
-
-	public Dictionary getManifest() {
-		if (manifest == null)
-			try {
-				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;
-			}
-		return manifest;
-	}
-
-	public int size() {
-		//TODO: getManifest may return null
-		return getManifest().size();
-	}
-
-	public boolean isEmpty() {
-		return size() == 0;
-	}
-
-	public Enumeration elements() {
-		//TODO: getManifest may return null		
-		return getManifest().elements();
-	}
-
-	public Enumeration keys() {
-		//TODO: getManifest may return null		
-		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.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(Boolean.TRUE.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();
-		}
-		Dictionary result = getManifest();
-		return result == null ? null : result.get(key);
-	}
-
-	public Object remove(Object key) {
-		//TODO: getManifest may return null		
-		return getManifest().remove(key);
-	}
-
-	public Object put(Object key, Object value) {
-		//TODO: getManifest may return null		
-		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 200c365..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ClasspathManifest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.runtime.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 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)
-			try {
-				InputStream manIn = mfEntry.getInputStream();
-				manifest = new Manifest(manIn);
-				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 be2ea3b..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/ContextFinder.java
+++ /dev/null
@@ -1,165 +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.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;
-			}
-		});
-	}
-
-	public ContextFinder(ClassLoader contextClassLoader) {
-		super(contextClassLoader);
-	}
-
-	// 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
-				}
-			return super.loadClass(arg0, arg1);
-		} 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 null;
-		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 f930135..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, 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.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 new IllegalStateException(e.getMessage());
-		} catch (NoSuchMethodException e) {
-			//TODO maybe we could do something else in the update method in this case, like print something to the console?
-			throw new IllegalStateException(e.getMessage());
-		}
-	}
-
-	/* (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 6dce830..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorHook.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.runtime.internal.adaptor;
-
-import java.io.*;
-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.Constants;
-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.runnable.ApplicationLauncher;
-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 BaseAdaptor adaptor;
-	private boolean noXML = false;
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		registerEndorsedXMLParser(context);
-		Location location = LocationManager.getUserLocation();
-		Hashtable locationProperties = new Hashtable(1);
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_USER_AREA); //$NON-NLS-1$
-			context.registerService(Location.class.getName(), location, locationProperties);
-		}
-		location = LocationManager.getInstanceLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_INSTANCE_AREA); //$NON-NLS-1$
-			context.registerService(Location.class.getName(), location, locationProperties);
-		}
-		location = LocationManager.getConfigurationLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_CONFIG_AREA); //$NON-NLS-1$
-			context.registerService(Location.class.getName(), location, locationProperties);
-		}
-		location = LocationManager.getInstallLocation();
-		if (location != null) {
-			locationProperties.put("type", LocationManager.PROP_INSTALL_AREA); //$NON-NLS-1$
-			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$
-		context.registerService(URLConverter.class.getName(), new URLConverterImpl(), urlProperties);
-
-		AdaptorUtil.register(org.eclipse.osgi.service.environment.EnvironmentInfo.class.getName(), EclipseEnvironmentInfo.getDefault(), context);
-		AdaptorUtil.register(PlatformAdmin.class.getName(), adaptor.getPlatformAdmin(), context);
-		PluginConverter converter = PluginConverterImpl.getDefault();
-		if (converter == null)
-			converter = new PluginConverterImpl(adaptor, context);
-		AdaptorUtil.register(PluginConverter.class.getName(), converter, context);
-		AdaptorUtil.register(CommandProvider.class.getName(), new EclipseCommandProvider(context), context);
-		AdaptorUtil.register(org.eclipse.osgi.service.localization.BundleLocalization.class.getName(), new BundleLocalizationImpl(), context);
-	}
-
-	private void registerEndorsedXMLParser(BundleContext bc) {
-		try {
-			Class.forName(SAXFACTORYNAME);
-			bc.registerService(SAXFACTORYNAME, new SaxParsingService(), new Hashtable());
-			Class.forName(DOMFACTORYNAME);
-			bc.registerService(DOMFACTORYNAME, new DomParsingService(), new Hashtable());
-		} 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 class SaxParsingService implements ServiceFactory {
-		public Object getService(Bundle bundle, ServiceRegistration registration) {
-			return SAXParserFactory.newInstance();
-		}
-
-		public void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
-			// Do nothing.
-		}
-	}
-
-	private class DomParsingService implements ServiceFactory {
-		public Object getService(Bundle bundle, ServiceRegistration registration) {
-			return DocumentBuilderFactory.newInstance();
-		}
-
-		public void ungetService(Bundle bundle, ServiceRegistration registration, Object service) {
-			// Do nothing.
-		}
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		// TODO should unregister the services here
-		printStats();
-		if (!noXML)
-			PluginParser.releaseXMLParsing();
-	}
-
-	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) {
-		// Shutdown the ApplicationLauncher service if it is available.
-		ServiceReference launcherRef = context.getServiceReference(ApplicationLauncher.class.getName());
-		if (launcherRef != null) {
-			ApplicationLauncher launcher = (ApplicationLauncher) context.getService(launcherRef);
-			// this will force a currently running application to stop.
-			launcher.shutdown();
-			context.ungetService(launcherRef);
-		}
-	}
-
-	public void addProperties(Properties properties) {
-		// default to not verify EE at install time
-		if (properties.getProperty(Constants.ECLIPSE_EE_INSTALL_VERIFY) == null)
-			properties.put(Constants.ECLIPSE_EE_INSTALL_VERIFY, "false"); //$NON-NLS-1$
-		// default to enable compatibility boot delegation
-		if (properties.getProperty(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION) == null)
-			properties.put(Constants.OSGI_COMPATIBILITY_BOOTDELEGATION, "true"); //$NON-NLS-1$
-	}
-
-	public URLConnection mapLocationToURLConnection(String location) throws IOException {
-		// do nothing
-		return null;
-	}
-
-	public void handleRuntimeError(Throwable error) {
-		// do nothing
-	}
-
-	public boolean matchDNChain(String pattern, String[] dnChain) {
-		// do nothing
-		return false;
-	}
-
-	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);
-	}
-
-	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 4670a16..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseAppLauncher.java
+++ /dev/null
@@ -1,155 +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.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.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;
-		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));
-			}
-		} while (relaunch && (context.getBundle().getState() & Bundle.ACTIVE) != 0);
-		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 6300697..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseClassLoadingHook.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.runtime.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.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 static String[] LIB_VARIANTS = buildLibraryVariants();
-
-	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 = 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;
-		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.
-		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 9aeaabe..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseCommandProvider.java
+++ /dev/null
@@ -1,101 +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 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 BundleContext context;
-
-	public EclipseCommandProvider(BundleContext context) {
-		this.context = context;
-	}
-
-	public String getHelp() {
-		StringBuffer help = new StringBuffer(512);
-		help.append(EclipseAdaptorMsg.NEW_LINE);
-		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$
-		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;
-	}
-
-	public void _diag(CommandInterpreter ci) throws Exception {
-		String nextArg = ci.nextArgument();
-		if (nextArg == null) {
-			ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_NO_BUNDLE_SPECIFIED_ERROR);
-			return;
-		}
-		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;
-		}
-		try {
-			PlatformAdmin platformAdmin = (PlatformAdmin) context.getService(platformAdminRef);
-			if (platformAdmin == null)
-				return;
-			State systemState = platformAdmin.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());
-				}
-
-				for (int i = 0; i < unsatisfied.length; i++) {
-					ci.print("  "); //$NON-NLS-1$
-					ci.println(MessageHelper.getResolutionFailureMessage(unsatisfied[i]));
-				}
-				if (unsatisfied.length == 0 && resolverErrors.length == 0) {
-					ci.print("  "); //$NON-NLS-1$
-					ci.println(EclipseAdaptorMsg.ECLIPSE_CONSOLE_NO_CONSTRAINTS);
-				}
-				nextArg = ci.nextArgument();
-			}
-		} finally {
-			context.ungetService(platformAdminRef);
-		}
-	}
-}
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 4dc088e..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseEnvironmentInfo.java
+++ /dev/null
@@ -1,226 +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;
-
-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;
-	static String[] allArgs;
-	static String[] frameworkArgs;
-	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$
-
-	// 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) {
-		if (EclipseEnvironmentInfo.allArgs == null)
-			EclipseEnvironmentInfo.allArgs = allArgs;
-	}
-
-	public static void setAppArgs(String[] appArgs) {
-		if (EclipseEnvironmentInfo.appArgs == null)
-			EclipseEnvironmentInfo.appArgs = appArgs;
-	}
-
-	public static void setFrameworkArgs(String[] frameworkArgs) {
-		if (EclipseEnvironmentInfo.frameworkArgs == null)
-			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_MOTIF;
-		if (os.equals(Constants.OS_MACOSX))
-			return Constants.WS_CARBON;
-		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_MOTIF;
-		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;
-		// 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;
-	}
-}
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 bc60f22..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseErrorHandler.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.runtime.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 boolean matchDNChain(String pattern, String[] dnChain) {
-		// do nothing
-		return false;
-	}
-
-	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 d7e98a8..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLazyStarter.java
+++ /dev/null
@@ -1,283 +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.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.AccessController;
-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.log.FrameworkLog;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-import org.eclipse.osgi.service.resolver.StateHelper;
-import org.eclipse.osgi.util.NLS;
-import org.osgi.framework.*;
-import org.osgi.service.startlevel.StartLevel;
-
-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 static final SecureAction secureAction = (SecureAction) AccessController.doPrivileged(SecureAction.createSecureAction());
-	private StartLevelImpl startLevelService;
-	private ServiceReference slRef;
-	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;
-			}
-			AbstractBundle bundle = (AbstractBundle) managers[i].getBaseData().getBundle();
-			// 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
-				secureAction.start(bundle, Bundle.START_TRANSIENT);
-			} catch (BundleException e) {
-				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;
-		// 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;
-			}
-			StartLevelImpl sl = startLevelService;
-			return sl != null && ((sl.getStartLevel() == bundledata.getStartLevel() && sl.isSettingStartLevel()));
-		}
-		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 {
-		slRef = context.getServiceReference(StartLevel.class.getName());
-		if (slRef != null)
-			startLevelService = (StartLevelImpl) context.getService(slRef);
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		if (slRef != null) {
-			context.ungetService(slRef);
-			startLevelService = null;
-		}
-	}
-
-	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;
-	}
-
-	public boolean matchDNChain(String pattern, String[] dnChain) {
-		// do nothing
-		return false;
-	}
-
-	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 706db13..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseLogHook.java
+++ /dev/null
@@ -1,125 +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.*;
-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 boolean matchDNChain(String pattern, String[] dnChain) {
-		// do nothing
-		return false;
-	}
-
-	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 ae8dee2..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/EclipseStorageHook.java
+++ /dev/null
@@ -1,472 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005, 2006 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.runtime.internal.adaptor;
-
-import java.io.*;
-import java.net.URL;
-import java.util.*;
-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 = 2;
-
-	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;
-	/** 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;
-	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);
-		}
-		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);
-		}
-	}
-
-	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();
-		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);
-		}
-		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());
-	}
-
-	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;
-	}
-
-	/**
-	 * 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())) //$NON-NLS-1$
-			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.startsWith("Specification-Title: ") || line.startsWith("Specification-Version: ") || line.startsWith("Specification-Vendor: ") || line.startsWith("Implementation-Title: ") || line.startsWith("Implementation-Version: ") || line.startsWith("Implementation-Vendor: ")) //$NON-NLS-1$ //$NON-NLS-2$//$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
-					return true;
-			}
-		} 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 {
-		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, 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;
-	}
-
-	public boolean matchDNChain(String pattern) {
-		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 90db662..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, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.core.runtime.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 e9d5c08..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, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.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 ef4bb4b..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/MessageHelper.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.util.Date;
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * @since 3.3
- */
-public class MessageHelper {
-	public static String getResolutionFailureMessage(VersionConstraint unsatisfied) {
-		if (unsatisfied.isResolved())
-			throw new IllegalArgumentException();
-		if (unsatisfied instanceof ImportPackageSpecification)
-			return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_IMPORTED_PACKAGE, toString(unsatisfied));
-		else if (unsatisfied instanceof BundleSpecification)
-			if (((BundleSpecification) unsatisfied).isOptional())
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_OPTIONAL_REQUIRED_BUNDLE, toString(unsatisfied));
-			else
-				return NLS.bind(EclipseAdaptorMsg.ECLIPSE_MISSING_REQUIRED_BUNDLE, toString(unsatisfied));
-		else
-			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 27e5354..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginConverterImpl.java
+++ /dev/null
@@ -1,754 +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;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.*;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-import org.eclipse.core.runtime.adaptor.*;
-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 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;
-		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();
-		URL pluginFile = findPluginManifest(pluginBaseLocation);
-		if (pluginFile == null)
-			throw new PluginConversionException(NLS.bind(EclipseAdaptorMsg.ECLIPSE_CONVERTER_FILENOTFOUND, pluginBaseLocation.getAbsolutePath()));
-		pluginInfo = parsePluginInfo(pluginFile);
-		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 URL findPluginManifest(File baseLocation) {
-		//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 
-		URL xmlFileLocation;
-		InputStream stream = null;
-		URL baseURL = null;
-		try {
-			if (!baseLocation.isDirectory()) {
-				baseURL = new URL("jar:file:" + baseLocation.toString() + "!/"); //$NON-NLS-1$ //$NON-NLS-2$
-				manifestType |= MANIFEST_TYPE_JAR;
-			} else {
-				baseURL = baseLocation.toURL();
-			}
-		} catch (MalformedURLException e1) {
-			//this can't happen since we are building the urls ourselves from a file
-		}
-		try {
-			xmlFileLocation = new URL(baseURL, PLUGIN_MANIFEST);
-			stream = xmlFileLocation.openStream();
-			manifestType |= MANIFEST_TYPE_PLUGIN;
-			return xmlFileLocation;
-		} catch (MalformedURLException e) {
-			FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, e.getMessage(), 0, e, null);
-			adaptor.getFrameworkLog().log(entry);
-			return null;
-		} catch (IOException ioe) {
-			//ignore
-		} finally {
-			try {
-				if (stream != null)
-					stream.close();
-			} catch (IOException e) {
-				//ignore
-			}
-		}
-		try {
-			xmlFileLocation = new URL(baseURL, FRAGMENT_MANIFEST);
-			stream = xmlFileLocation.openStream();
-			manifestType |= MANIFEST_TYPE_FRAGMENT;
-			return xmlFileLocation;
-		} catch (MalformedURLException e) {
-			FrameworkLogEntry entry = new FrameworkLogEntry(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME, FrameworkLogEntry.ERROR, 0, e.getMessage(), 0, e, null);
-			adaptor.getFrameworkLog().log(entry);
-			return null;
-		} catch (IOException ioe) {
-			// Ignore
-		} finally {
-			try {
-				if (stream != null)
-					stream.close();
-			} catch (IOException e) {
-				//ignore
-			}
-		}
-		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(URL pluginLocation) throws PluginConversionException {
-		InputStream input = null;
-		try {
-			input = new BufferedInputStream(pluginLocation.openStream());
-			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 038eaf0..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/PluginParser.java
+++ /dev/null
@@ -1,700 +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;
-
-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 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 b7578d8..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, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.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 5d5f5a8..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/core/runtime/internal/adaptor/URLConverterImpl.java
+++ /dev/null
@@ -1,46 +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.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;
-
-/**
- * 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)
-			return ((BundleURLConnection) connection).getFileURL();
-		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 645208a..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, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.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 371aa1d..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, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.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 60975e5..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, 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.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 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 ef3fc6c..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, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.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 5044525..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, 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.*;
-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/environment/Constants.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/environment/Constants.java
deleted file mode 100644
index 15d16a8..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/environment/Constants.java
+++ /dev/null
@@ -1,163 +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.environment;
-
-/**
- * @since 3.0
- */
-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 "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 "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 "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/eclipseAdaptor/src/org/eclipse/osgi/service/environment/EnvironmentInfo.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/environment/EnvironmentInfo.java
deleted file mode 100644
index 78ef740..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/environment/EnvironmentInfo.java
+++ /dev/null
@@ -1,107 +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.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
- * XXX 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();
-}
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/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java
deleted file mode 100644
index d41be25..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationLauncher.java
+++ /dev/null
@@ -1,40 +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.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>
- * 
- * @since 3.2
- */
-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/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java
deleted file mode 100644
index 2710d8b..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ApplicationRunnable.java
+++ /dev/null
@@ -1,22 +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.service.runnable;
-
-/**
- * A parameterized runnable that can be stopped.
- * @since 3.2
- */
-public interface ApplicationRunnable extends ParameterizedRunnable {
-	/**
-	 * Forces this runnable to stop.
-	 */
-	public void stop();
-}
diff --git a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java
deleted file mode 100644
index 45d30ab..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/ParameterizedRunnable.java
+++ /dev/null
@@ -1,34 +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.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>
- * @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/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/StartupMonitor.java b/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/StartupMonitor.java
deleted file mode 100644
index ac37dcb..0000000
--- a/bundles/org.eclipse.osgi/eclipseAdaptor/src/org/eclipse/osgi/service/runnable/StartupMonitor.java
+++ /dev/null
@@ -1,53 +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.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/hookconfigurators.properties b/bundles/org.eclipse.osgi/hookconfigurators.properties
deleted file mode 100644
index b8f6187..0000000
--- a/bundles/org.eclipse.osgi/hookconfigurators.properties
+++ /dev/null
@@ -1,22 +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
-###############################################################################
-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.verifier.SignedBundleHook
-builtin.hooks = true
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java
deleted file mode 100644
index 338f42c..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateChain.java
+++ /dev/null
@@ -1,64 +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.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/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java
deleted file mode 100644
index 5d2bb3f..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateTrustAuthority.java
+++ /dev/null
@@ -1,37 +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.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/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java
deleted file mode 100644
index fb56265..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifier.java
+++ /dev/null
@@ -1,59 +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.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/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.java
deleted file mode 100644
index 6ca7c68..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/provisional/verifier/CertificateVerifierFactory.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 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/jarverifier/org/eclipse/osgi/internal/verifier/BERProcessor.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/BERProcessor.java
deleted file mode 100644
index 1c9210d..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/BERProcessor.java
+++ /dev/null
@@ -1,271 +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.verifier;
-
-import java.math.BigInteger;
-
-/**
- * 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.
-	 */
-	public BERProcessor(byte buffer[], int offset, int len) {
-		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() {
-		// 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 IllegalArgumentException("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 ArrayIndexOutOfBoundsException("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 ArrayIndexOutOfBoundsException(endOffset + " > " + lastOffset); //$NON-NLS-1$
-	}
-
-	/**
-	 * 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.
-	 */
-	public BERProcessor stepInto() {
-		return new BERProcessor(buffer, contentOffset, contentLength);
-	}
-
-	public void stepOver() {
-		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/jarverifier/org/eclipse/osgi/internal/verifier/Base64.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/Base64.java
deleted file mode 100644
index 130192b..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/Base64.java
+++ /dev/null
@@ -1,198 +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.verifier;
-
-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;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DNChainMatching.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DNChainMatching.java
deleted file mode 100644
index c79dfa0..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DNChainMatching.java
+++ /dev/null
@@ -1,385 +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.verifier;
-
-import java.util.ArrayList;
-import javax.security.auth.x500.X500Principal;
-
-/**
- * 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 ('*') to match against DNs, DN
- * prefixes, and value. If a DN in a DN 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.
- */
-public class DNChainMatching {
-	/**
-	 * Check the name/value pairs of the rdn against the pattern.
-	 * 
-	 * @param rdn ArrayList of name value pairs for a given RDN.
-	 * @param rdnPattern ArrayList of name value pattern pairs.
-	 * @return true if the list of name value pairs match the pattern.
-	 */
-	private static boolean rdnmatch(ArrayList rdn, ArrayList 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")) { //$NON-NLS-1$ //$NON-NLS-2$
-				return false;
-			}
-		}
-		return true;
-	}
-
-	private static boolean dnmatch(ArrayList dn, ArrayList dnPattern) {
-		int dnStart = 0;
-		int patStart = 0;
-		int patLen = dnPattern.size();
-		if (patLen == 0) {
-			return false;
-		}
-		if (dnPattern.get(0).equals("*")) { //$NON-NLS-1$
-			patStart = 1;
-			patLen--;
-		}
-		if (dn.size() < patLen) {
-			return false;
-		} else if (dn.size() > patLen) {
-			if (!dnPattern.get(0).equals("*")) { //$NON-NLS-1$
-				// 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((ArrayList) dn.get(i + dnStart), (ArrayList) dnPattern.get(i + patStart))) {
-				return false;
-			}
-		}
-		return true;
-	}
-
-	/**
-	 * Parses a distinguished name chain and returns an ArrayList 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 an ArrayList representing an RDN. Each element in the RDN
-	 * ArrayList will be a String, if the element represents a wildcard ("*"),
-	 * or an ArrayList of Strings, each String representing a name/value pair in
-	 * the RDN.
-	 * 
-	 * @param dnChain
-	 * @return a list of DNs.
-	 * @throws IllegalArgumentException
-	 */
-	private static ArrayList parseDNchain(String dnChain) throws IllegalArgumentException {
-		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"); //$NON-NLS-1$
-			}
-			parsed.add(dnChain.substring(startIndex, endIndex));
-			startIndex = endIndex + 1;
-			startIndex = skipSpaces(dnChain, startIndex);
-		}
-		// Now we parse is a list of strings, lets make ArrayList of rdn out of
-		// them
-		for (int i = 0; i < parsed.size(); i++) {
-			String dn = (String) parsed.get(i);
-			if (dn.equals("*")) //$NON-NLS-1$
-				continue;
-			ArrayList rdns = new ArrayList();
-			if (dn.charAt(0) == '*') {
-				if (dn.charAt(1) != ',')
-					throw new IllegalArgumentException("invalid wildcard prefix"); //$NON-NLS-1$
-				rdns.add("*"); //$NON-NLS-1$
-				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);
-			parsed.set(i, rdns);
-		}
-		if (parsed.size() == 0) {
-			throw new IllegalArgumentException("empty DN chain"); //$NON-NLS-1$
-		}
-		return parsed;
-	}
-
-	/**
-	 * 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 rdnArray the array to fill in with RDNs extracted from the dn
-	 * @throws IllegalArgumentException if a formatting error is found.
-	 */
-	private static void parseDN(String dn, ArrayList rdnArray) throws IllegalArgumentException {
-		int startIndex = 0;
-		char c = '\0';
-		ArrayList 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); //$NON-NLS-1$
-			nameValues.add(dn.substring(startIndex, endIndex));
-			if (c != '+') {
-				rdnArray.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); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * This method will return an 'index' which points to a non-wild-card DN or
-	 * the end-of-arraylist.
-	 */
-	private static int skipWildCards(ArrayList dnChainPattern, int dnChainPatternIndex) throws IllegalArgumentException {
-		int i;
-		for (i = dnChainPatternIndex; i < dnChainPattern.size(); i++) {
-			Object dnPattern = dnChainPattern.get(i);
-			if (dnPattern instanceof String) {
-				if (!dnPattern.equals("*")) { //$NON-NLS-1$
-					throw new IllegalArgumentException("expected wild-card in DN pattern"); //$NON-NLS-1$
-				}
-				// otherwise continue skipping over wild cards
-			} else if (dnPattern instanceof ArrayList) {
-				// if its an arraylist then we have our 'non-wild-card' DN
-				break;
-			} else {
-				// unknown member of the DNChainPattern
-				throw new IllegalArgumentException("expected String or Arraylist in DN Pattern"); //$NON-NLS-1$
-			}
-		}
-		// i either points to end-of-arraylist, or to the first non-wild-card
-		// 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(ArrayList dnChain, int dnChainIndex, ArrayList 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("*")) { //$NON-NLS-1$
-				throw new IllegalArgumentException("expected wild-card in DN pattern"); //$NON-NLS-1$
-			}
-			// here we are processing a wild card as the first DN
-			// skip all wild-card DN's
-			dnChainPatternIndex = skipWildCards(dnChainPattern, dnChainPatternIndex);
-			if (dnChainPatternIndex >= dnChainPattern.size()) {
-				// the entire DNChainPattern was wild-cards, so we have a match
-				return true;
-			}
-			//
-			// we will now recursively call to see if the rest of the
-			// DNChainPattern
-			// matches increasingly smaller portions of the rest of the DNChain
-			//
-			for (int i = dnChainIndex; i < dnChain.size(); i++) {
-				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 ArrayList) {
-			// here we have to do a deeper check for each DN in the pattern
-			// until we hit a wild card
-			do {
-				if (!dnmatch((ArrayList) dnChain.get(dnChainIndex), (ArrayList) 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
-					// array-size
-					// (implying that the rest of the pattern is all wild-cards)
-					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("*")) { //$NON-NLS-1$
-						throw new IllegalArgumentException("expected wild-card in DN pattern"); //$NON-NLS-1$
-					}
-					// if the next DN is a 'wild-card', then we will recurse
-					return dnChainMatch(dnChain, dnChainIndex, dnChainPattern, dnChainPatternIndex);
-				} else if (!(dnPattern instanceof ArrayList)) {
-					throw new IllegalArgumentException("expected String or Arraylist in DN Pattern"); //$NON-NLS-1$
-				}
-				// 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 array-lists
-			} while (true);
-			// should never reach here?
-		} else {
-			throw new IllegalArgumentException("expected String or Arraylist in DN Pattern"); //$NON-NLS-1$
-		}
-		// 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 "*" can be used in three cases:
-	 *        <ol>
-	 *        <li>As a DN. In this case, the DN will consist of just the "*".
-	 *        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,c=CA;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
-	 */
-	public static boolean match(String dnChain, String pattern) {
-		ArrayList parsedDNChain;
-		ArrayList parsedDNPattern;
-		try {
-			parsedDNChain = parseDNchain(dnChain);
-		} catch (IllegalArgumentException e) {
-			System.err.println(e.getMessage() + ": " + dnChain); //$NON-NLS-1$
-			return false;
-		}
-		try {
-			parsedDNPattern = parseDNchain(pattern);
-		} catch (IllegalArgumentException e) {
-			System.err.println(e.getMessage() + ": " + pattern); //$NON-NLS-1$
-			return false;
-		}
-		try {
-			return dnChainMatch(parsedDNChain, 0, parsedDNPattern, 0);
-		} catch (Exception e) {
-			e.printStackTrace();
-		}
-		return false;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DefaultTrustAuthority.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DefaultTrustAuthority.java
deleted file mode 100644
index 6df7272..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DefaultTrustAuthority.java
+++ /dev/null
@@ -1,48 +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.verifier;
-
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import org.eclipse.osgi.internal.provisional.verifier.CertificateTrustAuthority;
-import org.eclipse.osgi.util.NLS;
-
-public class DefaultTrustAuthority implements CertificateTrustAuthority {
-	// the KeyStores that we determine trust from.  This only gets intialized the 
-	// supportFlags include the VERIFY_TRUST flag
-	private  KeyStores keyStores;
-	// used to indicate if we should check the KeyStores object for trust.
-	private int supportFlags;
-	public DefaultTrustAuthority(int supportFlags) {
-		this.supportFlags = supportFlags;
-	}
-	public void checkTrust(Certificate[] certChain) throws CertificateException {
-		if (certChain == null || certChain.length == 0) {
-			throw new IllegalArgumentException(JarVerifierMessages.Cert_Verifier_Illegal_Args);
-		}
-		KeyStores stores = getKeyStores();
-		// stores == null when the supportFlags includes the VERIFY_TRUST flag
-		if (stores != null && !stores.isTrusted(certChain[certChain.length - 1])) {
-			throw new CertificateException(NLS.bind(JarVerifierMessages.Cert_Verifier_Not_Trusted, new String[] {certChain[0].toString()}));
-		}
-	}
-
-	private synchronized KeyStores getKeyStores() {
-		if (((supportFlags & SignedBundleHook.VERIFY_TRUST) == 0) || keyStores != null)
-			return keyStores;
-		keyStores = new KeyStores();
-		return keyStores;
-	}
-	public void addTrusted(Certificate[] certs) throws CertificateException {
-		// do nothing for now ...
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DigestedInputStream.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DigestedInputStream.java
deleted file mode 100644
index b2626c5..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/DigestedInputStream.java
+++ /dev/null
@@ -1,143 +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.verifier;
-
-import java.io.*;
-import java.security.MessageDigest;
-
-/**
- * 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 {
-	MessageDigest digest;
-	byte result[];
-	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 digestAlgorithm the MessageDigest algorithm to use.
-	 * @param result the expected digest.
-	 */
-	DigestedInputStream(InputStream in, String digestAlgorithm, byte result[], long size) {
-		super(in);
-		this.remaining = size;
-		this.digest = SignedBundleFile.getMessageDigest(digestAlgorithm);
-		this.result = result;
-	}
-
-	/**
-	 * 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) {
-			digest.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 IOException {
-		// Check the digest at end of file
-		byte rc[] = digest.digest();
-		if (!MessageDigest.isEqual(result, rc))
-			throw new IOException("Corrupted file: the digest is valid for " + digest.getAlgorithm()); //$NON-NLS-1$
-	}
-
-	/**
-	 * 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) {
-			digest.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;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierConstant.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierConstant.java
deleted file mode 100644
index 76ad757..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierConstant.java
+++ /dev/null
@@ -1,51 +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.verifier;
-
-public interface JarVerifierConstant {
-
-	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 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 certs chain trust service
-	public static final String TRUST_AUTHORITY = "osgi.certificate.trust.authority"; //$NON-NLS-1$
-	public static final Object DEFAULT_TRUST_AUTHORITY = "org.eclipse.osgi"; //$NON-NLS-1$
-
-	// consttant 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/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.java
deleted file mode 100644
index 7870821..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.java
+++ /dev/null
@@ -1,58 +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.verifier;
-
-import org.eclipse.osgi.util.NLS;
-
-public class JarVerifierMessages extends NLS {
-
-	// Jar file is tampered
-	public static String Jar_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;
-	public static String Signature_Not_Verify_1;
-
-	// 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_Cert_Excep;
-	public static String PKCS7_No_Such_Algorithm;
-	public static String PKCS7_Parse_Signing_Time;
-	public static String PKCS7_Parse_Signing_Time_1;
-
-	// validate certificate chain
-	public static String Validate_Certs_Certificate_Exception;
-
-	// Security Exceptions
-	public static String Algorithm_Not_Supported;
-	public static String No_Such_Algorithm_Excep;
-	public static String No_Such_Provider_Excep;
-	public static String Invalid_Key_Exception;
-
-	// Certs Trust Determination
-	public static String Cert_Verifier_Illegal_Args;
-	public static String Cert_Verifier_Not_Trusted;
-	public static String Cert_Verifier_Add_Certs;
-
-	//	private static final String BUNDLE_PACKAGE = JarVerifierMessages.class.getPackage().getName() + ".";
-	private static final String BUNDLE_PACKAGE = "org.eclipse.osgi.internal.verifier."; //$NON-NLS-1$
-	private static final String BUNDLE_FILENAME = "JarVerifierMessages"; //$NON-NLS-1$
-	private static final String BUNDLE_NAME = BUNDLE_PACKAGE + BUNDLE_FILENAME;
-
-	static {
-		NLS.initializeMessages(BUNDLE_NAME, JarVerifierMessages.class);
-	}
-}
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.properties b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.properties
deleted file mode 100644
index 95e1c51..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/JarVerifierMessages.properties
+++ /dev/null
@@ -1,46 +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
-###############################################################################
-
-file_is_removed_from_jar = A file {0} has been removed from the bundle: {1}
-jar_is_tampered = The Jar {0} file has been tampered because a file has been removed!
-
-Signature_Not_Verify = Signature doesn't verify!
-
-
-Signature_Not_Verify_1 = The signature cannot be verified for this signer {0} in this bundle: {1}
-
-# Jar file tampered error messages
-File_In_Jar_Is_Tampered = The {0} in the {1} has been tampered!
-Security_File_Is_Tampered = Either the manfiest file or the signature file has been tampered in this bundle: {0}
-
-# 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 = The SignerInfo version other than 1 is not supported!
-PKCS7_Cert_Excep = CertificateException occurs when parsing the signature block file from this bundle:  {0} file!\n {1}
-PKCS7_No_Such_Algorithm = NoSuchAlgorithmException occurs when parsing the signature block file from this bundle: {0} + " file!\n {1}
-PKCS7_Parse_Signing_Time = CertificateException is thrown when parsing signing time
-PKCS7_Parse_Signing_Time_1 = timestamp in the pkcs7file cannot be parsed properly!
-
-# Validate chain of certificate
-Validate_Certs_Certificate_Exception = CertificateException is being thrown during validation of certificates! \n {0}
-
-# Security Exceptions
-Algorithm_Not_Supported = {0} digest algorithm is not supported!
-No_Such_Algorithm_Excep = NoSuchAlgorithmException is being thrown \n {0}
-No_Such_Provider_Excep = NoSuchProviderException is being thrown! \n {0}
-Invalid_Key_Exception = InvalidKeyException is being thrown during verification of {0} file!\n {1}
-
-# Certs Trust Determination
-Cert_Verifier_Illegal_Args = certChain parmeter is either null or zero-length!
-Cert_Verifier_Not_Trusted = The following certificate is not trusted: {0}
-Cert_Verifier_Add_Certs = Error occurs when adding certs to the certs trust store!
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/KeyStores.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/KeyStores.java
deleted file mode 100644
index e07a668..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/KeyStores.java
+++ /dev/null
@@ -1,194 +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.verifier;
-
-import java.io.*;
-import java.net.*;
-import java.security.*;
-import java.security.cert.Certificate;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-
-/**
- * Class to manage the different KeyStores we should check for certificates of
- * Signed JAR
- */
-public class KeyStores {
-	/**
-	 * java.policy files properties of the java.security file
-	 */
-	private static final String JAVA_POLICY_URL = "policy.url."; //$NON-NLS-1$
-	/**
-	 * Default keystore type in java.security file
-	 */
-	private static final String DEFAULT_KEYSTORE_TYPE = "keystore.type"; //$NON-NLS-1$
-	/**
-	 * List of KeyStores
-	 */
-	private List /* of Keystore */keyStores;
-
-	/**
-	 * KeyStores constructor comment.
-	 */
-	public KeyStores() {
-		super();
-		initializeDefaultKeyStores();
-	}
-
-	private void processKeyStore(String urlSpec, String type, URL rootURL) {
-		if (type == null)
-			type = KeyStore.getDefaultType();
-		InputStream in = null;
-		try {
-			URL url;
-			try {
-				url = new URL(urlSpec);
-			} catch (MalformedURLException mue) {
-				url = new URL(rootURL, urlSpec);
-			}
-			KeyStore ks = KeyStore.getInstance(type);
-			try {
-				in = url.openStream();
-			} catch (IOException ioe) {
-				// ignore this; the file probably does not exist
-			}
-			if (in != null) {
-				ks.load(in, null);
-				keyStores.add(ks);
-			}
-		} catch (Exception e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.WARNING, e);
-		} finally {
-			if (in != null)
-				try {
-					in.close();
-				} catch (IOException e){
-					// do nothing
-				}
-		}
-	}
-
-	/**
-	 * populate the list of Keystores should be done with Dialog with
-	 * Cancel/Skip button if the connection to the URL is down...
-	 */
-	private void initializeDefaultKeyStores() {
-		keyStores = new ArrayList(5);
-		// get JRE cacerts
-		String defaultType = Security.getProperty(DEFAULT_KEYSTORE_TYPE);
-		String urlSpec = "file:" + FrameworkProperties.getProperty("java.home") + File.separator + "lib" + File.separator + "security" + File.separator + "cacerts"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
-		processKeyStore(urlSpec, defaultType, null);
-
-		// get java.home .keystore
-		urlSpec = "file:" + FrameworkProperties.getProperty("user.home") + File.separator + ".keystore"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		processKeyStore(urlSpec, defaultType, null);
-
-		// get osgi.framework.keystore keystore
-		urlSpec = FrameworkProperties.getProperty("osgi.framework.keystore"); //$NON-NLS-1$
-		if (urlSpec != null)
-			processKeyStore(urlSpec, defaultType, null);
-
-		// get KeyStores from policy files...
-		int index = 1;
-		String java_policy = Security.getProperty(JAVA_POLICY_URL + index);
-		while (java_policy != null) {
-			// retrieve keystore url from java.policy
-			// also retrieve keystore type
-			processKeystoreFromLocation(java_policy);
-			index++;
-			java_policy = Security.getProperty(JAVA_POLICY_URL + index);
-		}
-	}
-
-	/**
-	 * retrieve the keystore from java.policy file
-	 */
-	private void processKeystoreFromLocation(String location) {
-		InputStream in = null;
-		char[] buff = new char[4096];
-		int indexOf$ = location.indexOf("${"); //$NON-NLS-1$
-		int indexOfCurly = location.indexOf('}', indexOf$);
-		if (indexOf$ != -1 && indexOfCurly != -1) {
-			String prop = FrameworkProperties.getProperty(location.substring(indexOf$ + 2, indexOfCurly));
-			String location2 = location.substring(0, indexOf$);
-			location2 += prop;
-			location2 += location.substring(indexOfCurly + 1);
-			location = location2;
-		}
-		try {
-			URL url = new URL(location);
-			//System.out.println("getKeystoreFromLocation: location is: " +location);
-			in = url.openStream();
-			Reader reader = new InputStreamReader(in);
-			int result = reader.read(buff);
-			StringBuffer contentBuff = new StringBuffer();
-			while (result != -1) {
-				contentBuff.append(buff, 0, result);
-				result = reader.read(buff);
-			}
-			if (contentBuff.length() > 0) {
-				String content = new String(contentBuff.toString());
-				int indexOfKeystore = content.indexOf("keystore"); //$NON-NLS-1$
-				if (indexOfKeystore != -1) {
-					int indexOfSemiColumn = content.indexOf(';', indexOfKeystore);
-					processKeystoreFromString(content.substring(indexOfKeystore, indexOfSemiColumn), url);
-					return;
-				}
-			}
-		} catch (MalformedURLException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.WARNING, e);
-		} catch (IOException e) {
-			// do nothing it is likely that the file does not exist
-		} finally {
-			if (in != null) {
-				try {
-					in.close();
-				} catch (IOException e) {
-					// do nothing
-				}
-			}
-		}
-	}
-
-	/**
-	 * retrieve the keystore from java.policy file
-	 */
-	private void processKeystoreFromString(String content, URL rootURL) {
-		String keyStoreType = null;
-		int indexOfSpace = content.indexOf(' ');
-		if (indexOfSpace == -1)
-			return;
-		int secondSpace = content.lastIndexOf(',');
-		if (secondSpace == -1) {
-			secondSpace = content.length();
-		} else {
-			keyStoreType = content.substring(secondSpace + 1, content.length()).trim();
-		}
-		processKeyStore(content.substring(indexOfSpace, secondSpace), keyStoreType, rootURL);
-	}
-
-	public boolean isTrusted(Certificate cert) {
-		Iterator it = keyStores.iterator();
-		while (it.hasNext()) {
-			KeyStore ks = (KeyStore) it.next();
-			try {
-				if (ks.getCertificateAlias(cert) != null) {
-					return true;
-				}
-			} catch (KeyStoreException e) {
-				SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.WARNING, e);
-			}
-		}
-		return false;
-	}
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7DateParser.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7DateParser.java
deleted file mode 100644
index 86ce833..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7DateParser.java
+++ /dev/null
@@ -1,65 +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.verifier;
-
-import java.io.IOException;
-import java.security.*;
-import java.security.cert.CertificateException;
-import java.util.*;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-
-public class PKCS7DateParser {
-
-	static Date parseDate(PKCS7Processor pkcs7Processor) throws IOException {
-		return hasTimeStamp(pkcs7Processor);
-	}
-
-	private static Date hasTimeStamp(PKCS7Processor pkcs7) throws IOException {
-		Map unsignedAttrs = pkcs7.getUnsignedAttrs();
-		if (unsignedAttrs != null) {
-			// get the timestamp constrcut
-			byte[] timeStampConstruct = retrieveTimeStampConstruct(unsignedAttrs);
-
-			// there is a timestamp in the signer info
-			if (timeStampConstruct != null) {
-
-				try {
-					PKCS7Processor timestampProcess = new PKCS7Processor(timeStampConstruct, 0, timeStampConstruct.length);
-					timestampProcess.validateCerts();
-					pkcs7.setTSACertificates(timestampProcess.getCertificates());
-					return timestampProcess.getSigningTime();
-				} catch (CertificateException e) {
-					SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-					throw new IOException(JarVerifierMessages.PKCS7_Parse_Signing_Time);
-				} catch (NoSuchAlgorithmException e) {
-					SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-					throw new SecurityException(JarVerifierMessages.No_Such_Algorithm_Excep);
-				} catch (InvalidKeyException e) {
-					throw new IOException("InvalidKeyException occurs when verifying the certs from tsa certificates: " + e.getMessage()); //$NON-NLS-1$
-				} catch (SignatureException e) {
-					throw new IOException(JarVerifierMessages.Signature_Not_Verify);
-				}
-
-			}
-		}
-		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(JarVerifierConstant.TIMESTAMP_OID, objID)) {
-				return (byte[]) unsignedAttrs.get(objID);
-			}
-		}
-		return null;
-	}
-}
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7Processor.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7Processor.java
deleted file mode 100644
index 5031b2b..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/PKCS7Processor.java
+++ /dev/null
@@ -1,587 +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.verifier;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.math.BigInteger;
-import java.security.*;
-import java.security.cert.*;
-import java.security.cert.Certificate;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import javax.security.auth.x500.X500Principal;
-import org.eclipse.osgi.framework.log.FrameworkLogEntry;
-import org.eclipse.osgi.internal.provisional.verifier.CertificateChain;
-import org.eclipse.osgi.internal.provisional.verifier.CertificateTrustAuthority;
-import org.eclipse.osgi.util.NLS;
-
-/**
- * This class processes a PKCS7 file. See RFC 2315 for specifics.
- */
-public class PKCS7Processor implements CertificateChain, JarVerifierConstant {
-
-	private static CertificateFactory certFact;
-
-	static {
-		try {
-			certFact = CertificateFactory.getInstance("X.509"); //$NON-NLS-1$
-		} catch (CertificateException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-		}
-	}
-
-	private String certChain;
-	private Certificate[] certificates;
-	private Certificate[] tsaCertificates;
-	private boolean trusted;
-
-	// 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;
-
-	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();
-	}
-
-	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$
-	}
-
-	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$
-	}
-
-	/*
-	 * static void printBP(BERProcessor bp, int depth) {
-	 * System.out.print(depth); for(int i = 0; i < depth; i++)
-	 * System.out.print(" "); System.out.println(bp); }
-	 * 
-	 * static void dumpSeq(BERProcessor bp, int depth) {
-	 * while(!bp.endOfSequence()) { printBP(bp, depth); if (bp.constructed) {
-	 * dumpSeq(bp.stepInto(), depth+1); } bp.stepOver(); } }
-	 * 
-	 * void hexDump(byte buffer[], int off, int len) { for(int i = 0; i < len;
-	 * i++) { System.out.print(Integer.toString(buffer[i]&0xff, 16) + " "); if
-	 * (i % 16 == 15) System.out.println(); } System.out.println(); }
-	 */
-
-	public PKCS7Processor(String certChain, boolean trusted, byte[][] certificates, long signingTime) throws CertificateException {
-		this.certChain = certChain;
-		this.trusted = trusted;
-		this.certificates = new Certificate[certificates.length];
-		for (int i = 0; i < certificates.length; i++)
-			this.certificates[i] = certFact.generateCertificate(new ByteArrayInputStream(certificates[i]));
-		if (signingTime > Long.MIN_VALUE)
-			this.signingTime = new Date(signingTime);
-	}
-
-	public PKCS7Processor(byte pkcs7[], int pkcs7Offset, int pkcs7Length) throws IOException, CertificateException, NoSuchAlgorithmException {
-
-		// 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 IOException("Not a valid PKCS#7 file"); //$NON-NLS-1$
-		}
-
-		// 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 SecurityException("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);
-
-		// set the cert chain variable
-		int numCerts = certs.size();
-		StringBuffer sb = new StringBuffer();
-		for (int i = 0; i < numCerts; i++) {
-			X509Certificate x509Cert = ((X509Certificate) certs.get(i));
-			sb.append(x509Cert.getSubjectDN().getName());
-			sb.append("; "); //$NON-NLS-1$
-		}
-		certChain = sb.toString();
-
-		// initialize the certificates
-		certificates = (Certificate[]) certs.toArray(new Certificate[numCerts]);
-
-		// if this pkcs7process is tsa asn.1 block, the signingTime should already be set
-		if (null == signingTime)
-			signingTime = PKCS7DateParser.parseDate(this);
-	}
-
-	private void processEncapContentInfo(BERProcessor bp) throws IOException {
-		// 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 IOException("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 IOException("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 new IOException(JarVerifierMessages.PKCS7_Parse_Signing_Time_1);
-			}
-		}
-	}
-
-	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 validateCerts() throws CertificateExpiredException, CertificateNotYetValidException, InvalidKeyException, SignatureException {
-		if (certificates == null || certificates.length == 0) {
-			throw new SecurityException("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 (signingTime == null)
-				currentX509Cert.checkValidity();
-			else
-				currentX509Cert.checkValidity(signingTime);
-
-			try {
-				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());
-				}
-			} catch (NoSuchAlgorithmException e) {
-				SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-				throw new SecurityException(NLS.bind(JarVerifierMessages.No_Such_Algorithm_Excep, new String[] {e.getMessage()}));
-			} catch (NoSuchProviderException e) {
-				SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-				throw new SecurityException(NLS.bind(JarVerifierMessages.No_Such_Provider_Excep, new String[] {e.getMessage()}));
-			} catch (CertificateException e) {
-				SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-				throw new SecurityException(NLS.bind(JarVerifierMessages.Validate_Certs_Certificate_Exception, new String[] {e.getMessage()}));
-			}
-		}
-	}
-
-	private Certificate processSignerInfos(BERProcessor bp, List certs) throws CertificateException, NoSuchAlgorithmException {
-		// 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(JarVerifierMessages.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) {
-
-		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) {
-		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();
-		}
-	}
-
-	/**
-	 * Returns the Certificate of the signer of this PKCS7Block
-	 */
-	public Certificate getSigner() {
-		if (certificates == null || certificates.length == 0)
-			return null;
-		return certificates[0];
-	}
-
-	public Certificate getRoot() {
-		if (certificates == null || certificates.length == 0)
-			return null;
-		return certificates[certificates.length - 1];
-	}
-
-	public Certificate[] getCertificates() {
-		return certificates;
-	}
-
-	/**
-	 * Returns the list of X500 distinguished names that make up the signature chain. Each
-	 * distinguished name is separated by a ';'.
-	 */
-	public String getChain() {
-		return certChain;
-	}
-
-	/**
-	 * Returns true if the signer certificate is trusted
-	 * @return true if the signer certificate is trusted
-	 */
-	public boolean isTrusted() {
-		return trusted;
-	}
-
-	public boolean equals(Object obj) {
-		if (!(obj instanceof CertificateChain))
-			return false;
-		if (certificates == null)
-			return false;
-		CertificateChain chain = (CertificateChain) obj;
-		if((signingTime == null ? chain.getSigningTime() != null : !signingTime.equals(chain.getSigningTime())))
-			return false;
-		if (trusted != chain.isTrusted() || (certChain == null ? chain.getChain() != null : !certChain.equals(chain.getChain())))
-			return false;
-		Certificate[] otherCerts = chain.getCertificates();
-		if (otherCerts == null || certificates.length != otherCerts.length)
-			return false;
-		for (int i = 0; i < certificates.length; i++)
-			if (!certificates[i].equals(otherCerts[i]))
-				return false;
-		return true;
-	}
-
-	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(JarVerifierMessages.Signature_Not_Verify);
-		}
-	}
-
-	/**
-	 * 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
-	 */
-	private List processCertificates(BERProcessor bp) throws CertificateException {
-		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;
-	}
-
-	void determineTrust(CertificateTrustAuthority certsTrust) {
-		try {
-			certsTrust.checkTrust(certificates);
-			if (null != tsaCertificates) {
-				certsTrust.checkTrust(tsaCertificates);
-			}
-			trusted = true;
-		} catch (CertificateException e) {
-			trusted = false;
-		}
-	}
-
-	public Date getSigningTime() {
-		return signingTime;
-	}
-
-	void setTSACertificates(Certificate[] tsaCertificates) {
-		this.tsaCertificates = tsaCertificates;
-	}
-
-	/*
-	 public static void main(String[] args) throws InvalidKeyException, CertificateException, NoSuchAlgorithmException, SignatureException, KeyStoreException, IOException {
-	 byte buffer[] = new byte[65536];
-	 int len = System.in.read(buffer);
-	 byte manifestBuff[] = new byte[65536];
-	 int rc = new FileInputStream("man").read(manifestBuff);
-	 PKCS7Processor p7 = new PKCS7Processor(buffer, 0, len, manifestBuff, 0, rc);
-	 System.out.println(p7.getSignerCertificate());
-	 System.out.println(p7.getCertificateChain());
-	 }
-	 */
-}
\ No newline at end of file
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleFile.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleFile.java
deleted file mode 100644
index 51cde04..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleFile.java
+++ /dev/null
@@ -1,780 +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.verifier;
-
-import java.io.*;
-import java.net.URL;
-import java.security.*;
-import java.security.cert.*;
-import java.util.*;
-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.internal.provisional.verifier.*;
-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 CertificateVerifier, JarVerifierConstant {
-	private static DefaultTrustAuthority trustAllAuthority = new DefaultTrustAuthority(0);
-	private BundleFile bundleFile;
-	CertificateChain[] chains;
-
-	/**
-	 * The key of the hashtable will be the name of the entry (type String). The
-	 * value will be MessageDigest algorithm to use.
-	 */
-	Hashtable digests4entries;
-	/**
-	 * The key of the hashtable will be the name of the entry (type String). The
-	 * value will be byte[] which is an array of one MessageDigest result.
-	 */
-	Hashtable results4entries;
-	String manifestSHAResult = null;
-	String manifestMD5Result = null;
-	boolean certsInitialized = false;
-
-	SignedBundleFile() {
-		// default constructor
-	}
-
-	SignedBundleFile(CertificateChain[] chains, Hashtable digests4entries, Hashtable results4entries, String manifestMD5Result, String manifestSHAResult) {
-		this.chains = chains;
-		this.digests4entries = digests4entries;
-		this.results4entries = results4entries;
-		this.manifestMD5Result = manifestMD5Result;
-		this.manifestSHAResult = manifestSHAResult;
-		certsInitialized = true;
-		//		isSigned = true;
-	}
-
-	/**
-	 * Verify the digest listed in each entry in the .SF file with corresponding section in the manifest
-	 */
-	private void verifyManifestAndSingatureFile(byte[] manifestBytes, byte[] sfBytes) {
-
-		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 manfiestDigest = 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)) {
-					if (manifestMD5Result == null)
-						manifestMD5Result = calculateDigest(getMessageDigest(MD5_STR), manifestBytes);
-					manfiestDigest = manifestMD5Result;
-				} else if (digestName.equalsIgnoreCase(SHA1_STR)) {
-					if (manifestSHAResult == null)
-						manifestSHAResult = calculateDigest(getMessageDigest(SHA1_STR), manifestBytes);
-					manfiestDigest = manifestSHAResult;
-				}
-				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 (!manfiestDigest.equals(digestValue)) {
-					Exception e = new SecurityException(NLS.bind(JarVerifierMessages.Security_File_Is_Tampered, new String[] {bundleFile.getBaseFile().toString()}));
-					SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-					throw (SecurityException) e;
-				}
-			}
-		}
-
-	}
-
-	/**
-	 * 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 String getDigAlgFromSF(byte SFBuf[]) {
-		String rtvValue = null;
-
-		// 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
-			rtvValue = getMessageDigestName(digestLine);
-		}
-
-		return rtvValue;
-	}
-
-	/**
-	 * @param mfBuf the data from an MF file of a JAR archive
-	 * 
-	 * This method will populate the "digest type & result" hashtables 
-	 * with whatever entries it can correctly parse from the MF file and with the same digest algorithm.
-	 * it will 'skip' incorrect entries (TODO: should the correct behavior
-	 * be to throw an exception, or return an error code?)...
-	 * 
-	 * 
-	 */
-	private void populateManifest(byte mfBuf[], String digAlg) {
-		// 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, digAlg);
-
-				if (aDigestLine != null) {
-					String msgDigestAlgorithm = getDigestAlgorithmFromString(aDigestLine);
-					byte digestResultsList[] = 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$
-					//					}
-
-					if (digests4entries == null) {
-						digests4entries = new Hashtable(10);
-						results4entries = new Hashtable(10);
-					}
-					// TODO throw exception if duplicate entry??
-					// no need, in theory, there is impossible to have two
-					// duplicate entries unless the manifest file
-					// is tampered
-					if (!digests4entries.contains(entryName)) {
-						digests4entries.put(entryName, msgDigestAlgorithm);
-						results4entries.put(entryName, digestResultsList);
-					}
-
-				} // 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 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 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);
-	}
-
-	/**
-	 * 
-	 * @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	manifestEntry	a entry contains either one or multiple digest lines
-	 * @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 String getDigestLine(String manifestEntry, String desireDigestAlg) {
-		String rtvValue = 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 && desireDigestAlg.equalsIgnoreCase(digAlg)) {
-				rtvValue = digestLine;
-				break;
-			}
-
-			// desireDigestAlg is null, always return the
-			rtvValue = 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 rtvValue;
-	}
-
-	private String getDigestAlgorithmFromString(String digestLines) {
-		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 SecurityException(NLS.bind(JarVerifierMessages.Algorithm_Not_Supported, sDigestAlgType));
-			}
-		}
-		return null;
-	}
-
-	/**
-	 * 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 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 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;
-	}
-
-	static private 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;
-	}
-
-	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;
-	}
-
-	/**
-	 * Sets the BundleFile for this singed bundle. It will extract
-	 * signatures and digests from the bundle file and validate input streams
-	 * before using them from the bundle file.
-	 * 
-	 * @param bundleFile the BundleFile to extract elements from.
-	 * @param the support flags for this signed bundle
-	 * @throws IOException
-	 */
-	void setBundleFile(BundleFile bundleFile, int supportFlags) throws IOException {
-		this.bundleFile = bundleFile;
-		if (certsInitialized)
-			return;
-		BundleEntry be = bundleFile.getEntry(META_INF_MANIFEST_MF);
-		if (be == null)
-			return;
-
-		// read all the signature block file names into a list
-		Enumeration en = bundleFile.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;
-
-		byte manifestBytes[] = readIntoArray(be);
-		// determine the signer to be used for later
-		String latestSigner = findLatestSigner(bundleFile, signers);
-		// process the signers
-		try {
-			ArrayList processors = new ArrayList(signers.size());
-			Iterator iSigners = signers.iterator();
-			for (int i = 0; iSigners.hasNext(); i++) {
-				String signer = (String) iSigners.next();
-				PKCS7Processor processor = processSigner(bundleFile, manifestBytes, signer, latestSigner, supportFlags);
-				boolean error = false;
-				try {
-					processor.validateCerts();
-					determineCertsTrust(processor, supportFlags);
-				} catch (CertificateExpiredException e) {
-					// ignore
-				} catch (CertificateNotYetValidException e) {
-					// ignore
-				} catch (InvalidKeyException e) {
-					error = true;
-				}
-				if (!error) {
-					// make sure the latestSigner is the first in the list
-					if (signer == latestSigner)
-						processors.add(0, processor);
-					else
-						processors.add(processor);
-				}
-			}
-			chains = processors.size() == 0 ? null : (CertificateChain[]) processors.toArray(new CertificateChain[processors.size()]);
-		} catch (SignatureException e) {
-			throw new SecurityException(NLS.bind(JarVerifierMessages.Signature_Not_Verify_1, new String[] {latestSigner, bundleFile.toString()}));
-		}
-	}
-
-	private void determineCertsTrust(PKCS7Processor signerPKCS7, int supportFlags) {
-		CertificateTrustAuthority trustAuthority;
-		if ((supportFlags & SignedBundleHook.VERIFY_TRUST) != 0)
-			trustAuthority = SignedBundleHook.getTrustAuthority();
-		else
-			trustAuthority = trustAllAuthority;
-		if (trustAuthority != null)
-			signerPKCS7.determineTrust(trustAuthority);
-	}
-
-	private PKCS7Processor processSigner(BundleFile bf, byte[] manifestBytes, String signer, String latestSigner, int supportFlags) throws IOException, SignatureException {
-		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
-		PKCS7Processor chain = null;
-		try {
-
-			chain = new PKCS7Processor(pkcs7Bytes, 0, pkcs7Bytes.length);
-
-			// call the Step 1 in the Jar File Verification algorithm
-			chain.verifySFSignature(sfBytes, 0, sfBytes.length);
-
-			// algorithm used
-			String digAlg = getDigAlgFromSF(sfBytes);
-			if (digAlg == null) {
-				throw new SecurityException(NLS.bind(JarVerifierMessages.SF_File_Parsing_Error, new String[] {bf.toString()}));
-			}
-			// populate the two digest hashtable instance variable based on the used Message Digest algorithm
-			if (latestSigner == signer) { // only do this if it is the latest signer
-
-				// 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
-				verifyManifestAndSingatureFile(manifestBytes, sfBytes);
-
-				// only populate the manifests if we are verifying content at runtime
-				if ((supportFlags & SignedBundleHook.VERIFY_RUNTIME) != 0)
-					populateManifest(manifestBytes, digAlg);
-			}
-
-			// process the Step 3
-			// read each file in the JAR file that has an entry in the .SF file.  
-			// also determine the 
-			//				verifySFEntriesDigest(bf, sfBytes, manifestBytes);
-		} catch (InvalidKeyException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-			throw new SecurityException(NLS.bind(JarVerifierMessages.Invalid_Key_Exception, new String[] {bf.getBaseFile().toString(), e.getMessage()}));
-		} catch (CertificateException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-			throw new SecurityException(NLS.bind(JarVerifierMessages.PKCS7_Cert_Excep, new String[] {bf.getBaseFile().toString(), e.getMessage()}));
-		} catch (NoSuchAlgorithmException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-			throw new SecurityException(NLS.bind(JarVerifierMessages.PKCS7_No_Such_Algorithm, new String[] {bf.getBaseFile().toString(), e.getMessage()}));
-		}
-
-		return chain;
-	}
-
-	private String findLatestSigner(BundleFile bf, List names) {
-		String result = null;
-		long latestTime = Long.MIN_VALUE;
-		for (Iterator iNames = names.iterator(); iNames.hasNext();) {
-			String name = (String) iNames.next();
-			BundleEntry entry = bf.getEntry(name);
-			if (entry.getTime() > latestTime) {
-				result = name;
-				latestTime = entry.getTime();
-			}
-		}
-		return result;
-	}
-
-	/**
-	 * Returns the Base64 encoded digest of the passed set of bytes.
-	 */
-	private String calculateDigest(MessageDigest digest, byte[] bytes) {
-		return new String(Base64.encode(digest.digest(bytes)));
-	}
-
-	public File getFile(String path, boolean nativeCode) {
-		return bundleFile.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 = bundleFile.getEntry(path);
-		if (digests4entries == null)
-			return be;
-		if (be == null) {
-			if (digests4entries.get(path) == null)
-				return null;
-			throw new SecurityException(NLS.bind(JarVerifierMessages.file_is_removed_from_jar, getBaseFile().toString(), path));
-		}
-		if (be.getName().startsWith(META_INF))
-			return be;
-		if (!isSigned())
-			// If there is no signatures, we just return the regular bundle entry
-			return be;
-		return new SignedBundleEntry(be);
-	}
-
-	public Enumeration getEntryPaths(String path) {
-		return bundleFile.getEntryPaths(path);
-	}
-
-	public void close() throws IOException {
-		bundleFile.close();
-	}
-
-	public void open() throws IOException {
-		bundleFile.open();
-	}
-
-	public boolean containsDir(String dir) {
-		return bundleFile.containsDir(dir);
-	}
-
-	boolean matchDNChain(String pattern) {
-		CertificateChain[] matchChains = getChains();
-		for (int i = 0; i < matchChains.length; i++)
-			if (matchChains[i].isTrusted() && DNChainMatching.match(matchChains[i].getChain(), pattern))
-				return true;
-		return false;
-	}
-
-	public File getBaseFile() {
-		return bundleFile.getBaseFile();
-	}
-
-	class SignedBundleEntry extends BundleEntry {
-		BundleEntry nestedEntry;
-
-		SignedBundleEntry(BundleEntry nestedEntry) {
-			this.nestedEntry = nestedEntry;
-		}
-
-		public InputStream getInputStream() throws IOException {
-			String name = getName();
-			String digest = digests4entries == null ? null : (String) digests4entries.get(name);
-			if (digest == null)
-				 // the digest does not exist; this must be a corrupted jar
-				throw new IOException("Corrupted file: the digest does not exist for the file " + name); //$NON-NLS-1$
- 			byte results[] = (byte[]) results4entries.get(name);
-			// TODO ELI: it is probbaly best to decode the value of digest into Base64 base.  This will only optimize the bad jar case.
-			return new DigestedInputStream(nestedEntry.getInputStream(), digest, results, nestedEntry.getSize());
-		}
-
-		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();
-		}
-
-	}
-
-	public void checkContent() throws CertificateException, CertificateExpiredException, SignatureException {
-		if (!isSigned() || digests4entries == null)
-			return;
-
-		for (Enumeration entries = digests4entries.keys(); entries.hasMoreElements();) {
-			String name = (String) entries.nextElement();
-			BundleEntry entry = getEntry(name);
-			if (entry == null) {
-				throw new SecurityException(NLS.bind(JarVerifierMessages.Jar_Is_Tampered, bundleFile.getBaseFile().getName()));
-			}
-			try {
-				entry.getBytes();
-			} catch (IOException e) {
-				SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-				throw new SecurityException(NLS.bind(JarVerifierMessages.File_In_Jar_Is_Tampered, new String[] {name, bundleFile.getBaseFile().toString()}));
-			}
-		}
-
-		// validate the certs chain and determine the trust
-		for (int i = 0; i < chains.length; i++) {
-			PKCS7Processor signerPKCS7 = (PKCS7Processor) chains[i];
-			try {
-				signerPKCS7.validateCerts();
-			} catch (InvalidKeyException e) {
-				throw new CertificateException(e.getMessage());
-			}
-			// determine the trust of certificates
-			determineCertsTrust(signerPKCS7, SignedBundleHook.VERIFY_ALL);
-		}
-	}
-
-	public String[] verifyContent() {
-		if (!isSigned() || digests4entries == null)
-			return EMPTY_STRING;
-		ArrayList corrupted = new ArrayList(0); // be optimistic
-		for (Enumeration entries = digests4entries.keys(); entries.hasMoreElements();) {
-			String name = (String) entries.nextElement();
-			BundleEntry entry = getEntry(name);
-			if (entry == null)
-				corrupted.add(name); // we expected the entry to be here
-			else
-				try {
-					entry.getBytes();
-				} catch (IOException e) {
-					// must be invalid
-					corrupted.add(name);
-				}
-		}
-		return corrupted.size() == 0 ? EMPTY_STRING : (String[]) corrupted.toArray(new String[corrupted.size()]);
-	}
-
-	public CertificateChain[] getChains() {
-		if (!isSigned())
-			return new CertificateChain[0];
-		return chains;
-	}
-
-	public boolean isSigned() {
-		return chains != null;
-	}
-
-	static synchronized MessageDigest getMessageDigest(String algorithm) {
-		try {
-			return MessageDigest.getInstance(algorithm);
-		} catch (NoSuchAlgorithmException e) {
-			SignedBundleHook.log(e.getMessage(), FrameworkLogEntry.ERROR, e);
-		}
-		return null;
-	}
-
-	//	static public void main(String args[]) throws IOException {
-	//
-	//		ZipBundleFile jf = new ZipBundleFile(new File(args[0]), null);
-	//		SignedBundleFile sr = new SignedBundleFile();
-	//
-	//		sr.setBundleFile(jf);
-	//
-	//		// read the first level directory entries
-	//		Enumeration en = sr.getEntryPaths("/"); //$NON-NLS-1$
-	//		while (en.hasMoreElements()) {
-	//			String filePath = (String) en.nextElement();
-	//			System.out.println("main(): " + filePath); //$NON-NLS-1$
-	//
-	//			// if this file is not a directory file
-	//			// then we'll get its input stream for testing
-	//			if (filePath.indexOf('/') == -1) {
-	//				BundleEntry be = sr.getEntry(filePath);
-	//				InputStream is = be.getInputStream();
-	//				is.skip(be.getSize());
-	//				is.read();
-	//				is.close();
-	//			}
-	//		}
-	//
-	//		if (!sr.isSigned()) {
-	//			System.out.println("No signers present"); //$NON-NLS-1$
-	//		} else {
-	//			CertificateChain[] chains = sr.getChains();
-	//			for (int i = 0; i < chains.length; i++) {
-	//				System.out.println(chains[i].getChain());
-	//			}
-	//		}
-	//
-	//		System.out.println("Done"); //$NON-NLS-1$		
-	//	}
-}
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleHook.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleHook.java
deleted file mode 100644
index 5bfece0..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedBundleHook.java
+++ /dev/null
@@ -1,221 +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.verifier;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URLConnection;
-import java.security.Security;
-import java.util.Hashtable;
-import java.util.Properties;
-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.AbstractBundle;
-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.provisional.verifier.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-import org.osgi.util.tracker.ServiceTracker;
-
-/**
- * Implements signed bundle hook support for the framework
- */
-public class SignedBundleHook implements AdaptorHook, BundleFileWrapperFactoryHook, HookConfigurator, CertificateVerifierFactory {
-	static final int VERIFY_CERTIFICATE = 0x01;
-	static final int VERIFY_TRUST = 0x02;
-	static final int VERIFY_RUNTIME = 0x04;
-	static final int VERIFY_ALL = VERIFY_CERTIFICATE | VERIFY_TRUST | VERIFY_RUNTIME;
-	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_ALL = "all"; //$NON-NLS-1$
-	private static String SUPPORT_TRUE = "true"; //$NON-NLS-1$
-	private static ServiceTracker trustAuthorityTracker;
-	private static BaseAdaptor ADAPTOR;
-	private static String SIGNED_BUNDLE_SUPPORT = "osgi.support.signature.verify"; //$NON-NLS-1$
-	private static int supportSignedBundles;
-	private static CertificateTrustAuthority trustAuthority = new DefaultTrustAuthority(VERIFY_ALL);
-	private ServiceRegistration certVerifierReg;
-	private ServiceRegistration trustAuthorityReg;
-
-	public boolean matchDNChain(String pattern, String dnChain[]) {
-		boolean satisfied = false;
-		if (dnChain != null) {
-			for (int i = 0; i < dnChain.length; i++)
-				if (DNChainMatching.match(dnChain[i], pattern)) {
-					satisfied = true;
-					break;
-				}
-		}
-		return satisfied;
-	}
-
-	public void initialize(BaseAdaptor adaptor) {
-		SignedBundleHook.ADAPTOR = adaptor;
-	}
-
-	public void frameworkStart(BundleContext context) throws BundleException {
-		certVerifierReg = context.registerService(CertificateVerifierFactory.class.getName(), this, null);
-		Hashtable properties = new Hashtable(7);
-		properties.put(Constants.SERVICE_RANKING, new Integer(Integer.MIN_VALUE));
-		properties.put(JarVerifierConstant.TRUST_AUTHORITY, JarVerifierConstant.DEFAULT_TRUST_AUTHORITY);
-		trustAuthorityReg = context.registerService(CertificateTrustAuthority.class.getName(), trustAuthority, properties);
-	}
-
-	public void frameworkStop(BundleContext context) throws BundleException {
-		if (certVerifierReg != null) {
-			certVerifierReg.unregister();
-			certVerifierReg = null;
-		}
-		if (trustAuthorityReg != null) {
-			trustAuthorityReg.unregister();
-			trustAuthorityReg = null;
-		}
-		if (trustAuthorityTracker != null) {
-			trustAuthorityTracker.close();
-			trustAuthorityTracker = 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) {
-					if (hook.signedBundleFile == null)
-						hook.signedBundleFile = new SignedBundleFile();
-					signedBaseFile = hook.signedBundleFile;
-				} else
-					signedBaseFile = new SignedBundleFile();
-				signedBaseFile.setBundleFile(bundleFile, supportSignedBundles);
-				if (signedBaseFile.isSigned()) // only use the signed file if there are certs
-					bundleFile = signedBaseFile;
-				else if (base) // if the base is not signed null out the hook.signedBundleFile
-					hook.signedBundleFile = null;
-			}
-		} catch (IOException e) {
-			// do nothing; its not your responsibility the error will be addressed later
-		}
-		return bundleFile;
-	}
-
-	public void addHooks(HookRegistry hookRegistry) {
-		hookRegistry.addAdaptorHook(this);
-		String[] support = ManifestElement.getArrayFromList(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_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 CertificateVerifier getVerifier(File content) throws IOException {
-		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();
-		result.setBundleFile(contentBundleFile, VERIFY_ALL);
-		return result;
-	}
-
-	public CertificateVerifier getVerifier(Bundle bundle) throws IOException {
-		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);
-		SignedBundleFile signedBundle = hook != null ? hook.signedBundleFile : null;
-		if (signedBundle != null)
-			return signedBundle; // just reuse the verifier from the bundle file
-		return getVerifier(((BaseData)data).getBundleFile().getBaseFile()); // must create a new verifier using the raw file
-	}
-
-	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 CertificateTrustAuthority getTrustAuthority() {
-		// read the certs chain security property and open the service tracker if not null
-		BundleContext context = SignedBundleHook.getContext();
-		if (context == null)
-			return trustAuthority;
-		if (trustAuthorityTracker == null) {
-			// read the trust provider security property
-			String trustAuthorityProp = Security.getProperty(JarVerifierConstant.TRUST_AUTHORITY);
-			Filter filter = null;
-			if (trustAuthorityProp != null)
-				try {
-					filter = FrameworkUtil.createFilter("(&(" + Constants.OBJECTCLASS + "=" + CertificateTrustAuthority.class.getName() + ")(" + JarVerifierConstant.TRUST_AUTHORITY + "=" + trustAuthorityProp + "))");  //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$//$NON-NLS-5$
-				} catch (InvalidSyntaxException e) {
-					e.printStackTrace();
-					// do nothing just use no filter TODO we may want to log something
-				}
-			if (filter != null) {
-				trustAuthorityTracker = new ServiceTracker(context, filter, null);
-			}
-			else
-				trustAuthorityTracker = new ServiceTracker(context, CertificateTrustAuthority.class.getName(), null);
-			trustAuthorityTracker.open();
-		}
-		return (CertificateTrustAuthority) trustAuthorityTracker.getService();
-	}
-}
diff --git a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedStorageHook.java b/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedStorageHook.java
deleted file mode 100644
index d1beab8..0000000
--- a/bundles/org.eclipse.osgi/jarverifier/org/eclipse/osgi/internal/verifier/SignedStorageHook.java
+++ /dev/null
@@ -1,235 +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.verifier;
-
-import java.io.*;
-import java.security.cert.*;
-import java.util.*;
-import org.eclipse.osgi.baseadaptor.BaseData;
-import org.eclipse.osgi.baseadaptor.hooks.StorageHook;
-import org.eclipse.osgi.framework.util.KeyedElement;
-import org.eclipse.osgi.internal.provisional.verifier.CertificateChain;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.BundleException;
-
-public class SignedStorageHook implements StorageHook {
-	static final String KEY = SignedStorageHook.class.getName();
-	static final int HASHCODE = KEY.hashCode();
-	private static final int STORAGE_VERSION = 2;
-	private static ArrayList saveChainCache = new ArrayList(5);
-	private static long firstIDSaved = -1;
-	private static long lastIDSaved = -1;
-	private static ArrayList loadChainCache = new ArrayList(5);
-	private static long lastIDLoaded;
-
-	private BaseData bundledata;
-	SignedBundleFile signedBundleFile;
-
-	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())
-			loadChainCache.clear();
-		lastIDLoaded = target.getBundleID();
-		SignedStorageHook hook = new SignedStorageHook();
-		hook.bundledata = target;
-		boolean signed = is.readBoolean();
-		if (!signed)
-			return hook;
-		int numChains = is.readInt();
-		CertificateChain[] chains = new CertificateChain[numChains];
-		for (int i = 0; i < numChains; i++) {
-			int chainIdx = is.readInt();
-			if (chainIdx >= 0) {
-				chains[i] = (CertificateChain) loadChainCache.get(chainIdx);
-				if (chains[i] == null)
-					throw new IOException("Invalid chain cache."); //$NON-NLS-1$
-				continue;
-			}
-			String chain = is.readUTF();
-
-			boolean trusted = is.readBoolean();
-			int numCerts = is.readInt();
-			byte[][] certsBytes = new byte[numCerts][];
-			for (int j = 0; j < certsBytes.length; j++) {
-				int numBytes = is.readInt();
-				certsBytes[j] = new byte[numBytes];
-				is.readFully(certsBytes[j]);
-			}
-			long signingTime = is.readLong();
-			try {
-				chains[i] = new PKCS7Processor(chain, trusted, certsBytes, signingTime);
-			} catch (CertificateException e) {
-				throw new IOException(e.getMessage());
-			}
-			loadChainCache.add(chains[i]);
-		}
-		int numEntries = is.readInt();
-		Hashtable digests = null;
-		Hashtable results = null;
-		if (numEntries >= 0) {
-			digests = new Hashtable(numEntries);
-			results = new Hashtable(numEntries);
-			for (int i = 0; i < numEntries; i++) {
-				String entry = is.readUTF();
-				String md;
-				byte[] result;
-				if (is.readInt() == 0)
-					md = JarVerifierConstant.MD5_STR;
-				else
-					md = JarVerifierConstant.SHA1_STR;
-				result = new byte[is.readInt()];
-				is.readFully(result);
-				digests.put(entry, md);
-				results.put(entry, result);
-			}
-		}
-		String md5Result = null;
-		String shaResult = null;
-		if (is.readBoolean())
-			md5Result = is.readUTF();
-		if (is.readBoolean())
-			shaResult = is.readUTF();
-		hook.signedBundleFile = new SignedBundleFile(chains, digests, results, md5Result, shaResult);
-		return hook;
-	}
-
-	public void save(DataOutputStream os) throws IOException {
-		getFirstLastID();
-		if (firstIDSaved == bundledata.getBundleID())
-			saveChainCache.clear();
-		if (lastIDSaved == bundledata.getBundleID())
-			firstIDSaved = lastIDSaved = -1;
-		SignedBundleFile signedFile = signedBundleFile;
-		CertificateChain[] chains = null;
-		String md5Result = null;
-		String shaResult = null;
-		Hashtable digests = null;
-		Hashtable results = null;
-		if (signedFile != null) {
-			chains = signedFile.chains;
-			md5Result = signedFile.manifestMD5Result;
-			shaResult = signedFile.manifestSHAResult;
-			digests = signedFile.digests4entries;
-			results = signedFile.results4entries;
-		}
-		os.writeBoolean(chains != null);
-		if (chains == null)
-			return;
-		os.writeInt(chains.length);
-		for (int i = 0; i < chains.length; i++) {
-			int cacheIdx = saveChainCache.indexOf(chains[i]);
-			os.writeInt(cacheIdx);
-			if (cacheIdx >= 0)
-				continue;
-			saveChainCache.add(chains[i]);
-			os.writeUTF(chains[i].getChain());
-			os.writeBoolean(chains[i].isTrusted());
-			Certificate[] certs = chains[i].getCertificates();
-			os.writeInt(certs == null ? 0 : certs.length);
-			if (certs != null)
-				for (int j = 0; j < certs.length; j++) {
-					byte[] certBytes;
-					try {
-						certBytes = certs[j].getEncoded();
-					} catch (CertificateEncodingException e) {
-						throw new IOException(e.getMessage());
-					}
-					os.writeInt(certBytes.length);
-					os.write(certBytes);
-				}
-			os.writeLong(chains[i].getSigningTime() != null ? chains[i].getSigningTime().getTime() : Long.MIN_VALUE);
-		}
-		if (digests == null)
-			os.writeInt(-1);
-		else {
-			os.writeInt(digests.size());
-			for (Enumeration entries = digests.keys(); entries.hasMoreElements();) {
-				String entry = (String) entries.nextElement();
-				String md = (String) digests.get(entry);
-				byte[] result = (byte[]) results.get(entry);
-				os.writeUTF(entry);
-				if (md == JarVerifierConstant.MD2_STR)
-					os.writeInt(0);
-				else
-					os.writeInt(1);
-				os.writeInt(result.length);
-				os.write(result);
-			}
-		}
-		os.writeBoolean(md5Result != null);
-		if (md5Result != null)
-			os.writeUTF(md5Result);
-		os.writeBoolean(shaResult != null);
-		if (shaResult != null)
-			os.writeUTF(shaResult);
-	}
-
-	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 boolean matchDNChain(String pattern) {
-		return signedBundleFile == null ? false : signedBundleFile.matchDNChain(pattern);
-	}
-
-	public int getKeyHashCode() {
-		return HASHCODE;
-	}
-
-	public boolean compare(KeyedElement other) {
-		return other.getKey() == KEY;
-	}
-
-	public Object getKey() {
-		return KEY;
-	}
-
-}
diff --git a/bundles/org.eclipse.osgi/launch/.cvsignore b/bundles/org.eclipse.osgi/launch/.cvsignore
deleted file mode 100644
index 09b92bb..0000000
--- a/bundles/org.eclipse.osgi/launch/.cvsignore
+++ /dev/null
@@ -1,4 +0,0 @@
-bundles
-workspace
-.bundledata
-eclipsebundles
diff --git a/bundles/org.eclipse.osgi/launch/.options b/bundles/org.eclipse.osgi/launch/.options
deleted file mode 100644
index 732680e..0000000
--- a/bundles/org.eclipse.osgi/launch/.options
+++ /dev/null
@@ -1,14 +0,0 @@
-org.eclipse.osgi/debug=false
-
-org.eclipse.osgi/debug/loader=false
-org.eclipse.osgi/debug/events=false
-org.eclipse.osgi/debug/services=false
-org.eclipse.osgi/debug/packages=false
-org.eclipse.osgi/debug/manifest=false
-org.eclipse.osgi/debug/filter=false
-org.eclipse.osgi/debug/security=false
-org.eclipse.osgi/debug/startlevel=false
-org.eclipse.osgi/debug/packageadmin=false
-org.eclipse.osgi/debug/packageadmin/timing=false
-org.eclipse.osgi/debug/monitorbundles=false
-org.eclipse.osgi/debug/bundleTime=false
diff --git a/bundles/org.eclipse.osgi/launch/DevFramework.launch b/bundles/org.eclipse.osgi/launch/DevFramework.launch
deleted file mode 100644
index 874e509..0000000
--- a/bundles/org.eclipse.osgi/launch/DevFramework.launch
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;sourceLookupDirector&gt;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#10;&lt;container typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot; memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;osgitck&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;&#10;&lt;container typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot; memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;OSGiMemberCVS&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;&#10;&lt;container typeId=&quot;org.eclipse.debug.core.containerType.default&quot; memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;default/&amp;gt;&amp;#10;&quot;/&gt;&#10;&lt;/sourceContainers&gt;&#10;&lt;/sourceLookupDirector&gt;&#10;"/>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.osgi.framework.launcher.Launcher"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console &quot;launch&quot;"/>
-<listAttribute key="org.eclipse.jdt.launching.SOURCE_PATH">
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;4&quot; path=&quot;2&quot; containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot;/&gt;&#10;"/>
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;1&quot; path=&quot;3&quot; projectName=&quot;org.eclipse.osgi&quot;/&gt;&#10;"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.framework=&quot;file:../&quot; -Dosgi.properties=osgi.properties -Dcom.ibm.osg.webcontainer.defaultports=&quot;&quot; -Dosgi.dev=bin -Dosgi.scopeServiceEvents=true"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="org.eclipse.osgi/launch"/>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_SOURCE_PATH" value="false"/>
-<stringAttribute key="org.eclipse.debug.ui.target_run_perspective" value="perspective_default"/>
-<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;4&quot; path=&quot;2&quot; containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot;/&gt;&#10;"/>
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;1&quot; path=&quot;3&quot; projectName=&quot;org.eclipse.osgi&quot;/&gt;&#10;"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osgi"/>
-<stringAttribute key="org.eclipse.debug.ui.target_debug_perspective" value="perspective_default"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
-</launchConfiguration>
diff --git a/bundles/org.eclipse.osgi/launch/DevFrameworkSecurity.launch b/bundles/org.eclipse.osgi/launch/DevFrameworkSecurity.launch
deleted file mode 100644
index 9465797..0000000
--- a/bundles/org.eclipse.osgi/launch/DevFrameworkSecurity.launch
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
-<stringAttribute key="org.eclipse.debug.core.source_locator_memento" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;sourceLookupDirector&gt;&#10;&lt;sourceContainers duplicates=&quot;false&quot;&gt;&#10;&lt;container typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot; memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.eclipse.osgi.jarverifier&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;&#10;&lt;container typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot; memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;SecurityTest&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;&#10;&lt;container typeId=&quot;org.eclipse.jdt.launching.sourceContainer.javaProject&quot; memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;javaProject name=&amp;quot;org.eclipse.osgi&amp;quot;/&amp;gt;&amp;#10;&quot;/&gt;&#10;&lt;container typeId=&quot;org.eclipse.debug.core.containerType.default&quot; memento=&quot;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;#10;&amp;lt;default/&amp;gt;&amp;#10;&quot;/&gt;&#10;&lt;/sourceContainers&gt;&#10;&lt;/sourceLookupDirector&gt;&#10;"/>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="false"/>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.osgi.framework.launcher.Launcher"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-console &quot;launch&quot;"/>
-<listAttribute key="org.eclipse.jdt.launching.SOURCE_PATH">
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;4&quot; path=&quot;2&quot; containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot;/&gt;&#10;"/>
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;1&quot; path=&quot;3&quot; projectName=&quot;org.eclipse.osgi&quot;/&gt;&#10;"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dosgi.framework=&quot;file:../&quot;  -Djava.security.manager=org.eclipse.osgi.framework.internal.core.FrameworkSecurityManager -Djava.security.policy=osgi.policy -Dosgi.dev=bin"/>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="org.eclipse.osgi/launch"/>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_SOURCE_PATH" value="false"/>
-<stringAttribute key="org.eclipse.debug.ui.target_run_perspective" value="perspective_default"/>
-<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;4&quot; path=&quot;2&quot; containerPath=&quot;org.eclipse.jdt.launching.JRE_CONTAINER&quot;/&gt;&#10;"/>
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;1&quot; path=&quot;3&quot; projectName=&quot;org.eclipse.osgi&quot;/&gt;&#10;"/>
-<listEntry value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;runtimeClasspathEntry type=&quot;1&quot; path=&quot;3&quot; projectName=&quot;org.eclipse.osgi.jarverifier&quot;/&gt;&#10;"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.osgi"/>
-<stringAttribute key="org.eclipse.debug.ui.target_debug_perspective" value="perspective_default"/>
-<stringAttribute key="org.eclipse.debug.core.source_locator_id" value="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector"/>
-</launchConfiguration>
diff --git a/bundles/org.eclipse.osgi/launch/osgi.policy b/bundles/org.eclipse.osgi/launch/osgi.policy
deleted file mode 100644
index 3ee6c93..0000000
--- a/bundles/org.eclipse.osgi/launch/osgi.policy
+++ /dev/null
@@ -1,5 +0,0 @@
-// Grant SMF AllPermission.

-

-grant {

-        permission java.security.AllPermission;

-};

diff --git a/bundles/org.eclipse.osgi/launch/osgi.properties b/bundles/org.eclipse.osgi/launch/osgi.properties
deleted file mode 100644
index 62036bb..0000000
--- a/bundles/org.eclipse.osgi/launch/osgi.properties
+++ /dev/null
@@ -1,71 +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
-###############################################################################
-# Eclipse OSGi Framework properties file
-#
-# This file contains properties used by the Eclipse
-# OSGi framework.  The property values are
-# set by the framework when it is started.  Any value set in
-# this file will override the default value derived
-# by the framework.
-
-# The setting of the default values will be done in
-# org.eclipse.osgi.framework.internal.core.Framework.java.  Only 
-# uncomment the value if overriding the default.
-
-# The location of this file can be specified by the
-# property osgi.framework.properties on the command
-# line when invoking the framework. The default is equivalent to:
-# -Dosgi.framework.properties=osgi.properties
-
-# The Framework Beginning StartLevel.  This is the
-# startlevel that the framework will launch with.
-# Valid values are any positive integers.
-# Default value is compatibility mode where startlevel=1
-#osgi.framework.beginningstartlevel=1
-
-# This is a list of package descriptions (see Export-Package
-# manifest header description) of additional packages available
-# on the system classpath. Packages described here will
-# allow bundles which imports a listed package to resolve.
-#osgi.framework.systempackages=<package-description>
-
-# This is the directory in which the DefaultAdaptor
-# persistently stores the installed bundles and permission
-# information. The default is "bundles"
-# NOTE: The contents of this directory will be entirely
-# owned by the DefaultAdapter and may be changed or deleted.
-#osgi.bundlestore=bundles
-
-# The org.osgi.framework.* properties can be modified for
-# the specifics of the deployment to override the default
-# values from the JVM system properties.
-
-# Default value is the value of the system property os.arch
-#org.osgi.framework.processor=x86
-
-# Default value is the value of the system property os.name
-#org.osgi.framework.os.name=Windows 2000
-
-# Default value is the value of the system property os.version
-# (up to the first space, if any)
-#org.osgi.framework.os.version=5.0
-
-# Default value is the value of the system property user.language
-#org.osgi.framework.language=en
-
-# Default value is the value of the windowing system
-#org.osgi.framework.windowing.system=win32
-
-# Default value is the system properties
-# microedition.configuration/microedition.profiles if either of the
-# microedition properties do not exist then the default value is empty.
-# Any values set here will be merged with the default value.
-#org.osgi.framework.executionenvironment=OSGi/Minimum-1.0
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 01b874e..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.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 4eefebe..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 4c90fbd..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 6999b1b..0000000
--- a/bundles/org.eclipse.osgi/osgi/osgi.core.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/osgi/osgiJavaDoc.zip b/bundles/org.eclipse.osgi/osgi/osgiJavaDoc.zip
deleted file mode 100644
index a013dac..0000000
--- a/bundles/org.eclipse.osgi/osgi/osgiJavaDoc.zip
+++ /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 b5f6043..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java
+++ /dev/null
@@ -1,968 +0,0 @@
-/*
- * $Header: /cvsroot/eclipse/org.eclipse.osgi/osgi/src/org/osgi/framework/AdminPermission.java,v 1.22 2006/10/18 15:32:18 twatson Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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.security.*;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.AbstractBundle;
-import org.eclipse.osgi.framework.internal.core.FilterImpl;
-
-/**
- * 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.
- * <p>
- * The name of this permission is a filter expression. The filter gives access
- * to the following parameters:
- * <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>
- * 
- * @ThreadSafe
- * @version $Revision: 1.34 $
- */
-
-public final class AdminPermission extends BasicPermission {
-	static final long	serialVersionUID	= 207051004521261705L;
-
-	/**
-	 * The action string <code>class</code> (Value is "class").
-	 * @since 1.3
-	 */
-	public final static String			CLASS				= "class";
-	/**
-	 * The action string <code>execute</code> (Value is "execute").
-	 * @since 1.3
-	 */
-	public final static String			EXECUTE				= "execute";
-	/**
-	 * The action string <code>extensionLifecycle</code> (Value is
-	 * "extensionLifecycle").
-	 * @since 1.3
-	 */
-	public final static String			EXTENSIONLIFECYCLE	= "extensionLifecycle";
-	/**
-	 * The action string <code>lifecycle</code> (Value is "lifecycle").
-	 * @since 1.3
-	 */
-	public final static String			LIFECYCLE			= "lifecycle";
-	/**
-	 * The action string <code>listener</code> (Value is "listener").
-	 * @since 1.3
-	 */
-	public final static String			LISTENER			= "listener";
-	/**
-	 * The action string <code>metadata</code> (Value is "metadata").
-	 * @since 1.3
-	 */
-	public final static String			METADATA			= "metadata";
-	/**
-	 * The action string <code>resolve</code> (Value is "resolve").
-	 * @since 1.3
-	 */
-	public final static String			RESOLVE				= "resolve";
-	/**
-	 * The action string <code>resource</code> (Value is "resource").
-	 * @since 1.3
-	 */
-	public final static String			RESOURCE			= "resource";
-	/**
-	 * The action string <code>startlevel</code> (Value is "startlevel").
-	 * @since 1.3
-	 */
-	public final static String			STARTLEVEL			= "startlevel";
-
-	/**
-	 * The action string <code>context</code> (Value is "context").
-	 * @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;
-    private final static int ACTION_NONE = 0;
-	
-	/**
-	 * Indicates that this AdminPermission refers to all bundles
-	 * @serial
-	 */
-	private boolean wildcard;
-	
-	/**
-	 * An x.500 distinguished name used to match a bundle's signature - only used if
-	 * wildcard is false and bundle = null
-	 * @serial
-	 */
-	private String filter;
-
-    /**
-     * The actions in canonical form.
-     *
-     * @serial
-     */
-    private String actions = null;
-
-    /**
-     * The actions mask.
-     */
-	private transient int action_mask = ACTION_NONE;
-
-	/**
-	 * The bundle governed by this AdminPermission - only used if 
-	 * wildcard is false and filter == null
-	 */
-	private transient Bundle bundle;
-
-    /**
-     * If this AdminPermission was constructed with a bundle, this dictionary holds
-     * the properties of that bundle, used to match a filter in implies.
-     * This is not initialized until necessary, and then cached in this object.
-     */
-    private transient Dictionary bundleProperties;
-    
-    /**
-     * If this AdminPermission was constructed with a filter, this dictionary holds
-     * a Filter matching object used to evaluate the filter in implies.
-     * This is not initialized until necessary, and then cached in this object
-     */
-    private transient Filter filterImpl;
-    
-	/**
-	 * Creates a new <code>AdminPermission</code> object that matches all
-	 * bundles and has all actions. Equivalent to AdminPermission("*","*");
-	 */
-	public AdminPermission() {
-		this("*",AdminPermission.ACTION_ALL); //$NON-NLS-1$
-	}
-
-	/**
-	 * 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.
-	 * @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
-	 */
-	public AdminPermission(String filter, String actions) {
-    	//arguments will be null if called from a PermissionInfo defined with
-    	//no args
-    	this(
-    			(filter == null ? "*" : filter), //$NON-NLS-1$
-				getMask((actions == null ? "*" : actions)) //$NON-NLS-1$
-				);
-	}
-
-	/**
-	 * Creates a new <code>AdminPermission</code> object to be used by the
-	 * code that must check a <code>Permission</code> object.
-	 * 
-	 * @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>.
-	 * @since 1.3
-	 */
-	public AdminPermission(Bundle bundle, String actions) {
-		super(createName(bundle));
-    	this.bundle = bundle;
-    	this.wildcard = false;
-    	this.filter = null;
-    	this.action_mask = getMask(actions);
-	}
-
-	/**
-	 * 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) {
-		StringBuffer sb = new StringBuffer();
-		sb.append("(id=");
-		sb.append(bundle.getBundleId());
-		sb.append(")");
-		return sb.toString();
-	}
-
-	/**
-	 * 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 a = (AdminPermission) obj;
-
-        return (action_mask == a.action_mask) &&
-        		(wildcard == a.wildcard) &&
-        		(bundle == null ? a.bundle == null : (a.bundle == null ? false : bundle.getBundleId() == a.bundle.getBundleId())) &&
-				(filter == null ? a.filter == null : filter.equals(a.filter));
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return Hash code value for this object.
-	 */
-	public int hashCode() {
-		return getName().hashCode() ^ getActions().hashCode();
-	}
-
-	/**
-	 * 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() {
-		if (actions == null) {
-			StringBuffer sb = new StringBuffer();
-			
-			if ((action_mask & ACTION_CLASS) == ACTION_CLASS) {
-				sb.append(CLASS);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_EXECUTE) == ACTION_EXECUTE) {
-				sb.append(EXECUTE);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_EXTENSIONLIFECYCLE) == ACTION_EXTENSIONLIFECYCLE) {
-				sb.append(EXTENSIONLIFECYCLE);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_LIFECYCLE) == ACTION_LIFECYCLE) {
-				sb.append(LIFECYCLE);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_LISTENER) == ACTION_LISTENER) {
-				sb.append(LISTENER);
-				sb.append(',');
-			}
-			
-			if ((action_mask & ACTION_METADATA) == ACTION_METADATA) {
-				sb.append(METADATA);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_RESOLVE) == ACTION_RESOLVE) {
-				sb.append(RESOLVE);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_RESOURCE) == ACTION_RESOURCE) {
-				sb.append(RESOURCE);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_STARTLEVEL) == ACTION_STARTLEVEL) {
-				sb.append(STARTLEVEL);
-				sb.append(',');
-			}
-
-			if ((action_mask & ACTION_CONTEXT) == ACTION_CONTEXT) {
-				sb.append(CONTEXT);
-				sb.append(',');
-			}
-
-			//remove trailing comma
-			if (sb.length() > 0) {
-				sb.setLength(sb.length()-1);
-			}
-			
-			actions = sb.toString();
-		}
-		return actions;
-	}
-
-	/**
-	 * 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 permission to interrogate.
-	 * 
-	 * @return <code>true</code> if the specified permission is implied by
-	 *         this object; <code>false</code> otherwise.
-	 * @throws RuntimeException if specified permission was not constructed with
-	 *         a bundle or "*"
-	 */
-	public boolean implies(Permission p) {
-    	if (!(p instanceof AdminPermission))
-    		return false;
-    	AdminPermission target = (AdminPermission)p;
-    	//check actions first - much faster
-    	if ((action_mask & target.action_mask)!=target.action_mask)
-    		return false;
-    	//if passed in a filter, puke
-    	if (target.filter != null)
-    		throw new RuntimeException("Cannot imply a filter"); //$NON-NLS-1$
-    	//special case - only wildcard implies wildcard
-    	if (target.wildcard)
-    		return wildcard;
-
-    	//check our name 
-    	if (filter != null) {
-    		//it's a filter
-    		Filter filterImpl = getFilterImpl();
-			return filterImpl != null && filterImpl.match(target.getProperties());
-    	} else if (wildcard) {
-    		//it's "*"
-    		return true;
-    	} else {
-    		//it's a bundle id
-    		return bundle.equals(target.bundle);
-    	}
-	}
-
-	/**
-	 * 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());
-	}
-
-    /**
-     * Package private constructor used by AdminPermissionCollection.
-     *
-     * @param filter name filter
-     * @param action_mask mask
-     */
-    AdminPermission(String filter, int action_mask) {
-    	super(filter);
-    	
-    	//name must be either * or a filter
-    	if (filter.equals("*")) { //$NON-NLS-1$
-    		this.wildcard = true;
-    		this.filter = null;
-    	} else {
-			this.wildcard = false;
-			this.filter = filter;
-    	}
-    	this.bundle = null;
-    	this.action_mask = action_mask;
-    }
-
-    /**
-     * Parse action string into action mask.
-     *
-     * @param actions Action string.
-     * @return action mask.
-     */
-    private static int getMask(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 >= 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;
-	
-    		} 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;
-				
-			} 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;
-
-    		} 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); //$NON-NLS-1$
-        }
-
-        // 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); //$NON-NLS-1$
-        	}
-        	i--;
-        }
-
-        // point i at the location of the comma minus one (or -1).
-        i -= matchlen;
-    }
-
-    if (seencomma) {
-        throw new IllegalArgumentException("invalid permission: " + //$NON-NLS-1$
-                        actions);
-    }
-
-    return mask;
-    }
-     
-    /**
-     * Called by <code><@link AdminPermission#implies(Permission)></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() {
-    	if (bundleProperties == null) {
-    		bundleProperties = new Hashtable();
-
-    		AccessController.doPrivileged(new PrivilegedAction() {
-				public Object run() {
-		    		//set Id
-		    		bundleProperties.put("id",new Long(bundle.getBundleId())); //$NON-NLS-1$
-		    		
-		    		//set location
-		    		bundleProperties.put("location",bundle.getLocation()); //$NON-NLS-1$
-		    		
-		    		//set name
-		    		if (bundle.getSymbolicName() != null)
-		    			bundleProperties.put("name",bundle.getSymbolicName()); //$NON-NLS-1$
-		    		
-		    		//set signers
-		    		bundleProperties.put("signer",new SignerWrapper(bundle)); //$NON-NLS-1$
-		    		
-		    		return null;
-				}
-			});
-    	}     		
-    	return bundleProperties;
-    }
-
-    private static class SignerWrapper extends Object {
-    	private Bundle bundle;
-    	private String pattern;
-    	public SignerWrapper(String pattern) {
-    		this.pattern = pattern;    			
-    	}
-    	SignerWrapper(Bundle bundle) {
-    		this.bundle = bundle;
-    	}
-    	
-		public boolean equals(Object o) {
-			if (!(o instanceof SignerWrapper))
-				return false;
-			SignerWrapper other = (SignerWrapper) o;
-			AbstractBundle matchBundle = (AbstractBundle) (bundle != null ? bundle : other.bundle);
-			String matchPattern = bundle != null ? other.pattern : pattern;
-			return matchBundle.getBundleData().matchDNChain(matchPattern);
-		}
-    }
-    
-    /**
-     * Called by <tt><@link AdminPermission#implies(Permission)></tt> on an AdminPermission
-     * which was constructed with a filter.  This method loads a FilterImpl with the
-     * filter specification of this AdminPermission.  The filter is cached so this work
-     * only happens once.
-     * 
-     * This method should only be called on an AdminPermission which was constructed with a 
-     * filter
-     * 
-     * @return a filterImpl for this bundle
-     */
-    private Filter getFilterImpl() {
-    	if (filterImpl == null) {
-    		try {
-    			int pos = filter.indexOf("signer"); //$NON-NLS-1$
-    			if (pos != -1){ 
-    			
-    				//there may be a signer attribute 
-	    			StringBuffer filterBuf = new StringBuffer(filter);
-	    			int numAsteriskFound = 0; //use as offset to replace in buffer
-	    			
-	    			int walkbackPos; //temp pos
-
-	    			//find occurences of (signer= and escape out *'s
-	    			while (pos != -1) {
-
-	    				//walk back and look for '(' to see if this is an attr
-	    				walkbackPos = pos-1; 
-	    				
-	    				//consume whitespace
-	    				while(walkbackPos >= 0 && Character.isWhitespace(filter.charAt(walkbackPos))) {
-	    					walkbackPos--;
-	    				}
-	    				if (walkbackPos <0) {
-	    					//filter is invalid - FilterImpl will throw error
-	    					break;
-	    				}
-	    				
-	    				//check to see if we have unescaped '('
-	    				if (filter.charAt(walkbackPos) != '(' || (walkbackPos > 0 && filter.charAt(walkbackPos-1) == '\\')) {
-	    					//'(' was escaped or not there
-	    					pos = filter.indexOf("signer",pos+6); //$NON-NLS-1$
-	    					continue;
-	    				}     				
-	    				pos+=6; //skip over 'signer'
-
-	    				//found signer - consume whitespace before '='
-	    				while (Character.isWhitespace(filter.charAt(pos))) {
-	    					pos++;
-	    				}
-
-	    				//look for '='
-	    				if (filter.charAt(pos) != '=') {
-	    					//attr was signerx - keep looking
-	    					pos = filter.indexOf("signer",pos); //$NON-NLS-1$
-	    					continue;
-	    				}
-	    				pos++; //skip over '='
-	    				
-	    				//found signer value - escape '*'s
-	    				while (!(filter.charAt(pos) == ')' && filter.charAt(pos-1) != '\\')) {
-	    					if (filter.charAt(pos) == '*') {
-	    						filterBuf.insert(pos+numAsteriskFound,'\\');
-	    						numAsteriskFound++;
-	    					}
-	    					pos++;
-	    				}
-
-	    				//end of signer value - look for more?
-	    				pos = filter.indexOf("signer",pos); //$NON-NLS-1$
-	    			} //end while (pos != -1)
-	    			filter = filterBuf.toString();
-    			} //end if (pos != -1)
-
-    			filterImpl = new FilterImpl(filter);
-			} catch (InvalidSyntaxException e) {
-				//we will return null
-			}
-    	}     		
-    	return filterImpl;
-    }
-
-	/**
-	 * Returns the current action mask.
-	 * <p>
-	 * Used by the AdminPermissionCollection class.
-	 * 
-	 * @return Current action mask.
-	 */
-	int getMask() {
-		return action_mask;
-	}
-
-	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();
-		if (filter == null && !wildcard)
-			throw new UnsupportedOperationException("cannot serialize"); //$NON-NLS-1$
-		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();
-		action_mask = getMask(actions);
-	}
-}
-
-/**
- * Stores a collection of <code>AdminPermission</code>s.
- */
-final class AdminPermissionCollection extends PermissionCollection
-{
-	private static final long serialVersionUID = 3906372644575328048L;
-	/**
-     * Collection of permissions.
-     *
-     * @serial
-     */
-	private Hashtable permissions;
-
-    /**
-     * Create an empty AdminPermissions object.
-     *
-     */
-
-    public AdminPermissionCollection()
-    {
-        permissions = new Hashtable();        
-    }
-
-    /**
-     * Adds a permission to the <code>AdminPermission</code> objects. The key for 
-     * the hashtable is the name
-     *
-     * @param permission The <code>AdminPermission</code> object to add.
-     *
-     * @exception IllegalArgumentException If the permission is not an
-     * <code>AdminPermission</code> instance.
-     *
-     * @exception 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: "+ //$NON-NLS-1$
-                                               permission);
-        if (isReadOnly())
-            throw new SecurityException("attempt to add a Permission to a " + //$NON-NLS-1$
-                                        "readonly AdminCollection"); //$NON-NLS-1$
-        AdminPermission ap = (AdminPermission) permission;
-    	AdminPermission existing = (AdminPermission) permissions.get(ap.getName());
-    	if (existing != null){
-    		int oldMask = existing.getMask();
-    		int newMask = ap.getMask();
-        
-    		if (oldMask != newMask) {
-    			permissions.put(existing.getName(),
-    					new AdminPermission(existing.getName(), oldMask | newMask));
-    		}
-    	} else {
-    		permissions.put(ap.getName(), ap);
-    	}
-    }
-
-
-    /**
-     * 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 target = (AdminPermission) permission;
-        
-        //just iterate one by one
-        Iterator permItr = permissions.values().iterator();
-        
-        while(permItr.hasNext())
-        	if (((AdminPermission)permItr.next()).implies(target))
-        		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 Enumeration elements()
-    {
-        return(Collections.enumeration(permissions.values()));
-    }
-}
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 e126c5c..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/AllServiceListener.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/AllServiceListener.java,v 1.10 2007/02/20 00:16:30 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2007). 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: 1.10 $
- */
-
-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 b814f82..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Bundle.java
+++ /dev/null
@@ -1,1120 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/Bundle.java,v 1.54 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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;
-
-/**
- * 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: 1.54 $
- */
-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;
-
-	/**
-	 * 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 {<code>INSTALLED</code>,
-	 * <code>RESOLVED</code>} or {<code>INSTALLED</code>,
-	 * <code>RESOLVED</code>, <code>STARTING</code>} 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 {<code>ACTIVE</code>} 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 {<code>STARTING</code>,
-	 * <code>ACTIVE</code>}.
-	 * </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 java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled or this bundle tries to change its own state.
-	 * @throws java.lang.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 calls <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 java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled or this bundle tries to change its own state.
-	 * @throws java.lang.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>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>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. 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 {<code>ACTIVE</code>}.
-	 * </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 {<code>ACTIVE</code>,
-	 * <code>STOPPING</code>}.
-	 * <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 java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled or this bundle tries to change its own state.
-	 * @throws java.lang.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 calls <code>stop(0)</code>.
-	 * 
-	 * @throws BundleException If this bundle's <code>BundleActivator</code>
-	 *         threw an exception or this bundle is a fragment.
-	 * @throws java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled or this bundle tries to change its own state.
-	 * @throws java.lang.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.
-	 * 
-	 * <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, 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 download location of the new version of this bundle is
-	 * determined from either this bundle's
-	 * {@link Constants#BUNDLE_UPDATELOCATION} Manifest header (if available) or
-	 * this bundle's original location.
-	 * 
-	 * <li>The location is interpreted in an implementation dependent manner,
-	 * typically as a URL, and the new version of this bundle is obtained from
-	 * this location.
-	 * 
-	 * <li>The new version of this bundle is installed. If the Framework is
-	 * unable to install the new 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>If this bundle has declared an Bundle-RequiredExecutionEnvironment
-	 * header, then the listed execution environments must be verified against
-	 * the installed execution environments. If they do not all match, 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 new 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 {<code>UNINSTALLED</code>}.
-	 * </ul>
-	 * <b>Postconditions, no exceptions thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> in {<code>INSTALLED</code>,
-	 * <code>RESOLVED</code>,<code>ACTIVE</code>}.
-	 * <li>This bundle has been updated.
-	 * </ul>
-	 * <b>Postconditions, when an exception is thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> in {<code>INSTALLED</code>,
-	 * <code>RESOLVED</code>,<code>ACTIVE</code>}.
-	 * <li>Original bundle is still used; no update occurred.
-	 * </ul>
-	 * 
-	 * @throws BundleException If the update fails.
-	 * @throws java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled or this bundle tries to change its own state.
-	 * @throws java.lang.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() throws BundleException;
-
-	/**
-	 * Updates this bundle from an <code>InputStream</code>.
-	 * 
-	 * <p>
-	 * This method performs all the steps listed in <code>Bundle.update()</code>,
-	 * except the new version of this bundle must be read from the supplied
-	 * <code>InputStream</code>, rather than a <code>URL</code>.
-	 * <p>
-	 * This method must always close the <code>InputStream</code> when it is
-	 * done, even if an exception is thrown.
-	 * 
-	 * @param in The <code>InputStream</code> from which to read the new
-	 *        bundle.
-	 * @throws BundleException If the provided stream cannot be read or the
-	 *         update fails.
-	 * @throws java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled or this bundle tries to change its own state.
-	 * @throws java.lang.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()
-	 */
-	public void update(InputStream in) 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 {<code>UNINSTALLED</code>}.
-	 * </ul>
-	 * <b>Postconditions, no exceptions thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> in {<code>UNINSTALLED</code>}.
-	 * <li>This bundle has been uninstalled.
-	 * </ul>
-	 * <b>Postconditions, when an exception is thrown </b>
-	 * <ul>
-	 * <li><code>getState()</code> not in {<code>UNINSTALLED</code>}.
-	 * <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 java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled or this bundle tries to change its own state.
-	 * @throws java.lang.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.
-	 * 
-	 * <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 java.lang.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 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 java.lang.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 java.lang.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 java.lang.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 java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 */
-	public boolean hasPermission(Object permission);
-
-	/**
-	 * Find the specified resource from this bundle.
-	 * 
-	 * 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.
-	 * 
-	 * @param name The name of the resource. See
-	 *        <code>java.lang.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.
-	 * 
-	 * @since 1.1
-	 * @throws java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @see #getEntry
-	 * @see #findEntries
-	 */
-	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 + "_" + Ls + "_" + Cs + "_" + Vs
-     *   bn + "_" + Ls + "_" + Cs
-     *   bn + "_" + Ls
-     *   bn + "_" + Ld + "_" + Cd + "_" + Vd
-     *   bn + "_" + Ld + "_" + Cd
-     *   bn + "_" + 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.
-	 * 
-	 * <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 java.lang.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 getHeaders(String locale);
-
-	/**
-	 * Returns the symbolic name of this bundle as specified by its
-	 * <code>Bundle-SymbolicName</code> manifest header. The name must be
-	 * unique, it is recommended to use a reverse domain name naming convention
-	 * like that used for java packages. If this bundle does not have a
-	 * specified symbolic name then <code>null</code> is returned.
-	 * 
-	 * <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.
-	 * @since 1.3
-	 */
-	public String getSymbolicName();
-
-	/**
-	 * Loads the specified class using this bundle's classloader.
-	 * 
-	 * <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 java.lang.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 java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @since 1.3
-	 */
-	public Class loadClass(String name) throws ClassNotFoundException;
-
-	/**
-	 * Find the specified resources from this bundle.
-	 * 
-	 * 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.
-	 * 
-	 * @param name The name of the resource. See
-	 *        <code>java.lang.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.
-	 * 
-	 * @since 1.3
-	 * @throws java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @throws java.io.IOException If there is an I/O error.
-	 */
-	public Enumeration 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 classloader 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;.
-	 * 
-	 * @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 java.lang.IllegalStateException If this bundle has been
-	 *         uninstalled.
-	 * @since 1.3
-	 */
-	public Enumeration getEntryPaths(String path);
-
-	/**
-	 * Returns a URL to the entry at the specified path in this bundle. This
-	 * bundle's classloader 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.
-	 * 
-	 * @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 java.lang.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
-	 * classloader 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>
-	 * 
-	 * @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 and it supports substring matching, 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.
-	 * @since 1.3
-	 */
-	public Enumeration 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 java.lang.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();
-}
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 a3344e6..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleActivator.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/BundleActivator.java,v 1.14 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.14 $
- */
-
-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 java.lang.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 java.lang.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 c7d1768..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleContext.java
+++ /dev/null
@@ -1,825 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/BundleContext.java,v 1.22 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.22 $
- */
-
-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>
-	 * The Framework defines the following standard property keys:
-	 * </p>
-	 * <ul>
-	 * <li>{@link Constants#FRAMEWORK_VERSION} - The OSGi Framework version.
-	 * </li>
-	 * <li>{@link Constants#FRAMEWORK_VENDOR} - The Framework implementation
-	 * vendor.</li>
-	 * <li>{@link Constants#FRAMEWORK_LANGUAGE} - The language being used. See
-	 * ISO 639 for possible values.</li>
-	 * <li>{@link Constants#FRAMEWORK_OS_NAME} - The host computer operating
-	 * system.</li>
-	 * <li>{@link Constants#FRAMEWORK_OS_VERSION} - The host computer
-	 * operating system version number.</li>
-	 * <li>{@link Constants#FRAMEWORK_PROCESSOR} - The host computer processor
-	 * name.</li>
-	 * </ul>
-	 * <p>
-	 * All bundles must have permission to read these properties.
-	 * 
-	 * <p>
-	 * Note: The last four standard properties are used by the
-	 * {@link Constants#BUNDLE_NATIVECODE} <code>Manifest</code> header's
-	 * matching algorithm for selecting native language 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.
-	 * @throws java.lang.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 java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public Bundle getBundle();
-
-	/**
-	 * Installs a bundle from the specified location string. A bundle is
-	 * obtained from <code>location</code> as interpreted by the Framework in
-	 * an implementation dependent manner.
-	 * <p>
-	 * Every installed bundle is uniquely identified by its location string,
-	 * 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 string is already
-	 * installed, the <code>Bundle</code> object for that bundle is returned.
-	 * 
-	 * <li>The bundle's content is read from the location string. If this
-	 * fails, a {@link BundleException} is thrown.
-	 * 
-	 * <li>The bundle's <code>Bundle-NativeCode</code> dependencies are
-	 * resolved. If this fails, a <code>BundleException</code> 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>If the bundle has declared an Bundle-RequiredExecutionEnvironment
-	 * header, then the listed execution environments must be verified against
-	 * the installed execution environments. If none of the listed execution 
-	 * environments match an installed execution environment, a
-	 * <code>BundleException</code> must be 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 {<code>INSTALLED</code>,<code>RESOLVED</code>}.
-	 * <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.
-	 * @return The <code>Bundle</code> object of the installed bundle.
-	 * @throws BundleException If the installation failed.
-	 * @throws java.lang.SecurityException If the caller does not have the
-	 *         appropriate <code>AdminPermission[installed bundle,LIFECYCLE]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 * @throws java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 */
-	public Bundle installBundle(String location)
-			throws BundleException;
-
-	/**
-	 * Installs a bundle from the specified <code>InputStream</code> object.
-	 * 
-	 * <p>
-	 * This method performs all of the steps listed in
-	 * <code>BundleContext.installBundle(String location)</code>, except that
-	 * the bundle's content will be read from the <code>InputStream</code>
-	 * object. The location identifier string specified will be used as the
-	 * identity of the bundle.
-	 * 
-	 * <p>
-	 * This method must always close the <code>InputStream</code> object, even
-	 * if an exception is thrown.
-	 * 
-	 * @param location The location identifier of the bundle to install.
-	 * @param input The <code>InputStream</code> object from which this bundle
-	 *        will be read.
-	 * @return The <code>Bundle</code> object of the installed bundle.
-	 * @throws BundleException If the provided stream cannot be read or the
-	 *         installation failed.
-	 * @throws java.lang.SecurityException If the caller does not have the
-	 *         appropriate <code>AdminPermission[installed bundle,LIFECYCLE]</code>, and the
-	 *         Java Runtime Environment supports permissions.
-	 * @throws java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @see #installBundle(java.lang.String)
-	 */
-	public Bundle installBundle(String location, InputStream input)
-			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 java.lang.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 java.lang.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 java.lang.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 java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @throws java.lang.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 java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @throws java.lang.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 java.lang.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 java.lang.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
-	 * 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 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 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 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(java.lang.String[], java.lang.Object,
-	 * java.util.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 strings,
-	 * 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 java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @see #registerService(java.lang.String[], java.lang.Object,
-	 *      java.util.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
-	 * 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>ServiceReference</code> objects:
-	 * <ol>
-	 * <li>If the filter string is not <code>null</code>, the filter string
-	 * is parsed and the set <code>ServiceReference</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>ServiceReference</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>ServiceReference</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>ServiceReference</code>
-	 * object, if any call to
-	 * {@link ServiceReference#isAssignableTo(Bundle, String)} returns
-	 * <code>false</code>, then it is removed from the set of
-	 * <code>ServiceReference</code> objects.
-	 * <li>An array of the remaining <code>ServiceReference</code> objects is
-	 * returned.
-	 * </ol>
-	 * 
-	 * @param clazz The class name with which the service was registered or
-	 *        <code>null</code> for all services.
-	 * @param filter The filter criteria.
-	 * @return An array of <code>ServiceReference</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 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
-	 * criteria.
-	 * 
-	 * <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>ServiceReference</code> objects:
-	 * <ol>
-	 * <li>If the filter string is not <code>null</code>, the filter string
-	 * is parsed and the set <code>ServiceReference</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>ServiceReference</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>ServiceReference</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>An array of the remaining <code>ServiceReference</code> objects is
-	 * returned.
-	 * </ol>
-	 * 
-	 * @param clazz The class name with which the service was registered or
-	 *        <code>null</code> for all services.
-	 * @param filter The filter criteria.
-	 * @return An array of <code>ServiceReference</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.
-	 * @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>
-	 * 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 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.
-	 * @see #getServiceReferences(String, String)
-	 */
-	public ServiceReference getServiceReference(String clazz);
-
-	/**
-	 * 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(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} 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 or does not implement the classes under which it
-	 *         was registered in the case of a <code>ServiceFactory</code>.
-	 * @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(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 java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * @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 java.lang.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 java.lang.IllegalStateException If this BundleContext is no
-	 *         longer valid.
-	 * 
-	 * @since 1.1
-	 * @see "Framework specification for a description of the filter string syntax."
-	 * @see FrameworkUtil#createFilter(String)
-	 */
-	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 29f6fa0..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleEvent.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/BundleEvent.java,v 1.19 2007/02/20 00:14:12 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.19 $
- */
-
-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.
-	 * <p>
-	 * The value of <code>INSTALLED</code> is 0x00000001.
-	 * 
-	 * @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.
-	 * <p>
-	 * The value of <code>STARTED</code> is 0x00000002.
-	 * 
-	 * @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.
-	 * <p>
-	 * The value of <code>STOPPED</code> is 0x00000004.
-	 * 
-	 * @see Bundle#stop()
-	 */
-	public final static int	STOPPED				= 0x00000004;
-
-	/**
-	 * The bundle has been updated.
-	 * <p>
-	 * The value of <code>UPDATED</code> is 0x00000008.
-	 * 
-	 * @see Bundle#update()
-	 */
-	public final static int	UPDATED				= 0x00000008;
-
-	/**
-	 * The bundle has been uninstalled.
-	 * <p>
-	 * The value of <code>UNINSTALLED</code> is 0x00000010.
-	 * 
-	 * @see Bundle#uninstall
-	 */
-	public final static int	UNINSTALLED			= 0x00000010;
-
-	/**
-	 * The bundle has been resolved.
-	 * <p>
-	 * The value of <code>RESOLVED</code> is 0x00000020.
-	 * 
-	 * @see Bundle#RESOLVED
-	 * @since 1.3
-	 */
-	public final static int	RESOLVED			= 0x00000020;
-
-	/**
-	 * The bundle has been unresolved.
-	 * <p>
-	 * The value of <code>UNRESOLVED</code> is 0x00000040.
-	 * 
-	 * @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.
-	 * <p>
-	 * The value of <code>STARTING</code> is 0x00000080.
-	 * 
-	 * @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.
-	 * <p>
-	 * The value of <code>STOPPING</code> is 0x00000100.
-	 * 
-	 * @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.
-	 * <p>
-	 * The value of <code>LAZY_ACTIVATION</code> is 0x00000200.
-	 * 
-	 * @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 2203e0f..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleException.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/BundleException.java,v 1.15 2006/07/11 13:15:54 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2006). 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>
- * <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.
- * 
- * <p>
- * This exception is updated to conform to the general purpose exception
- * chaining mechanism.
- * 
- * @version $Revision: 1.15 $
- */
-
-public class BundleException extends Exception {
-	static final long	serialVersionUID	= 3571095144220455665L;
-	/**
-	 * Nested exception.
-	 */
-	private final Throwable	cause;
-
-	/**
-	 * Creates a <code>BundleException</code> that wraps another exception.
-	 * 
-	 * @param msg The associated message.
-	 * @param cause The cause of this exception.
-	 */
-	public BundleException(String msg, Throwable cause) {
-		super(msg);
-		this.cause = cause;
-	}
-
-	/**
-	 * Creates a <code>BundleException</code> object with the specified
-	 * message.
-	 * 
-	 * @param msg The message.
-	 */
-	public BundleException(String msg) {
-		super(msg);
-		this.cause = null;
-	}
-
-	/**
-	 * Returns any nested exceptions included in this exception.
-	 * 
-	 * <p>
-	 * This method predates the general purpose exception chaining mechanism.
-	 * The {@link #getCause()} method is now the preferred means of obtaining
-	 * this information.
-	 * 
-	 * @return The nested exception; <code>null</code> if there is no nested
-	 *         exception.
-	 */
-	public Throwable getNestedException() {
-		return 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 specified.
-	 * @since 1.3
-	 */
-	public Throwable getCause() {
-		return cause;
-	}
-
-	/**
-	 * The cause of this exception can only be set when constructed.
-	 * 
-	 * @param cause 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.
-	 * @since 1.3
-	 */
-	public Throwable initCause(Throwable cause) {
-		throw new IllegalStateException();
-	}
-}
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 e9bc6d4..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundleListener.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/BundleListener.java,v 1.13 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.13 $
- */
-
-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 c313bf7..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/BundlePermission.java
+++ /dev/null
@@ -1,584 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/BundlePermission.java,v 1.16 2007/02/20 00:06:02 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2007). 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.security.*;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-/**
- * 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.
- * <p>
- * For example:
- * 
- * <pre>
- * <code>
- * org.osgi.example.bundle
- * </code>
- * </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
- * @version $Revision: 1.16 $
- */
-
-public final class BundlePermission extends BasicPermission {
-
-	private static final long	serialVersionUID	= 3257846601685873716L;
-
-	/**
-	 * The action string <code>provide</code>.
-	 */
-	public final static String	PROVIDE				= "provide";
-
-	/**
-	 * The action string <code>require</code>.
-	 */
-	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;
-	private final static int	ACTION_NONE			= 0;
-	/**
-	 * The actions mask.
-	 */
-	private transient int		action_mask			= ACTION_NONE;
-
-	/**
-	 * The actions in canonical form.
-	 * 
-	 * @serial
-	 */
-	private 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, getMask(actions));
-	}
-
-	/**
-	 * Bundle private constructor used by BundlePermissionCollection.
-	 * 
-	 * @param symbolicName the bundle symbolic name
-	 * @param mask the action mask
-	 */
-	BundlePermission(String symbolicName, int mask) {
-		super(symbolicName);
-		init(mask);
-	}
-
-	/**
-	 * Called by constructors and when deserialized.
-	 * 
-	 * @param mask
-	 */
-	private void init(int mask) {
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-
-		action_mask = mask;
-	}
-
-	/**
-	 * Parse action string into action mask.
-	 * 
-	 * @param actions Action string.
-	 * @return action mask.
-	 */
-	private static int getMask(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 target permission to interrogate.
-	 * @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) {
-			BundlePermission target = (BundlePermission) p;
-
-			return (((action_mask & target.action_mask) == target.action_mask) && super
-					.implies(p));
-		}
-
-		return (false);
-	}
-
-	/**
-	 * 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.
-	 * @return Canonical string representation of the <code>BundlePermission</code> actions.
-	 */
-
-	public String getActions() {
-		if (actions == 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 = sb.toString();
-		}
-
-		return (actions);
-	}
-
-	/**
-	 * 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 p = (BundlePermission) obj;
-
-		return ((action_mask == p.action_mask) && getName().equals(p.getName()));
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return A hash code value for this object.
-	 */
-
-	public int hashCode() {
-		return (getName().hashCode() ^ getActions().hashCode());
-	}
-
-	/**
-	 * Returns the current action mask.
-	 * <p>
-	 * Used by the BundlePermissionCollection class.
-	 * 
-	 * @return Current action mask.
-	 */
-	int getMask() {
-		return (action_mask);
-	}
-
-	/**
-	 * 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();
-		init(getMask(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 {
-
-	/**
-	 * Comment for <code>serialVersionUID</code>
-	 */
-	private static final long	serialVersionUID	= 3258407326846433079L;
-
-	/**
-	 * Table of permissions.
-	 * 
-	 * @serial
-	 */
-	private Hashtable			permissions;
-
-	/**
-	 * Boolean saying if "*" is in the collection.
-	 * 
-	 * @serial
-	 */
-	private boolean				all_allowed;
-
-	/**
-	 * Create an empty BundlePermissions object.
-	 * 
-	 */
-
-	public BundlePermissionCollection() {
-		permissions = new Hashtable();
-		all_allowed = false;
-	}
-
-	/**
-	 * Adds a permission to the <code>BundlePermission</code> objects. The key
-	 * for the hash is the symbolic name.
-	 * 
-	 * @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(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");
-
-		BundlePermission bp = (BundlePermission) permission;
-		String name = bp.getName();
-
-		BundlePermission existing = (BundlePermission) permissions.get(name);
-
-		if (existing != null) {
-			int oldMask = existing.getMask();
-			int newMask = bp.getMask();
-			if (oldMask != newMask) {
-				permissions.put(name, new BundlePermission(name, oldMask
-						| newMask));
-
-			}
-		}
-		else {
-			permissions.put(name, permission);
-		}
-
-		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(Permission permission) {
-		if (!(permission instanceof BundlePermission))
-			return (false);
-
-		BundlePermission bp = (BundlePermission) permission;
-		BundlePermission x;
-
-		int desired = bp.getMask();
-		int effective = 0;
-
-		// short circuit if the "*" Permission was added
-		if (all_allowed) {
-			x = (BundlePermission) permissions.get("*");
-			if (x != null) {
-				effective |= x.getMask();
-				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.*
-
-		String name = bp.getName();
-
-		x = (BundlePermission) permissions.get(name);
-
-		if (x != null) {
-			// we have a direct hit!
-			effective |= x.getMask();
-			if ((effective & desired) == desired)
-				return (true);
-		}
-
-		// work our way up the tree...
-		int last, offset;
-
-		offset = name.length() - 1;
-
-		while ((last = name.lastIndexOf(".", offset)) != -1) {
-
-			name = name.substring(0, last + 1) + "*";
-			x = (BundlePermission) permissions.get(name);
-
-			if (x != null) {
-				effective |= x.getMask();
-				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 Enumeration elements() {
-		return (permissions.elements());
-	}
-}
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 cd40557..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Configurable.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/Configurable.java,v 1.12 2007/02/20 00:07:22 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.12 $
- */
-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 java.lang.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 0ee3a33..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Constants.java
+++ /dev/null
@@ -1,1109 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/Constants.java,v 1.32 2007/02/20 00:07:22 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2000, 2007). 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>java.lang.String</code>, unless otherwise indicated.
- * 
- * @since 1.1
- * @version $Revision: 1.32 $
- */
-
-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 (named &quot;Bundle-Category&quot;) 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 (named &quot;Bundle-ClassPath&quot;) 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 (named &quot;Bundle-Copyright&quot;) 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 (named &quot;Bundle-Description&quot;) 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 (named &quot;Bundle-Name&quot;) 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 (named &quot;Bundle-NativeCode&quot;) 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 (named &quot;Export-Package&quot;) 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 (named &quot;Export-Service&quot;) 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 (named &quot;Import-Package&quot;) 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 (named &quot;DynamicImport-Package&quot;) 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 (named &quot;Import-Service&quot;) 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 (named &quot;Bundle-Vendor&quot;) 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 (named &quot;Bundle-Version&quot;) 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 (named &quot;Bundle-DocURL&quot;) 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 (named &quot;Bundle-ContactAddress&quot;) 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 (named &quot;Bundle-Activator&quot;)
-	 * 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 (named &quot;Bundle-UpdateLocation&quot;) 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 (named &quot;specification-version&quot;)
-	 * 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 (named &quot;processor&quot;) 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>
-	 */
-	public static final String	BUNDLE_NATIVECODE_PROCESSOR				= "processor";
-
-	/**
-	 * Manifest header attribute (named &quot;osname&quot;) 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>
-	 */
-	public static final String	BUNDLE_NATIVECODE_OSNAME				= "osname";
-
-	/**
-	 * Manifest header attribute (named &quot;osversion&quot;) 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>
-	 */
-	public static final String	BUNDLE_NATIVECODE_OSVERSION				= "osversion";
-
-	/**
-	 * Manifest header attribute (named &quot;language&quot;) 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>
-	 */
-	public static final String	BUNDLE_NATIVECODE_LANGUAGE				= "language";
-
-	/**
-	 * Manifest header (named &quot;Bundle-RequiredExecutionEnvironment&quot;)
-	 * 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";
-
-	/*
-	 * Framework environment properties.
-	 */
-
-	/**
-	 * Framework environment property (named
-	 * &quot;org.osgi.framework.version&quot;) 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 (named
-	 * &quot;org.osgi.framework.vendor&quot;) 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 (named
-	 * &quot;org.osgi.framework.language&quot;) 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 (named
-	 * &quot;org.osgi.framework.os.name&quot;) 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 (named
-	 * &quot;org.osgi.framework.os.version&quot;) 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 (named
-	 * &quot;org.osgi.framework.processor&quot;) 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 (named
-	 * &quot;org.osgi.framework.executionenvironment&quot;) 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 (named
-	 * &quot;org.osgi.framework.bootdelegation&quot;) identifying packages for
-	 * which the Framework must delegate class loading to the boot class path.
-	 * <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_BOOTDELEGATION				= "org.osgi.framework.bootdelegation";
-
-	/**
-	 * Framework environment property (named
-	 * &quot;org.osgi.framework.system.packages&quot;) identifying package which
-	 * the system bundle must export.
-	 * <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 (named
-	 * &quot;org.osgi.supports.framework.extension&quot;) identifying whether
-	 * the Framework supports framework extension bundles. 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 (named
-	 * &quot;org.osgi.supports.bootclasspath.extension&quot;) identifying
-	 * whether the Framework supports bootclasspath extension bundles. 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 (named
-	 * &quot;org.osgi.supports.framework.fragment&quot;) identifying whether the
-	 * Framework supports fragment bundles. 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 (named
-	 * &quot;org.osgi.supports.framework.requirebundle&quot;) identifying
-	 * whether the Framework supports the <code>Require-Bundle</code> manifest
-	 * header. 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";
-
-	/*
-	 * Service properties.
-	 */
-
-	/**
-	 * Service property (named &quot;objectClass&quot;) identifying all of the
-	 * class names under which a service was registered in the Framework (of
-	 * type <code>java.lang.String[]</code>).
-	 * 
-	 * <p>
-	 * This property is set by the Framework when a service is registered.
-	 */
-	public static final String	OBJECTCLASS								= "objectClass";
-
-	/**
-	 * Service property (named &quot;service.id&quot;) identifying a service's
-	 * registration number (of type <code>java.lang.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 (named &quot;service.pid&quot;) 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.
-	 * 
-	 * <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 (named &quot;service.ranking&quot;) identifying a
-	 * service's ranking number (of type <code>java.lang.Integer</code>).
-	 * 
-	 * <p>
-	 * This property may be supplied in the <code>properties
-	 * Dictionary</code>
-	 * object passed to the <code>BundleContext.registerService</code> method.
-	 * 
-	 * <p>
-	 * The service ranking is used by the Framework to determine the <i>default
-	 * </i> service to be returned from a call to the
-	 * {@link BundleContext#getServiceReference} method: If more than one
-	 * service implements the specified class, the <code>ServiceReference</code>
-	 * object with the highest ranking is returned.
-	 * 
-	 * <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>java.lang.Integer</code>, it is deemed to have a ranking value
-	 * of zero.
-	 */
-	public static final String	SERVICE_RANKING							= "service.ranking";
-
-	/**
-	 * Service property (named &quot;service.vendor&quot;) 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 (named &quot;service.description&quot;) 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";
-
-	/**
-	 * Manifest header (named &quot;Bundle-SymbolicName&quot;) 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 (named &quot;singleton&quot;) 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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	SINGLETON_DIRECTIVE						= "singleton";
-
-	/**
-	 * Manifest header directive (named &quot;fragment-attachment&quot;)
-	 * identifying if and when a fragment may attach to a host bundle. The
-	 * default value is <code>&quot;always&quot;</code>.
-	 * 
-	 * <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 Constants#FRAGMENT_ATTACHMENT_ALWAYS
-	 * @see Constants#FRAGMENT_ATTACHMENT_RESOLVETIME
-	 * @see Constants#FRAGMENT_ATTACHMENT_NEVER
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_DIRECTIVE			= "fragment-attachment";
-
-	/**
-	 * Manifest header directive value (named &quot;always&quot;) 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 Constants#FRAGMENT_ATTACHMENT_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_ALWAYS				= "always";
-
-	/**
-	 * Manifest header directive value (named &quot;resolve-time&quot;)
-	 * 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 Constants#FRAGMENT_ATTACHMENT_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_RESOLVETIME			= "resolve-time";
-
-	/**
-	 * Manifest header directive value (named &quot;never&quot;) 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 Constants#FRAGMENT_ATTACHMENT_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	FRAGMENT_ATTACHMENT_NEVER				= "never";
-
-	/**
-	 * Manifest header (named &quot;Bundle-Localization&quot;) 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 (named &quot;Require-Bundle&quot;) 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 (named &quot;bundle-version&quot;) identifying
-	 * a range of versions for a bundle specified in the Require-Bundle or
-	 * Fragment-Host 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.
-	 * 
-	 * @since 1.3
-	 */
-	public static final String	BUNDLE_VERSION_ATTRIBUTE				= "bundle-version";
-
-	/**
-	 * Manifest header (named &quot;Fragment-Host&quot;) 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 (named &quot;selection-filter&quot;) 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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	SELECTION_FILTER_ATTRIBUTE				= "selection-filter";
-
-	/**
-	 * Manifest header (named &quot;Bundle-ManifestVersion&quot;) 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 R4, or later, syntax must specify a
-	 * bundle manifest version.
-	 * <p>
-	 * The bundle manifest version defined by OSGi R4 or, more specifically, by
-	 * V1.3 of the OSGi Framework 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 (named &quot;version&quot;) 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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	VERSION_ATTRIBUTE						= "version";
-
-	/**
-	 * Manifest header attribute (named &quot;bundle-symbolic-name&quot;)
-	 * 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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	BUNDLE_SYMBOLICNAME_ATTRIBUTE			= "bundle-symbolic-name";
-
-	/**
-	 * Manifest header directive (named &quot;resolution&quot;) identifying the
-	 * resolution type in the Import-Package or Require-Bundle manifest header.
-	 * 
-	 * <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 Constants#RESOLUTION_MANDATORY
-	 * @see Constants#RESOLUTION_OPTIONAL
-	 * @since 1.3
-	 */
-	public final static String	RESOLUTION_DIRECTIVE					= "resolution";
-
-	/**
-	 * Manifest header directive value (named &quot;mandatory&quot;) 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 Constants#RESOLUTION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	RESOLUTION_MANDATORY					= "mandatory";
-
-	/**
-	 * Manifest header directive value (named &quot;optional&quot;) 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 Constants#RESOLUTION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	RESOLUTION_OPTIONAL						= "optional";
-
-	/**
-	 * Manifest header directive (named &quot;uses&quot;) 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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	USES_DIRECTIVE							= "uses";
-
-	/**
-	 * Manifest header directive (named &quot;include&quot;).
-	 * <p>
-	 * This directive is used by the Import-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 Import-Package manifest
-	 * header like:
-	 * 
-	 * <pre>
-	 *     Import-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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	INCLUDE_DIRECTIVE						= "include";
-
-	/**
-	 * Manifest header directive (named &quot;exclude&quot;).
-	 * <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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	EXCLUDE_DIRECTIVE						= "exclude";
-
-	/**
-	 * Manifest header directive (named &quot;mandatory&quot;) 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>
-	 * 
-	 * @since 1.3
-	 */
-	public final static String	MANDATORY_DIRECTIVE						= "mandatory";
-
-	/**
-	 * Manifest header directive (named &quot;visibility&quot;) identifying the
-	 * visibility of a reqiured bundle in the Require-Bundle manifest header.
-	 * 
-	 * <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 Constants#VISIBILITY_PRIVATE
-	 * @see Constants#VISIBILITY_REEXPORT
-	 * @since 1.3
-	 */
-	public final static String	VISIBILITY_DIRECTIVE					= "visibility";
-
-	/**
-	 * Manifest header directive value (named &quot;private&quot;) 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 Constants#VISIBILITY_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	VISIBILITY_PRIVATE						= "private";
-
-	/**
-	 * Manifest header directive value (named &quot;reexport&quot;) 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 Constants#VISIBILITY_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	VISIBILITY_REEXPORT						= "reexport";
-	/**
-	 * Manifest header directive (named &quot;extension&quot;) 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 Constants#EXTENSION_FRAMEWORK
-	 * @see Constants#EXTENSION_BOOTCLASSPATH
-	 * @since 1.3
-	 */
-	public final static String	EXTENSION_DIRECTIVE						= "extension";
-
-	/**
-	 * Manifest header directive value (named &quot;framework&quot;) 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 Constants#EXTENSION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	EXTENSION_FRAMEWORK						= "framework";
-
-	/**
-	 * Manifest header directive value (named &quot;bootclasspath&quot;)
-	 * 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 Constants#EXTENSION_DIRECTIVE
-	 * @since 1.3
-	 */
-	public final static String	EXTENSION_BOOTCLASSPATH					= "bootclasspath";
-
-	/**
-	 * Manifest header (named &quot;Bundle-ActivationPolicy&quot;) 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 Constants#ACTIVATION_LAZY
-	 * @see Constants#INCLUDE_DIRECTIVE
-	 * @see Constants#EXCLUDE_DIRECTIVE
-	 */
-	public final static String	BUNDLE_ACTIVATIONPOLICY					= "Bundle-ActivationPolicy";
-
-	/**
-	 * Bundle activation policy (named &quot;lazy&quot;) 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 requestor.
-	 * <p>
-	 * The activation policy value is specified as in the
-	 * Bundle-ActivationPolicy manifest header like:
-	 * 
-	 * <pre>
-	 *       Bundle-ActivationPolicy: lazy
-	 * </pre>
-	 * 
-	 * @see Constants#BUNDLE_ACTIVATIONPOLICY
-	 * @see Bundle#start(int)
-	 * @see Bundle#START_ACTIVATION_POLICY
-	 * @since 1.4
-	 */
-	public final static String	ACTIVATION_LAZY							= "lazy";
-
-}
\ No newline at end of file
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 41b7cfa..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Filter.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/Filter.java,v 1.16 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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> objects can be created by calling
- * {@link BundleContext#createFilter} with the chosen filter string.
- * <p>
- * A <code>Filter</code> object can be used numerous times to determine if the
- * match argument matches the filter string that was used to create the
- * <code>Filter</code> object.
- * <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: 1.16 $
- */
-public interface Filter {
-	/**
-	 * 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);
-
-	/**
-	 * 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);
-
-	/**
-	 * 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();
-
-	/**
-	 * 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);
-
-	/**
-	 * 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();
-
-	/**
-	 * 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);
-}
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 c3da54f..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkEvent.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/FrameworkEvent.java,v 1.15 2007/02/20 00:14:12 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2004, 2007). 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: 1.15 $
- */
-
-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 intitial start level.
-	 * 
-	 * <p>
-	 * The value of <code>STARTED</code> is 0x00000001.
-	 * 
-	 * @see "<code>StartLevel</code>"
-	 */
-	public final static int	STARTED				= 0x00000001;
-
-	/**
-	 * An error has occurred.
-	 * 
-	 * <p>
-	 * There was an error associated with a bundle.
-	 * 
-	 * <p>
-	 * The value of <code>ERROR</code> is 0x00000002.
-	 */
-	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.
-	 * 
-	 * <p>
-	 * The value of <code>PACKAGES_REFRESHED</code> is 0x00000004.
-	 * 
-	 * @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.
-	 * 
-	 * <p>
-	 * The value of <code>STARTLEVEL_CHANGED</code> is 0x00000008.
-	 * 
-	 * @since 1.2
-	 * @see "<code>StartLevel</code>"
-	 */
-	public final static int	STARTLEVEL_CHANGED	= 0x00000008;
-
-	/**
-	 * A warning has occurred.
-	 * 
-	 * <p>
-	 * There was a warning associated with a bundle.
-	 * 
-	 * <p>
-	 * The value of <code>WARNING</code> is 0x00000010.
-	 * 
-	 * @since 1.3
-	 */
-	public final static int	WARNING				= 0x00000010;
-
-	/**
-	 * An informational event has occurred.
-	 * 
-	 * <p>
-	 * There was an informational event associated with a bundle.
-	 * 
-	 * <p>
-	 * The value of <code>INFO</code> is 0x00000020.
-	 * 
-	 * @since 1.3
-	 */
-	public final static int	INFO				= 0x00000020;
-
-	/**
-	 * 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}
-	 * </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 29c934d..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkListener.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/FrameworkListener.java,v 1.12 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.12 $
- */
-
-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 37d74db..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * $Header: /cvsroot/eclipse/org.eclipse.osgi/osgi/src/org/osgi/framework/FrameworkUtil.java,v 1.7 2006/10/18 15:32:18 twatson Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2007). 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 org.eclipse.osgi.framework.internal.core.FilterImpl;
-
-/**
- * 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: 1.10 $
- */
-public class FrameworkUtil {
-	/*
-	 * NOTE: A framework implementor may also choose to replace this class in
-	 * their distribution with a class that directly interfaces with the
-	 * framework implementation.
-	 */
-
-	/**
-	 * FrameworkUtil objects may not be constructed. 
-	 */
-	private FrameworkUtil() {}
-	
-	/**
-	 * 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.
-	 * 
-	 * @see Filter
-	 */
-	public static Filter createFilter(String filter)
-			throws InvalidSyntaxException {
-		return new FilterImpl(filter);
-	}
-}
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 b69c120..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/InvalidSyntaxException.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/InvalidSyntaxException.java,v 1.16 2007/02/20 00:15:00 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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 is updated to conform to the general purpose exception
- * chaining mechanism.
- * 
- * @version $Revision: 1.16 $
- */
-
-public class InvalidSyntaxException extends Exception {
-	static final long		serialVersionUID	= -4295194420816491875L;
-	/**
-	 * The invalid filter string.
-	 */
-	private final String	filter;
-	/**
-	 * Nested exception.
-	 */
-	private final Throwable	cause;
-
-	/**
-	 * 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;
-		this.cause = null;
-	}
-
-	/**
-	 * 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);
-		this.filter = filter;
-		this.cause = cause;
-	}
-
-	/**
-	 * 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 specified when this exception was created.
-	 * 
-	 * @return The cause of this exception or <code>null</code> if no cause
-	 *         was specified.
-	 * @since 1.3
-	 */
-	public Throwable getCause() {
-		return cause;
-	}
-
-	/**
-	 * The cause of this exception can only be set when constructed.
-	 * 
-	 * @param cause 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.
-	 * @since 1.3
-	 */
-	public Throwable initCause(Throwable cause) {
-		throw new IllegalStateException();
-	}
-}
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 762bce1..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/PackagePermission.java
+++ /dev/null
@@ -1,541 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/PackagePermission.java,v 1.14 2006/06/16 16:31:18 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2006). 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.security.*;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-/**
- * 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>
- * <code>
- * org.osgi.service.http
- * </code>
- * </pre>
- * 
- * <p>
- * <code>PackagePermission</code> has two actions: <code>EXPORT</code> and
- * <code>IMPORT</code>. The <code>EXPORT</code> action implies the
- * <code>IMPORT</code> action.
- * 
- * @version $Revision: 1.14 $
- */
-
-public final class PackagePermission extends BasicPermission {
-	static final long			serialVersionUID	= -5107705877071099135L;
-	/**
-	 * The action string <code>export</code>.
-	 */
-	public final static String	EXPORT				= "export";
-
-	/**
-	 * 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;
-	private final static int	ACTION_NONE			= 0;
-	/**
-	 * The actions mask.
-	 */
-	private transient int		action_mask			= ACTION_NONE;
-
-	/**
-	 * The actions in canonical form.
-	 * 
-	 * @serial
-	 */
-	private String				actions				= null;
-
-	/**
-	 * Defines the authority to import and/or export a package within the OSGi
-	 * environment.
-	 * <p>
-	 * The name is specified as a normal Java package name: a dot-separated
-	 * string. Wildcards may be used. For example:
-	 * 
-	 * <pre>
-	 * org.osgi.service.http
-	 * javax.servlet.*
-	 * *
-	 * </pre>
-	 * 
-	 * <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.
-	 * @param actions <code>EXPORT</code>,<code>IMPORT</code> (canonical
-	 *        order).
-	 */
-
-	public PackagePermission(String name, String actions) {
-		this(name, getMask(actions));
-	}
-
-	/**
-	 * Package private constructor used by PackagePermissionCollection.
-	 * 
-	 * @param name class name
-	 * @param mask action mask
-	 */
-	PackagePermission(String name, int mask) {
-		super(name);
-		init(mask);
-	}
-
-	/**
-	 * Called by constructors and when deserialized.
-	 * 
-	 * @param mask action mask
-	 */
-	private void init(int mask) {
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-
-		action_mask = mask;
-	}
-
-	/**
-	 * Parse action string into action mask.
-	 * 
-	 * @param actions Action string.
-	 * @return action mask.
-	 */
-	private static int getMask(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 {
-					// 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);
-	}
-
-	/**
-	 * 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 target permission to interrogate.
-	 * @return <code>true</code> if the specified
-	 *         <code>PackagePermission</code> action is implied by this
-	 *         object; <code>false</code> otherwise.
-	 */
-
-	public boolean implies(Permission p) {
-		if (p instanceof PackagePermission) {
-			PackagePermission target = (PackagePermission) p;
-
-			return (((action_mask & target.action_mask) == target.action_mask) && super
-					.implies(p));
-		}
-
-		return (false);
-	}
-
-	/**
-	 * Returns the canonical string representation of the
-	 * <code>PackagePermission</code> actions.
-	 * 
-	 * <p>
-	 * Always returns present <code>PackagePermission</code> actions in the
-	 * following order: <code>EXPORT</code>,<code>IMPORT</code>.
-	 * 
-	 * @return Canonical string representation of the
-	 *         <code>PackagePermission</code> actions.
-	 */
-
-	public String getActions() {
-		if (actions == null) {
-			StringBuffer sb = new StringBuffer();
-			boolean comma = false;
-
-			if ((action_mask & ACTION_EXPORT) == ACTION_EXPORT) {
-				sb.append(EXPORT);
-				comma = true;
-			}
-
-			if ((action_mask & ACTION_IMPORT) == ACTION_IMPORT) {
-				if (comma)
-					sb.append(',');
-				sb.append(IMPORT);
-			}
-
-			actions = sb.toString();
-		}
-
-		return (actions);
-	}
-
-	/**
-	 * 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 p = (PackagePermission) obj;
-
-		return ((action_mask == p.action_mask) && getName().equals(p.getName()));
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return A hash code value for this object.
-	 */
-
-	public int hashCode() {
-		return (getName().hashCode() ^ getActions().hashCode());
-	}
-
-	/**
-	 * Returns the current action mask.
-	 * <p>
-	 * Used by the PackagePermissionCollection class.
-	 * 
-	 * @return Current action mask.
-	 */
-	int getMask() {
-		return (action_mask);
-	}
-
-	/**
-	 * 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 {
-		// 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();
-		init(getMask(actions));
-	}
-}
-
-/**
- * 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.
-	 * 
-	 * @serial
-	 */
-	private Hashtable	permissions;
-
-	/**
-	 * Boolean saying if "*" is in the collection.
-	 * 
-	 * @serial
-	 */
-	private boolean		all_allowed;
-
-	/**
-	 * Create an empty PackagePermissions object.
-	 */
-
-	public PackagePermissionCollection() {
-		permissions = new Hashtable();
-		all_allowed = false;
-	}
-
-	/**
-	 * Adds a permission to the <code>PackagePermission</code> objects. The
-	 * key for the hash is the name.
-	 * 
-	 * @param permission The <code>PackagePermission</code> object to add.
-	 * 
-	 * @throws IllegalArgumentException If the permission is not a
-	 *         <code>PackagePermission</code> instance.
-	 * 
-	 * @throws SecurityException If this
-	 *         <code>PackagePermissionCollection</code> object has been marked
-	 *         read-only.
-	 */
-
-	public void add(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");
-
-		PackagePermission pp = (PackagePermission) permission;
-		String name = pp.getName();
-
-		PackagePermission existing = (PackagePermission) permissions.get(name);
-
-		if (existing != null) {
-			int oldMask = existing.getMask();
-			int newMask = pp.getMask();
-			if (oldMask != newMask) {
-				permissions.put(name, new PackagePermission(name, oldMask
-						| newMask));
-
-			}
-		}
-		else {
-			permissions.put(name, permission);
-		}
-
-		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(Permission permission) {
-		if (!(permission instanceof PackagePermission))
-			return (false);
-
-		PackagePermission pp = (PackagePermission) permission;
-		PackagePermission x;
-
-		int desired = pp.getMask();
-		int effective = 0;
-
-		// short circuit if the "*" Permission was added
-		if (all_allowed) {
-			x = (PackagePermission) permissions.get("*");
-			if (x != null) {
-				effective |= x.getMask();
-				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.*
-
-		String name = pp.getName();
-
-		x = (PackagePermission) permissions.get(name);
-
-		if (x != null) {
-			// we have a direct hit!
-			effective |= x.getMask();
-			if ((effective & desired) == desired)
-				return (true);
-		}
-
-		// work our way up the tree...
-		int last, offset;
-
-		offset = name.length() - 1;
-
-		while ((last = name.lastIndexOf(".", offset)) != -1) {
-
-			name = name.substring(0, last + 1) + "*";
-			x = (PackagePermission) permissions.get(name);
-
-			if (x != null) {
-				effective |= x.getMask();
-				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>PackagePermission</code> objects in
-	 * the container.
-	 * 
-	 * @return Enumeration of all <code>PackagePermission</code> objects.
-	 */
-
-	public Enumeration elements() {
-		return (permissions.elements());
-	}
-}
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 6f76863..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceEvent.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/ServiceEvent.java,v 1.15 2007/02/20 00:14:12 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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 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: 1.15 $
- */
-
-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.
-	 * 
-	 * <p>
-	 * The value of <code>REGISTERED</code> is 0x00000001.
-	 * 
-	 * @see BundleContext#registerService(String[],Object,java.util.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.
-	 * 
-	 * <p>
-	 * The value of <code>MODIFIED</code> is 0x00000002.
-	 * 
-	 * @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.
-	 * 
-	 * <p>
-	 * The value of UNREGISTERING is 0x00000004.
-	 * 
-	 * @see ServiceRegistration#unregister
-	 * @see BundleContext#ungetService
-	 */
-	public final static int			UNREGISTERING		= 0x00000004;
-
-	/**
-	 * 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>{@link #MODIFIED}
-	 * <li>{@link #UNREGISTERING}
-	 * </ul>
-	 * 
-	 * @return Type of service lifecycle change.
-	 */
-
-	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 1a3b3d2..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceFactory.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/ServiceFactory.java,v 1.10 2007/02/20 00:16:30 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.10 $
- */
-
-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> from 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 8d9464e..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceListener.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/ServiceListener.java,v 1.15 2007/02/20 00:16:30 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.15 $
- */
-
-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 4f10f09..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServicePermission.java
+++ /dev/null
@@ -1,508 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/ServicePermission.java,v 1.15 2007/02/20 00:06:02 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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.security.*;
-import java.util.Enumeration;
-import java.util.Hashtable;
-
-/**
- * A bundle's authority to register or get a service.
- * <ul>
- * <li>The <code>ServicePermission.REGISTER</code> action allows a bundle to
- * register a service on the specified names.
- * <li>The <code>ServicePermission.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.
- * 
- * @version $Revision: 1.15 $
- */
-
-final public class ServicePermission extends BasicPermission {
-	static final long			serialVersionUID	= -7662148639076511574L;
-	/**
-	 * The action string <code>get</code> (Value is "get").
-	 */
-	public final static String	GET					= "get";
-	/**
-	 * The action string <code>register</code> (Value is "register").
-	 */
-	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;
-	private final static int	ACTION_NONE			= 0;
-	/**
-	 * The actions mask.
-	 */
-	private transient int		action_mask			= ACTION_NONE;
-
-	/**
-	 * The actions in canonical form.
-	 * 
-	 * @serial
-	 */
-	private String				actions				= null;
-
-	/**
-	 * Create a new ServicePermission.
-	 * 
-	 * <p>
-	 * The name of the service is specified as a fully qualified class name.
-	 * 
-	 * <pre>
-	 * ClassName ::= &lt;class name&gt; | &lt;class name ending in &quot;.*&quot;&gt;
-	 * </pre>
-	 * 
-	 * Examples:
-	 * 
-	 * <pre>
-	 * org.osgi.service.http.HttpService
-	 * org.osgi.service.http.*
-	 * org.osgi.service.snmp.*
-	 * </pre>
-	 * 
-	 * <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 class name
-	 * @param actions <code>get</code>,<code>register</code> (canonical
-	 *        order)
-	 */
-
-	public ServicePermission(String name, String actions) {
-		this(name, getMask(actions));
-	}
-
-	/**
-	 * Package private constructor used by ServicePermissionCollection.
-	 * 
-	 * @param name class name
-	 * @param mask action mask
-	 */
-	ServicePermission(String name, int mask) {
-		super(name);
-
-		init(mask);
-	}
-
-	/**
-	 * Called by constructors and when deserialized.
-	 * 
-	 * @param mask action mask
-	 */
-	private void init(int mask) {
-		if ((mask == ACTION_NONE) || ((mask & ACTION_ALL) != mask)) {
-			throw new IllegalArgumentException("invalid action string");
-		}
-
-		action_mask = mask;
-	}
-
-	/**
-	 * Parse action string into action mask.
-	 * 
-	 * @param actions Action string.
-	 * @return action mask.
-	 */
-	private static int getMask(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;
-	}
-
-	/**
-	 * 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) {
-			ServicePermission target = (ServicePermission) p;
-
-			return (((action_mask & target.action_mask) == target.action_mask) && super
-					.implies(p));
-		}
-
-		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() {
-		if (actions == null) {
-			StringBuffer sb = new StringBuffer();
-			boolean comma = false;
-
-			if ((action_mask & ACTION_GET) == ACTION_GET) {
-				sb.append(GET);
-				comma = true;
-			}
-
-			if ((action_mask & ACTION_REGISTER) == ACTION_REGISTER) {
-				if (comma)
-					sb.append(',');
-				sb.append(REGISTER);
-			}
-
-			actions = sb.toString();
-		}
-
-		return (actions);
-	}
-
-	/**
-	 * 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 equalty 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 p = (ServicePermission) obj;
-
-		return ((action_mask == p.action_mask) && getName().equals(p.getName()));
-	}
-
-	/**
-	 * Returns the hash code value for this object.
-	 * 
-	 * @return Hash code value for this object.
-	 */
-
-	public int hashCode() {
-		return (getName().hashCode() ^ getActions().hashCode());
-	}
-
-	/**
-	 * Returns the current action mask. Used by the ServicePermissionCollection
-	 * object.
-	 * 
-	 * @return The actions mask.
-	 */
-	int getMask() {
-		return (action_mask);
-	}
-
-	/**
-	 * 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 {
-		// 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();
-		init(getMask(actions));
-	}
-}
-
-/**
- * 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.
-	 * 
-	 * @serial
-	 */
-	private Hashtable	permissions;
-
-	/**
-	 * Boolean saying if "*" is in the collection.
-	 * 
-	 * @serial
-	 */
-	private boolean		all_allowed;
-
-	/**
-	 * Creates an empty ServicePermissions object.
-	 */
-
-	public ServicePermissionCollection() {
-		permissions = new Hashtable();
-		all_allowed = false;
-	}
-
-	/**
-	 * Adds a permission to the <code>ServicePermission</code> objects using
-	 * the key for the hash as the name.
-	 * 
-	 * @param permission The Permission object to add.
-	 * 
-	 * @throws IllegalArgumentException If the permission is not a
-	 *         ServicePermission object.
-	 * @throws SecurityException If this
-	 *         <code>ServicePermissionCollection</code> object has been marked
-	 *         read-only.
-	 */
-
-	public void add(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");
-
-		ServicePermission sp = (ServicePermission) permission;
-		String name = sp.getName();
-
-		ServicePermission existing = (ServicePermission) permissions.get(name);
-
-		if (existing != null) {
-			int oldMask = existing.getMask();
-			int newMask = sp.getMask();
-			if (oldMask != newMask) {
-				permissions.put(name, new ServicePermission(name, oldMask
-						| newMask));
-			}
-		}
-		else {
-			permissions.put(name, permission);
-		}
-
-		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(Permission permission) {
-		if (!(permission instanceof ServicePermission))
-			return (false);
-
-		ServicePermission sp = (ServicePermission) permission;
-		ServicePermission x;
-
-		int desired = sp.getMask();
-		int effective = 0;
-
-		// short circuit if the "*" Permission was added
-		if (all_allowed) {
-			x = (ServicePermission) permissions.get("*");
-			if (x != null) {
-				effective |= x.getMask();
-				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.*
-
-		String name = sp.getName();
-
-		x = (ServicePermission) permissions.get(name);
-
-		if (x != null) {
-			// we have a direct hit!
-			effective |= x.getMask();
-			if ((effective & desired) == desired)
-				return (true);
-		}
-
-		// work our way up the tree...
-		int last, offset;
-
-		offset = name.length() - 1;
-
-		while ((last = name.lastIndexOf(".", offset)) != -1) {
-
-			name = name.substring(0, last + 1) + "*";
-			x = (ServicePermission) permissions.get(name);
-
-			if (x != null) {
-				effective |= x.getMask();
-				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 the <code>ServicePermission</code>
-	 * objects in the container.
-	 * 
-	 * @return Enumeration of all the ServicePermission objects.
-	 */
-
-	public Enumeration elements() {
-		return (permissions.elements());
-	}
-}
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 a24461c..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceReference.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/ServiceReference.java,v 1.20 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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 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: 1.20 $
- */
-
-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,java.util.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,java.util.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.
-	 * 
-	 * @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>.
-	 * @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 3239364..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/ServiceRegistration.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/ServiceRegistration.java,v 1.14 2007/02/21 16:49:05 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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: 1.14 $
- */
-
-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 java.lang.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.
-	 * 
-	 * <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 used. <code>ServiceReference</code> objects for the
-	 * service may no longer be used to get a service object for the service.
-	 * <li>A service event of type {@link ServiceEvent#UNREGISTERING} is
-	 * fired so that bundles using this service can release their
-	 * use of it.
-	 * <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 java.lang.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/SynchronousBundleListener.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SynchronousBundleListener.java
deleted file mode 100644
index e1ec5d5..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/SynchronousBundleListener.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/SynchronousBundleListener.java,v 1.15 2007/02/20 00:16:30 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2007). 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: 1.15 $
- */
-
-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 55c8268..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/framework/Version.java
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.framework/src/org/osgi/framework/Version.java,v 1.17 2007/02/20 00:07:22 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2004, 2007). 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: 1.17 $
- */
-
-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". Equivalent to calling
-	 * <code>new Version(0,0,0)</code>.
-	 */
-	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 specifed 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 major = 0;
-		int minor = 0;
-		int micro = 0;
-		String qualifier = ""; //$NON-NLS-1$
-
-		try {
-			StringTokenizer st = new StringTokenizer(version, SEPARATOR, true);
-			major = Integer.parseInt(st.nextToken());
-
-			if (st.hasMoreTokens()) {
-				st.nextToken(); // consume delimiter
-				minor = Integer.parseInt(st.nextToken());
-
-				if (st.hasMoreTokens()) {
-					st.nextToken(); // consume delimiter
-					micro = Integer.parseInt(st.nextToken());
-
-					if (st.hasMoreTokens()) {
-						st.nextToken(); // consume delimiter
-						qualifier = st.nextToken();
-
-						if (st.hasMoreTokens()) {
-							throw new IllegalArgumentException("invalid format"); //$NON-NLS-1$
-						}
-					}
-				}
-			}
-		}
-		catch (NoSuchElementException e) {
-			throw new IllegalArgumentException("invalid format"); //$NON-NLS-1$
-		}
-
-		this.major = major;
-		this.minor = minor;
-		this.micro = micro;
-		this.qualifier = qualifier;
-		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$
-		}
-		int length = qualifier.length();
-		for (int i = 0; i < length; i++) {
-			if ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-".indexOf(qualifier.charAt(i)) == -1) { //$NON-NLS-1$
-				throw new IllegalArgumentException("invalid 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() {
-		String base = major + SEPARATOR + minor + SEPARATOR + micro;
-		if (qualifier.length() == 0) { //$NON-NLS-1$
-			return base;
-		}
-		else {
-			return base + SEPARATOR + qualifier;
-		}
-	}
-
-	/**
-	 * 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/service/condpermadmin/BundleLocationCondition.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
deleted file mode 100644
index 752cdd0..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleLocationCondition.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.condpermadmin/src/org/osgi/service/condpermadmin/BundleLocationCondition.java,v 1.18 2006/06/16 16:31:37 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2006). 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.*;
-
-/**
- * Condition to test if the location of a bundle matches a pattern. Pattern
- * matching is done according to the filter string matching rules.
- * 
- * @version $Revision: 1.18 $
- */
-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 to construct the condition for. The args of
-	 *        the ConditionInfo must be a single String which specifies the
-	 *        location pattern to match against the Bundle location. Matching is
-	 *        done according to the filter string matching rules. Any '*'
-	 *        characters in the location argument are used as wildcards when
-	 *        matching bundle locations unless they are escaped with a '\'
-	 *        character.
-	 * @return Condition object for the requested condition.
-	 */
-	static public Condition getCondition(final Bundle bundle, 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)
-			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 incase
-			throw new RuntimeException("Invalid filter: " + e.getFilter());
-		}
-		Hashtable matchProps = new Hashtable(2);
-		matchProps.put("location", bundleLocation);
-		return 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(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 8abeb39..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/BundleSignerCondition.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.condpermadmin/src/org/osgi/service/condpermadmin/BundleSignerCondition.java,v 1.10 2006/06/16 16:31:37 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2006). 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.eclipse.osgi.framework.internal.core.AbstractBundle;
-import org.osgi.framework.Bundle;
-
-/**
- * Condition to test if the signer of a bundle matches 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).
- * 
- * @version $Revision: 1.10 $
- */
-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 to construct the condition for. The args of
-	 *        the ConditionInfo specify a single String specifying the chain of
-	 *        distinguished names pattern to match against the signer of the
-	 *        Bundle.
-	 * @return A Condition which checks the signers of the specified bundle.        
-	 */
-	static public Condition getCondition(Bundle bundle, 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)
-			throw new IllegalArgumentException("Illegal number of args: " + args.length);
-		// implementation specific code used here
-		AbstractBundle ab = (AbstractBundle) bundle;
-		return ab.getBundleData().matchDNChain(args[0]) ? 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 4716c0a..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/Condition.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.condpermadmin/src/org/osgi/service/condpermadmin/Condition.java,v 1.13 2006/06/16 16:31:37 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). 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.
- * 
- * @version $Revision: 1.13 $
- */
-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. This method returns <code>true</code> if the
-	 * evaluation of the Condition must be postponed until the end of the
-	 * permission check. If this method returns <code>false</code>, 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, need to be consulted.
-	 * 
-	 * @return <code>true</code> to indicate the evaluation must be postponed.
-	 *         Otherwise, <code>false</code> if the evaluation can be
-	 *         immediately performed.
-	 */
-	boolean isPostponed();
-
-	/**
-	 * Returns whether the Condition is satisfied.
-	 * 
-	 * @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.
-	 * 
-	 * @return <code>true</code> to indicate the value returned by
-	 *         {@link #isSatisfied()} can change. Otherwise, <code>false</code>
-	 *         if the value returned by {@link #isSatisfied()} will not change.
-	 */
-	boolean isMutable();
-
-	/**
-	 * Returns whether a the set of Conditions are satisfied. Although this
-	 * method is not static, it must be implemented as if it were static. All of
-	 * the passed Conditions will be of the same type and will correspond to the
-	 * class type of the object on which this method is invoked.
-	 * 
-	 * @param conditions The array of Conditions.
-	 * @param context A Dictionary object that implementors can use to track
-	 *        state. If this method is invoked multiple times in the same
-	 *        permission evaluation, 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 invocatios are needed.
-	 * @return <code>true</code> if all the Conditions are satisfied.
-	 *         Otherwise, <code>false</code> if one of the Conditions is not
-	 *         satisfied.
-	 */
-	boolean isSatisfied(Condition conditions[], Dictionary context);
-
-}
-
-/**
- * Package internal class used to define the {@link Condition#FALSE} and
- * {@link Condition#TRUE} constants.
- */
-final class BooleanCondition implements Condition {
-	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; i < conds.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 e32c4ab..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionInfo.java
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.condpermadmin/src/org/osgi/service/condpermadmin/ConditionInfo.java,v 1.13 2006/06/16 16:31:37 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). 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>
- * 
- * @version $Revision: 1.13 $
- */
-public class ConditionInfo {
-	private String		type;
-	private 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 java.lang.NullPointerException If <code>type</code> is
-	 *         <code>null</code>.
-	 */
-	public ConditionInfo(String type, String[] args) {
-		this.type = type;
-		this.args = args != null ? args : 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 java.lang.IllegalArgumentException If the
-	 *         <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 encoding format is:
-	 * 
-	 * <pre>
-	 *   [type &quot;arg0&quot; &quot;arg1&quot; ...]
-	 * </pre>
-	 * 
-	 * where <i>argN</i> are strings that are encoded for proper parsing.
-	 * Specifically, the <code>"</code>, <code>\</code>, carriage return,
-	 * and linefeed characters are escaped using <code>\"</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 "<i>arg0</i>" 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 args;
-	}
-
-	/**
-	 * 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 hash = type.hashCode();
-
-		for (int i = 0; i < args.length; i++) {
-			hash ^= args[i].hashCode();
-		}
-		return hash;
-	}
-
-	/**
-	 * 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 b35f87c..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionAdmin.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.condpermadmin/src/org/osgi/service/condpermadmin/ConditionalPermissionAdmin.java,v 1.13 2006/06/16 16:31:37 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2005, 2006). 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.
- * 
- * @version $Revision: 1.13 $
- */
-public interface ConditionalPermissionAdmin {
-	/**
-	 * Create a new Conditional Permission Info.
-	 * 
-	 * The Conditional Permission Info will be given a unique, never reused
-	 * name.
-	 * 
-	 * @param conds The Conditions that need to be satisfied to enable the
-	 *        corresponding Permissions.
-	 * @param perms The Permissions that are enable when the corresponding
-	 *        Conditions are satisfied.
-	 * @return The ConditionalPermissionInfo for the specified Conditions and
-	 *         Permissions.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 */
-	public ConditionalPermissionInfo addConditionalPermissionInfo(
-			ConditionInfo conds[], PermissionInfo perms[]);
-
-	/**
-	 * Set or create a Conditional Permission Info with a specified name.
-	 * 
-	 * 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.
-	 * 
-	 * @param name The name of the Conditional Permission Info, or
-	 *        <code>null</code>.
-	 * @param conds The Conditions that need to be satisfied to enable the
-	 *        corresponding Permissions.
-	 * @param perms The Permissions that are enable when the corresponding
-	 *        Conditions are satisfied.
-	 * @return The ConditionalPermissionInfo that for the specified name,
-	 *         Conditions and Permissions.
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 */
-	public ConditionalPermissionInfo setConditionalPermissionInfo(String name,
-			ConditionInfo conds[], PermissionInfo perms[]);
-
-	/**
-	 * Returns the Conditional Permission Infos that are currently managed by
-	 * Conditional Permission Admin. Calling
-	 * {@link ConditionalPermissionInfo#delete()} will remove the Conditional
-	 * Permission Info from Conditional Permission Admin.
-	 * 
-	 * @return An enumeration of the Conditional Permission Infos that are
-	 *         currently managed by Conditional Permission Admin.
-	 */
-	public Enumeration 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.
-	 */
-	public ConditionalPermissionInfo getConditionalPermissionInfo(String name);
-
-	/**
-	 * Returns the Access Control Context that corresponds to the specified
-	 * signers.
-	 * 
-	 * @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.
-	 */
-	public AccessControlContext getAccessControlContext(String[] signers);
-}
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 31e4d2c..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/condpermadmin/ConditionalPermissionInfo.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.condpermadmin/src/org/osgi/service/condpermadmin/ConditionalPermissionInfo.java,v 1.11 2006/06/16 16:31:37 hargrave Exp $
- *
- * Copyright (c) OSGi Alliance (2004, 2006). 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 binding of a set of Conditions to a set of Permissions. Instances of this
- * interface are obtained from the Conditional Permission Admin service.
- * 
- * @version $Revision: 1.11 $
- */
-public interface ConditionalPermissionInfo {
-	/**
-	 * 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.
-	 */
-	public ConditionInfo[] getConditionInfos();
-
-	/**
-	 * Returns the Permission Infos for the Permission in this Conditional
-	 * Permission Info.
-	 * 
-	 * @return The Permission Infos for the Permission in this Conditional
-	 *         Permission Info.
-	 */
-	public PermissionInfo[] getPermissionInfos();
-
-	/**
-	 * Removes this Conditional Permission Info from the Conditional Permission
-	 * Admin.
-	 * 
-	 * @throws SecurityException If the caller does not have
-	 *         <code>AllPermission</code>.
-	 */
-	public void delete();
-
-	/**
-	 * Returns the name of this Conditional Permission Info.
-	 * 
-	 * @return The name of this Conditional Permission Info.
-	 */
-	public String getName();
-}
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 2f3deb1..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/ExportedPackage.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.packageadmin/src/org/osgi/service/packageadmin/ExportedPackage.java,v 1.14 2006/06/16 16:31:49 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2006). 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>.
- * 
- * @version $Revision: 1.14 $
- */
-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.
-	 */
-	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 a382f39..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/PackageAdmin.java
+++ /dev/null
@@ -1,278 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.packageadmin/src/org/osgi/service/packageadmin/PackageAdmin.java,v 1.19 2006/06/16 16:31:49 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2006). 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.
- * 
- * @version $Revision: 1.19 $
- * @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.
-	 */
-	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.
-	 */
-	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.
-	 * @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.
-	 * @since 1.2
-	 */
-	public Bundle[] getFragments(Bundle bundle);
-
-	/**
-	 * Returns an array containing the host bundle to which the specified
-	 * fragment bundle is attached or <code>null</code> if the specified
-	 * bundle is not attached to a host or is not a fragment bundle. A fragment
-	 * may only be attached to a single host bundle.
-	 * 
-	 * @param bundle The bundle whose host bundle is to be returned.
-	 * @return An array containing the host bundle or <code>null</code> if the
-	 *         bundle does not have a host bundle.
-	 * @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.
-	 * @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.
-	 * @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 9755e86..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/packageadmin/RequiredBundle.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.packageadmin/src/org/osgi/service/packageadmin/RequiredBundle.java,v 1.11 2006/06/16 16:31:49 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2004, 2006). 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
- * @version $Revision: 1.11 $
- */
-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.
-	 */
-	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 reqiured 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 0588ae3..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionAdmin.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.permissionadmin/src/org/osgi/service/permissionadmin/PermissionAdmin.java,v 1.12 2006/06/16 16:31:44 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2006). 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>.
- * 
- * @version $Revision: 1.12 $
- */
-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 e0e72c7..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/permissionadmin/PermissionInfo.java
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.permissionadmin/src/org/osgi/service/permissionadmin/PermissionInfo.java,v 1.16 2006/06/16 16:31:44 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2001, 2006). 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.
- * 
- * @version $Revision: 1.16 $
- */
-public class PermissionInfo {
-	private String	type;
-	private String	name;
-	private 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 java.lang.NullPointerException if <code>type</code> is
-	 *            <code>null</code>.
-	 * @throws java.lang.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 java.lang.IllegalArgumentException If the 
-	 *            <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");
-		}
-		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");
-			}
-			this.type = 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++;
-				}
-				this.name = 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++;
-						}
-						this.actions = 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");
-		}
-	}
-
-	/**
-	 * 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 are encoded for
-	 * proper parsing. Specifically, the <code>"</code>,<code>\</code>, carriage
-	 * return, and linefeed characters are escaped using <code>\"</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 hash = type.hashCode();
-		if (name != null) {
-			hash ^= name.hashCode();
-			if (actions != null) {
-				hash ^= actions.hashCode();
-			}
-		}
-		return hash;
-	}
-
-	/**
-	 * 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 f4bfea3..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/startlevel/StartLevel.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.startlevel/src/org/osgi/service/startlevel/StartLevel.java,v 1.19 2007/02/09 03:20:24 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2002, 2007). 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.
- * 
- * @version $Revision: 1.19 $
- */
-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.
-	 */
-	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 the specified bundle is the system bundle.
-	 * @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>
-	 * Thie 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.
-	 * @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.
-	 * @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 b8e80dc..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/AbstractURLStreamHandlerService.java
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.url/src/org/osgi/service/url/AbstractURLStreamHandlerService.java,v 1.8 2006/06/16 16:31:31 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2002, 2006). 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.
- * 
- * @version $Revision: 1.8 $
- */
-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 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 71b067e..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLConstants.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.url/src/org/osgi/service/url/URLConstants.java,v 1.10 2006/12/01 06:38:45 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2002, 2006). 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: 1.10 $
- */
-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 c5cb303..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerService.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.url/src/org/osgi/service/url/URLStreamHandlerService.java,v 1.9 2006/07/11 00:53:59 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2002, 2006). 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
- * 
- * @version $Revision: 1.9 $
- */
-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 fedd59f..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/service/url/URLStreamHandlerSetter.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.service.url/src/org/osgi/service/url/URLStreamHandlerSetter.java,v 1.9 2006/07/11 00:53:59 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2002, 2006). 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.
- * 
- * @version $Revision: 1.9 $
- */
-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/ServiceTracker.java b/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
deleted file mode 100644
index d96dc2b..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTracker.java
+++ /dev/null
@@ -1,1185 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.util.tracker/src/org/osgi/util/tracker/ServiceTracker.java,v 1.22 2006/07/20 16:14:43 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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.Enumeration;
-import java.util.Hashtable;
-import java.util.LinkedList;
-
-import org.eclipse.osgi.framework.internal.core.FilterImpl;
-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;
-
-/**
- * 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> object can use the
- * <code>ServiceTrackerCustomizer</code> object to customize the service
- * objects to be tracked. The <code>ServiceTracker</code> object 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>
- * object correctly handles all of the details of listening to
- * <code>ServiceEvent</code> objects 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> object while holding any locks.
- * <code>ServiceTrackerCustomizer</code> implementations must also be
- * thread-safe.
- * 
- * @ThreadSafe
- * @version $Revision: 1.29 $
- */
-
-/*
- * This implementation has been customized to only work with the Equinox OSGi framework.
- * In all cases a filter string containing objectClass is passed to BundleContext.addServiceListener
- * to take advantage of the ServiceEvent delivery optimizations.
- */
-
-public class ServiceTracker implements ServiceTrackerCustomizer {
-	/* set this to true to compile in debug messages */
-	static final boolean				DEBUG			= false;
-	/**
-	 * Bundle context against which this <code>ServiceTracker</code> object is
-	 * tracking.
-	 */
-	protected final BundleContext		context;
-	/**
-	 * Filter specifying search criteria for the services to track.
-	 * 
-	 * @since 1.1
-	 */
-	protected final Filter				filter;
-	/**
-	 * <code>ServiceTrackerCustomizer</code> object for this tracker.
-	 */
-	final ServiceTrackerCustomizer		customizer;
-	/**
-	 * Filter string for use when adding the ServiceListener.
-	 */
-	private 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;
-	/**
-	 * True if no Filter object was supplied in a constructor or we are not
-	 * using the supplied filter.
-	 */
-	final boolean 						noUserFilter;
-	/**
-	 * Tracked services: <code>ServiceReference</code> object -> customized
-	 * Object and <code>ServiceListener</code> object
-	 */
-	private volatile Tracked			tracked;
-	/**
-	 * Modification count. This field is initialized to zero by open, set to -1
-	 * by close and incremented by modified.
-	 * 
-	 * This field is volatile since it is accessed by multiple threads.
-	 */
-	private volatile int				trackingCount	= -1;
-	/**
-	 * 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;
-
-	/**
-	 * Create a <code>ServiceTracker</code> object on the specified
-	 * <code>ServiceReference</code> object.
-	 * 
-	 * <p>
-	 * The service referenced by the specified <code>ServiceReference</code>
-	 * object will be tracked by this <code>ServiceTracker</code> object.
-	 * 
-	 * @param context <code>BundleContext</code> object against which the
-	 *        tracking is done.
-	 * @param reference <code>ServiceReference</code> object 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> object.
-	 *        If customizer is <code>null</code>, then this
-	 *        <code>ServiceTracker</code> object will be used as the
-	 *        <code>ServiceTrackerCustomizer</code> object and the
-	 *        <code>ServiceTracker</code> object will call the
-	 *        <code>ServiceTrackerCustomizer</code> methods on itself.
-	 */
-	public ServiceTracker(BundleContext context, ServiceReference reference,
-			ServiceTrackerCustomizer customizer) {
-		this.context = context;
-		this.trackReference = reference;
-		this.trackClass = null;
-		this.customizer = (customizer == null) ? this : customizer;
-		this.listenerFilter = "(&(" + Constants.OBJECTCLASS + "=" + ((String[]) reference.getProperty(Constants.OBJECTCLASS))[0] //$NON-NLS-1$ //$NON-NLS-2$
-				+ ")(" + Constants.SERVICE_ID + "=" + reference.getProperty(Constants.SERVICE_ID).toString() + "))" ; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		this.noUserFilter = true;
-		try {
-			this.filter = context.createFilter(listenerFilter);
-		}
-		catch (InvalidSyntaxException e) { // we could only get this exception
-			// if the ServiceReference was
-			// invalid
-			throw new IllegalArgumentException(
-					"unexpected InvalidSyntaxException: " + e.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Create a <code>ServiceTracker</code> object on the specified class
-	 * name.
-	 * 
-	 * <p>
-	 * Services registered under the specified class name will be tracked by
-	 * this <code>ServiceTracker</code> object.
-	 * 
-	 * @param context <code>BundleContext</code> object against which the
-	 *        tracking is done.
-	 * @param clazz 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> object.
-	 *        If customizer is <code>null</code>, then this
-	 *        <code>ServiceTracker</code> object will be used as the
-	 *        <code>ServiceTrackerCustomizer</code> object and the
-	 *        <code>ServiceTracker</code> object will call the
-	 *        <code>ServiceTrackerCustomizer</code> methods on itself.
-	 */
-	public ServiceTracker(BundleContext context, String clazz,
-			ServiceTrackerCustomizer customizer) {
-		this.context = context;
-		this.trackReference = null;
-		this.trackClass = clazz;
-		this.customizer = (customizer == null) ? this : customizer;
-		this.listenerFilter = "(" + Constants.OBJECTCLASS + "=" + clazz.toString() + ")"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-		this.noUserFilter = true;
-		try {
-			this.filter = context.createFilter(listenerFilter);
-		}
-		catch (InvalidSyntaxException e) { // we could only get this exception
-			// if the clazz argument was
-			// malformed
-			throw new IllegalArgumentException(
-					"unexpected InvalidSyntaxException: " + e.getMessage()); //$NON-NLS-1$
-		}
-	}
-
-	/**
-	 * Create a <code>ServiceTracker</code> object 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> object.
-	 * 
-	 * @param context <code>BundleContext</code> object against which the
-	 *        tracking is done.
-	 * @param filter <code>Filter</code> object 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> object.
-	 *        If customizer is null, then this <code>ServiceTracker</code>
-	 *        object will be used as the <code>ServiceTrackerCustomizer</code>
-	 *        object and the <code>ServiceTracker</code> object will call the
-	 *        <code>ServiceTrackerCustomizer</code> methods on itself.
-	 * @since 1.1
-	 */
-	public ServiceTracker(BundleContext context, Filter filter,
-			ServiceTrackerCustomizer customizer) {
-		this.context = context;
-		this.trackReference = null;
-
-		// obtain a required objectClass from the user supplied filter
-		if (filter instanceof FilterImpl) {
-			this.trackClass = ((FilterImpl)filter).getRequiredObjectClass();
-		} else {
-			this.trackClass = null;
-		}
-		
-		if (this.trackClass != null) {
-			this.listenerFilter = FilterImpl.getObjectClassFilterString(this.trackClass);
-			//convert to track by class instead of filter if the user filter is in the form (objectClass=some.Clazz) 
-			this.noUserFilter = this.listenerFilter.equals(filter.toString()); 
-		} else {
-			this.listenerFilter = null;
-			this.noUserFilter = false;
-		}
-
-		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> object and begin tracking
-	 * services.
-	 * 
-	 * <p>
-	 * This method calls <code>open(false)</code>.
-	 * 
-	 * @throws java.lang.IllegalStateException if the <code>BundleContext</code>
-	 *         object with which this <code>ServiceTracker</code> object was
-	 *         created is no longer valid.
-	 * @see #open(boolean)
-	 */
-	public void open() {
-		open(false);
-	}
-
-	/**
-	 * Open this <code>ServiceTracker</code> object and begin tracking
-	 * services.
-	 * 
-	 * <p>
-	 * Services which match the search criteria specified when this
-	 * <code>ServiceTracker</code> object was created are now tracked by this
-	 * <code>ServiceTracker</code> object.
-	 * 
-	 * @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 accessibile to the bundle whose
-	 *        <code>BundleContext</code> is used by this
-	 *        <code>ServiceTracker</code>.
-	 * @throws java.lang.IllegalStateException if the <code>BundleContext</code>
-	 *         object with which this <code>ServiceTracker</code> object was
-	 *         created is no longer valid.
-	 * @since 1.3
-	 */
-	public synchronized void open(boolean trackAllServices) {
-		if (tracked != null) {
-			return;
-		}
-		if (DEBUG) {
-			System.out.println("ServiceTracker.open: " + filter); //$NON-NLS-1$
-		}
-		tracked = trackAllServices ? new AllTracked() : new Tracked();
-		trackingCount = 0;
-		synchronized (tracked) {
-			try {
-				context.addServiceListener(tracked, listenerFilter);
-				ServiceReference[] references;
-				
-				if (trackReference != null) { // tracking a single reference 
-					references = new ServiceReference[] {trackReference};
-				}
-				else { // tracking a set of references
-					references = getInitialReferences(trackAllServices, trackClass,
-							noUserFilter ? null: filter.toString());
-				}
-
-				tracked.setInitialServices(references); // set tracked with
-				// the initial
-				// references
-			}
-			catch (InvalidSyntaxException e) {
-				throw new RuntimeException(
-						"unexpected InvalidSyntaxException: " + e.getMessage()); //$NON-NLS-1$
-			}
-		}
-		/* Call tracked outside of synchronized region */
-		tracked.trackInitialServices(); // process the initial references
-	}
-
-	/**
-	 * Returns the list of initial <code>ServiceReference</code> objects that
-	 * will be tracked by this <code>ServiceTracker</code> object.
-	 * 
-	 * @param trackAllServices If true, use getAllServiceReferences.
-	 * @param trackClass the class name with which the service was registered,
-	 *        or null for all services.
-	 * @param filterString the filter criteria or null for all services.
-	 * @return the list of initial <code>ServiceReference</code> objects.
-	 * @throws InvalidSyntaxException if the filter uses an invalid syntax.
-	 */
-	private ServiceReference[] getInitialReferences(boolean trackAllServices,
-			String trackClass, String filterString)
-			throws InvalidSyntaxException {
-		if (trackAllServices) {
-			return context.getAllServiceReferences(trackClass, filterString);
-		}
-		else {
-			return context.getServiceReferences(trackClass, filterString);
-		}
-	}
-
-	/**
-	 * Close this <code>ServiceTracker</code> object.
-	 * 
-	 * <p>
-	 * This method should be called when this <code>ServiceTracker</code>
-	 * object should end the tracking of services.
-	 */
-	public synchronized void close() {
-		if (tracked == null) {
-			return;
-		}
-		if (DEBUG) {
-			System.out.println("ServiceTracker.close: " + filter); //$NON-NLS-1$
-		}
-		tracked.close();
-		ServiceReference[] references = getServiceReferences();
-		Tracked outgoing = tracked;
-		tracked = null;
-		try {
-			context.removeServiceListener(outgoing);
-		}
-		catch (IllegalStateException e) {
-			/* In case the context was stopped. */
-		}
-		if (references != null) {
-			for (int i = 0; i < references.length; i++) {
-				outgoing.untrack(references[i]);
-			}
-		}
-		trackingCount = -1;
-		if (DEBUG) {
-			if ((cachedReference == null) && (cachedService == null)) {
-				System.out
-						.println("ServiceTracker.close[cached cleared]: " + filter); //$NON-NLS-1$
-			}
-		}
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>ServiceTrackerCustomizer.addingService</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>ServiceTracker</code> object
-	 * has been constructed with a <code>null ServiceTrackerCustomizer</code>
-	 * argument.
-	 * 
-	 * The default implementation returns the result of calling
-	 * <code>getService</code>, on the <code>BundleContext</code> object
-	 * with which this <code>ServiceTracker</code> object was created, passing
-	 * the specified <code>ServiceReference</code> object.
-	 * <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 removedService that will
-	 * unget the service.
-	 * 
-	 * @param reference Reference to service being added to this
-	 *        <code>ServiceTracker</code> object.
-	 * @return The service object to be tracked for the service added to this
-	 *         <code>ServiceTracker</code> object.
-	 * @see ServiceTrackerCustomizer
-	 */
-	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> object
-	 * has been constructed with a <code>null ServiceTrackerCustomizer</code>
-	 * argument.
-	 * 
-	 * The default implementation does nothing.
-	 * 
-	 * @param reference Reference to modified service.
-	 * @param service The service object for the modified service.
-	 * @see ServiceTrackerCustomizer
-	 */
-	public void modifiedService(ServiceReference reference, Object service) {
-	}
-
-	/**
-	 * Default implementation of the
-	 * <code>ServiceTrackerCustomizer.removedService</code> method.
-	 * 
-	 * <p>
-	 * This method is only called when this <code>ServiceTracker</code> object
-	 * has been constructed with a <code>null ServiceTrackerCustomizer</code>
-	 * argument.
-	 * 
-	 * The default implementation calls <code>ungetService</code>, on the
-	 * <code>BundleContext</code> object with which this
-	 * <code>ServiceTracker</code> object was created, passing the specified
-	 * <code>ServiceReference</code> object.
-	 * <p>
-	 * This method can be overridden in a subclass. If the default
-	 * implementation of <code>addingService</code> method was used, this
-	 * method must unget the service.
-	 * 
-	 * @param reference Reference to removed service.
-	 * @param service The service object for the removed service.
-	 * @see ServiceTrackerCustomizer
-	 */
-	public void removedService(ServiceReference reference, Object service) {
-		context.ungetService(reference);
-	}
-
-	/**
-	 * Wait for at least one service to be tracked by this
-	 * <code>ServiceTracker</code> object.
-	 * <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.
-	 * 
-	 * @param timeout time interval in milliseconds to wait. If zero, the method
-	 *        will wait indefinately.
-	 * @return Returns the result of <code>getService()</code>.
-	 * @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"); //$NON-NLS-1$
-		}
-		Object object = getService();
-		while (object == null) {
-			Tracked tracked = this.tracked; /*
-											 * use local var since we are not
-											 * synchronized
-											 */
-			if (tracked == null) { /* if ServiceTracker is not open */
-				return null;
-			}
-			synchronized (tracked) {
-				if (tracked.size() == 0) {
-					tracked.wait(timeout);
-				}
-			}
-			object = getService();
-			if (timeout > 0) {
-				return object;
-			}
-		}
-		return object;
-	}
-
-	/**
-	 * Return an array of <code>ServiceReference</code> objects for all
-	 * services being tracked by this <code>ServiceTracker</code> object.
-	 * 
-	 * @return Array of <code>ServiceReference</code> objects or
-	 *         <code>null</code> if no service are being tracked.
-	 */
-	public ServiceReference[] getServiceReferences() {
-		Tracked tracked = this.tracked; /*
-										 * use local var since we are not
-										 * synchronized
-										 */
-		if (tracked == null) { /* if ServiceTracker is not open */
-			return null;
-		}
-		synchronized (tracked) {
-			int length = tracked.size();
-			if (length == 0) {
-				return null;
-			}
-			ServiceReference[] references = new ServiceReference[length];
-			Enumeration keys = tracked.keys();
-			for (int i = 0; i < length; i++) {
-				references[i] = (ServiceReference) keys.nextElement();
-			}
-			return references;
-		}
-	}
-
-	/**
-	 * Returns a <code>ServiceReference</code> object for one of the services
-	 * being tracked by this <code>ServiceTracker</code> object.
-	 * 
-	 * <p>
-	 * If multiple services are being tracked, the service with the highest
-	 * ranking (as specified in its <code>service.ranking</code> property) is
-	 * returned.
-	 * 
-	 * <p>
-	 * 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.
-	 * <p>
-	 * This is the same algorithm used by
-	 * <code>BundleContext.getServiceReference</code>.
-	 * 
-	 * @return <code>ServiceReference</code> object or <code>null</code> if
-	 *         no service is being tracked.
-	 * @since 1.1
-	 */
-	public ServiceReference getServiceReference() {
-		ServiceReference reference = cachedReference;
-		if (reference != null) {
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.getServiceReference[cached]: " + filter); //$NON-NLS-1$
-			}
-			return reference;
-		}
-		if (DEBUG) {
-			System.out.println("ServiceTracker.getServiceReference: " + filter); //$NON-NLS-1$
-		}
-		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> object if the referenced service is being
-	 * tracked by this <code>ServiceTracker</code> object.
-	 * 
-	 * @param reference Reference to the desired service.
-	 * @return Service object or <code>null</code> if the service referenced
-	 *         by the specified <code>ServiceReference</code> object is not
-	 *         being tracked.
-	 */
-	public Object getService(ServiceReference reference) {
-		Tracked tracked = this.tracked; /*
-										 * use local var since we are not
-										 * synchronized
-										 */
-		if (tracked == null) { /* if ServiceTracker is not open */
-			return null;
-		}
-		synchronized (tracked) {
-			return tracked.get(reference);
-		}
-	}
-
-	/**
-	 * Return an array of service objects for all services being tracked by this
-	 * <code>ServiceTracker</code> object.
-	 * 
-	 * @return Array of service objects or <code>null</code> if no service are
-	 *         being tracked.
-	 */
-	public Object[] getServices() {
-		Tracked tracked = this.tracked; /*
-										 * use local var since we are not
-										 * synchronized
-										 */
-		if (tracked == null) { /* if ServiceTracker is not open */
-			return null;
-		}
-		synchronized (tracked) {
-			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> object.
-	 * 
-	 * <p>
-	 * If any services are being tracked, this method returns the result of
-	 * calling <code>getService(getServiceReference())</code>.
-	 * 
-	 * @return Service object or <code>null</code> if no service is being
-	 *         tracked.
-	 */
-	public Object getService() {
-		Object service = cachedService;
-		if (service != null) {
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.getService[cached]: " + filter); //$NON-NLS-1$
-			}
-			return service;
-		}
-		if (DEBUG) {
-			System.out.println("ServiceTracker.getService: " + filter); //$NON-NLS-1$
-		}
-		ServiceReference reference = getServiceReference();
-		if (reference == null) {
-			return null;
-		}
-		return cachedService = getService(reference);
-	}
-
-	/**
-	 * Remove a service from this <code>ServiceTracker</code> object.
-	 * 
-	 * The specified service will be removed from this
-	 * <code>ServiceTracker</code> object. If the specified service was being
-	 * tracked then the <code>ServiceTrackerCustomizer.removedService</code>
-	 * method will be called for that service.
-	 * 
-	 * @param reference Reference to the service to be removed.
-	 */
-	public void remove(ServiceReference reference) {
-		Tracked tracked = this.tracked; /*
-										 * use local var since we are not
-										 * synchronized
-										 */
-		if (tracked == null) { /* if ServiceTracker is not open */
-			return;
-		}
-		tracked.untrack(reference);
-	}
-
-	/**
-	 * Return the number of services being tracked by this
-	 * <code>ServiceTracker</code> object.
-	 * 
-	 * @return Number of services being tracked.
-	 */
-	public int size() {
-		Tracked tracked = this.tracked; /*
-										 * use local var since we are not
-										 * synchronized
-										 */
-		if (tracked == null) { /* if ServiceTracker is not open */
-			return 0;
-		}
-		return tracked.size();
-	}
-
-	/**
-	 * Returns the tracking count for this <code>ServiceTracker</code> object.
-	 * 
-	 * The tracking count is initialized to 0 when this
-	 * <code>ServiceTracker</code> object is opened. Every time a service is
-	 * added, modified or removed from this <code>ServiceTracker</code> object
-	 * the tracking count is incremented.
-	 * 
-	 * <p>
-	 * The tracking count can be used to determine if this
-	 * <code>ServiceTracker</code> object 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> object since the previous tracking count
-	 * was collected.
-	 * 
-	 * @since 1.2
-	 * @return The tracking count for this <code>ServiceTracker</code> object
-	 *         or -1 if this <code>ServiceTracker</code> object is not open.
-	 */
-	public int getTrackingCount() {
-		return trackingCount;
-	}
-
-	/**
-	 * Called by the Tracked object whenever the set of tracked services is
-	 * modified. Increments the tracking count and clears the cache.
-	 * 
-	 * @GuardedBy tracked
-	 */
-	/*
-	 * This method must not be synchronized since it is called by Tracked while
-	 * Tracked is synchronized. We don't want synchronization interactions
-	 * between the ServiceListener thread and the user thread.
-	 */
-	void modified() {
-		trackingCount++; /* increment modification count */
-		cachedReference = null; /* clear cached value */
-		cachedService = null; /* clear cached value */
-		if (DEBUG) {
-			System.out.println("ServiceTracker.modified: " + filter); //$NON-NLS-1$
-		}
-	}
-
-
-	/**
-	 * Inner class to track services. If a <code>ServiceTracker</code> object
-	 * is reused (closed then reopened), then a new Tracked object is used. This
-	 * class is a hashtable mapping <code>ServiceReference</code> object ->
-	 * customized Object. This class is the <code>ServiceListener</code>
-	 * object for the tracker. This class is used to synchronize access to the
-	 * tracked services. This is not a public class. It is only for use by the
-	 * implementation of the <code>ServiceTracker</code> class.
-	 * 
-	 * @ThreadSafe
-	 */
-	class Tracked extends Hashtable implements ServiceListener {
-		static final long			serialVersionUID	= -7420065199791006079L;
-		/**
-		 * List of ServiceReferences in the process of being added. This is used
-		 * to deal with nesting of ServiceEvents. Since ServiceEvents are
-		 * synchronously delivered, ServiceEvents 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 ArrayList		adding;
-
-		/**
-		 * true if the tracked object is closed.
-		 * 
-		 * This field is volatile because it is set by one thread and read by
-		 * another.
-		 */
-		private volatile boolean	closed;
-
-		/**
-		 * Initial list of ServiceReferences for the tracker. This is used to
-		 * correctly process the initial services which could become
-		 * unregistered before they are tracked. This is necessary since the
-		 * initial set of tracked services are not "announced" by ServiceEvents
-		 * and therefore the ServiceEvent for unregistration could be delivered
-		 * before we track the service.
-		 * 
-		 * A service must not be in both the initial and adding lists at the
-		 * same time. A service 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;
-
-		/**
-		 * Tracked constructor.
-		 */
-		protected Tracked() {
-			super();
-			closed = false;
-			adding = new ArrayList(6);
-			initial = new LinkedList();
-		}
-
-		/**
-		 * Set initial list of services into tracker before ServiceEvents begin
-		 * to be received.
-		 * 
-		 * This method must be called from ServiceTracker.open while
-		 * synchronized on this object in the same synchronized block as the
-		 * addServiceListener call.
-		 * 
-		 * @param references The initial list of services to be tracked.
-		 * @GuardedBy this
-		 */
-		protected void setInitialServices(ServiceReference[] references) {
-			if (references == null) {
-				return;
-			}
-			int size = references.length;
-			for (int i = 0; i < size; i++) {
-				if (DEBUG) {
-					System.out
-							.println("ServiceTracker.Tracked.setInitialServices: " + references[i]); //$NON-NLS-1$
-				}
-				initial.add(references[i]);
-			}
-		}
-
-		/**
-		 * Track the initial list of services. This is called after
-		 * ServiceEvents can begin to be received.
-		 * 
-		 * This method must be called from ServiceTracker.open while not
-		 * synchronized on this object after the addServiceListener call.
-		 * 
-		 */
-		protected void trackInitialServices() {
-			while (true) {
-				ServiceReference reference;
-				synchronized (this) {
-					if (initial.size() == 0) {
-						/*
-						 * if there are no more inital services
-						 */
-						return; /* we are done */
-					}
-					/*
-					 * move the first service from the initial list to the
-					 * adding list within this synchronized block.
-					 */
-					reference = (ServiceReference) initial.removeFirst();
-					if (this.get(reference) != null) {
-						/* if we are already tracking this service */
-						if (DEBUG) {
-							System.out
-									.println("ServiceTracker.Tracked.trackInitialServices[already tracked]: " + reference); //$NON-NLS-1$
-						}
-						continue; /* skip this service */
-					}
-					if (adding.contains(reference)) {
-						/*
-						 * if this service is already in the process of being
-						 * added.
-						 */
-						if (DEBUG) {
-							System.out
-									.println("ServiceTracker.Tracked.trackInitialServices[already adding]: " + reference); //$NON-NLS-1$
-						}
-						continue; /* skip this service */
-					}
-					adding.add(reference);
-				}
-				if (DEBUG) {
-					System.out
-							.println("ServiceTracker.Tracked.trackInitialServices: " + reference); //$NON-NLS-1$
-				}
-				trackAdding(reference); /*
-										 * Begin tracking it. We call
-										 * trackAdding since we have already put
-										 * the reference in the adding list.
-										 */
-			}
-		}
-
-		/**
-		 * Called by the owning <code>ServiceTracker</code> object when it is
-		 * closed.
-		 */
-		protected void close() {
-			closed = true;
-		}
-
-		/**
-		 * <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(ServiceEvent event) {
-			/*
-			 * Check if we had a delayed call (which could happen when we
-			 * close).
-			 */
-			if (closed) {
-				return;
-			}
-			ServiceReference reference = event.getServiceReference();
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.Tracked.serviceChanged[" + event.getType() + "]: " + reference); //$NON-NLS-1$ //$NON-NLS-2$
-			}
-
-			switch (event.getType()) {
-				case ServiceEvent.REGISTERED :
-				case ServiceEvent.MODIFIED :
-					if (noUserFilter) { // no user supplied filter to be checked
-						track(reference);
-						/*
-						 * If the customizer throws an unchecked exception, it
-						 * is safe to let it propagate
-						 */
-					}
-					else { // filter supplied by user must be checked
-						if (filter.match(reference)) {
-							track(reference);
-							/*
-							 * If the customizer throws an unchecked exception,
-							 * it is safe to let it propagate
-							 */
-						}
-						else {
-							untrack(reference);
-							/*
-							 * If the customizer throws an unchecked exception,
-							 * it is safe to let it propagate
-							 */
-						}
-					}
-					break;
-				case ServiceEvent.UNREGISTERING :
-					untrack(reference);
-					/*
-					 * If the customizer throws an unchecked exception, it is
-					 * safe to let it propagate
-					 */
-					break;
-			}
-		}
-
-		/**
-		 * Begin to track the referenced service.
-		 * 
-		 * @param reference Reference to a service to be tracked.
-		 */
-		private void track(ServiceReference reference) {
-			Object object;
-			synchronized (this) {
-				object = this.get(reference);
-			}
-			if (object != null) /* we are already tracking the service */
-			{
-				if (DEBUG) {
-					System.out
-							.println("ServiceTracker.Tracked.track[modified]: " + reference); //$NON-NLS-1$
-				}
-				synchronized (this) {
-					modified(); /* increment modification count */
-				}
-				/* Call customizer outside of synchronized region */
-				customizer.modifiedService(reference, object);
-				/*
-				 * If the customizer throws an unchecked exception, it is safe
-				 * to let it propagate
-				 */
-				return;
-			}
-			synchronized (this) {
-				if (adding.contains(reference)) { /*
-													 * if this service is
-													 * already in the process of
-													 * being added.
-													 */
-					if (DEBUG) {
-						System.out
-								.println("ServiceTracker.Tracked.track[already adding]: " + reference); //$NON-NLS-1$
-					}
-					return;
-				}
-				adding.add(reference); /* mark this service is being added */
-			}
-
-			trackAdding(reference); /*
-									 * call trackAdding now that we have put the
-									 * reference in the adding list
-									 */
-		}
-
-		/**
-		 * Common logic to add a service to the tracker used by track and
-		 * trackInitialServices. The specified reference must have been placed
-		 * in the adding list before calling this method.
-		 * 
-		 * @param reference Reference to a service to be tracked.
-		 */
-		private void trackAdding(ServiceReference reference) {
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.Tracked.trackAdding: " + reference); //$NON-NLS-1$
-			}
-			Object object = null;
-			boolean becameUntracked = false;
-			/* Call customizer outside of synchronized region */
-			try {
-				object = customizer.addingService(reference);
-				/*
-				 * If the customizer throws an unchecked exception, it will
-				 * propagate after the finally
-				 */
-			}
-			finally {
-				synchronized (this) {
-					if (adding.remove(reference)) { /*
-													 * if the service was not
-													 * untracked during the
-													 * customizer callback
-													 */
-						if (object != null) {
-							this.put(reference, object);
-							modified(); /* increment modification count */
-							notifyAll(); /*
-											 * notify any waiters in
-											 * waitForService
-											 */
-						}
-					}
-					else {
-						becameUntracked = true;
-					}
-				}
-			}
-			/*
-			 * The service became untracked during the customizer callback.
-			 */
-			if (becameUntracked) {
-				if (DEBUG) {
-					System.out
-							.println("ServiceTracker.Tracked.trackAdding[removed]: " + reference); //$NON-NLS-1$
-				}
-				/* Call customizer outside of synchronized region */
-				customizer.removedService(reference, object);
-				/*
-				 * If the customizer throws an unchecked exception, it is safe
-				 * to let it propagate
-				 */
-			}
-		}
-
-		/**
-		 * Discontinue tracking the referenced service.
-		 * 
-		 * @param reference Reference to the tracked service.
-		 */
-		protected void untrack(ServiceReference reference) {
-			Object object;
-			synchronized (this) {
-				if (initial.remove(reference)) { /*
-													 * if this service is
-													 * already in the list of
-													 * initial references to
-													 * process
-													 */
-					if (DEBUG) {
-						System.out
-								.println("ServiceTracker.Tracked.untrack[removed from initial]: " + reference); //$NON-NLS-1$
-					}
-					return; /*
-							 * we have removed it from the list and it will not
-							 * be processed
-							 */
-				}
-
-				if (adding.remove(reference)) { /*
-												 * if the service is in the
-												 * process of being added
-												 */
-					if (DEBUG) {
-						System.out
-								.println("ServiceTracker.Tracked.untrack[being added]: " + reference); //$NON-NLS-1$
-					}
-					return; /*
-							 * in case the service is untracked while in the
-							 * process of adding
-							 */
-				}
-				object = this.remove(reference); /*
-													 * must remove from tracker
-													 * before calling customizer
-													 * callback
-													 */
-				if (object == null) { /* are we actually tracking the service */
-					return;
-				}
-				modified(); /* increment modification count */
-			}
-			if (DEBUG) {
-				System.out
-						.println("ServiceTracker.Tracked.untrack[removed]: " + reference); //$NON-NLS-1$
-			}
-			/* Call customizer outside of synchronized region */
-			customizer.removedService(reference, object);
-			/*
-			 * If the customizer throws an unchecked exception, it is safe to
-			 * let it propagate
-			 */
-		}
-	}
-
-	/**
-	 * 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 {
-		static final long	serialVersionUID	= 4050764875305137716L;
-
-		/**
-		 * AllTracked constructor.
-		 */
-		protected 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 e091078..0000000
--- a/bundles/org.eclipse.osgi/osgi/src/org/osgi/util/tracker/ServiceTrackerCustomizer.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * $Header: /cvshome/build/org.osgi.util.tracker/src/org/osgi/util/tracker/ServiceTrackerCustomizer.java,v 1.13 2007/02/19 19:04:33 hargrave Exp $
- * 
- * Copyright (c) OSGi Alliance (2000, 2007). 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> object to customize the service objects that
- * are tracked. The <code>ServiceTrackerCustomizer</code> object is called
- * when a service is being added to the <code>ServiceTracker</code> object.
- * The <code>ServiceTrackerCustomizer</code> can then return an object for the
- * tracked service. The <code>ServiceTrackerCustomizer</code> object is also
- * called when a tracked service is modified or has been removed from the
- * <code>ServiceTracker</code> object.
- * 
- * <p>
- * The methods in this interface may be called as the result of a
- * <code>ServiceEvent</code> being received by a <code>ServiceTracker</code>
- * object. 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> object while holding any locks.
- * <code>ServiceTrackerCustomizer</code> implementations must also be
- * thread-safe.
- * 
- * @ThreadSafe
- * @version $Revision: 1.13 $
- */
-public interface ServiceTrackerCustomizer {
-	/**
-	 * A service is being added to the <code>ServiceTracker</code> object.
-	 * 
-	 * <p>
-	 * This method is called before a service which matched the search
-	 * parameters of the <code>ServiceTracker</code> object is added to it.
-	 * This method should return the service object to be tracked for this
-	 * <code>ServiceReference</code> object. The returned service object is
-	 * stored in the <code>ServiceTracker</code> object and is available from
-	 * the <code>getService</code> and <code>getServices</code> methods.
-	 * 
-	 * @param reference Reference to service being added to the
-	 *        <code>ServiceTracker</code> object.
-	 * @return The service object to be tracked for the
-	 *         <code>ServiceReference</code> object or <code>null</code> if
-	 *         the <code>ServiceReference</code> object should not be tracked.
-	 */
-	public Object addingService(ServiceReference reference);
-
-	/**
-	 * A service tracked by the <code>ServiceTracker</code> object has been
-	 * modified.
-	 * 
-	 * <p>
-	 * This method is called when a service being tracked by the
-	 * <code>ServiceTracker</code> object has had it properties modified.
-	 * 
-	 * @param reference Reference to service that has been modified.
-	 * @param service The service object for the modified service.
-	 */
-	public void modifiedService(ServiceReference reference, Object service);
-
-	/**
-	 * A service tracked by the <code>ServiceTracker</code> object has been
-	 * removed.
-	 * 
-	 * <p>
-	 * This method is called after a service is no longer being tracked by the
-	 * <code>ServiceTracker</code> object.
-	 * 
-	 * @param reference Reference to service that has been removed.
-	 * @param service The service object for the removed service.
-	 */
-	public void removedService(ServiceReference reference, Object service);
-}
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 bea1b25..0000000
--- a/bundles/org.eclipse.osgi/profile.list
+++ /dev/null
@@ -1,21 +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
-###############################################################################
-java.profiles = \
- 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,\
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/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 d6533cd..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GenericConstraint.java
+++ /dev/null
@@ -1,49 +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 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 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 0f196d1..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/GroupingChecker.java
+++ /dev/null
@@ -1,362 +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 java.util.*;
-import org.eclipse.osgi.service.resolver.BundleSpecification;
-
-/*
- * 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
-		ResolverImport[] imports = bundle.getImportPackages();
-		for (int j = 0; j < imports.length; j++) {
-			ResolverExport selectedSupplier = (ResolverExport) imports[j].getSelectedSupplier();
-			if (selectedSupplier != null)
-				isConsistentInternal(bundle, selectedSupplier, 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++) {
-			if (matchingExports[i].isDropped())
-				continue;
-			results = isConsistentInternal(requiringBundle, matchingExports[i], 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
-		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 export = bundle.getExport(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 != null)
-					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 (reexported != null)
-							roots.add(reExportedRoots);
-					}
-				}
-			}
-		}
-		if (export != null || roots.size() > 1) {
-			PackageRoots[] requiredRoots = (PackageRoots[]) roots.toArray(new PackageRoots[roots.size()]);
-			if (export == null) {
-				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]);
-			if (export != null)
-				// always add this bundles export to the end if it exports the package
-				result.addRoot(export);
-			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 (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;
-			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()))
-						continue;
-					PackageRoots thisUsedRoots = getPackageRoots(root.getExporter(), uses[j], null);
-					PackageRoots importingUsedRoots = getPackageRoots(importingBundle, uses[j], null);
-					if (thisUsedRoots == importingUsedRoots)
-						return results;
-					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 4fc99a4..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/MappedList.java
+++ /dev/null
@@ -1,85 +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.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 = (Object[]) internal.get(key);
-		if (existing == null) {
-			existing = new Object[1]; // be optimistic; start small
-			existing[0] = value;
-			internal.put(key, existing);
-		} else {
-			// append the new value to the end.
-			Object[] newValues = new Object[existing.length + 1];
-			System.arraycopy(existing, 0, newValues, 0, existing.length);
-			newValues[existing.length] = value;
-			sort(newValues); // sort the new values array
-			internal.put(key, newValues); // overwrite the old values in tha map
-		}
-	}
-
-	protected void sort(Object[] values) {
-		// a MappedList is not sorted by default
-		// extending classes may override this method to sort lists
-	}
-
-	// 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 = (Object[]) (remove ? internal.remove(key) : internal.get(key));
-		return result == null ? new Object[0] : 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[] values = (Object[]) iter.next();
-			for (int i = 0; i < values.length; i++)
-				results.add(values[i]);
-		}
-		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 bbf7dd9..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/PermissionChecker.java
+++ /dev/null
@@ -1,75 +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.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;
-		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;
-			producerPermission = new PackagePermission(bd.getName(), PackagePermission.EXPORT);
-			consumerPermission = new PackagePermission(vc.getName(), PackagePermission.IMPORT);
-			producer = context.getBundle(((ExportPackageDescription) bd).getExporter().getBundleId());
-		} 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;
-	}
-}
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 b7ca783..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverBundle.java
+++ /dev/null
@@ -1,515 +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 java.util.*;
-import org.eclipse.osgi.internal.resolver.ExportPackageDescriptionImpl;
-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 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);
-	}
-
-	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() {
-		ResolverExport[] allExports = getExportPackages();
-		int removedExports = 0;
-		for (int i = 0; i < allExports.length; i++)
-			if (allExports[i].isDropped())
-				removedExports++;
-		if (removedExports == 0)
-			return allExports;
-		ResolverExport[] selectedExports = new ResolverExport[allExports.length - removedExports];
-		int index = 0;
-		for (int i = 0; i < allExports.length; i++) {
-			if (allExports[i].isDropped())
-				continue;
-			selectedExports[index] = allExports[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();
-	}
-
-	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 isExported(String packageName) {
-		ResolverExport export = getExport(packageName);
-		if (export == null)
-			return false;
-		// let exports from a bundle manifest be exported in addition to the ones from the vm profile
-		return 0 > ((Integer) export.getExportPackageDescription().getDirective(ExportPackageDescriptionImpl.EQUINOX_EE)).intValue();
-	}
-
-	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();
-		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++) {
-				if (!isExported(newExports[i].getName())) {
-					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()]);
-	}
-
-	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();
-
-		if (!fragments.remove(fragment))
-			return new ResolverExport[0];
-
-		fragment.setNewFragmentExports(false);
-		fragment.getHost().removePossibleSupplier(this);
-		ArrayList fragImports = (ArrayList) fragmentImports.remove(fragment.bundleID);
-		ArrayList fragRequires = (ArrayList) fragmentRequires.remove(fragment.bundleID);
-		ArrayList removedExports = (ArrayList) fragmentExports.remove(fragment.bundleID);
-		fragmentGenericRequires.remove(fragment.bundleID);
-		if (reason != null) {
-			ResolverBundle[] remainingFrags = (ResolverBundle[]) fragments.toArray(new ResolverBundle[fragments.size()]);
-			for (int i = 0; i < remainingFrags.length; i++) {
-				resolver.getResolverExports().remove(detachFragment(remainingFrags[i], null));
-				VersionConstraint[] constraints;
-				if (reason instanceof ResolverImport)
-					constraints = remainingFrags[i].getBundle().getImportPackages();
-				else
-					constraints = remainingFrags[i].getBundle().getRequiredBundles();
-				for (int j = 0; j < constraints.length; j++)
-					if (reason.getName().equals(constraints[j].getName()))
-						continue; // this fragment should remained unattached.
-				resolver.getResolverExports().put(attachFragment(remainingFrags[i], true));
-				ArrayList newImports = (ArrayList) fragmentImports.get(remainingFrags[i].bundleID);
-				if (newImports != null && fragImports != null)
-					for (Iterator iNewImports = newImports.iterator(); iNewImports.hasNext();) {
-						ResolverImport newImport = (ResolverImport) iNewImports.next();
-						for (Iterator iOldImports = fragImports.iterator(); iOldImports.hasNext();) {
-							ResolverImport oldImport = (ResolverImport) iOldImports.next();
-							if (newImport.getName().equals(oldImport.getName()))
-								newImport.setPossibleSuppliers(oldImport.getPossibleSuppliers());
-						}
-					}
-				ArrayList newRequires = (ArrayList) fragmentRequires.get(remainingFrags[i].bundleID);
-				if (newRequires != null && fragRequires != null)
-					for (Iterator iNewRequires = newRequires.iterator(); iNewRequires.hasNext();) {
-						BundleConstraint newRequire = (BundleConstraint) iNewRequires.next();
-						for (Iterator iOldRequires = fragRequires.iterator(); iOldRequires.hasNext();) {
-							BundleConstraint oldRequire = (BundleConstraint) iOldRequires.next();
-							if (newRequire.getName().equals(oldRequire.getName()))
-								newRequire.setPossibleSuppliers(oldRequire.getPossibleSuppliers());
-						}
-					}
-			}
-		}
-		return removedExports == null ? new ResolverExport[0] : (ResolverExport[]) removedExports.toArray(new ResolverExport[removedExports.size()]);
-	}
-
-	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 (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);
-	}
-}
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 c37fc40..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverConstraint.java
+++ /dev/null
@@ -1,143 +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.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;
-	final 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 (!bundle.getResolver().getPermissionChecker().checkPermission(constraint, vs.getBaseDescription()))
-			return false;
-		return 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();
-
-	public void setPossibleSuppliers(VersionSupplier[] possibleSuppliers) {
-		this.possibleSuppliers = possibleSuppliers;
-	}
-
-	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;
-	}
-}
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 49ad454..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverExport.java
+++ /dev/null
@@ -1,43 +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;
-	}
-
-	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 fb62a6c..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/ResolverImpl.java
+++ /dev/null
@@ -1,1723 +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 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.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_GROUPING = RESOLVER + "/grouping"; //$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_GROUPING = false;
-	public static boolean DEBUG_CYCLES = false;
-	private static int MAX_MULTIPLE_SUPPLIERS_MERGE = 10;
-	private static long MAX_COMBINATIONS = 1000000;
-
-	private static String[][] CURRENT_EES;
-
-	// The State associated with this resolver
-	private State state;
-	// Used to check permissions for import/export, provide/require, host/fragment
-	private 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 ArrayList unresolvedBundles = null; // TODO make this a Set
-	// Keys are BundleDescriptions, values are ResolverBundles
-	private HashMap bundleMapping = null;
-	private GroupingChecker groupingChecker;
-	private Comparator selectionPolicy;
-	private boolean developmentMode = false;
-
-	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 ArrayList();
-		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);
-		// Check if we wired to a reprovided package (in which case the ResolverExport doesn't exist)
-		if (matchingExport == null && exporter != null) {
-			ResolverExport reprovidedExport = new ResolverExport(exporter, importSupplier);
-			if (exporter.getExport(imp.getName()) == null) {
-				exporter.addExport(reprovidedExport);
-				resolverExports.put(reprovidedExport.getName(), reprovidedExport);
-			}
-			imp.addPossibleSupplier(reprovidedExport);
-		}
-		// 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 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 platform filter
-		String platformFilter = bundle.getPlatformFilter();
-		if (platformFilter == null)
-			return true;
-		if (platformProperties == null)
-			return false;
-		try {
-			Filter filter = FrameworkUtil.createFilter(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) {
-		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();
-		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()]);
-		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();
-			BundleDescription sameName = state.getBundle(reject.getSymbolicName(), null);
-			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);
-			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
-		for (int i = 0; i < bundles.length; i++)
-			attachFragment(bundles[i], rejectedSingletons);
-
-		// 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);
-	}
-
-	private void checkUsesConstraints(ResolverBundle[] bundles, Dictionary[] platformProperties, ArrayList rejectedSingletons) {
-		ArrayList conflictingConstraints = findBestCombination(bundles);
-		Set conflictedBundles = null;
-		if (conflictingConstraints != null) {
-			for (Iterator conflicts = conflictingConstraints.iterator(); conflicts.hasNext();) {
-				ResolverConstraint conflict = (ResolverConstraint) conflicts.next();
-				if (conflict.isOptional()) {
-					conflict.clearPossibleSuppliers();
-					continue;
-				}
-				conflictedBundles = new HashSet(conflictingConstraints.size());
-				ResolverBundle conflictedBundle;
-				if (conflict.isFromFragment())
-					conflictedBundle = (ResolverBundle) bundleMapping.get(conflict.getVersionConstraint().getBundle());
-				else
-					conflictedBundle = conflict.getBundle();
-				if (conflictedBundle != null) {
-					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();
-					setBundleUnresolved(conflictedBundle, false, developmentMode);
-				}
-			}
-			if (conflictedBundles != null && conflictedBundles.size() > 0) {
-				ArrayList remainingUnresolved = new ArrayList();
-				for (int i = 0; i < bundles.length; i++) {
-					if (!conflictedBundles.contains(bundles[i])) {
-						setBundleUnresolved(bundles[i], false, developmentMode);
-						remainingUnresolved.add(bundles[i]);
-					}
-				}
-				resolveBundles0((ResolverBundle[]) remainingUnresolved.toArray(new ResolverBundle[remainingUnresolved.size()]), platformProperties, rejectedSingletons);
-			}
-		}
-	}
-
-	private ArrayList findBestCombination(ResolverBundle[] bundles) {
-		HashSet bundleConstraints = new HashSet();
-		HashSet packageConstraints = new HashSet();
-		// first tryout the initial selections
-		ArrayList initialConflicts = getConflicts(bundles, packageConstraints, bundleConstraints);
-		if (initialConflicts == null) {
-			groupingChecker.clear();
-			return null; // the first selected have no conflicts; return without iterating over all combinations
-		}
-		ResolverConstraint[][] multipleSuppliers = getMultipleSuppliers(bundles, packageConstraints, bundleConstraints);
-		ArrayList conflicts = null;
-		if (multipleSuppliers.length > 0 && getNumCombinations(multipleSuppliers) < MAX_COMBINATIONS) {
-			int[] bestCombination = new int[multipleSuppliers.length];
-			conflicts = findBestCombination(bundles, multipleSuppliers, bestCombination, initialConflicts);
-			for (int i = 0; i < bestCombination.length; i++) {
-				for (int j = 0; j < multipleSuppliers[i].length; j++)
-					multipleSuppliers[i][j].setSelectedSupplier(bestCombination[i]);
-			}
-		} else {
-			// either there are no multiple suppliers or the multiple suppliers list is way to big to process in a timely manner.
-			conflicts = initialConflicts;
-		}
-		// do not need to keep uses data in memory
-		groupingChecker.clear();
-		return conflicts;
-	}
-
-	private long getNumCombinations(ResolverConstraint[][] multipleSuppliers) {
-		if (multipleSuppliers == null || multipleSuppliers.length == 0)
-			return 0;
-		long numCombinations = multipleSuppliers[0][0].getNumPossibleSuppliers();
-		for (int i = 1; i < multipleSuppliers.length; i++)
-			if (multipleSuppliers[i].length > 0)
-				numCombinations *= multipleSuppliers[i][0].getNumPossibleSuppliers();
-		return numCombinations;
-	}
-
-	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
-		int bestConflictCount = getConflictCount(bestConflicts);
-		ResolverBundle[] bestConflictBundles = getConflictedBundles(bestConflicts);
-		while (bestConflictCount != 0 && getNextCombination(multipleSuppliers)) {
-			if (DEBUG_GROUPING)
-				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)
-				// 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);
-			}
-		}
-		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(FrameworkAdaptor.FRAMEWORK_SYMBOLICNAME) == 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()][]);
-	}
-
-	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.isDropped())
-						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();
-					// TODO if the selection policy is set then number of references can override the selection policy; is that what we want?
-					// 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);
-				}
-			}
-		}
-		// unresolve the rejected singletons
-		for (Iterator rejects = rejectedSingletons.iterator(); rejects.hasNext();)
-			unresolveBundle((ResolverBundle) bundleMapping.get(rejects.next()), false);
-		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;
-		Object[] exports = resolverExports.get(imp.getName());
-		exportsloop: 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.getBundle() == export.getExporter() && !export.getExportPackageDescription().isRoot())
-					continue; // Can't wire to our own re-export
-				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);
-				ResolverExport[] importerExps = null;
-				if (imp.getBundle() != export.getExporter()) {
-					// Save the exports of this package from the importer in case we need to add them back
-					importerExps = imp.getBundle().getExports(imp.getName());
-					for (int j = 0; j < importerExps.length; j++) {
-						if (importerExps[j].getExportPackageDescription().isRoot() && !export.getExportPackageDescription().isRoot())
-							continue exportsloop; // to prevent imports from getting wired to re-exports if we offer a root export
-						if (importerExps[j].getExportPackageDescription().isRoot()) // do not drop reexports when import wins
-							resolverExports.remove(importerExps[j]); // Import wins, remove 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.isDropped()) {
-						// remove the possible supplier
-						imp.removePossibleSupplier(export);
-						// add back the exports of this package from the importer
-						for (int j = 0; j < importerExps.length; j++)
-							resolverExports.put(importerExps[j].getName(), importerExps[j]);
-						continue; // Bundle hasn't resolved || export has not been selected and is unavailable
-					}
-				} else if (export.isDropped())
-					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 (resolveImportReprovide(imp, cycle))
-			return true;
-		if (imp.isOptional())
-			return true; // If the import is optional then just return true
-		return false;
-	}
-
-	// Check if the import can be resolved to a re-exported package (has no export object to match to)
-	private boolean resolveImportReprovide(ResolverImport imp, ArrayList cycle) {
-		String bsn = ((ImportPackageSpecification) imp.getVersionConstraint()).getBundleSymbolicName();
-		// If no symbolic name specified then just return (since this is a
-		// re-export an import not specifying a bsn will wire to the root)
-		if (bsn == null)
-			return false;
-		if (DEBUG_IMPORTS)
-			ResolverImpl.log("Checking reprovides: " + imp.getName()); //$NON-NLS-1$
-		// Find bundle with specified bsn
-		Object[] bundles = resolverBundles.get(bsn);
-		for (int i = 0; i < bundles.length; i++)
-			if (resolveBundle((ResolverBundle) bundles[i], cycle))
-				if (resolveImportReprovide0(imp, (ResolverBundle) bundles[i], (ResolverBundle) bundles[i], cycle, new ArrayList(5)))
-					return true;
-		return false;
-	}
-
-	private boolean resolveImportReprovide0(ResolverImport imp, ResolverBundle reexporter, ResolverBundle rb, ArrayList cycle, ArrayList visited) {
-		if (visited.contains(rb))
-			return false; // make sure we don't endless recurse cycles
-		visited.add(rb);
-		BundleConstraint[] requires = rb.getRequires();
-		for (int i = 0; i < requires.length; i++) {
-			if (!((BundleSpecification) requires[i].getVersionConstraint()).isExported())
-				continue; // Skip require if it doesn't re-export the packages
-			// Check exports to see if we've found the root
-			if (requires[i].getSelectedSupplier() == null)
-				continue;
-			ResolverExport[] exports = ((ResolverBundle) requires[i].getSelectedSupplier()).getExports(imp.getName());
-			for (int j = 0; j < exports.length; j++) {
-				Map directives = exports[j].getExportPackageDescription().getDirectives();
-				directives.remove(Constants.USES_DIRECTIVE);
-				ExportPackageDescription epd = state.getFactory().createExportPackageDescription(exports[j].getName(), exports[j].getVersion(), directives, exports[j].getExportPackageDescription().getAttributes(), false, reexporter.getBundle());
-				if (imp.getVersionConstraint().isSatisfiedBy(epd)) {
-					// Create reexport and add to bundle and resolverExports
-					if (DEBUG_IMPORTS)
-						ResolverImpl.log(" - Creating re-export for reprovide: " + reexporter + ":" + epd.getName()); //$NON-NLS-1$ //$NON-NLS-2$
-					ResolverExport re = new ResolverExport(reexporter, epd);
-					reexporter.addExport(re);
-					resolverExports.put(re.getName(), re);
-					// Resolve import
-					imp.addPossibleSupplier(re);
-					return true;
-				}
-			}
-			// Check requires of matching bundle (recurse down the chain)
-			if (resolveImportReprovide0(imp, reexporter, (ResolverBundle) requires[i].getSelectedSupplier(), cycle, visited))
-				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++) {
-			selectedExports.add(exports[i].getExportPackageDescription());
-		}
-		ExportPackageDescription[] selectedExportsArray = (ExportPackageDescription[]) selectedExports.toArray(new ExportPackageDescription[selectedExports.size()]);
-
-		// 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());
-		ExportPackageDescription[] exportsWiredToArray = (ExportPackageDescription[]) exportsWiredTo.toArray(new ExportPackageDescription[exportsWiredTo.size()]);
-
-		// 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].getResolvedRequires(), hostBundles[i].getResolvedImports());
-					}
-				}
-			}
-		}
-
-		// Resolve the bundle in the state
-		state.resolveBundle(rb.getBundle(), rb.isResolved(), hostBundles, selectedExportsArray, bundlesWiredToArray, exportsWiredToArray);
-	}
-
-	// 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() - 2)))) { //$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].setPossibleSuppliers(null);
-						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].setPossibleSuppliers(null);
-					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;
-
-		boolean alreadyThere = false;
-		for (int i = 0; i < unresolvedBundles.size(); i++) {
-			ResolverBundle rb = (ResolverBundle) unresolvedBundles.get(i);
-			if (rb.getBundle() == bundle) {
-				alreadyThere = true;
-			}
-		}
-		if (!alreadyThere) {
-			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) {
-		// 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;
-		// 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);
-		// 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) {
-		bundleRemoved(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) {
-		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_GROUPING = options.getBooleanOption(OPTION_GROUPING, 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;
-	}
-}
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 7e457f8..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionHashMap.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.module;
-
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-
-public class VersionHashMap extends MappedList implements Comparator {
-	private final String systemBundle = Constants.getInternalSymbolicName();
-	private ResolverImpl resolver;
-
-	public VersionHashMap(ResolverImpl resolver) {
-		this.resolver = resolver;
-	}
-
-	// sorts using the Comparator#compare method to sort
-	protected void sort(Object[] values) {
-		Arrays.sort(values, this);
-	}
-
-	public void put(VersionSupplier[] versionSuppliers) {
-		for (int i = 0; i < versionSuppliers.length; i++)
-			put(versionSuppliers[i].getName(), versionSuppliers[i]);
-	}
-
-	public void put(Object key, Object value) {
-		super.put(key, value);
-		((VersionSupplier) value).setDropped(false);
-	}
-
-	public boolean contains(VersionSupplier vs) {
-		return contains(vs, false) != null;
-	}
-
-	private VersionSupplier contains(VersionSupplier vs, boolean remove) {
-		Object[] existing = (Object[]) internal.get(vs.getName());
-		if (existing == null)
-			return null;
-		for (int i = 0; i < existing.length; i++)
-			if (existing[i] == vs) {
-				if (remove) {
-					vs.setDropped(true);
-					if (existing.length == 1) {
-						internal.remove(vs.getName());
-						return vs;
-					}
-					Object[] newExisting = new Object[existing.length - 1];
-					System.arraycopy(existing, 0, newExisting, 0, i);
-					if (i + 1 < existing.length)
-						System.arraycopy(existing, i + 1, newExisting, i, existing.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]);
-	}
-
-	public Object[] remove(Object key) {
-		Object[] results = super.remove(key);
-		for (int i = 0; i < results.length; i++)
-			((VersionSupplier) results[i]).setDropped(true);
-		return results;
-	}
-
-	// 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 = (Object[]) it.next();
-			if (existing.length <= 1)
-				continue;
-			sort(existing);
-		}
-	}
-
-	// 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 (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 19bfb1a..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/module/VersionSupplier.java
+++ /dev/null
@@ -1,59 +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.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 {
-	BaseDescription base;
-	boolean dropped = false;
-
-	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
-	boolean isDropped() {
-		return dropped;
-	}
-
-	// sets the dropped status.  This should only be called by the VersionHashMap 
-	// when VersionSuppliers are removed
-	void setDropped(boolean dropped) {
-		this.dropped = dropped;
-	}
-
-	/*
-	 * returns the BundleDescription which supplies this VersionSupplier
-	 */
-	abstract public BundleDescription getBundle();
-
-	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 b509586..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BaseDescriptionImpl.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.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.BaseDescription;
-import org.osgi.framework.Version;
-
-public abstract class BaseDescriptionImpl implements BaseDescription {
-	private String name;
-	private Version version;
-
-	public String getName() {
-		return name;
-	}
-
-	public Version getVersion() {
-		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 695d73d..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDeltaImpl.java
+++ /dev/null
@@ -1,77 +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.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.BundleDelta;
-import org.eclipse.osgi.service.resolver.BundleDescription;
-
-public class BundleDeltaImpl implements BundleDelta {
-
-	private BundleDescription bundleDescription;
-	private 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 1ae157c..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleDescriptionImpl.java
+++ /dev/null
@@ -1,555 +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.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 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 int stateBits = FULLY_LOADED | ATTACH_FRAGMENTS | DYNAMIC_FRAGMENTS;
-
-	private long bundleId = -1;
-	private HostSpecification host; //null if the bundle is not a fragment
-	private StateImpl containingState;
-
-	private Object userObject;
-	private int lazyDataOffset = -1;
-	private int lazyDataSize = -1;
-
-	//TODO These could be arrays
-	private ArrayList dependencies;
-	private ArrayList dependents;
-
-	private LazyData lazyData;
-	private int equinox_ee = -1;
-
-	public BundleDescriptionImpl() {
-		// 
-	}
-
-	public long getBundleId() {
-		return bundleId;
-	}
-
-	public String getSymbolicName() {
-		return getName();
-	}
-
-	public BundleDescription getSupplier() {
-		return this;
-	}
-
-	public String getLocation() {
-		fullyLoad();
-		return lazyData.location;
-	}
-
-	public String getPlatformFilter() {
-		fullyLoad();
-		return lazyData.platformFilter;
-	}
-
-	public String[] getExecutionEnvironments() {
-		fullyLoad();
-		if (lazyData.executionEnvironments == null)
-			return EMPTY_STRING;
-		return lazyData.executionEnvironments;
-	}
-
-	public ImportPackageSpecification[] getImportPackages() {
-		fullyLoad();
-		if (lazyData.importPackages == null)
-			return EMPTY_IMPORTS;
-		return lazyData.importPackages;
-	}
-
-	public BundleSpecification[] getRequiredBundles() {
-		fullyLoad();
-		if (lazyData.requiredBundles == null)
-			return EMPTY_BUNDLESPECS;
-		return lazyData.requiredBundles;
-	}
-
-	public GenericSpecification[] getGenericRequires() {
-		fullyLoad();
-		if (lazyData.genericRequires == null)
-			return EMPTY_GENERICSPECS;
-		return lazyData.genericRequires;
-	}
-
-	public GenericDescription[] getGenericCapabilities() {
-		fullyLoad();
-		if (lazyData.genericCapabilities == null)
-			return EMPTY_GENERICDESCS;
-		return lazyData.genericCapabilities;
-	}
-
-	public ExportPackageDescription[] getExportPackages() {
-		fullyLoad();
-		return lazyData.exportPackages == null ? EMPTY_EXPORTS : lazyData.exportPackages;
-	}
-
-	public boolean isResolved() {
-		return (stateBits & RESOLVED) != 0;
-	}
-
-	public State getContainingState() {
-		return containingState;
-	}
-
-	public BundleDescription[] getFragments() {
-		if (host != null)
-			return EMPTY_BUNDLEDESCS;
-		return containingState.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() {
-		fullyLoad();
-		if (lazyData.selectedExports == null)
-			return EMPTY_EXPORTS;
-		return lazyData.selectedExports;
-	}
-
-	public BundleDescription[] getResolvedRequires() {
-		fullyLoad();
-		if (lazyData.resolvedRequires == null)
-			return EMPTY_BUNDLEDESCS;
-		return lazyData.resolvedRequires;
-	}
-
-	public ExportPackageDescription[] getResolvedImports() {
-		fullyLoad();
-		if (lazyData.resolvedImports == null)
-			return EMPTY_EXPORTS;
-		return lazyData.resolvedImports;
-	}
-
-	protected void setBundleId(long bundleId) {
-		this.bundleId = bundleId;
-	}
-
-	protected void setSymbolicName(String symbolicName) {
-		setName(symbolicName);
-	}
-
-	protected void setLocation(String location) {
-		checkLazyData();
-		lazyData.location = location;
-	}
-
-	protected void setPlatformFilter(String platformFilter) {
-		checkLazyData();
-		lazyData.platformFilter = platformFilter;
-	}
-
-	protected void setExecutionEnvironments(String[] executionEnvironments) {
-		checkLazyData();
-		lazyData.executionEnvironments = executionEnvironments;
-	}
-
-	protected void setExportPackages(ExportPackageDescription[] exportPackages) {
-		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) {
-		checkLazyData();
-		lazyData.importPackages = importPackages;
-		if (importPackages != null) {
-			for (int i = 0; i < importPackages.length; i++) {
-				if (Constants.OSGI_SYSTEM_BUNDLE.equals(importPackages[i].getBundleSymbolicName()))
-					((ImportPackageSpecificationImpl) importPackages[i]).setBundleSymbolicName(Constants.getInternalSymbolicName());
-				((ImportPackageSpecificationImpl) importPackages[i]).setBundle(this);
-				if (ImportPackageSpecification.RESOLUTION_DYNAMIC.equals(importPackages[i].getDirective(Constants.RESOLUTION_DIRECTIVE)))
-					stateBits |= HAS_DYNAMICIMPORT;
-			}
-		}
-	}
-
-	protected void setRequiredBundles(BundleSpecification[] requiredBundles) {
-		checkLazyData();
-		lazyData.requiredBundles = requiredBundles;
-		if (requiredBundles != null)
-			for (int i = 0; i < requiredBundles.length; i++) {
-				if (Constants.OSGI_SYSTEM_BUNDLE.equals(requiredBundles[i].getName()))
-					((VersionConstraintImpl) requiredBundles[i]).setName(Constants.getInternalSymbolicName());
-				((VersionConstraintImpl) requiredBundles[i]).setBundle(this);
-			}
-	}
-
-	protected void setGenericCapabilities(GenericDescription[] genericCapabilities) {
-		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) {
-		checkLazyData();
-		lazyData.genericRequires = genericRequires;
-		if (genericRequires != null)
-			for (int i = 0; i < genericRequires.length; i++)
-				((VersionConstraintImpl) genericRequires[i]).setBundle(this);
-	}
-
-	protected int getStateBits() {
-		return stateBits;
-	}
-
-	protected void setStateBit(int stateBit, boolean on) {
-		if (on)
-			stateBits |= stateBit;
-		else
-			stateBits &= ~stateBit;
-	}
-
-	protected void setContainingState(State value) {
-		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) {
-		this.host = host;
-		if (host != null) {
-			if (Constants.OSGI_SYSTEM_BUNDLE.equals(host.getName()))
-				((VersionConstraintImpl) host).setName(Constants.getInternalSymbolicName());
-			((VersionConstraintImpl) host).setBundle(this);
-		}
-	}
-
-	protected void setLazyLoaded(boolean lazyLoad) {
-		fullyLoad();
-		if (lazyLoad)
-			stateBits |= LAZY_LOADED;
-		else
-			stateBits &= ~LAZY_LOADED;
-	}
-
-	protected void setSelectedExports(ExportPackageDescription[] selectedExports) {
-		checkLazyData();
-		lazyData.selectedExports = selectedExports;
-		if (selectedExports != null) {
-			for (int i = 0; i < selectedExports.length; i++) {
-				((ExportPackageDescriptionImpl) selectedExports[i]).setExporter(this);
-			}
-		}
-	}
-
-	protected void setResolvedImports(ExportPackageDescription[] resolvedImports) {
-		checkLazyData();
-		lazyData.resolvedImports = resolvedImports;
-	}
-
-	protected void setResolvedRequires(BundleDescription[] resolvedRequires) {
-		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 % Integer.MAX_VALUE);
-	}
-
-	/* 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 synchronized void removeDependencies() {
-		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) {
-		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 synchronized void addDependency(BaseDescriptionImpl dependency, boolean checkDups) {
-		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.
-	 */
-	synchronized List getBundleDependencies() {
-		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 synchronized void addDependent(BundleDescription dependent) {
-		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 synchronized void removeDependent(BundleDescription dependent) {
-		if (dependents == null)
-			return;
-		dependents.remove(dependent);
-	}
-
-	public synchronized BundleDescription[] getDependents() {
-		if (dependents == null)
-			return EMPTY_BUNDLEDESCS;
-		return (BundleDescription[]) dependents.toArray(new BundleDescription[dependents.size()]);
-	}
-
-	void setFullyLoaded(boolean fullyLoaded) {
-		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;
-	}
-
-	private void fullyLoad() {
-		if ((stateBits & LAZY_LOADED) == 0)
-			return;
-		StateReader reader = containingState.getReader();
-		synchronized (reader) {
-			if (isFullyLoaded()) {
-				reader.setAccessedFlag(true); // set reader accessed flag
-			return;
-			}
-			try {
-				reader.fullyLoad(this);
-			} catch (IOException e) {
-				throw new RuntimeException(e.getMessage()); // TODO not sure what to do here!!
-			}
-		}
-	}
-
-	synchronized void addDynamicResolvedImport(ExportPackageDescriptionImpl result) {
-		// 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);
-	}
-
-	/*
-	 * This method must be called while the state reader for the containing state is locked.
-	 */
-	void unload() {
-		if ((stateBits & LAZY_LOADED) == 0)
-			return;
-		if (!isFullyLoaded())
-			return;
-		setFullyLoaded(false);
-		LazyData tempData = lazyData;
-		lazyData = null;
-		if (tempData == null || tempData.selectedExports == null)
-			return;
-		for (int i = 0; i < tempData.selectedExports.length; i++)
-			containingState.getReader().objectTable.remove(new Integer(((ExportPackageDescriptionImpl) tempData.selectedExports[i]).getTableIndex()));
-	}
-
-	void setDynamicStamps(HashMap dynamicStamps) {
-		lazyData.dynamicStamps = dynamicStamps;
-	}
-
-	void setDynamicStamp(String requestedPackage, Long timestamp) {
-		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) {
-		fullyLoad();
-		Long stamp = lazyData.dynamicStamps == null ? null : (Long) lazyData.dynamicStamps.get(requestedPackage);
-		return stamp == null ? 0 : stamp.longValue();
-	}
-
-	HashMap getDynamicStamps() {
-		fullyLoad();
-		return lazyData.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;
-
-		ExportPackageDescription[] selectedExports;
-		BundleDescription[] resolvedRequires;
-		ExportPackageDescription[] resolvedImports;
-
-		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 a86e119..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/BundleSpecificationImpl.java
+++ /dev/null
@@ -1,52 +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.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.service.resolver.BaseDescription;
-import org.eclipse.osgi.service.resolver.BundleSpecification;
-
-public class BundleSpecificationImpl extends VersionConstraintImpl implements BundleSpecification {
-	private boolean exported;
-	private boolean optional;
-
-	protected void setExported(boolean exported) {
-		this.exported = exported;
-	}
-
-	protected void setOptional(boolean optional) {
-		this.optional = optional;
-	}
-
-	public boolean isExported() {
-		return exported;
-	}
-
-	public boolean isOptional() {
-		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 4e3c0b1..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ComputeNodeOrder.java
+++ /dev/null
@@ -1,515 +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.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.
- * 
- * @see org.eclipse.core.runtime.internal.adaptor.BundleStopper#stopBundles()
- * @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 probject 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 projects 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 76c6ee8..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ExportPackageDescriptionImpl.java
+++ /dev/null
@@ -1,140 +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.resolver;
-
-import java.util.*;
-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 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 boolean root;
-	private int tableIndex;
-
-	public Map getDirectives() {
-		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) {
-		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) {
-		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) {
-		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() {
-		return attributes;
-	}
-
-	public BundleDescription getSupplier() {
-		return getExporter();
-	}
-
-	public BundleDescription getExporter() {
-		return exporter;
-	}
-
-	public boolean isRoot() {
-		return root;
-	}
-
-	protected void setAttributes(Map attributes) {
-		this.attributes = attributes;
-	}
-
-	protected void setExporter(BundleDescription exporter) {
-		this.exporter = exporter;
-	}
-
-	protected void setRoot(boolean root) {
-		this.root = root;
-	}
-
-	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 0927660..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericDescriptionImpl.java
+++ /dev/null
@@ -1,59 +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.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 BundleDescription supplier;
-	private String type = GenericDescription.DEFAULT_TYPE;
-
-	public Dictionary getAttributes() {
-		return attributes;
-	}
-
-	public BundleDescription getSupplier() {
-		return supplier;
-	}
-
-	void setAttributes(Dictionary attributes) {
-		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 8f6d44b..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/GenericSpecificationImpl.java
+++ /dev/null
@@ -1,99 +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.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.*;
-
-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() {
-		return matchingFilter == null ? null : matchingFilter.toString();
-	}
-
-	void setMatchingFilter(String matchingFilter) throws InvalidSyntaxException {
-		this.matchingFilter = matchingFilter == null ? null : FrameworkUtil.createFilter(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() {
-		return type;
-	}
-
-	void setType(String type) {
-		if (type == null || type.equals(GenericDescription.DEFAULT_TYPE))
-			this.type = GenericDescription.DEFAULT_TYPE;
-		else
-			this.type = type;
-	}
-
-	public int getResolution() {
-		return resolution;
-	}
-
-	public boolean isResolved() {
-		return suppliers != null && suppliers.length > 0;
-	}
-
-	void setResolution(int resolution) {
-		this.resolution = resolution;
-	}
-
-	public BaseDescription getSupplier() {
-		return suppliers == null || suppliers.length == 0 ? null : suppliers[0];
-	}
-
-	protected void setSupplier(BaseDescription supplier) {
-		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() {
-		return suppliers;
-	}
-
-	void setSupplers(GenericDescription[] suppliers) {
-		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 9c12d37..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/HostSpecificationImpl.java
+++ /dev/null
@@ -1,64 +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.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() {
-		return hosts;
-	}
-
-	public boolean isResolved() {
-		return hosts != null && hosts.length > 0;
-	}
-
-	/*
-	 * The resolve algorithm will call this method to set the hosts.
-	 */
-	void setHosts(BundleDescription[] hosts) {
-		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() {
-		if (hosts == null || hosts.length == 0)
-			return null;
-		return hosts[0];
-	}
-
-	public boolean isMultiHost() {
-		return multihost;
-	}
-
-	void setIsMultiHost(boolean multihost) {
-		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 63a7c85..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ImportPackageSpecificationImpl.java
+++ /dev/null
@@ -1,157 +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.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() {
-		Map result = new HashMap(5);
-		if (resolution != null)
-			result.put(Constants.RESOLUTION_DIRECTIVE, resolution);
-		return result;
-	}
-
-	public Object getDirective(String key) {
-		if (key.equals(Constants.RESOLUTION_DIRECTIVE))
-			return resolution;
-		return null;
-	}
-
-	public Object setDirective(String key, Object value) {
-		if (key.equals(Constants.RESOLUTION_DIRECTIVE))
-			return resolution = (String) value;
-		return null;
-	}
-
-	public void setDirectives(Map directives) {
-		if (directives == null)
-			return;
-		resolution = (String) directives.get(Constants.RESOLUTION_DIRECTIVE);
-	}
-
-	public String getBundleSymbolicName() {
-		return symbolicName;
-	}
-
-	public VersionRange getBundleVersionRange() {
-		if (bundleVersionRange == null)
-			return VersionRange.emptyRange;
-		return bundleVersionRange;
-	}
-
-	public Map getAttributes() {
-		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) {
-			boolean strict = ((StateImpl) getBundle().getContainingState()).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;
-			}
-		}
-
-		if (symbolicName != null) {
-			BundleDescription exporter = pkgDes.getExporter();
-			if (!symbolicName.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 (symbolicName == 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) {
-		this.symbolicName = symbolicName;
-	}
-
-	protected void setBundleVersionRange(VersionRange bundleVersionRange) {
-		this.bundleVersionRange = bundleVersionRange;
-	}
-
-	protected void setAttributes(Map attributes) {
-		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/ReadOnlyState.java b/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ReadOnlyState.java
deleted file mode 100644
index 46dcd79..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ReadOnlyState.java
+++ /dev/null
@@ -1,173 +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.Dictionary;
-
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.BundleException;
-import org.osgi.framework.Version;
-
-public class ReadOnlyState implements State {
-	private 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();
-	}
-
-	public void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] host, ExportPackageDescription[] selectedExports, 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();
-	}
-}
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 69b6dad..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/ResolverErrorImpl.java
+++ /dev/null
@@ -1,72 +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.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-import org.eclipse.osgi.util.NLS;
-
-public class ResolverErrorImpl implements ResolverError {
-	private BundleDescriptionImpl bundle;
-	private int type;
-	private String data;
-	private 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());
-			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 25ddf3d..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateBuilder.java
+++ /dev/null
@@ -1,547 +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.internal.resolver;
-
-import java.lang.reflect.Constructor;
-import java.util.*;
-import org.eclipse.osgi.framework.internal.core.Constants;
-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.REEXPORT_PACKAGE, 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)
-				throw new BundleException(ex.getMessage());
-			// 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]));
-		ManifestElement[] exports = ManifestElement.parseHeader(Constants.EXPORT_PACKAGE, (String) manifest.get(Constants.EXPORT_PACKAGE));
-		ManifestElement[] reexports = ManifestElement.parseHeader(Constants.REEXPORT_PACKAGE, (String) manifest.get(Constants.REEXPORT_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, reexports, 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));
-		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) {
-		Dictionary[] platformProps = state == null ? null : state.getPlatformProperties();
-		String genericAliasesProp = platformProps == null || platformProps.length == 0 ? null : (String) platformProps[0].get("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 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);
-				checkForDuplicateDirectives(elements);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.REEXPORT_PACKAGE)
-					checkForUsesDirective(elements);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.IMPORT_PACKAGE)
-					checkImportExportSyntax(elements, false, false, jreBundle);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.DYNAMICIMPORT_PACKAGE)
-					checkImportExportSyntax(elements, false, true, jreBundle);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.EXPORT_PACKAGE)
-					checkImportExportSyntax(elements, true, false, jreBundle);
-				if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.FRAGMENT_HOST)
-					checkExtensionBundle(elements);
-			} else if (DEFINED_OSGI_VALIDATE_HEADERS[i] == Constants.BUNDLE_SYMBOLICNAME) {
-				throw new BundleException(NLS.bind(StateMsg.HEADER_REQUIRED, Constants.BUNDLE_SYMBOLICNAME));
-			}
-		}
-	}
-
-	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[] reexported, ManifestElement[] provides, ArrayList providedExports, int manifestVersion, boolean strict) throws BundleException {
-		int numExports = (exported == null ? 0 : exported.length) + (reexported == null ? 0 : reexported.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, false, strict);
-		if (reexported != null)
-			for (int i = 0; i < reexported.length; i++)
-				addExportPackages(reexported[i], allExports, manifestVersion, true, 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 reexported, 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));
-			result.setRoot(!reexported);
-			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());
-				result.setRoot(true);
-				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 (Exception e) { // got some reflection exception
-						if (e instanceof RuntimeException)
-							throw (RuntimeException) e;
-						throw new RuntimeException(e.getMessage());
-					}
-				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) {
-		if (spec == null)
-			return null;
-		HostSpecificationImpl result = new HostSpecificationImpl();
-		result.setName(spec.getValue());
-		result.setVersionRange(getVersionRange(spec.getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE)));
-		result.setIsMultiHost("true".equals(spec.getDirective("multiple-hosts"))); //$NON-NLS-1$ //$NON-NLS-2$
-		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) {
-					throw new BundleException(Constants.SELECTION_FILTER_ATTRIBUTE, e);
-				}
-				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 VersionRange getVersionRange(String versionRange) {
-		if (versionRange == null)
-			return null;
-		return new VersionRange(versionRange);
-	}
-
-	private static void checkImportExportSyntax(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]))
-					throw new BundleException(NLS.bind(StateMsg.HEADER_PACKAGE_DUPLICATES, packageNames[j]));
-				// check for java.*
-				if (!jreBundle && packageNames[j].startsWith("java.")) //$NON-NLS-1$
-					throw new BundleException(NLS.bind(StateMsg.HEADER_PACKAGE_JAVA, packageNames[j]));
-				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));
-			}
-			// check for bundle-symbolic-name and bundle-verion attibures
-			// (failure)
-			if (export) {
-				if (elements[i].getAttribute(Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE) != null)
-					throw new BundleException(NLS.bind(StateMsg.HEADER_EXPORT_ATTR_ERROR, Constants.BUNDLE_SYMBOLICNAME_ATTRIBUTE, Constants.EXPORT_PACKAGE));
-				if (elements[i].getAttribute(Constants.BUNDLE_VERSION_ATTRIBUTE) != null)
-					throw new BundleException(NLS.bind(StateMsg.HEADER_EXPORT_ATTR_ERROR, Constants.BUNDLE_VERSION_ATTRIBUTE, Constants.EXPORT_PACKAGE));
-			}
-		}
-	}
-
-	private static void checkForDuplicateDirectives(ManifestElement[] elements) throws BundleException {
-		// check for duplicate directives
-		for (int i = 0; i < elements.length; i++) {
-			Enumeration keys = elements[i].getDirectiveKeys();
-			if (keys != null) {
-				while (keys.hasMoreElements()) {
-					String key = (String) keys.nextElement();
-					String[] directives = elements[i].getDirectives(key);
-					if (directives.length > 1)
-						throw new BundleException(NLS.bind(StateMsg.HEADER_DIRECTIVE_DUPLICATES, key));
-				}
-			}
-		}
-	}
-
-	private static void checkForUsesDirective(ManifestElement[] elements) throws BundleException {
-		for (int i = 0; i < elements.length; i++)
-			if (elements[i].getDirective(Constants.USES_DIRECTIVE) != null)
-				throw new BundleException(NLS.bind(StateMsg.HEADER_REEXPORT_USES, Constants.USES_DIRECTIVE, Constants.REEXPORT_PACKAGE));
-	}
-
-	private static void checkExtensionBundle(ManifestElement[] elements) throws BundleException {
-		if (elements.length == 0 || elements[0].getDirective(Constants.EXTENSION_DIRECTIVE) == null)
-			return;
-		String hostName = elements[0].getValue();
-		if (!hostName.equals(Constants.SYSTEM_BUNDLE_SYMBOLICNAME) && !hostName.equals(Constants.getInternalSymbolicName()))
-			throw new BundleException(NLS.bind(StateMsg.HEADER_EXTENSION_ERROR, hostName));
-	}
-}
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 6c1738a..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateDeltaImpl.java
+++ /dev/null
@@ -1,128 +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.internal.resolver;
-
-import java.util.*;
-
-import org.eclipse.osgi.service.resolver.*;
-
-public class StateDeltaImpl implements StateDelta {
-	private State state;
-	private Map changes = new HashMap();
-
-	public StateDeltaImpl(State state) {
-		this.state = state;
-	}
-
-	public BundleDelta[] getChanges() {
-		return (BundleDelta[]) changes.values().toArray(new BundleDelta[changes.size()]);
-	}
-
-	public BundleDelta[] getChanges(int mask, boolean exact) {
-		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) {
-		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) {
-		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) {
-		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) {
-		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) {
-		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) {
-		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 efc823b..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateHelperImpl.java
+++ /dev/null
@@ -1,376 +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.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 class StateHelperImpl implements StateHelper {
-	private static 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);
-		for (int i = 0; i < bundles.length; i++) {
-			BundleDescription description = bundles[i];
-			VersionConstraint[] constraints = getUnsatisfiedConstraints(description);
-			for (int j = 0; j < constraints.length; j++) {
-				VersionConstraint constraint = constraints[j];
-				boolean satisfied = false;
-				if (constraint instanceof BundleSpecification || constraint instanceof HostSpecification) {
-					BundleDescription[] suppliers = state.getBundles(constraint.getName());
-					for (int k = 0; k < suppliers.length && !satisfied; k++) 
-						satisfied |= constraint.isSatisfiedBy(suppliers[k]);
-				} else if (constraint instanceof ImportPackageSpecification) {
-					Set exports = (Set) packages.get(constraint.getName());
-					if (exports != null) 
-						for (Iterator iter = exports.iterator(); iter.hasNext() && !satisfied;)
-							satisfied |= constraint.isSatisfiedBy((ExportPackageDescription) iter.next());
-				} else if (constraint instanceof GenericSpecification) {
-					Set genericSet = (Set) generics.get(constraint.getName());
-					if (genericSet != null) 
-						for (Iterator iter = genericSet.iterator(); iter.hasNext() && !satisfied;)
-							satisfied |= constraint.isSatisfiedBy((GenericDescription) iter.next());
-				}
-				if (!satisfied)
-					result.add(constraint);
-			}
-		}
-		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]);
-		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);
-		return ComputeNodeOrder.computeNodeOrder(toSort, (Object[][]) references.toArray(new Object[references.size()][]));
-	}
-
-	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();
-		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.
-		ImportPackageSpecification[] imports = bundle.getImportPackages();
-		for (int i = 0; i < imports.length; i++) {
-			ExportPackageDescription pkgSupplier = (ExportPackageDescription) imports[i].getSupplier();
-			if (pkgSupplier == null)
-				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[i].getName());
-			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[i].getName()); // besure to add to direct import list
-		}
-		// now find all the packages that are visible from required bundles
-		BundleSpecification[] requires = bundle.getRequiredBundles();
-		Set visited = new HashSet(requires.length);
-		visited.add(bundle); // always add self to prevent recursing into self
-		for (int i = 0; i < requires.length; i++) {
-			BundleDescription bundleSupplier = (BundleDescription) requires[i].getSupplier();
-			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[] 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.
-		BundleSpecification[] requiredBundles = requiredBundle.getRequiredBundles();
-		for (int i = 0; i < requiredBundles.length; i++) {
-			if (requiredBundles[i].getSupplier() == null)
-				continue;
-			if (requiredBundles[i].isExported()) {
-				// looking for a specific package and that package is exported by this bundle or adding all packages from a reexported bundle
-				getPackages((BundleDescription) requiredBundles[i].getSupplier(), 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((BundleDescription) requiredBundles[i].getSupplier(), 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;
-	}
-}
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 c5f7007..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateImpl.java
+++ /dev/null
@@ -1,778 +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.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.service.resolver.*;
-import org.eclipse.osgi.util.ManifestElement;
-import org.osgi.framework.*;
-
-public abstract class StateImpl implements State {
-	public static final String[] PROPS = {"osgi.os", "osgi.ws", "osgi.nl", "osgi.arch", Constants.OSGI_FRAMEWORK_SYSTEM_PACKAGES, Constants.OSGI_RESOLVER_MODE, Constants.FRAMEWORK_EXECUTIONENVIRONMENT, "osgi.resolveOptional", "osgi.genericAliases"}; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
-	transient private Resolver resolver;
-	transient private StateDeltaImpl changes;
-	transient private boolean resolving = false;
-	transient private HashSet removalPendings = new HashSet();
-	private boolean resolved = true;
-	private long timeStamp = System.currentTimeMillis();
-	private KeyedHashSet bundleDescriptions = new KeyedHashSet(false);
-	private HashMap resolverErrors = new HashMap();
-	private StateObjectFactory factory;
-	private KeyedHashSet resolvedBundles = new KeyedHashSet();
-	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 HashSet platformPropertyKeys = new HashSet(PROPS.length);
-
-	private static long cumulativeTime;
-
-	// to prevent extra-package instantiation 
-	protected StateImpl() {
-		// always add the default platform property keys.
-		addPlatformPropertyKeys(PROPS);
-	}
-
-	public boolean addBundle(BundleDescription description) {
-		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) FrameworkUtil.createFilter(platformFilter);
-				addPlatformPropertyKeys(filter.getAttributes());
-			} catch (InvalidSyntaxException e) {
-				// ignore this is handled in another place
-			}
-		}
-		resolved = false;
-		getDelta().recordBundleAdded((BundleDescriptionImpl) description);
-		if (Constants.getInternalSymbolicName().equals(description.getSymbolicName()))
-			resetSystemExports();
-		if (resolver != null)
-			resolver.bundleAdded(description);
-		updateTimeStamp();
-		return true;
-	}
-
-	public boolean updateBundle(BundleDescription newDescription) {
-		BundleDescriptionImpl existing = (BundleDescriptionImpl) bundleDescriptions.get((BundleDescriptionImpl) newDescription);
-		if (existing == null)
-			return false;
-		if (!bundleDescriptions.remove(existing))
-			return false;
-		resolvedBundles.remove(existing);
-		existing.setStateBit(BundleDescriptionImpl.REMOVAL_PENDING, true);
-		if (!basicAddBundle(newDescription))
-			return false;
-		resolved = false;
-		getDelta().recordBundleUpdated((BundleDescriptionImpl) newDescription);
-		if (Constants.getInternalSymbolicName().equals(newDescription.getSymbolicName()))
-			resetSystemExports();
-		if (resolver != null) {
-			boolean pending = existing.getDependents().length > 0;
-			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
-				synchronized (this) {
-					try {
-						resolving = true;
-						resolverErrors.remove(existing);
-						resolveBundle(existing, false, null, null, null, null);
-					} finally {
-						resolving = false;
-					}
-				}
-			}
-		}
-		updateTimeStamp();
-		return true;
-	}
-
-	public BundleDescription removeBundle(long bundleId) {
-		BundleDescription toRemove = getBundle(bundleId);
-		if (toRemove == null || !removeBundle(toRemove))
-			return null;
-		return toRemove;
-	}
-
-	public boolean removeBundle(BundleDescription toRemove) {
-		if (!bundleDescriptions.remove((KeyedElement) toRemove))
-			return false;
-		resolvedBundles.remove((KeyedElement) toRemove);
-		resolved = false;
-		getDelta().recordBundleRemoved((BundleDescriptionImpl) toRemove);
-		((BundleDescriptionImpl) toRemove).setStateBit(BundleDescriptionImpl.REMOVAL_PENDING, true);
-		if (resolver != null) {
-			boolean pending = toRemove.getDependents().length > 0;
-			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
-				synchronized (this) {
-					try {
-						resolving = true;
-						resolverErrors.remove(toRemove);
-						resolveBundle(toRemove, false, null, null, null, null);
-					} finally {
-						resolving = false;
-					}
-				}
-			}
-		}
-		updateTimeStamp();
-		return true;
-	}
-
-	public StateDelta getChanges() {
-		return getDelta();
-	}
-
-	private StateDeltaImpl getDelta() {
-		if (changes == null)
-			changes = new StateDeltaImpl(this);
-		return changes;
-	}
-
-	public BundleDescription[] getBundles(String symbolicName) {
-		if (Constants.OSGI_SYSTEM_BUNDLE.equals(symbolicName))
-			symbolicName = Constants.getInternalSymbolicName();
-		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() {
-		return (BundleDescription[]) bundleDescriptions.elements(new BundleDescription[bundleDescriptions.size()]);
-	}
-
-	public BundleDescription getBundle(long id) {
-		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) {
-		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() {
-		return timeStamp;
-	}
-
-	public boolean isResolved() {
-		return resolved || isEmpty();
-	}
-
-	public void resolveConstraint(VersionConstraint constraint, BaseDescription supplier) {
-		((VersionConstraintImpl) constraint).setSupplier(supplier);
-	}
-
-	public synchronized void resolveBundle(BundleDescription bundle, boolean status, BundleDescription[] hosts, ExportPackageDescription[] selectedExports, BundleDescription[] resolvedRequires, ExportPackageDescription[] resolvedImports) {
-		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, resolvedRequires, resolvedImports);
-	}
-
-	public synchronized void removeBundleComplete(BundleDescription bundle) {
-		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, 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);
-			}
-		}
-
-		bundle.setSelectedExports(selectedExports);
-		bundle.setResolvedRequires(resolvedRequires);
-		bundle.setResolvedImports(resolvedImports);
-
-		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 unresolveConstraints(BundleDescriptionImpl bundle) {
-		HostSpecificationImpl host = (HostSpecificationImpl) bundle.getHost();
-		if (host != null)
-			host.setHosts(null);
-
-		bundle.setSelectedExports(null);
-		bundle.setResolvedImports(null);
-		bundle.setResolvedRequires(null);
-
-		// remove suppliers for generics
-		GenericSpecification[] genericRequires = bundle.getGenericRequires();
-		if (genericRequires.length > 0)
-			for (int i = 0; i < genericRequires.length; i++)
-				((GenericSpecificationImpl) genericRequires[i]).setSupplers(null);
-		bundle.removeDependencies();
-	}
-
-	private synchronized StateDelta resolve(boolean incremental, BundleDescription[] reResolve) {
-		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);
-		}
-		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() {
-		return (BundleDescription[]) resolvedBundles.elements(new BundleDescription[resolvedBundles.size()]);
-	}
-
-	public boolean isEmpty() {
-		return bundleDescriptions.isEmpty();
-	}
-
-	void setResolved(boolean resolved) {
-		this.resolved = resolved;
-	}
-
-	boolean basicAddBundle(BundleDescription description) {
-		((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) {
-		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) {
-		timeStamp = newTimeStamp;
-	}
-
-	private void updateTimeStamp() {
-		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) {
-		for (Iterator i = bundleDescriptions.iterator(); i.hasNext();) {
-			BundleDescription current = (BundleDescription) i.next();
-			if (location.equals(current.getLocation()))
-				return current;
-		}
-		return null;
-	}
-
-	public Resolver getResolver() {
-		return resolver;
-	}
-
-	public void setResolver(Resolver newResolver) {
-		if (resolver == newResolver)
-			return;
-		if (resolver != null) {
-			Resolver oldResolver = resolver;
-			resolver = null;
-			oldResolver.setState(null);
-		}
-		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
-		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();
-					newPlatformProperties[i].put(key, platformProperties[i].get(key));
-				}
-			}
-		}
-		boolean result = false;
-		if (this.platformProperties.length != newPlatformProperties.length) {
-			result = 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);
-		}
-		// always do a complete replacement of the properties in case new bundles are added that uses new filter props
-		this.platformProperties = newPlatformProperties;
-		if (resetSystemExports && result)
-			resetSystemExports();
-		return result;
-	}
-
-	private void resetSystemExports() {
-		BundleDescription[] systemBundles = getBundles(Constants.getInternalSymbolicName());
-		if (systemBundles.length > 0) {
-			BundleDescriptionImpl systemBundle = (BundleDescriptionImpl) systemBundles[0];
-			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 {
-				ManifestElement[] elements = ManifestElement.parseHeader(Constants.EXPORT_PACKAGE, (String) platformProperties[i].get(Constants.OSGI_FRAMEWORK_SYSTEM_PACKAGES));
-				if (elements == null)
-					continue;
-				// we can pass false for strict mode here because we never want to mark the system exports as internal.
-				ExportPackageDescription[] systemExports = StateBuilder.createExportPackages(elements, null, null, null, 2, false);
-				Integer profInx = new Integer(i);
-				for (int j = 0; j < systemExports.length; j++) {
-					((ExportPackageDescriptionImpl) systemExports[j]).setDirective(ExportPackageDescriptionImpl.EQUINOX_EE, profInx);
-					exports.add(systemExports[j]);
-				}
-			} catch (BundleException e) {
-				// TODO consider throwing this... 
-			}
-	}
-
-	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)
-			return !origObj.equals(newObj);
-		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;
-	}
-
-	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 BundleDescription[] getRemovalPendings() {
-		return (BundleDescription[]) removalPendings.toArray(new BundleDescription[removalPendings.size()]);
-	}
-
-	public synchronized 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;
-		try {
-			resolving = true;
-			fullyLoad();
-			// 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) {
-		this.reader = reader;
-	}
-
-	StateReader getReader() {
-		return reader;
-	}
-
-	public void fullyLoad() {
-		if (reader == null)
-			return;
-		synchronized (reader) {
-			if (fullyLoaded == true)
-				return;
-			if (reader.isLazyLoaded())
-				reader.fullyLoad();
-			fullyLoaded = true;
-		}
-	}
-
-	public void unloadLazyData(long expireTime) {
-		// 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();
-		}
-	}
-
-	public ExportPackageDescription[] getSystemPackages() {
-		ArrayList result = new ArrayList();
-		BundleDescription[] systemBundles = getBundles(Constants.getInternalSymbolicName());
-		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() {
-		return Constants.STRICT_MODE.equals(getPlatformProperties()[0].get(Constants.OSGI_RESOLVER_MODE));
-	}
-
-	public synchronized ResolverError[] getResolverErrors(BundleDescription bundle) {
-		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 synchronized void addResolverError(BundleDescription bundle, int type, String data, VersionConstraint unsatisfied) {
-		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 synchronized void removeResolverErrors(BundleDescription bundle) {
-		if (!resolving)
-			throw new IllegalStateException(); // TODO need error message here!
-		resolverErrors.remove(bundle);
-	}
-
-	public boolean dynamicCacheChanged() {
-		return dynamicCacheChanged;
-	}
-
-	void setDynamicCacheChanged(boolean dynamicCacheChanged) {
-		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() {
-		return highestBundleId;
-	}
-
-}
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 6a68499..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMessages.properties
+++ /dev/null
@@ -1,30 +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
-###############################################################################
-
-#State/Resolver Messages for EN locale
-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_REEXPORT_USES=Cannot specify the \"{0}\" directive on the header \"{1}\"
-HEADER_EXTENSION_ERROR=Extension bundle is not a fragment to the system bundle \"{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_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 b67b812..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateMsg.java
+++ /dev/null
@@ -1,40 +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.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 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_REEXPORT_USES;
-	public static String HEADER_EXTENSION_ERROR;
-
-	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_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 0ccf63e..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateObjectFactoryImpl.java
+++ /dev/null
@@ -1,346 +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.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 {
-
-	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;
-	}
-
-	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);
-	}
-
-	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) {
-		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);
-		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()));
-		return bundle;
-	}
-
-	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.setRoot(root);
-		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 SystemState createSystemState() {
-		SystemState state = new SystemState();
-		state.setFactory(this);
-		return state;
-	}
-
-	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++)
-			newState.basicAddBundle(createBundleDescription(bundles[i]));
-		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;
-	}
-
-	public State readState(InputStream stream) throws IOException {
-		return internalReadStateDeprecated(internalCreateState(), new DataInputStream(stream), -1);
-	}
-
-	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;
-	}
-
-	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);
-	}
-
-	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 089a846..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateReader.java
+++ /dev/null
@@ -1,649 +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.internal.resolver;
-
-import java.io.*;
-import java.lang.ref.WeakReference;
-import java.lang.reflect.Constructor;
-import java.security.AccessController;
-import java.util.*;
-import org.eclipse.osgi.framework.util.SecureAction;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.InvalidSyntaxException;
-import org.osgi.framework.Version;
-
-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.
-	protected Map objectTable = new HashMap();
-
-	private File stateFile;
-	private File lazyFile;
-
-	private boolean lazyLoad = true;
-	private int numBundles;
-	private boolean accessedFlag = false;
-
-	public static final byte STATE_CACHE_VERSION = 26;
-	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();
-			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());
-			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 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.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.setRoot(in.readBoolean());
-		exportPackageDesc.setAttributes(readMap(in));
-		exportPackageDesc.setDirectives(readMap(in));
-		return exportPackageDesc;
-	}
-
-	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 (Exception e) { // got some reflection exception
-					if (e instanceof RuntimeException)
-						throw (RuntimeException) e;
-					throw new RuntimeException(e.getMessage());
-				}
-			}
-			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.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;
-	}
-
-	// 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 = 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 final 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 final boolean loadState(StateImpl state, long expectedTimestamp) throws IOException {
-		return readState(state, expectedTimestamp);
-	}
-
-	private WeakHashMap stringCache = new WeakHashMap();
-
-	private String readString(DataInputStream in, boolean intern) throws IOException {
-		byte type = in.readByte();
-		if (type == NULL)
-			return null;
-		String result;
-		if (intern)
-			result = in.readUTF().intern();
-		else
-			result = in.readUTF();
-		WeakReference ref = (WeakReference) stringCache.get(result);
-		if (ref != null) {
-			String refString = (String) ref.get();
-			if (refString != null)
-				result = refString;
-		} else
-			stringCache.put(result, new WeakReference(result));
-		return result;
-	}
-
-	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(); // 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;
-	}
-}
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 f5178d5..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/StateWriter.java
+++ /dev/null
@@ -1,498 +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.internal.resolver;
-
-import java.io.*;
-import java.util.*;
-import org.eclipse.osgi.service.resolver.*;
-import org.osgi.framework.Constants;
-import org.osgi.framework.Version;
-
-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 Map objectTable = new HashMap();
-	private 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);
-			if (bundles.length == 0)
-				return;
-			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);
-			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 == null)
-			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[] 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);
-		}
-
-		// save the size of the lazy data
-		((BundleDescriptionImpl) bundle).setLazyDataSize(out.size() - dataStart);
-	}
-
-	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);
-		out.writeBoolean(exportPackageDesc.isRoot());
-		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);
-		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 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 823da34..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/SystemState.java
+++ /dev/null
@@ -1,34 +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.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-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 {
-	synchronized public boolean addBundle(BundleDescription description) {
-		return super.addBundle(description);
-	}
-
-	synchronized public boolean removeBundle(BundleDescription toRemove) {
-		return super.removeBundle(toRemove);
-	}
-
-	synchronized public boolean updateBundle(BundleDescription newDescription) {
-		return super.updateBundle(newDescription);
-	}
-
-	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 1bf7d4b..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/UserState.java
+++ /dev/null
@@ -1,60 +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.internal.resolver;
-
-import java.util.HashSet;
-import java.util.Set;
-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 Set updated = new HashSet();
-
-	public synchronized 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 c3dba39..0000000
--- a/bundles/org.eclipse.osgi/resolver/src/org/eclipse/osgi/internal/resolver/VersionConstraintImpl.java
+++ /dev/null
@@ -1,61 +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.internal.resolver;
-
-import org.eclipse.osgi.service.resolver.*;
-
-public abstract class VersionConstraintImpl implements VersionConstraint {
-	private String name;
-	private VersionRange versionRange;
-	private BundleDescription bundle;
-	private BaseDescription supplier;
-
-	public String getName() {
-		return name;
-	}
-
-	public VersionRange getVersionRange() {
-		if (versionRange == null)
-			return VersionRange.emptyRange;
-		return versionRange;
-	}
-
-	public BundleDescription getBundle() {
-		return bundle;
-	}
-
-	public boolean isResolved() {
-		return supplier != null;
-	}
-
-	public BaseDescription getSupplier() {
-		return supplier;
-	}
-
-	public boolean isSatisfiedBy(BaseDescription supplier) {
-		return false;
-	}
-	protected void setName(String name) {
-		this.name = name;
-	}
-
-	protected void setVersionRange(VersionRange versionRange) {
-		this.versionRange = versionRange;
-	}
-
-	protected void setBundle(BundleDescription bundle) {
-		this.bundle = bundle;
-	}
-
-	protected void setSupplier(BaseDescription supplier) {
-		this.supplier = supplier;
-	}
-}
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 7b841ae..0000000
--- a/bundles/org.eclipse.osgi/supplement/.project
+++ /dev/null
@@ -1,28 +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>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.pde.PluginNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</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 c09e0d6..0000000
--- a/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,258 +0,0 @@
-#Mon Feb 26 10:37:58 EST 2007
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.2
-org.eclipse.jdt.core.compiler.compliance=1.4
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=warning
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=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.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
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 eb67dde..0000000
--- a/bundles/org.eclipse.osgi/supplement/.settings/org.eclipse.jdt.ui.prefs
+++ /dev/null
@@ -1,8 +0,0 @@
-#Mon Feb 26 10:45:29 EST 2007
-eclipse.preferences.version=1
-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
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 06c12da..0000000
--- a/bundles/org.eclipse.osgi/supplement/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,24 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: %pluginName
-Bundle-SymbolicName: org.eclipse.equinox.supplement
-Bundle-Version: 1.0.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.0",
- org.eclipse.osgi.service.debug;version="1.0",
- org.eclipse.osgi.service.localization;version="1.0",
- 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
diff --git a/bundles/org.eclipse.osgi/supplement/about.html b/bundles/org.eclipse.osgi/supplement/about.html
deleted file mode 100644
index 03af926..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>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
- 
-<p>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 d1f3b19..0000000
--- a/bundles/org.eclipse.osgi/supplement/build.properties
+++ /dev/null
@@ -1,20 +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
-###############################################################################
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
-               .,\
-               plugin.properties,\
-               about.html
-src.includes = about.html
-jre.compilation.profile = J2SE-1.4
-jars.extra.classpath = osgi/osgi.jar
diff --git a/bundles/org.eclipse.osgi/supplement/osgi/osgi.jar b/bundles/org.eclipse.osgi/supplement/osgi/osgi.jar
deleted file mode 100644
index f25df40..0000000
--- a/bundles/org.eclipse.osgi/supplement/osgi/osgi.jar
+++ /dev/null
Binary files differ
diff --git a/bundles/org.eclipse.osgi/supplement/plugin.properties b/bundles/org.eclipse.osgi/supplement/plugin.properties
deleted file mode 100644
index 1336ae9..0000000
--- a/bundles/org.eclipse.osgi/supplement/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2005 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Eclipse Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/epl-v10.html
-# 
-# Contributors:
-#     IBM Corporation - initial API and implementation
-###############################################################################
-pluginName = Supplemental Equinox Functionality
-providerName = Eclipse.org
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 7fc18cc..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/BasicLocation.java
+++ /dev/null
@@ -1,187 +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.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;
-
-/**
- * Internal class.
- */
-public class BasicLocation implements Location {
-	private static class MockLocker implements Locker {
-		public boolean lock() throws IOException {
-			// locking always successful
-			return true;
-		}
-		public void release() {
-			// nothing to release
-		}
-
-	}
-	private boolean isReadOnly;
-	private URL location = null;
-	private Location parent;
-	private URL defaultValue;
-	private String property;
-
-	// locking related fields
-	private File lockFile;
-	private Locker locker;
-	public static final String PROP_OSGI_LOCKING = "osgi.locking"; //$NON-NLS-1$
-	private static String 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);
-			} else {
-				// 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);
-		} else {
-			return new Locker_JavaIo(lock);
-		}
-	}
-
-	public BasicLocation(String property, URL defaultValue, boolean isReadOnly) {
-		super();
-		this.property = property;
-		this.defaultValue = defaultValue;
-		this.isReadOnly = isReadOnly;
-	}
-
-	public boolean allowsDefault() {
-		return defaultValue != null;
-	}
-
-	public URL getDefault() {
-		return defaultValue;
-	}
-
-	public 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 synchronized boolean setURL(URL value, boolean lock) throws IllegalStateException {
-		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 = new URL("file:" + basePath); //$NON-NLS-1$
-			} catch (IOException e) {
-				// do nothing just use the original value
-			}
-			file = new File(value.getFile(), LOCK_FILENAME);
-		}
-		lock = lock && !isReadOnly;
-		if (lock) {
-			try {
-				if (!lock(file))
-					return false;
-			} catch (IOException e) {
-				return false;
-			}
-		}
-		lockFile = file;
-		location = LocationHelper.buildURL(value.toExternalForm(), true);
-		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())
-			return false;
-		return lock(lockFile);
-	}
-
-	private boolean lock(File lock) throws IOException {
-		if (lock == null || isReadOnly)
-			return false;
-
-		File parentFile = new File(lock.getParent());
-		if (!parentFile.exists())
-			if (!parentFile.mkdirs())
-				return false;
-
-		setLocker(lock);
-		if (locker == null)
-			return true;
-		boolean locked = false; 
-		try {
-			locked = locker.lock();
-			return locked;
-		} finally {
-			if (!locked)
-				locker = null;
-		}
-	}
-
-	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();
-	}
-}
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 4fedb82..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMessages.properties
+++ /dev/null
@@ -1,101 +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
-###############################################################################
-
-#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_OTHER_VERSION=Bundle {0} was picked instead.
-ECLIPSE_CONSOLE_COMMANDS_HEADER=Eclipse Runtime commands.
-ECLIPSE_CONSOLE_HELP_DIAG_COMMAND_DESCRIPTION=Displays unsatisfied constraints for the specified bundle(s).
-
-#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_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_couldNotSave = Could not save file table.
-fileManager_updateFailed = File update failed on one or more files.
-fileManager_illegalInReadOnlyMode = Cannot perform operation while in read-only mode.
-fileManager_notOpen = Manager is not opened.
-
-#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 passing {2} as a VM argument.
-location_cannotLock = An error occurred while locking file \"{0}\".
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 79137cd..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/EclipseAdaptorMsg.java
+++ /dev/null
@@ -1,99 +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 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_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_couldNotSave;
-	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_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_OTHER_VERSION;
-
-	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 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 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 1d3150f..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker.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.core.runtime.internal.adaptor;
-
-import java.io.IOException;
-
-/**
- * Internal class.
- */
-public interface Locker {
-	public boolean lock() 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 dcc5b59..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaIo.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2004, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.core.runtime.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$
-		lockRAF.writeByte(0);
-
-		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();
-	}
-}
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 b972413..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/core/runtime/internal/adaptor/Locker_JavaNio.java
+++ /dev/null
@@ -1,72 +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
- *     Danail Nachev (Prosyst) - bug 185654
- *******************************************************************************/
-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 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 {
-			fileLock = raFile.getChannel().tryLock();
-		} 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;
-		}
-	}
-}
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 ed7ec68..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/Debug.java
+++ /dev/null
@@ -1,356 +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.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 = true;
-			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) {
-				} catch (InvocationTargetException e) {
-				}
-			}
-		}
-	}
-
-}
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 4f186fd..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/debug/FrameworkDebugOptions.java
+++ /dev/null
@@ -1,172 +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.debug;
-
-import java.io.*;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Iterator;
-import java.util.Properties;
-import org.eclipse.osgi.framework.internal.core.FrameworkProperties;
-import org.eclipse.osgi.service.debug.DebugOptions;
-
-/**
- * The DebugOptions class used by the framework to get debug options from.
- * @since 3.1
- */
-public class FrameworkDebugOptions implements DebugOptions {
-	private Properties options = null;
-	private static FrameworkDebugOptions singleton = null;
-	private static boolean debugEnabled = true;
-	private static final String OPTIONS = ".options"; //$NON-NLS-1$
-
-	/**
-	 * Returns the singleton instance of <code>FrameworkDebugOptions</code>.  If
-	 * debug is not enabled then <code>null</code> is returned.
-	 * @return the instance of <code>FrameworkDebugOptions</code>
-	 */
-	public static FrameworkDebugOptions getDefault() {
-		if (singleton == null && debugEnabled) {
-			FrameworkDebugOptions result = new FrameworkDebugOptions();
-			debugEnabled = result.isDebugEnabled();
-			if (debugEnabled)
-				singleton = result;
-		}
-		return 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);
-	}
-
-	private FrameworkDebugOptions() {
-		super();
-		loadOptions();
-	}
-
-	/**
-	 * @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 options != null ? options.getProperty(option) : null;
-	}
-
-	/**
-	 * @see DebugOptions#getOption(String, String)
-	 */
-	public String getOption(String option, String defaultValue) {
-		return options != null ? options.getProperty(option, defaultValue) : 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;
-		}
-	}
-
-	/**
-	 * @see DebugOptions#setOption(String, String)
-	 */
-	public void setOption(String option, String value) {
-		if (options != null)
-			options.put(option, value.trim());
-	}
-
-	private boolean isDebugEnabled() {
-		return options != null;
-	}
-
-	private void loadOptions() {
-		// 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"); //$NON-NLS-1$
-		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());
-		}
-		if (options.size() == 0)
-			options = null;
-	}
-}
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 075f338..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/ExternalMessages.properties
+++ /dev/null
@@ -1,78 +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
-###############################################################################
-
-#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_REQUIRED_EE_EXCEPTION=No match is available for the required execution environment: {0}
-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_NATIVECODE_MATCH_EXCEPTION=No Bundle-NativeCode match
-BUNDLE_NATIVECODE_INVALID_FILTER=Invalid selection filter in Bundle-NativeCode: {0}
-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 could not be resolved
-BUNDLE_UNRESOLVED_STATE_CONFLICT=The state indicates the bundle is resolved
-BUNDLE_UNRESOLVED_UNSATISFIED_CONSTRAINT_EXCEPTION=The bundle could not be resolved. Reason: {0}
-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={0}.getService() returned a service object that is not an instanceof 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 character {0}
-FILTER_MISSING_RIGHTPAREN=Missing '')'' at character {0}
-FILTER_TRAILING_CHARACTERS=Extraneous trailing characters at character {0}
-FILTER_TERMINATED_ABRUBTLY=Filter ended abruptly
-FILTER_INVALID_OPERATOR=Invalid operator at character {0}
-FILTER_MISSING_ATTR=Missing attr at character {0}
-FILTER_MISSING_VALUE=Missing value at character {0}
-FILTER_INVALID_VALUE=Invalid value at character {0}
-PROPERTIES_INVALID_FW_STARTLEVEL=Invalid initial framework start level.  Value must be a positive integer.  Using Default={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 95aa84c..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/FrameworkProperties.java
+++ /dev/null
@@ -1,74 +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.core;
-
-import java.util.Properties;
-import java.util.PropertyPermission;
-
-/*
- * 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 {
-	
-	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$
-
-	static {
-		Properties systemProperties = System.getProperties();
-		String 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);
-		}
-	}
-		
-	public static Properties getProperties() {
-		SecurityManager sm = System.getSecurityManager();
-		if (sm != null)
-			sm.checkPropertiesAccess();
-		return properties;
-	}
-	
-    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 properties.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) properties.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) properties.remove(key);
-    }    
-}
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 b55584d..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/core/Msg.java
+++ /dev/null
@@ -1,103 +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.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 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 BUNDLE_NATIVECODE_INVALID_FILTER;
-	
-	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_NATIVECODE_MATCH_EXCEPTION;
-	public static String BUNDLE_INSTALL_REQUIRED_EE_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 PROPERTIES_INVALID_FW_STARTLEVEL;
-	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 f7efb49..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, 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.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 0321479..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/internal/reliablefile/ReliableFile.java
+++ /dev/null
@@ -1,829 +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.*;
-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 intinite 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$
-
-	protected static final int FILETYPE_UNKNOWN = -1;
-	protected static final int FILETYPE_VALID = 0;
-	protected static final int FILETYPE_CORRUPT = 1;
-	protected static final int FILETYPE_NOSIGNATURE = 2;
-
-	protected static final byte identifier1[] = {'.', 'c', 'r', 'c'};
-	protected static final byte identifier2[] = {'.', 'v', '1', '\n'};
-
-	private static final int BUF_SIZE = 4096;
-	private static int maxInputStreamBuffer = 128 * 1024; //128k
-	private static int defaultMaxGenerations = 2;
-	private static boolean fileSharing = true;
-	//our cache of the last lookuped up generations for a file
-	private static File lastGenerationFile = null;
-	private static int[] lastGenerations = null;
-
-	static {
-		String prop = FrameworkProperties.getProperty(PROP_MAX_BUFFER); 
-		if (prop != null) {
-			try {
-				maxInputStreamBuffer = Integer.parseInt(prop);
-			} catch (NumberFormatException e) {/*ignore*/
-			}
-		}
-		prop = FrameworkProperties.getProperty(PROP_MAX_GENERATIONS); 
-		if (prop != null) {
-			try {
-				defaultMaxGenerations = Integer.parseInt(prop);
-			} catch (NumberFormatException e) {/*ignore*/
-			}
-		}
-		prop = FrameworkProperties.getProperty(PROP_OSGI_LOCKING);
-		if (prop != null) {
-			if (prop.equals("none")) { //$NON-NLS-1$
-				fileSharing = false;
-			}
-		}
-	}
-
-	/** 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.
-	 */
-	protected 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.
-	 */
-	protected 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 && 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) {
-				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.
-	 */
-	protected 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);
-					synchronized (cacheFiles) {
-						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.
-	 */
-	protected 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 contenets
-	 * @throws IOException If an error occurs closing the file.
-	 */
-	protected 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.
-	 *
-	 */
-	protected void abortOutputFile() {
-		if (outputFile == null)
-			return;
-		outputFile.delete();
-		outputFile = null;
-		appendChecksum = null;
-	}
-
-	protected 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 successfule 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.
-	 */
-	protected 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.
-	 */
-	protected int getSignatureSize() throws IOException {
-		if (inputFile != null) {
-			CacheInfo info;
-			synchronized (cacheFiles) {
-				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.
-	 */
-	protected 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
-	 */
-	protected 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 b7d6e10..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, 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.*;
-
-/**
- * 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 ca0b7f0..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLog.java
+++ /dev/null
@@ -1,93 +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.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
- */
-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 d3efbb3..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/log/FrameworkLogEntry.java
+++ /dev/null
@@ -1,174 +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.log;
-
-/**
- * A framework log entry used to log information to a FrameworkLog
- * @since 3.1
- */
-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 cancelation.
-	 * @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/util/SecureAction.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/util/SecureAction.java
deleted file mode 100644
index 120ac8c..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/framework/util/SecureAction.java
+++ /dev/null
@@ -1,426 +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.util;
-
-import java.io.*;
-import java.net.*;
-import java.security.*;
-import java.util.Properties;
-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(null) {
-				// parentless ClassLoader
-			};
-		}
-	});
-
-	/*
-	 * 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 {
-		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();
-		}
-	}
-
-	/**
-	 * 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).
-	 * @param target the Runnable to create the Thread from.
-	 * @param name The name of the Thread.
-	 * @return The new Thread
-	 */
-	public Thread createThread(final Runnable target, final String name) {
-		if (System.getSecurityManager() == null)
-			return new Thread(target, name);
-		return (Thread) AccessController.doPrivileged(new PrivilegedAction() {
-			public Object run() {
-				return new Thread(target, name);
-			}
-		}, controlContext);
-	}
-
-	/**
-	 * 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 31264e8..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/datalocation/Location.java
+++ /dev/null
@@ -1,142 +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.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
- */
-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$
-
-	/**
-	 * 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
-	 */
-	public boolean setURL(URL value, boolean lock) throws IllegalStateException;
-
-	/**
-	 * 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();
-}
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 cf88ce4..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/debug/DebugOptions.java
+++ /dev/null
@@ -1,79 +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.debug;
-
-/**
- * Used to get debug options settings.
- * <p>
- * This interface is not intended to be implemented by clients.
- * </p>
- * @since 3.1
- */
-public interface DebugOptions {
-
-	/**
-	 * Returns the identified option as a boolean value.  The specified
-	 * defaultValue is returned if no such option is found.   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>
-	 *
-	 * @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 boolean getBooleanOption(String option, boolean defaultValue);
-
-	/**
-	 * Returns the identified option.  <code>null</code>
-	 * is returned if no such option is found.   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>
-	 *
-	 * @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 a NumberFormatException is thrown 
-	 * while converting the option value to an integer.   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>
-	 *
-	 * @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.   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>
-	 *
-	 * @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);
-
-	/**
-	 * Sets the identified option to the identified value.
-	 * @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);
-}
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 31b4ff3..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/localization/BundleLocalization.java
+++ /dev/null
@@ -1,36 +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.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
- */
-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/urlconversion/URLConverter.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/urlconversion/URLConverter.java
deleted file mode 100644
index f160544..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/service/urlconversion/URLConverter.java
+++ /dev/null
@@ -1,62 +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.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 reconized by this converter, then the original URL is
-	 * returned as-is.
-	 * </p>
-	 * @param url the original URL
-	 * @return the resolved URL or the original if the protocol is unknown to this converter
-	 * @exception IOException if unable to resolve URL
-	 * @throws IOException if an error occurs during the resolution
-	 * @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 4c4cf04..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/ManagedOutputStream.java
+++ /dev/null
@@ -1,102 +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.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 d80fd8a..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/storagemanager/StorageManager.java
+++ /dev/null
@@ -1,927 +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.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 boolean tempCleanup = Boolean.valueOf(secure.getProperty("osgi.embedded.cleanTempFiles")).booleanValue(); //$NON-NLS-1$
-	private static 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 
-
-	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 File base; //The folder managed
-	private File managerRoot; //The folder that will contain all the file related to the functionning of the manager (typically a subdir of base)
-
-	private String lockMode = null;
-	private File tableFile = null;
-	private 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 = null; //The file reprensenting the running instance. It is created when the table file is read.
-	private Locker instanceLocker = null; //The locker for the instance file.
-	private 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 Properties table = new Properties();
-	private boolean useReliableFiles = Boolean.valueOf(secure.getProperty("osgi.useReliableFiles")).booleanValue(); //$NON-NLS-1$
-
-	/**
-	 * 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);
-		if (!readOnly)
-			this.managerRoot.mkdirs();
-		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();
-		try {
-			InputStream input;
-			input = new ReliableFileInputStream(tableFile);
-			try {
-				diskTable.load(input);
-			} finally {
-				input.close();
-			}
-		} catch (IOException e) {
-			throw e; // rethrow the exception, we have nothing to add here
-		}
-		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);
-		try {
-			boolean error = true;
-			try {
-				props.store(fileStream, "safe table"); //$NON-NLS-1$
-				fileStream.close();
-				error = false;
-			} finally {
-				if (error)
-					fileStream.abort();
-			}
-		} catch (IOException e) {
-			throw new IOException(EclipseAdaptorMsg.fileManager_couldNotSave);
-		}
-		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();
-						}
-					}
-				}
-			}
-		} catch (IOException e) {
-			//If the exception comes from the updateTable(), there has been a problem in reading the file.		 
-			//If an exception occured in the save, then the table won't be up to date!
-			throw e;
-		} 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 occured opening the storage manager
-	 */
-	public void open(boolean wait) throws IOException {
-		if (openCleanup)
-			cleanup();
-		if (!readOnly) {
-			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/util/ManifestElement.java b/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/ManifestElement.java
deleted file mode 100644
index 2845a62..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/ManifestElement.java
+++ /dev/null
@@ -1,537 +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.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 values associated with it. The general syntax of a manifest element is as follows:
- * <p>
- * <pre>
- * ManifestElement ::= headervalues (';' attribute)*
- * headervalues ::= headervalue (';' headervalue)*
- * headervalue ::= <any string value that does not have ';'>
- * attribute ::= key '=' value
- * key ::= token
- * value ::= token | quoted-string
- * </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>
- * This class is not intended to be subclassed by clients.
- * </p>
- * 
- * @since 3.0
- */
-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.  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.  
-	 * For example, the folowing 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));
-			ArrayList headerValues = new ArrayList();
-			StringBuffer headerValue = new StringBuffer(next);
-			headerValues.add(next);
-
-			if (Debug.DEBUG && Debug.DEBUG_MANIFEST)
-				Debug.print("paserHeader: " + 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));
-				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));
-						next += ":" + c + restOfNext; //$NON-NLS-1$
-						c = tokenizer.getChar();
-					} else
-						directive = true;
-				}
-				if (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));
-						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));
-
-				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));
-				}
-				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));
-					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));
-		}
-		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));
-					}
-					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));
-				}
-				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;
-	}
-}
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 bb9304c..0000000
--- a/bundles/org.eclipse.osgi/supplement/src/org/eclipse/osgi/util/NLS.java
+++ /dev/null
@@ -1,413 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * 
- * Contributors:
- *     IBM - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.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.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;
-	/*
-	 * 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
-	 */
-	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
-	 */
-	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
-	 */
-	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);
-		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 new IllegalArgumentException();
-					}
-					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 (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.
-				field.set(null, value);
-			} 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 bc29122..0000000
--- a/bundles/org.eclipse.osgi/systembundle.properties
+++ /dev/null
@@ -1,13 +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
-###############################################################################
-systemBundle = OSGi System Bundle
-eclipse.org = Eclipse.org
-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