Buggy code:
private ArrayList fastViews ; private ArrayList showInPartIds ; private HashMap showInTimes = new HashMap ( ) ; private IViewReference activeFastView ; private IViewReference previousActiveFastView ; private IMemento memento ; protected PerspectivePresentation presentation ; private static final String VERSION_STRING = "0.016" ; private static final int SASH_SIZE = 3 ; private static final int FASTVIEW_HIDE_STEPS = 5 ; private static final long FASTVIEW_HIDE_MIN_DURATION = 50 ; private static final long FASTVIEW_HIDE_MAX_DURATION = 250 ; private static final RGB RGB_COLOR1 = new RGB ( 132 , 130 , 132 ) ; private static final RGB RGB_COLOR2 = new RGB ( 143 , 141 , 138 ) ; private static final RGB RGB_COLOR3 = new RGB ( 171 , 168 , 165 ) ; private Color borderColor1 ; private Color borderColor2 ; private Color borderColor3 ; private Map mapFastViewToWidthRatio = new HashMap ( ) ; private Sash fastViewSash ; Listener resizeListener = new Listener ( ) { public void handleEvent ( Event event ) { } } ; private PaintListener paintListener = new PaintListener ( ) { public void paintControl ( PaintEvent event ) { } } ; private SelectionAdapter selectionListener = new SelectionAdapter ( ) { public void widgetSelected ( SelectionEvent e ) { } } ; private String oldPartID = null ; private boolean shouldHideEditorsOnActivate = false ; public Perspective ( PerspectiveDescriptor desc , WorkbenchPage page ) throws WorkbenchException { } protected Perspective ( WorkbenchPage page ) throws WorkbenchException { } private final ICompoundCommandHandlerService compoundCommandHandlerService = CommandHandlerServiceFactory . getCompoundCommandHandlerService ( ) ; private final ICompoundContextActivationService compoundContextActivationService = ContextActivationServiceFactory . getCompoundContextActivationService ( ) ; public ICompoundCommandHandlerService getCompoundCommandHandlerService ( ) { } public ICompoundContextActivationService getCompoundContextActivationService ( ) { } public void addFastView ( IViewReference ref ) { } public boolean bringToTop ( IViewReference ref ) { } public boolean canCloseView ( IViewPart view ) { } private void checkDragLimit ( SelectionEvent event ) { } public boolean containsView ( IViewPart view ) { } private void createInitialActionSets ( List stringList ) { } private void createPresentation ( PerspectiveDescriptor persp ) throws WorkbenchException { } public void dispose ( ) { } public IViewReference findView ( String id ) { } 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 ( ) { } IViewReference getPreviousActiveFastView ( ) { } 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 void loadCustomPersp ( PerspectiveDescriptor persp ) { } private void unableToOpenPerspective ( PerspectiveDescriptor persp , IStatus status ) { } private void loadPredefinedPersp ( PerspectiveDescriptor persp ) throws WorkbenchException { IPerspectiveFactory factory = null ; try { factory = persp . createFactory ( ) ; } catch ( CoreException e ) { throw new WorkbenchException ( WorkbenchMessages . format ( "Perspective.unableToLoad" , new Object [ ] { persp . getId ( ) } ) ) ; } RootLayoutContainer container = new RootLayoutContainer ( page ) ; <START_BUG> PageLayout layout = new PageLayout ( container , getViewFactory ( ) , editorArea ) ; <END_BUG> factory . createInitialLayout ( layout ) ; PerspectiveExtensionReader extender = new PerspectiveExtensionReader ( ) ; extender . extendLayout ( descriptor . getId ( ) , layout ) ; mapFastViewToWidthRatio . putAll ( layout . getFastViewToWidthRatioMap ( ) ) ; createInitialActionSets ( layout . getActionSets ( ) ) ; alwaysOnActionSets . addAll ( visibleActionSets ) ; newWizardActionIds = layout . getNewWizardActionIds ( ) ; showViewActionIds = layout . getShowViewActionIds ( ) ; perspectiveActionIds = layout . getPerspectiveActionIds ( ) ; showInPartIds = layout . getShowInPartIds ( ) ; fastViews = layout . getFastViews ( ) ; presentation = new PerspectivePresentation ( page , container ) ; if ( ! ( layout . isEditorAreaVisible ( ) ) ) hideEditorArea ( ) ; } 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 ArrayList getShowInIdsFromRegistry ( ) { } public void saveDesc ( ) { } public void saveDescAs ( IPerspectiveDescriptor desc ) { } public IStatus saveState ( IMemento memento ) { } private IStatus saveState ( IMemento memento , PerspectiveDescriptor p , boolean saveInnerViewState ) { } 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 ( ) { }

Fix:
PageLayout layout = new PageLayout ( container , getViewFactory ( ) , editorArea , descriptor ) ;