@Internal
  @Nullable("null in case index value removal is not necessary")
  SingleIndexValueRemover createSingleIndexRemover(@NotNull ID<?, ?> indexId,
                                                   @Nullable VirtualFile file,
                                                   @Nullable FileContent fileContent,
                                                   int inputId,
                                                   @NotNull ApplicationMode applicationMode) {
    if (doTraceStubUpdates(indexId)) {
      LOG.info("index " + indexId + " deletion requested for " + getFileInfoLogString(inputId, file, fileContent));
    }
    if (!myRegisteredIndexes.isExtensionsDataLoaded()) reportUnexpectedAsyncInitState();
    if (!RebuildStatus.isOk(indexId) && !myIsUnitTestMode) {
      return null; // the index is scheduled for rebuild, no need to update
    }
    return new SingleIndexValueRemover(this, indexId, file, fileContent, inputId, applicationMode);
  }
@Internal
  @Nullable("null in case index value removal is not necessary")
  SingleIndexValueRemover createSingleIndexRemover(@NotNull ID<?, ?> indexId,
                                                   @Nullable VirtualFile file,
                                                   @Nullable FileContent fileContent,
                                                   int inputId,
                                                   @NotNull ApplicationMode applicationMode)