public CoreModule( @NotNull Disposable parentDisposable, @NotNull Project project, String moduleFilePath) { super(project.getPicoContainer(), parentDisposable); myLifetime = parentDisposable; myProject = project; myPath = moduleFilePath; Extensions.instantiateArea(ExtensionAreas.IDEA_MODULE, this, null); CoreApplicationEnvironment.registerExtensionPoint( Extensions.getArea(this), ModuleExtension.EP_NAME, ModuleExtension.class); Disposer.register( parentDisposable, new Disposable() { @Override public void dispose() { Extensions.disposeArea(CoreModule.this); } }); initModuleExtensions(); final ModuleRootManagerImpl moduleRootManager = new ModuleRootManagerImpl( this, ProjectRootManagerImpl.getInstanceImpl(project), VirtualFilePointerManager.getInstance()) { @Override public void loadState(ModuleRootManagerState object) { loadState(object, false); } }; Disposer.register( parentDisposable, new Disposable() { @Override public void dispose() { moduleRootManager.disposeComponent(); } }); getPicoContainer().registerComponentInstance(ModuleRootManager.class, moduleRootManager); getPicoContainer() .registerComponentInstance( PathMacroManager.class, new ModulePathMacroManager(PathMacros.getInstance(), this)); getPicoContainer() .registerComponentInstance( ModuleFileIndex.class, new ModuleFileIndexImpl(this, DirectoryIndex.getInstance(project))); myModuleScopeProvider = createModuleScopeProvider(); }