I love your solution. Left to fix was that there
maybe two threads entering the ULR through the SAME
UCL (one through loadClassInternal and having the lock
to the UCL, one through loadClass and having the lock
to the ULR).
By synchronizing on UCL.loadClass(), we should get
this IMHO resolved, too.
Good work! I simply didn´t see it.