Buggy code:
private static final int RESTORE_CODE_OK = 0 ; private static final int RESTORE_CODE_RESET = 1 ; private static final int RESTORE_CODE_EXIT = 2 ; private static Workbench instance ; private static WorkbenchTestable testableObject ; private Display display ; private WindowManager windowManager ; private WorkbenchWindow activatedWindow ; private EditorHistory editorHistory ; private boolean runEventLoop = true ; private boolean isStarting = true ; private boolean isClosing = false ; private int returnCode ; private ListenerList windowListeners = new ListenerList ( ) ; private WorkbenchAdvisor advisor ; private WorkbenchConfigurer workbenchConfigurer ; private Workbench ( Display display , WorkbenchAdvisor advisor ) { } public static final Workbench getInstance ( ) { } public static final int createAndRunWorkbench ( Display display , WorkbenchAdvisor advisor ) { } public static Display createDisplay ( ) { } public static WorkbenchTestable getWorkbenchTestable ( ) { } private IMutableActivityManager activityManager ; ICommandManager commandManager ; private WorkbenchActivityService workbenchActivityService ; private final ICompoundActivityService compoundActivityService = ActivityServiceFactory . getCompoundActivityService ( ) ; public WorkbenchActivitiesCommandsAndRoles workbenchActivitiesCommandsAndRoles = new WorkbenchActivitiesCommandsAndRoles ( this ) ; private WorkbenchActivityHelper activityHelper ; public IActivityManager getActivityManager ( ) { } public void setEnabledActivityIds ( Set enabledActivityIds ) { } public ICommandManager getCommandManager ( ) { } public IActivityService getActivityService ( ) { } public ICompoundActivityService getCompoundActivityService ( ) { } private volatile boolean keyFilterDisabled ; private final Object keyFilterMutex = new Object ( ) ; public final void disableKeyFilter ( ) { } public final void enableKeyFilter ( ) { } public final boolean isKeyFilterEnabled ( ) { } public void addWindowListener ( IWindowListener l ) { } public void removeWindowListener ( IWindowListener l ) { } protected void fireWindowOpened ( IWorkbenchWindow window ) { } protected void fireWindowClosed ( IWorkbenchWindow window ) { } protected void fireWindowActivated ( IWorkbenchWindow window ) { } protected void fireWindowDeactivated ( IWorkbenchWindow window ) { } private boolean busyClose ( final boolean force ) { } public boolean saveAllEditors ( boolean confirm ) { } private IWorkbenchWindow busyOpenWorkbenchWindow ( String perspID , IAdaptable input ) throws WorkbenchException { } public boolean close ( ) { } boolean close ( int returnCode , final boolean force ) { } public IWorkbenchWindow getActiveWorkbenchWindow ( ) { } protected EditorHistory getEditorHistory ( ) { } public IEditorRegistry getEditorRegistry ( ) { } private int getNewWindowNumber ( ) { } public IPerspectiveRegistry getPerspectiveRegistry ( ) { } public PreferenceManager getPreferenceManager ( ) { } public IPreferenceStore getPreferenceStore ( ) { } public ISharedImages getSharedImages ( ) { } WindowManager getWindowManager ( ) { } private File getWorkbenchStateFile ( ) { } public int getWorkbenchWindowCount ( ) { } public IWorkbenchWindow [ ] getWorkbenchWindows ( ) { } public IWorkingSetManager getWorkingSetManager ( ) { } private boolean init ( ImageDescriptor windowImage , Display display ) { } private void initializeSingleClickOption ( ) { } private void initializeFonts ( ) { } private void installFont ( String fontKey , FontRegistry registry , IPreferenceStore store ) { } private void initializeImages ( ImageDescriptor windowImage ) { } private void initializeColors ( ) { } public boolean isClosing ( ) { } boolean isStarting ( ) { } private WorkbenchWindow newWorkbenchWindow ( ) { } private void forceOpenPerspective ( ) { } private void openFirstTimeWindow ( ) { } private int openPreviousWorkbenchState ( ) { } public IWorkbenchWindow openWorkbenchWindow ( IAdaptable input ) throws WorkbenchException { } public IWorkbenchWindow openWorkbenchWindow ( final String perspID , final IAdaptable input ) throws WorkbenchException { } private XMLMemento recordWorkbenchState ( ) { } public boolean restart ( ) { } private IStatus restoreState ( IMemento memento ) { } public IPluginDescriptor [ ] getEarlyActivatedPlugins ( ) { } private void startPlugins ( ) { Runnable work = new Runnable ( ) { IPreferenceStore store = getPreferenceStore ( ) ; final String pref = store . getString ( PLUGINS_NOT_ACTIVATED_ON_STARTUP ) ; public void run ( ) { IPluginRegistry registry = Platform . getPluginRegistry ( ) ; <START_BUG> IExtensionPoint point = registry . getExtensionPoint ( PLUGIN_ID , TAG_STARTUP ) ; <END_BUG> IExtension [ ] extensions = point . getExtensions ( ) ; for ( int i = 0 ; i < ( extensions . length ) ; i ++ ) { IExtension extension = extensions [ i ] ; IConfigurationElement [ ] configElements = extension . getConfigurationElements ( ) ; IConfigurationElement startupElement = null ; for ( int j = 0 ; ( j < ( configElements . length ) ) && ( startupElement == null ) ; j ++ ) { if ( configElements [ j ] . getName ( ) . equals ( TAG_STARTUP ) ) { startupElement = configElements [ j ] ; } } final IConfigurationElement startElement = startupElement ; final String startupName ; if ( startElement != null ) { startupName = startElement . getAttribute ( TAG_CLASS ) ; } else { startupName = null ; } final IPluginDescriptor pluginDescriptor = extension . getDeclaringPluginDescriptor ( ) ; SafeRunnable code = new SafeRunnable ( ) { public void run ( ) throws Exception { String id = ( pluginDescriptor . getUniqueIdentifier ( ) ) + ( IPreferenceConstants . SEPARATOR ) ; if ( ( pref . indexOf ( id ) ) < 0 ) { IStartup startup = null ; if ( startupName == null ) { Plugin plugin = pluginDescriptor . getPlugin ( ) ; startup = ( ( IStartup ) ( plugin ) ) ; } else { startup = ( ( IStartup ) ( WorkbenchPlugin . createExtension ( startElement , TAG_CLASS ) ) ) ; } startup . earlyStartup ( ) ; } } public void handleException ( Throwable exception ) { WorkbenchPlugin . log ( "Unhandled<seq2seq4repair_space>Exception" , new Status ( IStatus . ERROR , PlatformUI . PLUGIN_ID , 0 , "Unhandled<seq2seq4repair_space>Exception" , exception ) ) ; } } ; Platform . run ( code ) ; } } } ; Thread thread = new Thread ( work ) ; thread . start ( ) ; } private int runUI ( ) { }

Fix:
IExtensionPoint point = registry . getExtensionPoint ( PLUGIN_ID , PL_STARTUP ) ;