When ClassCircularity fails team activation, the freshly created team
instance is leaking
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 fbc0730..8516314 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
@@ -34,6 +34,7 @@
 import org.eclipse.objectteams.internal.osgi.weaving.Util.ProfileKind;
 import org.eclipse.objectteams.otequinox.ActivationKind;
 import org.eclipse.objectteams.otequinox.AspectPermission;
+import org.eclipse.objectteams.otequinox.TransformerPlugin;
 import org.objectteams.Team;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.hooks.weaving.WovenClass;
@@ -62,6 +63,7 @@
 
 		String teamName;
 		@Nullable Class<? extends Team> teamClass;
+		@Nullable Team instance;
 
 		@Nullable String superTeamName;
 		@Nullable TeamBinding superTeam;
@@ -213,6 +215,19 @@
 			return this.checkedPermission == AspectPermission.DENY
 						|| AspectBinding.this.hasBeenDenied;
 		}
+
+		/** Precondition: teamClass is set. Create fresh or answer existing. */
+		public Team getInstance() throws InstantiationException, IllegalAccessException {
+			Team inst = this.instance;
+			if (inst != null)
+				return inst;
+			Class<? extends Team> cl = this.teamClass;
+			assert cl != null : "Precondition";
+			@SuppressWarnings("null")@NonNull Team nnInst = cl.newInstance();
+			TransformerPlugin.registerTeamInstance(instance);
+			log(IStatus.INFO, "Instantiated team "+teamName);
+			return this.instance = nnInst;
+		}
 	}
 	
 	/**
diff --git a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/TeamLoader.java b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/TeamLoader.java
index 8954db8..48d4294 100644
--- a/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/TeamLoader.java
+++ b/plugins/org.eclipse.objectteams.otequinox/src/org/eclipse/objectteams/internal/osgi/weaving/TeamLoader.java
@@ -31,7 +31,6 @@
 import org.eclipse.objectteams.internal.osgi.weaving.AspectBinding.TeamBinding;
 import org.eclipse.objectteams.internal.osgi.weaving.Util.ProfileKind;
 import org.eclipse.objectteams.otequinox.ActivationKind;
-import org.eclipse.objectteams.otequinox.TransformerPlugin;
 import org.eclipse.objectteams.otredyn.runtime.TeamManager;
 import org.objectteams.Team;
 import org.osgi.framework.Bundle;
@@ -180,6 +179,8 @@
 	 */
 	@Nullable Team instantiateAndActivate(AspectBinding aspectBinding, TeamBinding team, ActivationKind activationKind)
 	{
+		if (team.instance != null && team.isActivated) return team.instance;
+
 		String teamName = team.teamName;
 		// don't try to instantiate before all base classes successfully loaded.
 		synchronized(aspectBinding) {
@@ -196,9 +197,7 @@
 			long time = 0;
 			if (Util.PROFILE) time= System.nanoTime();
 
-			@SuppressWarnings("null")@NonNull Team instance = team.teamClass.newInstance();
-			TransformerPlugin.registerTeamInstance(instance);
-			log(IStatus.INFO, "Instantiated team "+teamName);
+			Team instance = team.getInstance();
 			
 			try {
 				switch (activationKind) {