Buggy code:
protected boolean isSaveNeeded ( ) { } public boolean isPageZoomed ( ) { } public boolean isZoomed ( ) { } protected void onActivate ( ) { } protected void onDeactivate ( ) { } public void reuseEditor ( IReusableEditor editor , IEditorInput input ) { } 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 { } public IEditorPart openEditorFromDescriptor ( final IEditorInput input , final IEditorDescriptor editorDescriptor , final boolean activate , final IMemento editorState ) throws PartInitException { } private IEditorPart busyOpenEditor ( IEditorInput input , String editorID , boolean activate , int matchFlags , IMemento editorState ) throws PartInitException { } private IEditorPart busyOpenEditorFromDescriptor ( IEditorInput input , EditorDescriptor editorDescriptor , boolean activate , IMemento editorState ) throws PartInitException { } protected IEditorPart busyOpenEditorBatched ( IEditorInput input , String editorID , boolean activate , int matchFlags , IMemento editorState ) throws PartInitException { } private IEditorPart busyOpenEditorFromDescriptorBatched ( IEditorInput input , EditorDescriptor editorDescriptor , boolean activate , IMemento editorState ) throws PartInitException { } public void openEmptyTab ( ) { } protected 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 , final 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 ) { } void perspectiveActionSetChanged ( Perspective perspective , IActionSetDescriptor descriptor , int changeType ) { } private void updateVisibility ( Perspective oldPersp , Perspective newPersp ) { } public void setPerspective ( final IPerspectiveDescriptor desc ) { } public PartService getPartService ( ) { } protected void resetToolBarLayout ( ) { } public void setWorkingSet ( IWorkingSet newWorkingSet ) { } public void showActionSet ( String actionSetID ) { } public IViewPart showView ( String viewID ) throws PartInitException { } public IViewPart showView ( final String viewID , final String secondaryID , final int mode ) throws PartInitException { } private boolean certifyMode ( int mode ) { } public void hideFastView ( ) { } public void toggleFastView ( IViewReference ref ) { } public void setState ( IWorkbenchPartReference ref , int newState ) { Perspective persp = getActivePerspective ( ) ; if ( persp == null ) { return ; } PartPane pane = ( ( WorkbenchPartReference ) ( ref ) ) . getPane ( ) ; if ( ! ( pane . isDocked ( ) ) ) { pane . setZoomed ( ( newState == ( IStackPresentationSite . STATE_MAXIMIZED ) ) ) ; return ; } if ( ( ref instanceof IViewReference ) && ( persp . isFastView ( ( ( IViewReference ) ( ref ) ) ) ) ) { <START_BUG> persp . setFastViewState ( newState ) ; <END_BUG> return ; } if ( Perspective . useNewMinMax ( persp ) ) { PartStack parent = ( ( PartStack ) ( pane . getContainer ( ) ) ) ; parent . setState ( newState ) ; return ; } boolean wasZoomed = isZoomed ( ) ; boolean isZoomed = newState == ( IStackPresentationSite . STATE_MAXIMIZED ) ; if ( wasZoomed && ( ! isZoomed ) ) { zoomOut ( ) ; } else if ( ( ! wasZoomed ) && isZoomed ) { persp . getPresentation ( ) . zoomIn ( ref ) ; activate ( ref . getPart ( true ) ) ; } PartStack parent = ( ( PartStack ) ( pane . getContainer ( ) ) ) ; if ( parent != null ) { parent . setMinimized ( ( newState == ( IStackPresentationSite . STATE_MINIMIZED ) ) ) ; } } public void setPartState ( IWorkbenchPartReference ref , int state ) { } int getState ( IWorkbenchPartReference ref ) { } public int getPartState ( IWorkbenchPartReference ref ) { } public void toggleZoom ( IWorkbenchPartReference ref ) { } public void updateActionBars ( ) { } private void updateTabList ( IWorkbenchPart part ) { } public void zoomOut ( ) { } private void zoomOutIfNecessary ( IWorkbenchPart part ) { } public int getEditorReuseThreshold ( ) { } public void setEditorReuseThreshold ( int openEditors ) { } public IEditorReference [ ] getSortedEditors ( ) { } public IPerspectiveDescriptor [ ] getOpenPerspectives ( ) { } Perspective [ ] getOpenInternalPerspectives ( ) { } Perspective getFirstPerspectiveWithView ( IViewPart part ) { }

Fix:
persp . setFastViewState ( ( ( IViewReference ) ( ref ) ) , newState ) ;