You need to flush the caches if something is removed.
If you've got wildcards for dynamic imports it can't blacklist unless the package in question doesn't match the wildcard.
The package could suddenly appear, and even then its not complete because there may be other packages yet to appear that match it.
An existing ClassLoaderInfo is completely described by its current delegates, whether it can cache or blacklist.
e.g. it can cache or blacklist if all delegates can cache or blacklist, otherwise it cannot, right?
I don't see what dynamic imports have to do here,
it's just a matter of what the existing delegates can handle.
You need to flush the caches if something is removed.
What about when the delegate is added?
But isn't this already taken care by BaseCLDomain::register/unregisterCL?