Program: 160642
Project: 160642
Buggy source:
@Override public void run(){
  initConnections();
  SConverter sConverter=new SConverter();
  running=true;
  try {
    while (running) {
      try {
        Notification notification=queue.take();
        for (        NotificationContainer notificationContainer : listeners) {
          NotificationInterface notificationInterface=notificationContainer.getNotificationInterface();
          boolean isAdmin=notificationContainer.getUser().getUserType() == UserType.ADMIN;
          if (notification instanceof NewProjectNotification) {
            if (isAdmin) {
              notificationInterface.newProject(sConverter.convertToSObject((NewProjectNotification)notification));
            }
          }
 else           if (notification instanceof NewRevisionNotification) {
            NewRevisionNotification newRevisionNotification=(NewRevisionNotification)notification;
            if (isAdmin || newRevisionNotification.getRevision().getProject().getHasAuthorizedUsers().contains(notificationContainer.getUser())) {
              notificationInterface.newRevision(sConverter.convertToSObject(newRevisionNotification));
            }
          }
        }
      }
 catch (      InterruptedException e) {
        throw e;
      }
catch (      Exception e) {
        LOGGER.error("String_Node_Str",e);
      }
    }
  }
 catch (  InterruptedException e) {
    if (running) {
      LOGGER.error("String_Node_Str",e);
    }
  }
}

Fixed version (ground truth):
@Override public void run(){
  initConnections();
  SConverter sConverter=new SConverter();
  running=true;
  try {
    while (running) {
      try {
        Notification notification=queue.take();
        for (        NotificationContainer notificationContainer : listeners) {
          NotificationInterface notificationInterface=notificationContainer.getNotificationInterface();
          boolean isAdmin=notificationContainer.getUser().getUserType() == UserType.ADMIN;
          if (notification instanceof NewProjectNotification) {
            NewProjectNotification newProjectNotification=(NewProjectNotification)notification;
            Project project=newProjectNotification.getProject();
            if (isAdmin || RightsManager.hasRightsOnProjectOrSuperProjectsOrSubProjects(notificationContainer.getUser(),project)) {
              notificationInterface.newProject(sConverter.convertToSObject((NewProjectNotification)notification));
            }
          }
 else           if (notification instanceof NewRevisionNotification) {
            NewRevisionNotification newRevisionNotification=(NewRevisionNotification)notification;
            Project project=newRevisionNotification.getRevision().getProject();
            if (isAdmin || RightsManager.hasRightsOnProjectOrSuperProjectsOrSubProjects(notificationContainer.getUser(),project)) {
              notificationInterface.newRevision(sConverter.convertToSObject(newRevisionNotification));
            }
          }
        }
      }
 catch (      InterruptedException e) {
        throw e;
      }
catch (      Exception e) {
        LOGGER.error("String_Node_Str",e);
      }
    }
  }
 catch (  InterruptedException e) {
    if (running) {
      LOGGER.error("String_Node_Str",e);
    }
  }
}