Introduce ModuleSourceInfo
Implement ModuleSourceInfo.getDependentModules()
Delegate to global cache when building ModuleResolverProvider for synthetic files
Create composite exception tracker when delegating ModuleResolverProvider

Avoid dropping delegate caches when exception (i.e. ProcessCancelled) is thrown in delegating provider
Log when libraries cache is dropped because of ProcessCanceledException

Hope it can give insight on how often this happens
Dependents test
Correctly place decompiled kotlin files under LibrarySourceInfo

This check doesn't work for java (and other) decompiled sources, but we assume that we never deal with them in this code
++ KotlinCacheService.kt
Implement separate service which tracks modification in libraries

ProjectRootModificationTracker tracks root changes but not content modification
Add hack for failing js completion tests