@Override
  public void removeTransientDataForFile(int inputId) {
    if (IndexDebugProperties.DEBUG) {
      LOG.assertTrue(ProgressManager.getInstance().isInNonCancelableSection());
    }
    getLock().writeLock().lock();
    try {
      if (FileBasedIndexEx.doTraceStubUpdates(myIndexId)) {
        LOG.info("removeTransientDataForFile,inputId=" + inputId + ",index=" + myIndexId);
      }
      Map<Key, Value> keyValueMap = myInMemoryKeysAndValues.remove(inputId);
      if (keyValueMap == null) return;

      try {
        removeTransientDataForInMemoryKeys(inputId, keyValueMap);
        InputDataDiffBuilder<Key, Value> builder = getKeysDiffBuilder(inputId);
        removeTransientDataForKeys(inputId, builder);
      }
      catch (IOException throwable) {
        throw new RuntimeException(throwable);
      }
    }
    finally {
      getLock().writeLock().unlock();
    }
  }
@Override
  public void removeTransientDataForFile(int inputId)