@Override
  public void directoryCheckedOut(@NotNull File file, VcsKey vcs) {
    if (myFoundProject) return;
    if (!file.isDirectory()) return;

    Path directory = file.toPath();
    if (myFirstDirectory == null) myFirstDirectory = directory;

    for (CheckoutListener listener : CheckoutListener.EP_NAME.getExtensionList()) {
      try {
        myFoundProject = listener.processCheckedOutDirectory(myProject, directory);
        if (myFoundProject) {
          LOG.debug(String.format("Cloned dir '%s' processed by %s", directory, listener));
          break;
        }
      }
      catch (ProcessCanceledException pce) {
        LOG.info("CompositeCheckoutListener.directoryCheckedOut call has been canceled by: " + pce);
        break;
      }
      catch (Exception e) {
        LOG.warn("Error in checkout listener: " + listener, e);
      }
    }

    for (VcsAwareCheckoutListener listener : VcsAwareCheckoutListener.EP_NAME.getExtensionList()) {
      try {
        boolean processingCompleted = listener.processCheckedOutDirectory(myProject, directory, vcs);
        if (processingCompleted) {
          LOG.debug(String.format("Cloned dir '%s' processed by %s", directory, listener));
          break;
        }
      }
      catch (Exception e) {
        LOG.warn("Error in checkout listener: " + listener, e);
      }
    }

    Project project = findProjectByBaseDirLocation(directory);
    if (project != null) {
      VcsStatisticsCollector.CLONED_PROJECT_OPENED.log(project);
    }
  }
@Override
  public void directoryCheckedOut(@NotNull File file, VcsKey vcs)