docs: public RecursiveFileSearch search() throws InterruptedException {
          File baseFile = new File(baseDir);
          String basePath = bestEffortCanonicalPath(baseFile);
          directoryWorkList.add(baseFile);
          directoriesScanned.add(basePath);
          directoriesScannedList.add(basePath);
  
          while (!directoryWorkList.isEmpty()) {
              File dir = directoryWorkList.removeFirst();
              if (!dir.isDirectory()) {
                  continue;
              }
  
              File[] contentList = dir.listFiles();
              if (contentList == null) {
                  continue;
              }
              for (File aContentList : contentList) {
                  if (Thread.interrupted()) {
                      throw new InterruptedException();
                  }
  
                  File file = aContentList;
  
                  if (!fileFilter.accept(file)) {
                      continue;
                  }
  
                  if (file.isDirectory()) {
                      String myPath = bestEffortCanonicalPath(file);
                      if (myPath.startsWith(basePath) && directoriesScanned.add(myPath)) {
                          directoriesScannedList.add(myPath);
                          directoryWorkList.add(file);
                      }
                  } else {
                      resultList.add(file.getPath());
                  }
              }
          }
  
          return this;
      }