Bug 406518 - migrate OT/Equinox to the standard OSGi WeavingHook
Trying to fix a potential concurrency bug, I saw hang at
    HashMap.getEntry(HashMap.java:446)
    HashMap.containsKey(HashMap.java:434)
    ClassLoaderRepository.findClass(ClassLoaderRepository.java:71)
    DietClassLoaderRepository.loadClass(DietClassLoaderRepository.java:60)
diff --git a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java b/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java
index 3d92bc7..c67b14a 100644
--- a/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java
+++ b/plugins/org.eclipse.objectteams.runtime/src/org/eclipse/objectteams/otre/bcel/DietClassLoaderRepository.java
@@ -68,7 +68,9 @@
             }
             DietClassParser parser = new DietClassParser(is, className);
             c = parser.parse();
-            storeClass(c);
+            synchronized(this) {
+           		storeClass(c);
+            }
             return c;
         } catch (IOException e) {
             throw new ClassNotFoundException(e.toString());
@@ -79,7 +81,9 @@
         if (c != null) { 
         	if (! (c instanceof DietJavaClass))
         		return c; // found fully parsed class, OK.
-        	removeClass(c); // force new loading
+        	synchronized(this) {
+        		removeClass(c); // force new loading
+        	}
         }
 		return super.loadClass(className);
 	}