public Map<ProjectStructureDetector, List<DetectedProjectRoot>> runDetectors() {
    if (!myBaseDir.isDirectory()) {
      return Collections.emptyMap();
    }

    BitSet enabledDetectors = new BitSet(myDetectors.length);
    enabledDetectors.set(0, myDetectors.length);
    for (int i = 0; i < myDetectors.length; i++) {
      myDetectedRoots[i] = new ArrayList<>();
    }

    Set<File> parentDirectories = FileCollectionFactory.createCanonicalFileSet();
    File parent = myBaseDir.getParentFile();
    while (parent != null) {
      parentDirectories.add(parent);
      parent = parent.getParentFile();
    }
    processRecursively(myBaseDir, enabledDetectors, parentDirectories);

    final Map<ProjectStructureDetector, List<DetectedProjectRoot>> result = new LinkedHashMap<>();
    for (int i = 0; i < myDetectors.length; i++) {
      if (!myDetectedRoots[i].isEmpty()) {
        result.put(myDetectors[i], myDetectedRoots[i]);
      }
    }
    return result;
  }
public Map<ProjectStructureDetector, List<DetectedProjectRoot>> runDetectors()