Buggy code:
public abstract class Control extends Widget implements Drawable { int fixedHandle ; int redrawWindow ; int enableWindow ; int drawCount ; Composite parent ; Cursor cursor ; Menu menu ; Font font ; String toolTipText ; Object layoutData ; Accessible accessible ; Control ( ) { } public Control ( Composite parent , int style ) { } int defaultFont ( ) { } void deregister ( ) { } boolean drawGripper ( int x , int y , int width , int height , boolean vertical ) { } void enableWidget ( boolean enabled ) { } int eventHandle ( ) { } void fixFocus ( Control focusControl ) { Shell shell = getShell ( ) ; Control control = this ; while ( ( control != shell ) && ( ( control = control . parent ) != null ) ) { if ( control . setFocus ( ) ) return ; } shell . setSavedFocus ( focusControl ) ; <START_BUG> int focusHandle = shell . fixedHandle ; <END_BUG> OS . GTK_WIDGET_SET_FLAGS ( focusHandle , GTK_CAN_FOCUS ) ; OS . gtk_widget_grab_focus ( focusHandle ) ; OS . GTK_WIDGET_UNSET_FLAGS ( focusHandle , GTK_CAN_FOCUS ) ; } int focusHandle ( ) { } int fontHandle ( ) { } boolean hasFocus ( ) { } void hookEvents ( ) { } int hoverProc ( int widget ) { } int topHandle ( ) { } int paintHandle ( ) { } int paintWindow ( ) { } public Point computeSize ( int wHint , int hHint ) { } Control computeTabGroup ( ) { } Control [ ] computeTabList ( ) { } Control computeTabRoot ( ) { } void checkBuffered ( ) { } void checkBorder ( ) { } void createWidget ( int index ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } Point computeNativeSize ( int h , int wHint , int hHint , boolean changed ) { } void forceResize ( ) { } public Accessible getAccessible ( ) { } public Rectangle getBounds ( ) { } public void setBounds ( Rectangle rect ) { } public void setBounds ( int x , int y , int width , int height ) { } void markLayout ( boolean changed , boolean all ) { } void moveHandle ( int x , int y ) { } void resizeHandle ( int width , int height ) { } int setBounds ( int x , int y , int width , int height , boolean move , boolean resize ) { } public Point getLocation ( ) { } public void setLocation ( Point location ) { } public void setLocation ( int x , int y ) { } public Point getSize ( ) { } public void setSize ( Point size ) { } public void setSize ( int width , int height ) { } public void moveAbove ( Control control ) { } public void moveBelow ( Control control ) { } public void pack ( ) { } public void pack ( boolean changed ) { } public void setLayoutData ( Object layoutData ) { } public Point toControl ( int x , int y ) { } public Point toControl ( Point point ) { } public Point toDisplay ( int x , int y ) { } public Point toDisplay ( Point point ) { } public void addControlListener ( ControlListener listener ) { } public void addFocusListener ( FocusListener listener ) { } public void addHelpListener ( HelpListener listener ) { } public void addKeyListener ( KeyListener listener ) { } public void addMouseListener ( MouseListener listener ) { } public void addMouseMoveListener ( MouseMoveListener listener ) { } public void addMouseTrackListener ( MouseTrackListener listener ) { } public void addPaintListener ( PaintListener listener ) { } public void addTraverseListener ( TraverseListener listener ) { } public void removeControlListener ( ControlListener listener ) { } public void removeFocusListener ( FocusListener listener ) { } public void removeHelpListener ( HelpListener listener ) { } public void removeKeyListener ( KeyListener listener ) { } public void removeMouseListener ( MouseListener listener ) { } public void removeMouseMoveListener ( MouseMoveListener listener ) { } public void removeMouseTrackListener ( MouseTrackListener listener ) { } public void removePaintListener ( PaintListener listener ) { } public void removeTraverseListener ( TraverseListener listener ) { } boolean filterKey ( int keyval , int event ) { } Menu [ ] findMenus ( Control control ) { } void fixChildren ( Shell newShell , Shell oldShell , Decorations newDecorations , Decorations oldDecorations , Menu [ ] menus ) { } int fixedMapProc ( int widget ) { } public boolean forceFocus ( ) { } boolean forceFocus ( int focusHandle ) { } public Color getBackground ( ) { } GdkColor getBackgroundColor ( ) { } GdkColor getBgColor ( ) { } GdkColor getBaseColor ( ) { } public int getBorderWidth ( ) { } public boolean getEnabled ( ) { } public Font getFont ( ) { } int getFontDescription ( ) { } public Color getForeground ( ) { } GdkColor getForegroundColor ( ) { } GdkColor getFgColor ( ) { } Point getIMCaretPos ( ) { } GdkColor getTextColor ( ) { } public Object getLayoutData ( ) { } public Menu getMenu ( ) { } public Monitor getMonitor ( ) { } public Composite getParent ( ) { } Control [ ] getPath ( ) { } public Shell getShell ( ) { } Shell _getShell ( ) { } public String getToolTipText ( ) { } public boolean getVisible ( ) { } int gtk_button_press_event ( int widget , int event ) { } int gtk_button_release_event ( int widget , int event ) { } int gtk_commit ( int imcontext , int text ) { } int gtk_enter_notify_event ( int widget , int event ) { }

Fix:
int focusHandle = shell . vboxHandle ;