public MPSFileBasedIndexProjectHandler(
      final Project project,
      final ProjectRootManagerEx rootManager,
      ProjectManager projectManager,
      FileBasedIndex index,
      StartupModuleMaker maker) {
    super(project);
    myRootManager = rootManager;
    myProjectManager = projectManager;
    myIndex = index;

    final MPSUnindexedFilesUpdater updater = new MPSUnindexedFilesUpdater(myIndex, myRootManager);

    final StartupManagerEx startupManager =
        (StartupManagerEx) StartupManager.getInstance(myProject);
    if (startupManager == null) return;

    startupManager.registerPreStartupActivity(
        new Runnable() {
          public void run() {
            startupManager.registerCacheUpdater(updater);
            myIndex.registerIndexableSet(MPSFileBasedIndexProjectHandler.this, myProject);
            DumbServiceImpl.getInstance(myProject)
                .queueCacheUpdate(Collections.<CacheUpdater>singletonList(updater));
          }
        });
  }