Buggy code:
protected Collection hideToolBarIDs ; protected FastViewManager fastViewManager = null ; private Map mapIDtoViewLayoutRec ; protected boolean fixed ; protected ArrayList showInPartIds ; protected HashMap showInTimes = new HashMap ( ) ; private IViewReference activeFastView ; protected IMemento memento ; protected PerspectiveHelper presentation ; private static final String VERSION_STRING = "0.016" ; private FastViewPane fastViewPane = new FastViewPane ( ) ; private static final int FASTVIEW_HIDE_STEPS = 5 ; private IWorkbenchPartReference oldPartRef = null ; protected boolean shouldHideEditorsOnActivate = false ; protected PageLayout layout ; public Perspective ( PerspectiveDescriptor desc , WorkbenchPage page ) throws WorkbenchException { } protected Perspective ( WorkbenchPage page ) throws WorkbenchException { } public void makeFastView ( IViewReference ref ) { } public void addFastView ( IViewReference ref , boolean handleLayout ) { } public boolean bringToTop ( IViewReference ref ) { } public boolean containsView ( IViewPart view ) { } protected void createInitialActionSets ( List outputList , List stringList ) { } private void createPresentation ( PerspectiveDescriptor persp ) throws WorkbenchException { } public void dispose ( ) { } private void disposeViewRefs ( ) { } public IViewReference findView ( String viewId ) { } public IViewReference findView ( String id , String secondaryId ) { } public Composite getClientComposite ( ) { } public IPerspectiveDescriptor getDesc ( ) { } Rectangle getFastViewBounds ( IViewReference ref ) { } public IViewReference [ ] getFastViews ( ) { } public String [ ] getNewWizardShortcuts ( ) { } protected ViewPane getPane ( IViewReference ref ) { } public String [ ] getPerspectiveShortcuts ( ) { } public PerspectiveHelper getPresentation ( ) { } public float getFastViewWidthRatio ( IViewReference ref ) { } public ArrayList getShowInPartIds ( ) { } public long getShowInTime ( String partId ) { } public String [ ] getShowViewShortcuts ( ) { } public ViewFactory getViewFactory ( ) { } public IViewReference [ ] getViewReferences ( ) { } protected void hideEditorArea ( ) { } protected void hideEditorAreaLocal ( ) { } private void hideFastView ( IViewReference ref , int steps ) { } void hideFastViewSash ( ) { } public boolean hideView ( IViewReference ref ) { } protected boolean isEditorAreaVisible ( ) { } public boolean isFastView ( IViewReference ref ) { } public 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 ) { } protected void loadPredefinedPersp ( PerspectiveDescriptor persp ) throws WorkbenchException { } private void removeAlwaysOn ( IActionSetDescriptor descriptor ) { } protected void addAlwaysOff ( IActionSetDescriptor descriptor ) { } protected void addAlwaysOn ( IActionSetDescriptor descriptor ) { } private void removeAlwaysOff ( IActionSetDescriptor descriptor ) { } protected void onActivate ( ) { } private void allowUpdates ( IMenuManager menuManager ) { } private void fixOrphan ( ) { } protected void onDeactivate ( ) { } public void partActivated ( IWorkbenchPart activePart ) { } public void performedShowIn ( String partId ) { } public void removeFastView ( IViewReference ref ) { } public void removeFastView ( IViewReference ref , boolean handleLayout ) { } public IStatus restoreState ( IMemento memento ) { } IStatus createReferences ( IMemento [ ] views ) { } public IStatus restoreState ( ) { if ( ( this . memento ) == null ) { <START_BUG> return new Status ( IStatus . OK , PlatformUI . PLUGIN_ID , 0 , "" , null ) ; <END_BUG> } MultiStatus result = new MultiStatus ( PlatformUI . PLUGIN_ID , IStatus . OK , WorkbenchMessages . Perspective_problemsRestoringPerspective , null ) ; IMemento memento = this . memento ; this . memento = null ; final IMemento boundsMem = memento . getChild ( TAG_WINDOW ) ; if ( boundsMem != null ) { final Rectangle r = new Rectangle ( 0 , 0 , 0 , 0 ) ; r . x = boundsMem . getInteger ( TAG_X ) . intValue ( ) ; r . y = boundsMem . getInteger ( TAG_Y ) . intValue ( ) ; r . height = boundsMem . getInteger ( TAG_HEIGHT ) . intValue ( ) ; r . width = boundsMem . getInteger ( TAG_WIDTH ) . intValue ( ) ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) throws Throwable { if ( ( page . getWorkbenchWindow ( ) . getPages ( ) . length ) == 0 ) { page . getWorkbenchWindow ( ) . getShell ( ) . setBounds ( r ) ; } } } ) ; } final PerspectiveHelper [ ] presArray = new PerspectiveHelper [ 1 ] ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) throws Throwable { ViewSashContainer mainLayout = new ViewSashContainer ( page , getClientComposite ( ) ) ; presArray [ 0 ] = new PerspectiveHelper ( page , mainLayout , Perspective . this ) ; } } ) ; final PerspectiveHelper pres = presArray [ 0 ] ; result . merge ( pres . restoreState ( memento . getChild ( TAG_LAYOUT ) ) ) ; StartupThreading . runWithoutExceptions ( new StartupRunnable ( ) { public void runWithException ( ) throws Throwable { pres . replacePlaceholderWithPart ( editorArea ) ; } } ) ; IMemento [ ] views = memento . getChildren ( TAG_VIEW ) ; for ( int x = 0 ; x < ( views . length ) ; x ++ ) { IMemento childMem = views [ x ] ; String id = childMem . getString ( TAG_ID ) ; String secondaryId = ViewFactory . extractSecondaryId ( id ) ; if ( secondaryId != null ) { id = ViewFactory . extractPrimaryId ( id ) ;

Fix:
return Status . OK_STATUS ;