Buggy code:
static final QualifiedName KEEP_PROPERTY = IProgressConstants . KEEP_PROPERTY ; static final QualifiedName KEEPONE_PROPERTY = IProgressConstants . KEEPONE_PROPERTY ; static final QualifiedName ICON_PROPERTY = IProgressConstants . ICON_PROPERTY ; private FinishedJobs finishedJobs ; private boolean dialogContext ; private HashMap map = new HashMap ( ) ; private NewProgressViewer . JobTreeItem highlightItem ; private Job highlightJob ; private Composite list ; private ScrolledComposite scroller ; private Color darkColor ; private Color lightColor ; private Color textColor ; private Color selectedColor ; private Color selectedTextColor ; private Cursor handCursor ; private Cursor normalCursor ; private Image defaultJobIcon ; private Image cancelJobIcon ; private Image cancelJobDIcon ; private Image clearJobIcon ; private Image clearJobDIcon ; private Font boldFont ; private Font smallerFont ; class ListLayout extends Layout { static final int VERTICAL_SPACING = 1 ; boolean refreshBackgrounds ; protected Point computeSize ( Composite composite , int wHint , int hHint , boolean flushCache ) { } protected void layout ( Composite composite , boolean flushCache ) { } } abstract class JobTreeItem extends Canvas implements Listener { JobTreeElement jobTreeElement ; boolean jobTerminated ; boolean keepItem ; JobTreeItem ( Composite parent , JobTreeElement info , int flags ) { } void init ( JobTreeElement info ) { } protected void dump ( String message ) { } void setKept ( ) { } public void handleEvent ( Event e ) { } Job getJob ( ) { } public boolean kill ( ) { } boolean checkKeep ( ) { } void setKeep ( ) { } abstract boolean refresh ( ) ; public boolean remove ( ) { } } class Hyperlink extends NewProgressViewer . JobTreeItem implements IPropertyChangeListener , Listener { static final int MARGINWIDTH = 1 ; static final int MARGINHEIGHT = 1 ; boolean hasFocus ; boolean mouseOver ; boolean isError ; boolean linkEnabled ; boolean foundImage ; String text = "" ; IAction gotoAction ; IStatus result ; NewProgressViewer . JobItem jobitem ; Hyperlink ( NewProgressViewer . JobItem parent , JobTreeElement info ) { } boolean isLinkEnabled ( ) { } public void handleEvent ( Event e ) { } private void setText ( String t ) { } private void setAction ( IAction action ) { } private void setLinkEnable ( boolean enable ) { } private void updateToolTip ( ) { } public void propertyChange ( PropertyChangeEvent event ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } private Color getFGColor ( ) { } protected void paint ( GC gc ) { } protected boolean handleActivate ( ) { } public boolean refresh ( ) { if ( ( jobTreeElement ) == null ) return false ; final Job job = getJob ( ) ; if ( job != null ) { if ( ( jobitem . image ) == null ) jobitem . updateIcon ( job ) ; Object property = job . getProperty ( ACTION_PROPERTY ) ; if ( property instanceof IAction ) setAction ( ( ( IAction ) ( property ) ) ) ; IStatus status = job . getResult ( ) ; if ( ( status != null ) && ( status != ( result ) ) ) { result = status ; if ( ( result . getSeverity ( ) ) == ( IStatus . ERROR ) ) { setKeep ( ) ; isError = true ; setAction ( new Action ( ) { public void run ( ) { String title = ProgressMessages . getString ( "NewProgressView.errorDialogTitle" ) ; String msg = ProgressMessages . getString ( "NewProgressView.errorDialogMessage" ) ; <START_BUG> if ( ! ( getManager ( ) . showErrorFor ( getShell ( ) , job , title , msg ) ) ) { <END_BUG> ErrorDialog . openError ( getShell ( ) , title , msg , result ) ; } } private ErrorNotificationManager getManager ( ) { return ProgressManager . getInstance ( ) . errorManager ; } } ) ; } } } checkKeep ( ) ; String name = null ; if ( ( jobTreeElement ) instanceof SubTaskInfo ) { SubTaskInfo sti = ( ( SubTaskInfo ) ( jobTreeElement ) ) ; String taskName = null ; if ( ( sti . jobInfo ) != null ) { TaskInfo ti = sti . jobInfo . getTaskInfo ( ) ; if ( ti != null ) taskName = ti . getTaskName ( ) ; } if ( ( jobTerminated ) && ( ( result ) != null ) ) { name = result . getMessage ( ) ; if ( ( taskName != null ) && ( ( taskName . trim ( ) . length ( ) ) > 0 ) ) name = ProgressMessages . format ( "JobInfo.TaskFormat" , new Object [ ] { taskName , name } ) ; } else { name = jobTreeElement . getDisplayString ( ) ; if ( ( taskName != null ) && ( ( taskName . trim ( ) . length ( ) ) > 0 ) ) name = ProgressMessages . format ( "JobInfo.TaskFormat2" , new Object [ ] { taskName , name } ) ; } if ( ( name . length ( ) ) == 0 ) { dispose ( ) ; return true ; } } else if ( ( jobTreeElement ) instanceof JobInfo ) { JobInfo ji = ( ( JobInfo ) ( jobTreeElement ) ) ; if ( ( result ) != null ) { name = result . getMessage ( ) ; if ( ( ( name == null ) || ( ( name . trim ( ) . length ( ) ) == 0 ) ) || ( "OK" . equals ( name ) ) ) { if ( ! ( keepItem ) ) { dispose ( ) ; return true ; } } } else { name = getJobNameAndStatus ( ji , job , jobTerminated , false ) ; String taskName = null ; TaskInfo info = ji . getTaskInfo ( ) ;

Fix:
if ( ! ( getManager ( ) . showErrorFor ( job , title , msg ) ) ) {