void (@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); } }