public boolean traverseDirs() throws ProcessCanceledException{
        Set<VirtualFile> processed = new SmartHashSet<>();
        try {
          for (VirtualFile root : dirsToTraverse) {
            if (!root.isValid()) {
              if (LOG.isDebugEnabled()) {
                LOG.debug("File invalidated while processing VFS events, clearing build state: " + root.getPath());
              }
              return false;
            }
            collectPaths(root, filesChanged, true);
            processed.add(root);
          }
        }
        finally {
          dirsToTraverse.removeAll(processed);
        }
        return true;
      }
public boolean traverseDirs()