code: public void addTypeLoaderListenerAsWeakRef( ITypeLoaderListener l )
    {
      if(!hasListener(l)) {
        _listeners.add(new WeakReference<ITypeLoaderListener>(l));
      }
    }
docs: Maintains weak refs to listeners. This is primarily so that tests don't
  accumulate a bunch of listeners over time. Otherwise this is a potential
  memory gobbler in tests.
  <p>
  Note! Callers must manage the lifecycle of the listener, otherwise since this
  method creates a weak ref, it will be collected when it goes out of scope.
  
  @param l Your type loader listener