private FileIndexingState processUpToDateFileByInfrastructureExtensions(IndexedFileImpl indexedFile,
                                                                          int inputId,
                                                                          ID<?, ?> indexId,
                                                                          UnindexedFileStatusBuilder fileStatusBuilder,
                                                                          @NotNull FileIndexingStamp indexingStamp) {
    // quick path: shared indexes do not have data for contentless indexes
    if (!myFileBasedIndex.needsFileContentLoading(indexId)) return FileIndexingState.UP_TO_DATE;

    long nowTime = System.nanoTime();
    try {
      FileIndexingState ret = FileIndexingState.UP_TO_DATE;
      for (FileBasedIndexInfrastructureExtension.FileIndexingStatusProcessor p : myStateProcessors) {
        if (!p.processUpToDateFile(indexedFile, inputId, indexId)) {
          fileStatusBuilder.indexInfrastructureExtensionInvalidated = true;
        }
      }
      if (fileStatusBuilder.indexInfrastructureExtensionInvalidated) {
        ret = myFileBasedIndex.getIndexingState(indexedFile, indexId, indexingStamp);
      }
      return ret;
    }
    finally {
      fileStatusBuilder.timeProcessingUpToDateFiles += (System.nanoTime() - nowTime);
    }
  }
private FileIndexingState processUpToDateFileByInfrastructureExtensions(IndexedFileImpl indexedFile,
                                                                          int inputId,
                                                                          ID<?, ?> indexId,
                                                                          UnindexedFileStatusBuilder fileStatusBuilder,
                                                                          @NotNull FileIndexingStamp indexingStamp)