Program: 11248
Project: 11248
Buggy source:
public Backend(Notifier aNotifier){
  notifier=aNotifier;
  locations=new HashMap<>();
  executorPool=new ExecutorPool();
  contentExtractor=new ContentExtractor();
  progressMonitor=new ProgressMonitor(new ProgressListener(){
    public void newFileFound(    String aFilename,    long aNumNewFiles,    long aNumIndexedFiles){
      if (progressListener != null) {
        progressListener.newFileFound(aFilename,aNumNewFiles,aNumIndexedFiles);
      }
    }
    public void indexingProgress(    long aNumNewFiles,    long aNumIndexedFiles){
      if (progressListener != null) {
        progressListener.indexingProgress(aNumNewFiles,aNumIndexedFiles);
      }
    }
    public void crawlingFinished(){
      if (progressListener != null) {
        progressListener.crawlingFinished();
      }
    }
  }
);
  directoryListener=new DirectoryListener(){
    @Override public void fileDeleted(    FilesystemLocation aFileSystemLocation,    Path aFile){
      try {
        luceneIndexHandler.removeFromIndex(aFile.toString());
        aNotifier.showInformation("String_Node_Str" + aFile);
      }
 catch (      Exception e) {
        aNotifier.showError("String_Node_Str" + aFile,e);
      }
    }
    @Override public void fileFoundByCrawler(    FilesystemLocation aFileSystemLocation,    Path aFile){
      fileCreatedOrModified(aFileSystemLocation,aFile,false);
    }
    @Override public void fileCreatedOrModified(    FilesystemLocation aFileSystemLocation,    Path aFile){
      fileCreatedOrModified(aFileSystemLocation,aFile,true);
    }
    private void fileCreatedOrModified(    FilesystemLocation aFileSystemLocation,    Path aFile,    boolean aShowInformation){
      String theFileName=aFile.toString();
      if (contentExtractor.supportsFile(theFileName)) {
        try {
          progressMonitor.addNewFileFound(theFileName);
          BasicFileAttributes theAttributes=Files.readAttributes(aFile,BasicFileAttributes.class);
          UpdateCheckResult theUpdateCheckResult=luceneIndexHandler.checkIfModified(theFileName,theAttributes.size());
          if (theUpdateCheckResult == UpdateCheckResult.UPDATED) {
            if (aShowInformation) {
              notifier.showInformation("String_Node_Str" + aFile);
            }
            Content theContent=contentExtractor.extractContentFrom(aFile,theAttributes);
            if (theContent != null) {
              luceneIndexHandler.addToIndex(aFileSystemLocation.getId(),theContent);
              progressMonitor.addFilesIndexed();
            }
          }
        }
 catch (        Exception e) {
          aNotifier.showError("String_Node_Str" + aFile,e);
        }
      }
    }
    @Override public void newWatchablePathDetected(    Path aDirectory){
      aNotifier.showInformation("String_Node_Str" + aDirectory);
    }
  }
;
}

Fixed version (ground truth):
public Backend(Notifier aNotifier){
  notifier=aNotifier;
  locations=new HashMap<>();
  executorPool=new ExecutorPool();
  contentExtractor=new ContentExtractor();
  directoryListener=new DirectoryListener(){
    @Override public void fileDeleted(    FilesystemLocation aFileSystemLocation,    Path aFile){
      try {
        String theFilename=aFile.toString();
        if (luceneIndexHandler.checkIfExists(theFilename)) {
          luceneIndexHandler.removeFromIndex(theFilename);
          aNotifier.showInformation("String_Node_Str" + aFile.getFileName());
        }
      }
 catch (      Exception e) {
        aNotifier.showError("String_Node_Str" + aFile.getFileName(),e);
      }
    }
    @Override public void fileFoundByCrawler(    FilesystemLocation aFileSystemLocation,    Path aFile){
      fileCreatedOrModified(aFileSystemLocation,aFile,false);
    }
    @Override public void fileCreatedOrModified(    FilesystemLocation aFileSystemLocation,    Path aFile){
      fileCreatedOrModified(aFileSystemLocation,aFile,true);
    }
    private void fileCreatedOrModified(    FilesystemLocation aFileSystemLocation,    Path aFile,    boolean aShowInformation){
      String theFileName=aFile.toString();
      if (contentExtractor.supportsFile(theFileName)) {
        try {
          progressListener.newFileFound(theFileName);
          BasicFileAttributes theAttributes=Files.readAttributes(aFile,BasicFileAttributes.class);
          UpdateCheckResult theUpdateCheckResult=luceneIndexHandler.checkIfModified(theFileName,theAttributes.size());
          if (theUpdateCheckResult == UpdateCheckResult.UPDATED) {
            if (aShowInformation) {
              notifier.showInformation("String_Node_Str" + aFile.getFileName());
            }
            Content theContent=contentExtractor.extractContentFrom(aFile,theAttributes);
            if (theContent != null) {
              luceneIndexHandler.addToIndex(aFileSystemLocation.getId(),theContent);
            }
          }
 else {
            LOGGER.info("String_Node_Str" + aFile + "String_Node_Str"+ theUpdateCheckResult);
          }
        }
 catch (        Exception e) {
          aNotifier.showError("String_Node_Str" + aFile.getFileName(),e);
        }
      }
    }
  }
;
}