@Override
 protected Long compute() {
   long count = 0L;
   List<RecursiveTask<Long>> forks = new LinkedList<>();
   for (Folder subFolder : folder.getSubFolders()) {
     FolderSearchTask task = new FolderSearchTask(subFolder, searchedWord);
     forks.add(task);
     task.fork();
   }
   for (Document document : folder.getDocuments()) {
     DocumentSearchTask task = new DocumentSearchTask(document, searchedWord);
     forks.add(task);
     task.fork();
   }
   for (RecursiveTask<Long> task : forks) {
     count = count + task.join();
   }
   return count;
 }
 Long countOccurrencesOnSingleThread(Folder folder, String searchedWord) {
   long count = 0;
   for (Folder subFolder : folder.getSubFolders()) {
     count = count + countOccurrencesOnSingleThread(subFolder, searchedWord);
   }
   for (Document document : folder.getDocuments()) {
     count = count + occurrencesCount(document, searchedWord);
   }
   return count;
 }