Buggy code:
public class EditorManager implements IExtensionChangeHandler { EditorAreaHelper editorPresentation ; WorkbenchWindow window ; WorkbenchPage page ; private Map actionCache = new HashMap ( ) ; private static final String PIN_EDITOR_KEY = "PIN_EDITOR" ; private static final String PIN_EDITOR = "ovr16//pinned_ovr.gif" ; private IPropertyChangeListener editorPropChangeListnener = null ; private IHandlerActivation pinEditorHandlerActivation = null ; static final String RESOURCES_TO_SAVE_MESSAGE = WorkbenchMessages . EditorManager_saveResourcesMessage ; static final String SAVE_RESOURCES_TITLE = WorkbenchMessages . EditorManager_saveResourcesTitle ; public EditorManager ( WorkbenchWindow window , WorkbenchPage workbenchPage , EditorAreaHelper pres ) { } void checkDeleteEditorResources ( ) { } void checkCreateEditorPropListener ( ) { } void checkCreatePinEditorShortcutKeyHandler ( ) { } ImageDescriptor getEditorPinImageDesc ( ) { } private List collectDirtyEditors ( ) { } public boolean containsEditor ( IEditorReference ref ) { } private EditorActionBars createEditorActionBars ( EditorDescriptor desc , final IEditorSite site ) { } private EditorActionBars createEmptyEditorActionBars ( final IEditorSite site ) { } void disposeEditorActionBars ( EditorActionBars actionBars ) { } public IEditorPart findEditor ( IEditorInput input ) { } public IEditorPart findEditor ( String editorId , IEditorInput input , int matchFlags ) { } public IEditorReference [ ] findEditors ( IEditorInput input , String editorId , int matchFlags ) { } private void findEditors ( List editorList , IEditorInput input , String editorId , int matchFlags , List result ) { } private Display getDisplay ( ) { } public int getEditorCount ( ) { } private IEditorRegistry getEditorRegistry ( ) { } public IEditorPart [ ] getDirtyEditors ( ) { } public IEditorReference [ ] getEditors ( ) { } public IEditorPart getVisibleEditor ( ) { } public boolean isSaveAllNeeded ( ) { } private IEditorReference findReusableEditor ( EditorDescriptor desc ) { } public IEditorReference openEditor ( String editorId , IEditorInput input , boolean setVisible ) throws PartInitException { } private IEditorReference openEditorFromDescriptor ( EditorDescriptor desc , IEditorInput input ) throws PartInitException { } private IEditorReference openExternalEditor ( final EditorDescriptor desc , IEditorInput input ) throws PartInitException { final CoreException [ ] ex = new CoreException [ 1 ] ; final IPathEditorInput pathInput = getPathEditorInput ( input ) ; <START_BUG> if ( pathInput != null ) { <END_BUG> BusyIndicator . showWhile ( getDisplay ( ) , new Runnable ( ) { public void run ( ) { try { if ( ( desc . getLauncher ( ) ) != null ) { Object launcher = WorkbenchPlugin . createExtension ( desc . getConfigurationElement ( ) , "launcher" ) ; ( ( IEditorLauncher ) ( launcher ) ) . open ( pathInput . getPath ( ) ) ; } else { ExternalEditor oEditor = new ExternalEditor ( pathInput . getPath ( ) , desc ) ; oEditor . open ( ) ; } } catch ( CoreException e ) { ex [ 0 ] = e ; } } } ) ; } else { throw new PartInitException ( NLS . bind ( EditorManager_errorOpeningExternalEditor , desc . getFileName ( ) , desc . getId ( ) ) ) ; } if ( ( ex [ 0 ] ) != null ) { throw new PartInitException ( NLS . bind ( EditorManager_errorOpeningExternalEditor , desc . getFileName ( ) , desc . getId ( ) ) , ex [ 0 ] ) ; } return null ; } IEditorReference [ ] openMultiEditor ( final IEditorReference ref , final MultiEditor part , final MultiEditorInput input ) throws PartInitException { } private void createEditorTab ( final EditorReference ref , final String workbookId ) throws PartInitException { } EditorSite createSite ( final IEditorReference ref , final IEditorPart part , final EditorDescriptor desc , final IEditorInput input ) throws PartInitException { } private IEditorReference reuseInternalEditor ( EditorDescriptor desc , IEditorInput input ) throws PartInitException { } IEditorPart createPart ( final EditorDescriptor desc ) throws PartInitException { } private IEditorReference openSystemExternalEditor ( final IPath location ) throws PartInitException { } ImageDescriptor findImage ( EditorDescriptor desc , IPath path ) { } public IStatus restoreState ( IMemento memento ) { } public boolean saveAll ( boolean confirm , boolean closing , boolean addNonPartSources ) { } public static boolean saveAll ( List dirtyParts , boolean confirm , boolean closing , boolean addNonPartSources , final IWorkbenchWindow window ) { } public static boolean saveAll ( List dirtyParts , boolean confirm , boolean closing , boolean addNonPartSources , final IRunnableContext runnableContext , final IShellProvider shellProvider ) { } private static List convertToSaveables ( List parts , boolean closing , boolean addNonPartSources ) { } private static Saveable [ ] getSaveables ( IWorkbenchPart part ) { } private static boolean closingLastPartShowingModel ( Saveable model , List closingParts , IWorkbenchPage page ) { } public boolean savePart ( final ISaveablePart saveable , IWorkbenchPart part , boolean confirm ) { } public IStatus saveState ( final IMemento memento ) { } public boolean setVisibleEditor ( IEditorReference newEd , boolean setFocus ) { } private IPathEditorInput getPathEditorInput ( IEditorInput input ) { } private class InnerEditor extends EditorReference { private IEditorReference outerEditor ; public InnerEditor ( IEditorReference outerEditor , IEditorInput input , EditorDescriptor desc ) { } protected PartPane createPane ( ) { } } protected void restoreEditorState ( IMemento editorMem , ArrayList visibleEditors , IEditorReference [ ] activeEditor , MultiStatus result ) { } protected void saveEditorState ( IMemento mem , IEditorReference ed , MultiStatus res ) { } public IMemento getMemento ( IEditorReference e ) { } public void removeExtension ( IExtension source , Object [ ] objects ) { } public void addExtension ( IExtensionTracker tracker , IExtension extension ) { } }

Fix:
if ( ( pathInput != null ) && ( ( pathInput . getPath ( ) ) != null ) ) {