Buggy code:
private void disposePart ( WorkbenchPartReference ref ) { } private void deactivatePart ( IWorkbenchPart part ) { } public void detachView ( IViewReference ref ) { } public void attachView ( IViewReference ref ) { } public void dispose ( ) { } private void disposePerspective ( Perspective persp , boolean notify ) { } public INavigationHistory getNavigationHistory ( ) { } public boolean editActionSets ( ) { } public Perspective findPerspective ( IPerspectiveDescriptor desc ) { } public IViewPart findView ( String id ) { } public IViewReference findViewReference ( String viewId ) { } public IViewReference findViewReference ( String viewId , String secondaryId ) { } private void firePropertyChange ( String changeId , Object oldValue , Object newValue ) { } public IActionBars getActionBars ( ) { } public IActionSetDescriptor [ ] getActionSets ( ) { } public IEditorPart getActiveEditor ( ) { } public IEditorReference getActiveEditorReference ( ) { } public IWorkbenchPart getActivePart ( ) { } public IWorkbenchPartReference getActivePartReference ( ) { } public Perspective getActivePerspective ( ) { } public Composite getClientComposite ( ) { } public EditorManager getEditorManager ( ) { } public PerspectiveHelper getPerspectivePresentation ( ) { } public EditorAreaHelper getEditorPresentation ( ) { } public IEditorPart [ ] getEditors ( ) { } public IEditorPart [ ] getDirtyEditors ( ) { } public ISaveablePart [ ] getDirtyParts ( ) { } public IEditorPart findEditor ( IEditorInput input ) { } public IEditorReference [ ] findEditors ( IEditorInput input , String editorId , int matchFlags ) { } public IEditorReference [ ] getEditorReferences ( ) { } public IViewReference [ ] getFastViews ( ) { } public IAdaptable getInput ( ) { } public String getLabel ( ) { } public IPerspectiveDescriptor getPerspective ( ) { } public ISelection getSelection ( ) { } public ISelection getSelection ( String partId ) { } public ArrayList getShowInPartIds ( ) { } public void performedShowIn ( String partId ) { } public void sortShowInPartIds ( ArrayList partIds ) { } public ViewFactory getViewFactory ( ) { } public IViewReference [ ] getViewReferences ( ) { } public IViewPart [ ] getViews ( ) { } IViewPart [ ] getViews ( Perspective persp , boolean restore ) { } public IWorkbenchWindow getWorkbenchWindow ( ) { } public IWorkingSet getWorkingSet ( ) { } public void hideActionSet ( String actionSetID ) { } public void hideView ( IViewReference ref ) { } void refreshActiveView ( ) { } public void hideView ( IViewPart view ) { } private void init ( WorkbenchWindow w , String layoutID , IAdaptable input , boolean openExtras ) throws WorkbenchException { } public void openPerspectiveExtras ( ) { } public boolean isPartVisible ( IWorkbenchPart part ) { } public boolean isEditorAreaVisible ( ) { } public boolean isFastView ( IViewReference ref ) { } public boolean isCloseable ( IViewReference ref ) { } public boolean isMoveable ( IViewReference ref ) { } public boolean isFixedLayout ( ) { } public IViewReference getActiveFastView ( ) { } protected boolean isSaveNeeded ( ) { } public boolean isPageZoomed ( ) { } public boolean isZoomed ( ) { } protected void onActivate ( ) { } protected void onDeactivate ( ) { } public void reuseEditor ( IReusableEditor editor , IEditorInput input ) { IWorkbenchPartReference ref = getReference ( editor ) ; if ( ref instanceof EditorReference ) { EditorReference editorRef = ( ( EditorReference ) ( ref ) ) ; editorRef . setInput ( input ) ; } else { editor . setInput ( input ) ; } <START_BUG> navigationHistory . markLocation ( editor ) ; <END_BUG> } public IEditorPart openEditor ( IEditorInput input , String editorID ) throws PartInitException { } public IEditorPart openEditor ( IEditorInput input , String editorID , boolean activate ) throws PartInitException { } public IEditorPart openEditor ( final IEditorInput input , final String editorID , final boolean activate , final int matchFlags ) throws PartInitException { } public IEditorPart openEditor ( final IEditorInput input , final String editorID , final boolean activate , final int matchFlags , final IMemento editorState ) throws PartInitException { } private IEditorPart busyOpenEditor ( IEditorInput input , String editorID , boolean activate , int matchFlags , IMemento editorState ) throws PartInitException { } private IEditorPart busyOpenEditorBatched ( IEditorInput input , String editorID , boolean activate , int matchFlags , IMemento editorState ) throws PartInitException { } public void openEmptyTab ( ) { } private void showEditor ( boolean activate , IEditorPart editor ) { } public boolean isEditorPinned ( IEditorPart editor ) { } private boolean partChangeAffectsZoom ( IWorkbenchPartReference ref ) { } public void removeFastView ( IViewReference ref ) { } public void removePartListener ( IPartListener l ) { } public void removePartListener ( IPartListener2 l ) { } public void removePropertyChangeListener ( IPropertyChangeListener listener ) { } public void removeSelectionListener ( ISelectionListener listener ) { } public void removeSelectionListener ( String partId , ISelectionListener listener ) { } public void removePostSelectionListener ( ISelectionListener listener ) { } public void removePostSelectionListener ( String partId , ISelectionListener listener ) { } public void requestActivation ( IWorkbenchPart part ) { } public void resetPerspective ( ) { } public IStatus restoreState ( IMemento memento , IPerspectiveDescriptor activeDescriptor ) { } public boolean saveAllEditors ( boolean confirm ) { } public boolean saveAllEditors ( boolean confirm , boolean addNonPartSources ) { } protected boolean savePart ( ISaveablePart saveable , IWorkbenchPart part , boolean confirm ) { } public boolean saveEditor ( IEditorPart editor , boolean confirm ) { } public void savePerspective ( ) { } public void savePerspectiveAs ( IPerspectiveDescriptor newDesc ) { } public IStatus saveState ( IMemento memento ) { } private String getId ( IWorkbenchPart part ) { } private String getId ( IWorkbenchPartReference ref ) { } private void setActivePart ( IWorkbenchPart newPart ) { } public void setEditorAreaVisible ( boolean showEditorArea ) { } private void setPerspective ( Perspective newPersp ) { }

Fix:
navigationHistory . markEditor ( editor ) ;