List<VFileEvent> scan() {
    var t = System.nanoTime();
    try {
      var events = new ArrayList<VFileEvent>();
      if (!myParallel) {
        singleThreadScan(events);
      }
      else {
        parallelScan(events);
      }
      return events;
    }
    finally {
      t = NANOSECONDS.toMillis(System.nanoTime() - t);
      var retries = myFullScans.get() + myPartialScans.get() - myProcessed.get();
      VfsUsageCollector.logRefreshScan(myFullScans.get(), myPartialScans.get(), retries, t,
                                       NANOSECONDS.toMillis(myVfsTime.get()), NANOSECONDS.toMillis(myIoTime.get()));
    }
  }
List<VFileEvent> scan()