Buggy code:
public final class WorkbenchKeyboard { private static final boolean DEBUG = Policy . DEBUG_KEY_BINDINGS ; private static final boolean DEBUG_VERBOSE = Policy . DEBUG_KEY_BINDINGS_VERBOSE ; private static final int MULTI_KEY_ASSIST_SHELL_MAX_HEIGHT = 175 ; private static final int MULTI_KEY_ASSIST_SHELL_MAX_WIDTH = 300 ; static final String OUT_OF_ORDER_KEYS = "OutOfOrderKeys" ; static KeySequence outOfOrderKeys ; private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle . getBundle ( WorkbenchKeyboard . class . getName ( ) ) ; public static List generatePossibleKeyStrokes ( Event event ) { } private static void initializeOutOfOrderKeys ( ) { } private static boolean isOutOfOrderKey ( List keyStrokes ) { } private final IActivityManager activityManager ; private final ICommandManager commandManager ; private final Listener keyDownFilter = new Listener ( ) { public void handleEvent ( Event event ) { } } ; private Shell multiKeyAssistShell = null ; private long startTime = Long . MAX_VALUE ; private final KeyBindingState state ; private final IWindowListener windowListener = new IWindowListener ( ) { public void windowActivated ( IWorkbenchWindow window ) { } public void windowClosed ( IWorkbenchWindow window ) { } public void windowDeactivated ( IWorkbenchWindow window ) { } public void windowOpened ( IWorkbenchWindow window ) { } } ; private final IWorkbench workbench ; public WorkbenchKeyboard ( Workbench associatedWorkbench , IActivityManager associatedActivityManager , ICommandManager associatedCommandManager ) { } private void checkActiveWindow ( IWorkbenchWindow window ) { } private void closeMultiKeyAssistShell ( ) { } private static boolean isEnabled ( ICommand command ) { } private boolean executeCommand ( String commandId , Event event ) throws CommandException { } private void filterKeySequenceBindings ( Event event ) { } public Listener getKeyDownFilter ( ) { } private String getPerfectMatch ( KeySequence keySequence ) { } private void incrementState ( KeySequence sequence ) { } private boolean isPartialMatch ( KeySequence keySequence ) { } private boolean isPerfectMatch ( KeySequence keySequence ) { } private final void logException ( CommandException e ) { } private void openMultiKeyAssistShell ( final Display display ) { } public boolean press ( List potentialKeyStrokes , Event event ) throws CommandException { if ( ( WorkbenchKeyboard . DEBUG ) && ( WorkbenchKeyboard . DEBUG_VERBOSE ) ) { System . out . println ( ( ( "KEYS<seq2seq4repair_space>>>><seq2seq4repair_space>WorkbenchKeyboard.press(potentialKeyStrokes<seq2seq4repair_space>=<seq2seq4repair_space>" + potentialKeyStrokes ) + ")" ) ) ; } if ( "gtk" . equals ( SWT . getPlatform ( ) ) ) { final Widget widget = event . widget ; final Shell shell ; if ( ( widget instanceof Control ) && ( ! ( widget . isDisposed ( ) ) ) ) { shell = ( ( Control ) ( widget ) ) . getShell ( ) ; } else { <START_BUG> shell = event . display . getActiveShell ( ) ; <END_BUG> } ( ( WorkbenchCommandSupport ) ( workbench . getCommandSupport ( ) ) ) . processHandlerSubmissions ( false , shell ) ; ( ( WorkbenchContextSupport ) ( workbench . getContextSupport ( ) ) ) . processEnabledSubmissions ( false , shell ) ; } KeySequence sequenceBeforeKeyStroke = state . getCurrentSequence ( ) ; for ( Iterator iterator = potentialKeyStrokes . iterator ( ) ; iterator . hasNext ( ) ; ) { KeySequence sequenceAfterKeyStroke = KeySequence . getInstance ( sequenceBeforeKeyStroke , ( ( KeyStroke ) ( iterator . next ( ) ) ) ) ; if ( isPartialMatch ( sequenceAfterKeyStroke ) ) { incrementState ( sequenceAfterKeyStroke ) ; return true ; } else if ( isPerfectMatch ( sequenceAfterKeyStroke ) ) { String commandId = getPerfectMatch ( sequenceAfterKeyStroke ) ; return ( executeCommand ( commandId , event ) ) || ( sequenceBeforeKeyStroke . isEmpty ( ) ) ; } else if ( ( ( multiKeyAssistShell ) != null ) && ( ( ( ( ( ( event . keyCode ) == ( SWT . ARROW_DOWN ) ) || ( ( event . keyCode ) == ( SWT . ARROW_UP ) ) ) || ( ( event . keyCode ) == ( SWT . ARROW_LEFT ) ) ) || ( ( event . keyCode ) == ( SWT . ARROW_RIGHT ) ) ) || ( ( event . keyCode ) == ( SWT . CR ) ) ) ) { return false ; } } resetState ( ) ; return false ; } void processKeyEvent ( List keyStrokes , Event event ) { } private void resetState ( ) { } }

Fix:
shell = Display . getCurrent ( ) . getActiveShell ( ) ;