Buggy code:
public class Composite extends Scrollable { public int embeddedHandle ; int imHandle ; int socketHandle ; Layout layout ; Control [ ] tabList ; int layoutCount ; int backgroundMode ; static final String NO_INPUT_METHOD = "org.eclipse.swt.internal.gtk.noInputMethod" ; Composite ( ) { } public Composite ( Composite parent , int style ) { } static int checkStyle ( int style ) { } Control [ ] _getChildren ( ) { } Control [ ] _getTabList ( ) { } public void changed ( Control [ ] changed ) { } void checkBuffered ( ) { } protected void checkSubclass ( ) { } int childStyle ( ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } Control [ ] computeTabList ( ) { } void createHandle ( int index ) { } void createHandle ( int index , boolean fixed , boolean scrolled ) { } void deregister ( ) { } void drawBackground ( GC gc , int x , int y , int width , int height ) { } void enableWidget ( boolean enabled ) { } Composite findDeferredControl ( ) { } Menu [ ] findMenus ( Control control ) { } void fixChildren ( Shell newShell , Shell oldShell , Decorations newDecorations , Decorations oldDecorations , Menu [ ] menus ) { } void fixModal ( int group , int modalGroup ) { } void fixStyle ( ) { } void fixTabList ( Control control ) { } void fixZOrder ( ) { } int focusHandle ( ) { } boolean forceFocus ( int focusHandle ) { } public int getBackgroundMode ( ) { } public Control [ ] getChildren ( ) { } int getChildrenCount ( ) { } public Rectangle getClientArea ( ) { } int getClientWidth ( ) { } public Layout getLayout ( ) { } public boolean getLayoutDeferred ( ) { } public Control [ ] getTabList ( ) { } int gtk_button_press_event ( int widget , int event ) { } int gtk_expose_event ( int widget , int eventPtr ) { } int gtk_key_press_event ( int widget , int event ) { } int gtk_focus ( int widget , int directionType ) { } int gtk_focus_in_event ( int widget , int event ) { } int gtk_focus_out_event ( int widget , int event ) { } int gtk_map ( int widget ) { } int gtk_realize ( int widget ) { } int gtk_scroll_child ( int widget , int scrollType , int horizontal ) { } int gtk_style_set ( int widget , int previousStyle ) { } boolean hasBorder ( ) { } void hookEvents ( ) { } boolean hooksKeys ( ) { } int imHandle ( ) { } public boolean isLayoutDeferred ( ) { } boolean isTabGroup ( ) { } public void layout ( ) { } public void layout ( boolean changed ) { } public void layout ( boolean changed , boolean all ) { } public void layout ( Control [ ] changed ) { } void markLayout ( boolean changed , boolean all ) { } void moveAbove ( int child , int sibling ) { } void moveBelow ( int child , int sibling ) { } void moveChildren ( int oldWidth ) { } Point minimumSize ( int wHint , int hHint , boolean changed ) { } int parentingHandle ( ) { } void printWidget ( GC gc , int drawable , int depth , int x , int y ) { } void redrawChildren ( ) { } void register ( ) { } void releaseChildren ( boolean destroy ) { } void releaseHandle ( ) { } void releaseWidget ( ) { } void removeControl ( Control control ) { } void resizeHandle ( int width , int height ) { } public void setBackgroundMode ( int mode ) { } int setBounds ( int x , int y , int width , int height , boolean move , boolean resize ) { } public boolean setFocus ( ) { } public void setLayout ( Layout layout ) { } public void setLayoutDeferred ( boolean defer ) { } boolean setScrollBarVisible ( ScrollBar bar , boolean visible ) { } boolean setTabGroupFocus ( boolean next ) { if ( isTabItem ( ) ) return setTabItemFocus ( next ) ; boolean takeFocus = ( ( style ) & ( SWT . NO_FOCUS ) ) == 0 ; <START_BUG> if ( ( ( state ) & ( CANVAS ) ) != 0 ) <END_BUG> takeFocus = hooksKeys ( ) ; if ( ( socketHandle ) != 0 ) takeFocus = true ; if ( takeFocus && ( setTabItemFocus ( next ) ) ) return true ; Control [ ] children = _getChildren ( ) ; for ( int i = 0 ; i < ( children . length ) ; i ++ ) { Control child = children [ i ] ; if ( ( child . isTabItem ( ) ) && ( child . setTabItemFocus ( next ) ) ) return true ; } return false ; } boolean setTabItemFocus ( boolean next ) { } public void setTabList ( Control [ ] tabList ) { } void showWidget ( ) { } boolean translateMnemonic ( Event event , Control control ) { } int traversalCode ( int key , GdkEventKey event ) { } boolean translateTraversal ( GdkEventKey keyEvent ) { } void updateBackgroundMode ( ) { } void updateLayout ( boolean all ) { } }

Fix:
if ( takeFocus && ( ( ( state ) & ( CANVAS ) ) != 0 ) )