diff --git a/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF b/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF
index 6bdcf61..ecdb124 100644
--- a/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF
+++ b/bundles/org.eclipse.equinox.registry/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.equinox.registry; singleton:=true
-Bundle-Version: 3.3.0.qualifier
+Bundle-Version: 3.3.1.qualifier
 Bundle-Localization: plugin
 Export-Package: org.eclipse.core.internal.registry;x-friends:="org.eclipse.core.runtime",
  org.eclipse.core.internal.registry.osgi;x-friends:="org.eclipse.core.runtime",
diff --git a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java
index 66d7013..805e08b 100644
--- a/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java
+++ b/bundles/org.eclipse.equinox.registry/src/org/eclipse/core/internal/registry/RegistryObjectManager.java
@@ -678,8 +678,28 @@
 					if (tmp == null) // already removed
 						continue;
 					Integer extensionIndex = new Integer(extensions[j]);
-					if (!associatedObjects.containsKey(extensionIndex))
+					if (!associatedObjects.containsKey(extensionIndex)) {
 						result.put(extensionIndex, tmp);
+						collectChildren(tmp, 0, result);
+					}
+				}
+			}
+			else if (object instanceof ExtensionPoint) {
+				// by now extensions of this extension point have been marked as orphans
+				Map orphans = getOrphans();
+				String name = ((ExtensionPoint)object).getUniqueIdentifier();
+				int[] extensions = (int[]) orphans.get(name);
+				if (extensions != null) {
+					for (int j = 0; j < extensions.length; j++) {
+						Extension tmp = (Extension) basicGetObject(extensions[j], RegistryObjectManager.EXTENSION);
+						if (tmp == null) // already removed
+							continue;
+						Integer extensionIndex = new Integer(extensions[j]);
+						if (!associatedObjects.containsKey(extensionIndex)) {
+							result.put(extensionIndex, tmp);
+							collectChildren(tmp, 0, result);
+						}
+					}
 				}
 			}
 		}
