Buggy code:
public class Button extends Control { int boxHandle ; int labelHandle ; int imageHandle ; int arrowHandle ; int groupHandle ; boolean selected ; boolean grayed ; ImageList imageList ; Image image ; String text ; public Button ( Composite parent , int style ) { } static int checkStyle ( int style ) { } public void addSelectionListener ( SelectionListener listener ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } void createHandle ( int index ) { state |= HANDLE ; <START_BUG> if ( ( ( style ) & ( SWT . PUSH ) ) == 0 ) <END_BUG> state |= THEME_BACKGROUND ; int bits = ( ( ( ( SWT . ARROW ) | ( SWT . TOGGLE ) ) | ( SWT . CHECK ) ) | ( SWT . RADIO ) ) | ( SWT . PUSH ) ; fixedHandle = OS . g_object_new ( display . gtk_fixed_get_type ( ) , 0 ) ; if ( ( fixedHandle ) == 0 ) error ( ERROR_NO_HANDLES ) ; OS . gtk_fixed_set_has_window ( fixedHandle , true ) ; switch ( ( style ) & bits ) { case SWT . ARROW : int arrow_type = OS . GTK_ARROW_UP ; if ( ( ( style ) & ( SWT . UP ) ) != 0 ) arrow_type = OS . GTK_ARROW_UP ; if ( ( ( style ) & ( SWT . DOWN ) ) != 0 ) arrow_type = OS . GTK_ARROW_DOWN ; if ( ( ( style ) & ( SWT . LEFT ) ) != 0 ) arrow_type = OS . GTK_ARROW_LEFT ; if ( ( ( style ) & ( SWT . RIGHT ) ) != 0 ) arrow_type = OS . GTK_ARROW_RIGHT ; handle = OS . gtk_button_new ( ) ; if ( ( handle ) == 0 ) error ( ERROR_NO_HANDLES ) ; arrowHandle = OS . gtk_arrow_new ( arrow_type , GTK_SHADOW_OUT ) ; if ( ( arrowHandle ) == 0 ) error ( ERROR_NO_HANDLES ) ; break ; case SWT . TOGGLE : handle = OS . gtk_toggle_button_new ( ) ; if ( ( handle ) == 0 ) error ( ERROR_NO_HANDLES ) ; break ; case SWT . CHECK : handle = OS . gtk_check_button_new ( ) ; if ( ( handle ) == 0 ) error ( ERROR_NO_HANDLES ) ; break ; case SWT . RADIO : groupHandle = OS . gtk_radio_button_new ( 0 ) ; if ( ( groupHandle ) == 0 ) error ( ERROR_NO_HANDLES ) ; OS . g_object_ref ( groupHandle ) ; OS . gtk_object_sink ( groupHandle ) ; handle = OS . gtk_radio_button_new ( OS . gtk_radio_button_get_group ( groupHandle ) ) ; if ( ( handle ) == 0 ) error ( ERROR_NO_HANDLES ) ; break ; case SWT . PUSH : default : handle = OS . gtk_button_new ( ) ; if ( ( handle ) == 0 ) error ( ERROR_NO_HANDLES ) ; OS . GTK_WIDGET_SET_FLAGS ( handle , GTK_CAN_DEFAULT ) ; break ; } if ( ( ( style ) & ( SWT . ARROW ) ) != 0 ) { OS . gtk_container_add ( handle , arrowHandle ) ; } else { boxHandle = OS . gtk_hbox_new ( false , 4 ) ; if ( ( boxHandle ) == 0 ) error ( ERROR_NO_HANDLES ) ; labelHandle = OS . gtk_label_new_with_mnemonic ( null ) ; if ( ( labelHandle ) == 0 ) error ( ERROR_NO_HANDLES ) ; imageHandle = OS . gtk_image_new ( ) ; if ( ( imageHandle ) == 0 ) error ( ERROR_NO_HANDLES ) ; OS . gtk_container_add ( handle , boxHandle ) ; OS . gtk_container_add ( boxHandle , imageHandle ) ; OS . gtk_container_add ( boxHandle , labelHandle ) ; } OS . gtk_container_add ( fixedHandle , handle ) ; if ( ( ( style ) & ( SWT . ARROW ) ) != 0 ) return ; _setAlignment ( ( ( style ) & ( ( ( SWT . LEFT ) | ( SWT . CENTER ) ) | ( SWT . RIGHT ) ) ) ) ; } void createWidget ( int index ) { } void deregister ( ) { } int fontHandle ( ) { } public int getAlignment ( ) { } public boolean getGrayed ( ) { } public Image getImage ( ) { } String getNameText ( ) { } public boolean getSelection ( ) { } public String getText ( ) { } int gtk_button_press_event ( int widget , int event ) { } int gtk_clicked ( int widget ) { } int gtk_focus_in_event ( int widget , int event ) { } int gtk_focus_out_event ( int widget , int event ) { } int gtk_key_press_event ( int widget , int event ) { } void hookEvents ( ) { } boolean isDescribedByLabel ( ) { } boolean mnemonicHit ( char key ) { } boolean mnemonicMatch ( char key ) { } void register ( ) { } void releaseHandle ( ) { } void releaseWidget ( ) { } public void removeSelectionListener ( SelectionListener listener ) { } void resizeHandle ( int width , int height ) { } void selectRadio ( ) { } public void setAlignment ( int alignment ) { } void _setAlignment ( int alignment ) { } void setBackgroundColor ( GdkColor color ) { } void setFontDescription ( int font ) { } boolean setRadioSelection ( boolean value ) { } void setForegroundColor ( GdkColor color ) { } public void setGrayed ( boolean grayed ) { } public void setImage ( Image image ) { } void setOrientation ( ) { } public void setSelection ( boolean selected ) { } public void setText ( String string ) { } void showWidget ( ) { } int traversalCode ( int key , GdkEventKey event ) { } }

Fix:
if ( ( ( style ) & ( ( SWT . PUSH ) | ( SWT . TOGGLE ) ) ) == 0 )