public void checkAndNotify(@NotNull List<VirtualFile> roots) {
    if (roots.isEmpty()) return;

    synchronized (myLock) {
      if (myInvocationCounter >= ourInvocationMax) return;

      ++myCounter;
      --myDownStartCounter;
      if (myCounter <= ourFrequency && myDownStartCounter < 0) return;

      myCounter = 0;
      ++myInvocationCounter;
    }

    executeOnPooledThread(this, () -> {
      List<VirtualFile> incompatible = filter(roots, SvnCompatibilityChecker::seemsVersioned);
      if (!incompatible.isEmpty()) notify(incompatible);
    });
  }
public void checkAndNotify(@NotNull List<VirtualFile> roots)