Bug 414066 - BaseImportChecker is not activated
diff --git a/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java b/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java
index 7413471..61205a2 100644
--- a/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java
+++ b/plugins/org.eclipse.objectteams.otequinox.bug253244workaround/src/org/eclipse/objectteams/otequinox/bug253244workaround/Activator.java
@@ -42,7 +42,7 @@
 			Bundle[] bundles = packageAdmin.getBundles("org.eclipse.objectteams.otequinox", "2.3.0");
 			if (bundles != null && bundles.length > 0) {
 				BundleStartLevel startLevel = bundles[0].adapt(BundleStartLevel.class);
-				if (startLevel.getStartLevel() < 1) {
+				if (startLevel.getStartLevel() != 1) {
 					startLevel.setStartLevel(1);
 				}
 				// this would cause lock problems (and is successfully handled already via p2.inf):
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java
index e2cc2d8..3415076 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/AspectBinding.java
@@ -33,6 +33,7 @@
 import org.eclipse.jdt.annotation.Nullable;
 import org.eclipse.objectteams.internal.osgi.weaving.Util.ProfileKind;
 import org.eclipse.objectteams.otequinox.ActivationKind;
+import org.eclipse.objectteams.otre.jplis.ObjectTeamsTransformer;
 import org.objectteams.Team;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.hooks.weaving.WovenClass;
@@ -69,6 +70,8 @@
 
 		ActivationKind activation;
 		boolean hasScannedBases;
+		boolean hasScannedRoles;
+
 		boolean isActivated;
 
 		boolean importsAdded;
@@ -290,8 +293,15 @@
 		if (Util.PROFILE) time= System.nanoTime();
 		ClassScanner scanner = new ClassScanner();
 		for (@SuppressWarnings("null")@NonNull TeamBinding team : getAllTeamBindings()) {
-			if (team.hasScannedBases) continue; // not a surprise for members of equivalentSet
+			if (team.hasScannedBases) { // not a surprise for members of equivalentSet or classes already processed by weave()
+				if (!team.hasScannedRoles) { // weave() only scans bases, not roles!
+					team.hasScannedRoles = true;
+					scanner.readMemberTypeAttributes(bundle, team.teamName, new ObjectTeamsTransformer());
+				}
+				continue;
+			}
 			team.hasScannedBases = true;
+			team.hasScannedRoles = true;
 			try {
 				String teamName = scanner.readOTAttributes(bundle, team.teamName);
 				Collection<String> baseClassNames = scanner.getCollectedBaseClassNames();
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java
index 61ef558..5d22727 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/ClassScanner.java
@@ -130,9 +130,9 @@
 	/*
 	 * Recurse into member types scanning OT attributes.
 	 */
-	private void readMemberTypeAttributes(Bundle			     bundle,
-										  String                 className, 
-										  ObjectTeamsTransformer transformer)
+	void readMemberTypeAttributes(Bundle			     bundle,
+								  String                 className, 
+								  ObjectTeamsTransformer transformer)
 	{
 		List<String> roles = CallinBindingManager.getRolePerTeam(className);
 		if (roles != null) {