if (listener instanceof BatchBundleListener) listener = new BatchListenerWrapper((BatchBundleListener) listener);
	public void addBundleListener(BundleListener listener) {		checkValid();		if (Debug.DEBUG && Debug.DEBUG_EVENTS) {			String listenerName = listener.getClass().getName() + "@" + Integer.toHexString(listener.hashCode()); //$NON-NLS-1$			Debug.println("addBundleListener[" + bundle + "](" + listenerName + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$		}		if (listener instanceof SynchronousBundleListener) {			framework.checkAdminPermission(getBundle(), AdminPermission.LISTENER);			synchronized (framework.bundleEventSync) {				if (bundleEventSync == null) {					bundleEventSync = new EventListeners();					framework.bundleEventSync.addListener(this, this);				}				bundleEventSync.addListener(listener, listener);			}		} else {			synchronized (framework.bundleEvent) {				if (bundleEvent == null) {					bundleEvent = new EventListeners();					framework.bundleEvent.addListener(this, this);				}				bundleEvent.addListener(listener, listener);			}		}	}