Buggy code:
public final class WorkbenchKeyboard { public final class KeyDownFilter implements Listener { private transient boolean enabled = true ; public final void handleEvent ( final Event event ) { } public final boolean isEnabled ( ) { } public final void setEnabled ( final boolean enabled ) { } } private static final boolean DEBUG = Policy . DEBUG_KEY_BINDINGS ; private static final boolean DEBUG_VERBOSE = Policy . DEBUG_KEY_BINDINGS_VERBOSE ; private static final int DELAY = 1000 ; static KeySequence outOfOrderKeys ; private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle . getBundle ( WorkbenchKeyboard . class . getName ( ) ) ; public static List generatePossibleKeyStrokes ( Event event ) { } private static boolean isOutOfOrderKey ( List keyStrokes ) { } private IBindingService bindingService = null ; private KeyAssistDialog keyAssistDialog = null ; private final WorkbenchKeyboard . KeyDownFilter keyDownFilter = new WorkbenchKeyboard . KeyDownFilter ( ) ; private final OutOfOrderListener outOfOrderListener = new OutOfOrderListener ( this ) ; private final OutOfOrderVerifyListener outOfOrderVerifyListener = new OutOfOrderVerifyListener ( outOfOrderListener ) ; 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 ) { } private void checkActiveWindow ( IWorkbenchWindow window ) { } private void closeMultiKeyAssistShell ( ) { } final boolean executeCommand ( final Binding binding , final Object trigger ) throws CommandException { } private void filterKeySequenceBindings ( Event event ) { } public WorkbenchKeyboard . KeyDownFilter getKeyDownFilter ( ) { } private Binding getPerfectMatch ( KeySequence keySequence ) { } private void incrementState ( KeySequence sequence ) { } private boolean isPartialMatch ( KeySequence keySequence ) { } private boolean isPerfectMatch ( KeySequence keySequence ) { } final void logException ( final CommandException e ) { Throwable nestedException = e . getCause ( ) ; Throwable exception = ( nestedException == null ) ? e : nestedException ; String message = Util . translateString ( WorkbenchKeyboard . RESOURCE_BUNDLE , "ExecutionError.Message" ) ; String title = Util . translateString ( WorkbenchKeyboard . RESOURCE_BUNDLE , "ExecutionError.Title" ) ; String exceptionMessage = exception . getMessage ( ) ; if ( exceptionMessage == null ) { <START_BUG> exceptionMessage = message ; <END_BUG> } IStatus status = new Status ( IStatus . ERROR , WorkbenchPlugin . PI_WORKBENCH , 0 , exceptionMessage , exception ) ; WorkbenchPlugin . log ( message , status ) ; ErrorDialog . openError ( workbench . getActiveWorkbenchWindow ( ) . getShell ( ) , title , message , status ) ; } public final void openMultiKeyAssistShell ( ) { } public boolean press ( List potentialKeyStrokes , Event event ) throws CommandException { } void processKeyEvent ( List keyStrokes , Event event ) { } private final void resetState ( final boolean clearRememberedState ) { } }

Fix:
exceptionMessage = exception . getClass ( ) . getName ( ) ;