Buggy code:
public class WorkbenchEditorsDialog extends SelectionDialog { private IWorkbenchWindow window ; private Table editorsTable ; private Button saveSelected ; private Button closeSelected ; private Button selectClean ; private Button invertSelection ; private Button allSelection ; private boolean showAllPersp = false ; private int sortColumn ; private List elements = new ArrayList ( ) ; private HashMap imageCache = new HashMap ( 11 ) ; private HashMap disabledImageCache = new HashMap ( 11 ) ; private boolean reverse = false ; private Collator collator = Collator . getInstance ( ) ; private Rectangle bounds ; private int [ ] columnsWidth ; private static final String SORT = "sort" ; private static final String ALLPERSP = "allPersp" ; private static final String BOUNDS = "bounds" ; private static final String COLUMNS = "columns" ; private SelectionListener headerListener = new SelectionAdapter ( ) { public void widgetSelected ( SelectionEvent e ) { } } ; public WorkbenchEditorsDialog ( IWorkbenchWindow window ) { } protected void configureShell ( Shell newShell ) { } protected void createButtonsForButtonBar ( Composite parent ) { } protected void initializeBounds ( ) { } protected Control createDialogArea ( Composite parent ) { } private void updateButtons ( ) { } private void closeItems ( TableItem [ ] items ) { } private void saveItems ( TableItem [ ] items , IProgressMonitor monitor ) { } private TableItem [ ] selectClean ( TableItem [ ] items ) { } private TableItem [ ] invertedSelection ( TableItem [ ] allItems , TableItem [ ] selectedItems ) { } private void updateItem ( TableItem item , WorkbenchEditorsDialog . Adapter editor ) { } private void updateEditors ( IWorkbenchPage [ ] pages ) { } private void updateItems ( ) { } private void sort ( ) { } protected void okPressed ( ) { } private void saveDialogSettings ( ) { } private IDialogSettings getDialogSettings ( ) { } private class Adapter implements Comparable { IEditorReference editorRef ; IEditorInput input ; IEditorDescriptor desc ; String [ ] text ; Image [ ] images ; Adapter ( IEditorReference ref ) { } Adapter ( IEditorInput input , IEditorDescriptor desc ) { } boolean isDirty ( ) { } boolean isOpened ( ) { } void close ( ) { } void save ( IProgressMonitor monitor ) { } String [ ] getText ( ) { } Image [ ] getImage ( ) { if ( ( images ) != null ) return images ; images = new Image [ 2 ] ; if ( ( editorRef ) != null ) { images [ 0 ] = editorRef . getTitleImage ( ) ; WorkbenchPage p = ( ( WorkbenchPartReference ) ( editorRef ) ) . getPane ( ) . getPage ( ) ; IPerspectiveDescriptor persp = p . getPerspective ( ) ; ImageDescriptor image = persp . getImageDescriptor ( ) ; if ( image == null ) <START_BUG> image = WorkbenchImages . getImageDescriptor ( IMG_CTOOL_DEF_PERSPECTIVE ) ; <END_BUG> } else { ImageDescriptor image = null ; if ( ( desc ) != null ) image = desc . getImageDescriptor ( ) ; if ( image == null ) { IEditorRegistry registry = WorkbenchPlugin . getDefault ( ) . getEditorRegistry ( ) ; image = registry . getImageDescriptor ( input . getName ( ) ) ; if ( image == null ) { } } if ( image != null ) { images [ 0 ] = ( ( Image ) ( disabledImageCache . get ( image ) ) ) ; if ( ( images [ 0 ] ) == null ) { Image enabled = image . createImage ( ) ; Image disabled = new Image ( editorsTable . getDisplay ( ) , enabled , SWT . IMAGE_DISABLE ) ; enabled . dispose ( ) ; disabledImageCache . put ( image , disabled ) ; images [ 0 ] = disabled ; } } } return images ; } private void activate ( ) { } public int compareTo ( Object another ) { } } }

Fix:
image = WorkbenchImages . getImageDescriptor ( IMG_ETOOL_DEF_PERSPECTIVE ) ;