Buggy code:
public class Perspective { private PerspectiveDescriptor descriptor ; protected WorkbenchPage page ; protected LayoutPart editorArea ; private PartPlaceholder editorHolder ; private ViewFactory viewFactory ; private ArrayList visibleActionSets ; private ArrayList alwaysOnActionSets ; private ArrayList alwaysOffActionSets ; private ArrayList newWizardActionIds ; private ArrayList showViewActionIds ; private ArrayList perspectiveActionIds ; private ArrayList fastViews ; private Map mapIDtoViewLayoutRec ; private boolean fixed ; private ArrayList showInPartIds ; private HashMap showInTimes = new HashMap ( ) ; private IViewReference activeFastView ; private IMemento memento ; protected PerspectivePresentation presentation ; private static final String VERSION_STRING = "0.016" ; private FastViewPane fastViewPane = new FastViewPane ( ) ; private static final int FASTVIEW_HIDE_STEPS = 5 ; private String oldPartID = null ; private boolean shouldHideEditorsOnActivate = false ; public Perspective ( PerspectiveDescriptor desc , WorkbenchPage page ) throws WorkbenchException { } protected Perspective ( WorkbenchPage page ) throws WorkbenchException { } public void addFastView ( IViewReference ref ) { } public boolean bringToTop ( IViewReference ref ) { } public boolean canCloseView ( IViewPart view ) { } public boolean containsView ( IViewPart view ) { } private void createInitialActionSets ( List stringList ) { } private void createPresentation ( PerspectiveDescriptor persp ) throws WorkbenchException { } public void dispose ( ) { } public IViewReference findView ( String viewId ) { } public IViewReference findView ( String id , String secondaryId ) { } public IActionSetDescriptor [ ] getActionSets ( ) { } private Composite getClientComposite ( ) { } public IPerspectiveDescriptor getDesc ( ) { } Rectangle getFastViewBounds ( IViewReference ref ) { } public IViewReference [ ] getFastViews ( ) { } public ArrayList getNewWizardActionIds ( ) { } private ViewPane getPane ( IViewReference ref ) { } public ArrayList getPerspectiveActionIds ( ) { } public PerspectivePresentation getPresentation ( ) { } private float getFastViewWidthRatio ( String id ) { } public ArrayList getShowInPartIds ( ) { } public long getShowInTime ( String partId ) { } public ArrayList getShowViewActionIds ( ) { } private ViewFactory getViewFactory ( ) { } public void openTracker ( ViewPane pane ) { } public IViewReference [ ] getViewReferences ( ) { } public void hideActionSet ( String id ) { } protected void hideEditorArea ( ) { } private void hideFastView ( IViewReference ref , int steps ) { } void hideFastViewSash ( ) { } public boolean hideView ( IViewReference ref ) { } protected boolean isEditorAreaVisible ( ) { } public boolean isFastView ( IViewReference ref ) { } private ViewLayoutRec getViewLayoutRec ( IViewReference ref , boolean create ) { } private ViewLayoutRec getViewLayoutRec ( String viewId , boolean create ) { } public boolean isFixedLayout ( ) { } public boolean isStandaloneView ( IViewReference ref ) { } public boolean getShowTitleView ( IViewReference ref ) { } private void loadCustomPersp ( PerspectiveDescriptor persp ) { } private void unableToOpenPerspective ( PerspectiveDescriptor persp , IStatus status ) { } private void loadPredefinedPersp ( PerspectiveDescriptor persp ) throws WorkbenchException { } protected void onActivate ( ) { } protected void onDeactivate ( ) { } public void partActivated ( IWorkbenchPart activePart ) { } public void performedShowIn ( String partId ) { } public void removeFastView ( IViewReference ref ) { } public IStatus restoreState ( IMemento memento ) { } private IStatus createReferences ( IMemento [ ] views ) { } public IStatus restoreState ( ) { } private void restoreViewLayoutRec ( IMemento childMem , IViewReference viewRef ) { } private ArrayList getShowInIdsFromRegistry ( ) { } public void saveDesc ( ) { } public void saveDescAs ( IPerspectiveDescriptor desc ) { } public IStatus saveState ( IMemento memento ) { } private IStatus saveState ( IMemento memento , PerspectiveDescriptor p , boolean saveInnerViewState ) { } private void saveViewLayoutRec ( IViewReference ref , IMemento viewMemento ) { } public void setActionSets ( IActionSetDescriptor [ ] newArray ) { } public IViewReference getActiveFastView ( ) { } void setActiveFastView ( IViewReference ref , int steps ) { } void setActiveFastView ( IViewReference ref ) { } private void setAllPinsVisible ( boolean visible ) { } private void setFastViewIconSelection ( IViewReference ref , boolean selected ) { } public void setNewWizardActionIds ( ArrayList newList ) { } public void setPerspectiveActionIds ( ArrayList list ) { } public void setShowInPartIds ( ArrayList list ) { } public void setShowViewActionIds ( ArrayList list ) { } public void showActionSet ( String id ) { } protected void showEditorArea ( ) { } private void setEditorAreaVisible ( boolean visible ) { ArrayList workbooks = ( ( EditorArea ) ( editorArea ) ) . getEditorWorkbooks ( ) ; for ( Iterator iter = workbooks . iterator ( ) ; iter . hasNext ( ) ; ) { <START_BUG> EditorWorkbook workbook = ( ( EditorWorkbook ) ( iter . next ( ) ) ) ; <END_BUG> workbook . setVisible ( visible ) ; EditorPane pane = workbook . getVisibleEditor ( ) ; if ( pane != null ) pane . setVisible ( visible ) ; } editorArea . setVisible ( visible ) ; } boolean showFastView ( IViewReference ref ) { } private void saveFastViewWidthRatio ( ) { } public IViewPart showView ( String viewId , String secondaryId ) throws PartInitException { } public void toggleFastView ( IViewReference ref ) { } public String getOldPartID ( ) { } public void setOldPartID ( String oldPartID ) { } void moveFastView ( IViewReference draggedView , IViewReference destinationView ) { } void addActionSet ( IActionSetDescriptor newDesc ) { } void removeActionSet ( String id ) { } public void toggleFastViewZoom ( ) { } public boolean isCloseable ( IViewReference reference ) { } public boolean isMoveable ( IViewReference reference ) { } }

Fix:
EditorStack workbook = ( ( EditorStack ) ( iter . next ( ) ) ) ;