Buggy code:
private ExtensionEventHandler extensionEventHandler ; private int largeUpdates = 0 ; final Map services = new HashMap ( ) ; 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 ( ) { } public void addWindowListener ( IWindowListener l ) { } public void removeWindowListener ( IWindowListener l ) { } protected void fireWindowOpened ( final IWorkbenchWindow window ) { } protected void fireWindowClosed ( final IWorkbenchWindow window ) { } protected void fireWindowActivated ( final IWorkbenchWindow window ) { } protected void fireWindowDeactivated ( final 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 IWorkbenchOperationSupport getOperationSupport ( ) { } 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 ( ) { } public ILocalWorkingSetManager createLocalWorkingSetManager ( ) { } private boolean init ( Display display ) { if ( WorkbenchPlugin . getDefault ( ) . isDebugging ( ) ) { WorkbenchPlugin . DEBUG = true ; ModalContext . setDebugMode ( true ) ; } windowManager = new WindowManager ( ) ; IIntroRegistry introRegistry = WorkbenchPlugin . getDefault ( ) . getIntroRegistry ( ) ; if ( ( introRegistry . getIntroCount ( ) ) > 0 ) { IProduct product = Platform . getProduct ( ) ; if ( product != null ) { introDescriptor = ( ( IntroDescriptor ) ( introRegistry . getIntroForProduct ( product . getId ( ) ) ) ) ; } } workbenchActivitySupport = new WorkbenchActivitySupport ( ) ; activityHelper = ActivityPersistanceHelper . getInstance ( ) ; final IEvaluationContext context = new EvaluationContext ( null , this ) ; final Shell activeShell = display . getActiveShell ( ) ; if ( activeShell != null ) { context . addVariable ( ACTIVE_SHELL_NAME , activeShell ) ; } final IWorkbenchWindow window = getActiveWorkbenchWindow ( ) ; if ( window != null ) { final Shell windowShell = window . getShell ( ) ; if ( windowShell != null ) { context . addVariable ( ACTIVE_WORKBENCH_WINDOW_NAME , windowShell ) ; } final IWorkbenchPage page = window . getActivePage ( ) ; if ( page != null ) { final IWorkbenchPart part = page . getActivePart ( ) ; if ( part != null ) { final IWorkbenchPartSite site = part . getSite ( ) ; if ( site != null ) { context . addVariable ( ACTIVE_SITE_NAME , site ) ; final String partId = site . getId ( ) ; if ( partId != null ) { context . addVariable ( ACTIVE_PART_NAME , partId ) ; } } } } } commandManager = new CommandManager ( ) ; final CommandService commandService = new CommandService ( commandManager ) ; services . put ( ICommandService . class , commandService ) ; ContextManager . DEBUG = Policy . DEBUG_CONTEXTS ; contextManager = new ContextManager ( ) ; final IContextService contextService = new ContextService ( contextManager ) ; services . put ( IContextService . class , contextService ) ; final IHandlerService handlerService = new HandlerService ( commandManager , context ) ; services . put ( IHandlerService . class , handlerService ) ; BindingManager . DEBUG = Policy . DEBUG_KEY_BINDINGS ; <START_BUG> bindingManager = new BindingManager ( contextManager ) ; <END_BUG> final IBindingService bindingService = new org . eclipse . ui . internal . keys . BindingService ( bindingManager ) ; services . put ( IBindingService . class , bindingService ) ; commandService . readRegistry ( ) ; handlerService . readRegistry ( ) ; bindingService . readRegistryAndPreferences ( commandService ) ; final ActiveShellSourceProvider activeShellSourceProvider = new ActiveShellSourceProvider ( this ) ; final ActivePartSourceProvider activePartSourceProvider = new ActivePartSourceProvider ( this ) ; handlerService . addSourceProvider ( activeShellSourceProvider ) ; handlerService . addSourceProvider ( activePartSourceProvider ) ; final Command showViewCommand = commandService . getCommand ( "org.eclipse.ui.views.showView" ) ; showViewCommand . setHandler ( new ShowViewHandler ( ) ) ; final Command showPerspectiveCommand = commandService . getCommand ( "org.eclipse.ui.perspectives.showPerspective" ) ; showPerspectiveCommand . setHandler ( new ShowPerspectiveHandler ( ) ) ; workbenchContextSupport = new WorkbenchContextSupport ( this , contextManager ) ; workbenchCommandSupport = new WorkbenchCommandSupport ( bindingManager , commandManager , contextManager , handlerService ) ; workbenchContextSupport . initialize ( ) ; initializeCommandResolver ( ) ; addWindowListener ( windowListener ) ; initializeImages ( ) ; initializeFonts ( ) ; initializeColors ( ) ; initializeApplicationColors ( ) ; advisor . internalBasicInitialize ( getWorkbenchConfigurer ( ) ) ; boolean useColorIcons = getPreferenceStore ( ) . getBoolean ( COLOR_ICONS ) ; ActionContributionItem . setUseColorIconsInToolbars ( useColorIcons ) ; initializeSingleClickOption ( ) ; boolean avoidDeadlock = true ; String [ ] commandLineArgs = Platform . getCommandLineArgs ( ) ; for ( int i = 0 ; i < ( commandLineArgs . length ) ; i ++ ) { if ( commandLineArgs [ i ] . equalsIgnoreCase ( "-allowDeadlock" ) ) avoidDeadlock = false ; } if ( avoidDeadlock ) { UILockListener uiLockListener = new UILockListener ( display ) ; Platform . getJobManager ( ) . setLockListener ( uiLockListener ) ; display . setSynchronizer ( new UISynchronizer ( display , uiLockListener ) ) ; } try { UIStats . start ( RESTORE_WORKBENCH , "Workbench" ) ;

Fix:
bindingManager = new BindingManager ( contextManager , commandManager ) ;