private @NotNull ScannableDataEnumeratorEx<String> createFileNamesEnumerator(@NotNull Path namesFile) throws IOException {
    if (FSRecordsImpl.USE_FAST_NAMES_IMPLEMENTATION) {
      LOG.info("VFS uses 'fast' names enumerator (over mmapped file)");
      //if we use _same_ namesFile for fast/regular enumerator (which seems natural at a first glance), then
      // on transition, fast enumerator couldn't recognize regular enumerator file format, and throws some
      // bizare exception => VFS is rebuilt, but with rebuildCause=UNRECOGNIZED instead of 'version mismatch'.
      //To get an expected exception on transition, we need regular/fast enumerator to use different files,
      // e.g. 'names.dat' / 'names.dat.mmap'
      Path namesPathEx = Path.of(namesFile + ".mmap");
      return DurableStringEnumerator.openAsync(namesPathEx, executorService);
    }
    else {
      LOG.info("VFS uses regular (btree) names enumerator");
      return new PersistentStringEnumerator(namesFile, PERSISTENT_FS_STORAGE_CONTEXT);
    }
  }
private @NotNull ScannableDataEnumeratorEx<String> createFileNamesEnumerator(@NotNull Path namesFile)