Buggy code:
while ( itr . hasNext ( ) ) { IActionSetDescriptor desc = ( ( IActionSetDescriptor ) ( itr . next ( ) ) ) ; IMemento child = memento . createChild ( TAG_ALWAYS_ON_ACTION_SET ) ; child . putString ( TAG_ID , desc . getId ( ) ) ; } itr = alwaysOffActionSets . iterator ( ) ; while ( itr . hasNext ( ) ) { IActionSetDescriptor desc = ( ( IActionSetDescriptor ) ( itr . next ( ) ) ) ; IMemento child = memento . createChild ( TAG_ALWAYS_OFF_ACTION_SET ) ; child . putString ( TAG_ID , desc . getId ( ) ) ; } itr = showViewShortcuts . iterator ( ) ; while ( itr . hasNext ( ) ) { String str = ( ( String ) ( itr . next ( ) ) ) ; IMemento child = memento . createChild ( TAG_SHOW_VIEW_ACTION ) ; child . putString ( TAG_ID , str ) ; } itr = showInTimes . keySet ( ) . iterator ( ) ; while ( itr . hasNext ( ) ) { String id = ( ( String ) ( itr . next ( ) ) ) ; Long time = ( ( Long ) ( showInTimes . get ( id ) ) ) ; IMemento child = memento . createChild ( TAG_SHOW_IN_TIME ) ; child . putString ( TAG_ID , id ) ; child . putString ( TAG_TIME , time . toString ( ) ) ; } itr = newWizardShortcuts . iterator ( ) ; while ( itr . hasNext ( ) ) { String str = ( ( String ) ( itr . next ( ) ) ) ; IMemento child = memento . createChild ( TAG_NEW_WIZARD_ACTION ) ; child . putString ( TAG_ID , str ) ; } itr = perspectiveShortcuts . iterator ( ) ; while ( itr . hasNext ( ) ) { String str = ( ( String ) ( itr . next ( ) ) ) ; IMemento child = memento . createChild ( TAG_PERSPECTIVE_ACTION ) ; child . putString ( TAG_ID , str ) ; } List viewPanes = new ArrayList ( 5 ) ; presentation . collectViewPanes ( viewPanes ) ; itr = viewPanes . iterator ( ) ; int errors = 0 ; while ( itr . hasNext ( ) ) { ViewPane pane = ( ( ViewPane ) ( itr . next ( ) ) ) ; IViewReference ref = pane . getViewReference ( ) ; IMemento viewMemento = memento . createChild ( TAG_VIEW ) ; viewMemento . putString ( TAG_ID , ViewFactory . getKey ( ref ) ) ; } if ( ( fastViews . size ( ) ) > 0 ) { IMemento childMem = memento . createChild ( TAG_FAST_VIEWS ) ; itr = fastViews . iterator ( ) ; while ( itr . hasNext ( ) ) { IViewReference ref = ( ( IViewReference ) ( itr . next ( ) ) ) ; IMemento viewMemento = childMem . createChild ( TAG_VIEW ) ; String id = ViewFactory . getKey ( ref ) ; viewMemento . putString ( TAG_ID , id ) ; float ratio = getFastViewWidthRatio ( ref ) ; viewMemento . putFloat ( TAG_RATIO , ratio ) ; } } for ( Iterator i = mapIDtoViewLayoutRec . keySet ( ) . iterator ( ) ; i . hasNext ( ) ; ) { String compoundId = ( ( String ) ( i . next ( ) ) ) ; ViewLayoutRec rec = ( ( ViewLayoutRec ) ( mapIDtoViewLayoutRec . get ( compoundId ) ) ) ; if ( ( rec != null ) && ( ( ( ! ( rec . isCloseable ) ) || ( ! ( rec . isMoveable ) ) ) || ( rec . isStandalone ) ) ) { IMemento layoutMemento = memento . createChild ( TAG_VIEW_LAYOUT_REC ) ; layoutMemento . putString ( TAG_ID , compoundId ) ; if ( ! ( rec . isCloseable ) ) { layoutMemento . putString ( TAG_CLOSEABLE , FALSE ) ; } if ( ! ( rec . isMoveable ) ) { layoutMemento . putString ( TAG_MOVEABLE , FALSE ) ; } if ( rec . isStandalone ) { layoutMemento . putString ( TAG_STANDALONE , TRUE ) ; <START_BUG> layoutMemento . putString ( TAG_SHOW_TITLE , Boolean . toString ( rec . showTitle ) ) ; <END_BUG> } } } if ( errors > 0 ) { String message = WorkbenchMessages . Perspective_multipleErrors ; if ( errors == 1 ) message = WorkbenchMessages . Perspective_oneError ; MessageDialog . openError ( null , Error , message ) ; } IMemento childMem = memento . createChild ( TAG_LAYOUT ) ; result . add ( presentation . saveState ( childMem ) ) ; if ( isEditorAreaVisible ( ) ) memento . putInteger ( TAG_AREA_VISIBLE , 1 ) ; else memento . putInteger ( TAG_AREA_VISIBLE , 0 ) ; if ( fixed ) memento . putInteger ( TAG_FIXED , 1 ) ; else memento . putInteger ( TAG_FIXED , 0 ) ; return result ; } 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 ( ) { } boolean showFastView ( IViewReference ref ) { } private void saveFastViewWidthRatio ( ) { } public IViewPart showView ( String viewId , String secondaryId ) throws PartInitException { } public void toggleFastView ( IViewReference ref ) { }

Fix:
layoutMemento . putString ( TAG_SHOW_TITLE , String . valueOf ( rec . showTitle ) ) ;