diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
index ee97dc2..85162fa 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/internal/p2/engine/SurrogateProfileHandler.java
@@ -236,7 +236,7 @@
 									|| "feature".equals(cap.getName())) { //$NON-NLS-1$
 								featureOrBundle = true;
 							}
-						} else if (Boolean.TRUE.equals(unit.getProperties().get("org.eclipse.equinox.p2.type.group"))) { //$NON-NLS-1$
+						} else if (Boolean.TRUE.equals(Boolean.valueOf(unit.getProperties().get("org.eclipse.equinox.p2.type.group")))) { //$NON-NLS-1$
 							featureOrBundle = true;
 						}
 					}
diff --git a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java
index 2308eff..f9ab50b 100644
--- a/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java
+++ b/bundles/org.eclipse.equinox.p2.engine/src/org/eclipse/equinox/p2/engine/ProvisioningContext.java
@@ -156,16 +156,19 @@
 		List<IArtifactRepository> repos = new ArrayList<>();
 		SubMonitor sub = SubMonitor.convert(monitor, (repositories.length + 1) * 100);
 		for (int i = 0; i < repositories.length; i++) {
-			if (sub.isCanceled())
+			if (sub.isCanceled()) {
 				throw new OperationCanceledException();
+			}
+			URI location = repositories[i];
 			try {
-				repos.add(repoManager.loadRepository(repositories[i], sub.newChild(100)));
+				repos.add(repoManager.loadRepository(location, sub.newChild(100)));
 			} catch (ProvisionException e) {
 				//skip unreadable repositories
 			}
 			// Remove this URI from the list of extra references if it is there.
-			if (referencedArtifactRepositories != null)
-				referencedArtifactRepositories.remove(repositories[i]);
+			if (referencedArtifactRepositories != null && location != null) {
+				referencedArtifactRepositories.remove(location.toString());
+			}
 		}
 		// Are there any extra artifact repository references to consider?
 		if (referencedArtifactRepositories != null && referencedArtifactRepositories.size() > 0 && shouldFollowArtifactReferences()) {
diff --git a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java
index a1d37c7..2f89f04 100644
--- a/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java
+++ b/bundles/org.eclipse.equinox.p2.publisher.eclipse/src/org/eclipse/equinox/internal/p2/publisher/eclipse/ProductFile.java
@@ -434,7 +434,13 @@
 	}
 
 	public boolean containsPlugin(String plugin) {
-		return getBundles(true).contains(plugin);
+		List<IVersionedId> bundles = getBundles(true);
+		for (IVersionedId versionedId : bundles) {
+			if (versionedId.getId().equals(plugin)) {
+				return true;
+			}
+		}
+		return false;
 	}
 
 	public String[] getIcons() {
