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 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 ; private CoolBarLayout toolBarLayout ; private int reuseEditors = - 1 ; 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 { } 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 getShowViewActionIds ( ) { } public CoolBarLayout getToolBarLayout ( ) { } 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 ) { try { InputStream stream = new FileInputStream ( persp . getCustomFile ( ) ) ; <START_BUG> InputStreamReader reader = new InputStreamReader ( stream , "utf-8" ) ; <END_BUG> IMemento memento = XMLMemento . createReadRoot ( reader ) ; MultiStatus status = new MultiStatus ( PlatformUI . PLUGIN_ID , IStatus . OK , WorkbenchMessages . format ( "Perspective.unableToRestorePerspective" , new String [ ] { persp . getLabel ( ) } ) , null ) ; status . merge ( restoreState ( memento ) ) ; status . merge ( restoreState ( ) ) ; if ( ( status . getSeverity ( ) ) != ( IStatus . OK ) ) { unableToOpenPerspective ( persp , status ) ; } reader . close ( ) ; } catch ( IOException e ) { unableToOpenPerspective ( persp , null ) ; } catch ( WorkbenchException e ) { unableToOpenPerspective ( persp , e . getStatus ( ) ) ; } } 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 removeFastView ( IViewReference ref ) { } public IStatus restoreState ( IMemento memento ) { } private IStatus createReferences ( IMemento [ ] views ) { } public IStatus restoreState ( ) { } 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 setShowViewActionIds ( ArrayList list ) { } public void setToolBarLayout ( CoolBarLayout layout ) { } public void showActionSet ( String id ) { } protected void showEditorArea ( ) { } void showFastView ( IViewReference ref ) { } public IViewPart showView ( String viewID ) throws PartInitException { } public void toggleFastView ( IViewReference ref ) { } public String getOldPartID ( ) { } public void setOldPartID ( String oldPartID ) { } }

Fix:
BufferedReader reader = new BufferedReader ( new InputStreamReader ( stream , "utf-8" ) ) ;