Buggy code:
public abstract class Widget { int style ; int state ; Display display ; EventTable eventTable ; Object data ; static final int DISPOSED = 1 << 0 ; static final int CANVAS = 1 << 1 ; static final int KEYED_DATA = 1 << 2 ; static final int DISABLED = 1 << 3 ; static final int HIDDEN = 1 << 4 ; static final int DEFAULT_WIDTH = 64 ; static final int DEFAULT_HEIGHT = 64 ; static final int MAJOR = 4 ; static final int MINOR = 71 ; Widget ( ) { } public Widget ( Widget parent , int style ) { } public void addListener ( int eventType , Listener listener ) { } public void addDisposeListener ( DisposeListener listener ) { } int callWindowProc ( int msg , int wParam , int lParam ) { } static int checkBits ( int style , int int0 , int int1 , int int2 , int int3 , int int4 , int int5 ) { } void checkOrientation ( Widget parent ) { } void checkParent ( Widget parent ) { } protected void checkSubclass ( ) { } protected void checkWidget ( ) { } void destroyWidget ( ) { } int DeferWindowPos ( int hWinPosInfo , int hWnd , int hWndInsertAfter , int X , int Y , int cx , int cy , int uFlags ) { } public void dispose ( ) { } void error ( int code ) { } boolean filters ( int eventType ) { } public Object getData ( ) { } public Object getData ( String key ) { } public Display getDisplay ( ) { } String getName ( ) { } String getNameText ( ) { } public int getStyle ( ) { } boolean hooks ( int eventType ) { } public boolean isDisposed ( ) { } protected boolean isListening ( int eventType ) { } boolean isValidSubclass ( ) { } boolean isValidThread ( ) { } public void notifyListeners ( int eventType , Event event ) { } void postEvent ( int eventType ) { } void postEvent ( int eventType , Event event ) { } void releaseChild ( ) { } void releaseHandle ( ) { } void releaseResources ( ) { } void releaseWidget ( ) { } public void removeListener ( int eventType , Listener listener ) { } protected void removeListener ( int eventType , SWTEventListener listener ) { } public void removeDisposeListener ( DisposeListener listener ) { } void sendEvent ( Event event ) { } void sendEvent ( int eventType ) { } void sendEvent ( int eventType , Event event ) { } void sendEvent ( int eventType , Event event , boolean send ) { } boolean sendKeyEvent ( int type , int msg , int wParam , int lParam ) { } boolean sendKeyEvent ( int type , int msg , int wParam , int lParam , Event event ) { } public void setData ( Object data ) { } public void setData ( String key , Object value ) { } boolean setInputState ( Event event , int type ) { } boolean setKeyState ( Event event , int type , int wParam , int lParam ) { } boolean SetWindowPos ( int hWnd , int hWndInsertAfter , int X , int Y , int cx , int cy , int uFlags ) { } public String toString ( ) { } LRESULT wmChar ( int hwnd , int wParam , int lParam ) { } LRESULT wmIMEChar ( int hwnd , int wParam , int lParam ) { } LRESULT wmKeyDown ( int hwnd , int wParam , int lParam ) { } LRESULT wmKeyUp ( int hwnd , int wParam , int lParam ) { } <START_BUG> LRESULT wmSysChar ( int windowProc , int hwnd , int wParam , int lParam ) { <END_BUG> Display display = this . display ; display . lastAscii = wParam ; display . lastNull = wParam == 0 ; if ( ( ! ( hooks ( KeyDown ) ) ) && ( ! ( display . filters ( KeyDown ) ) ) ) { return null ; } boolean oldKeyHit = display . mnemonicKeyHit ; display . mnemonicKeyHit = true ; int result = callWindowProc ( WM_SYSCHAR , wParam , lParam ) ; boolean consumed = false ; if ( ! ( display . mnemonicKeyHit ) ) { consumed = ! ( sendKeyEvent ( KeyDown , WM_SYSCHAR , wParam , lParam ) ) ; } consumed |= display . mnemonicKeyHit ; display . mnemonicKeyHit = oldKeyHit ; return consumed ? LRESULT . ONE : new LRESULT ( result ) ; } LRESULT wmSysKeyDown ( int hwnd , int wParam , int lParam ) { } LRESULT wmSysKeyUp ( int hwnd , int wParam , int lParam ) { } }

Fix:
LRESULT wmSysChar ( int hwnd , int wParam , int lParam ) {