Buggy code:
public class ToolItem extends Item { ToolBar parent ; Image hotImage ; Image disabledImage ; String toolTipText ; Control control ; int width = ToolItem . DEFAULT_SEPARATOR_WIDTH ; boolean set ; static final int DEFAULT_WIDTH = 24 ; static final int DEFAULT_HEIGHT = 22 ; static final int DEFAULT_SEPARATOR_WIDTH = 8 ; public ToolItem ( ToolBar parent , int style ) { } public ToolItem ( ToolBar parent , int style , int index ) { } public void addSelectionListener ( SelectionListener listener ) { } static int checkStyle ( int style ) { } protected void checkSubclass ( ) { } void createHandle ( int index ) { } void click ( boolean dropDown , int state ) { } Point computeSize ( GC gc ) { } void destroyWidget ( ) { parent . destroyItem ( this ) ; <START_BUG> releaseHandle ( ) ; <END_BUG> } public void dispose ( ) { } public Rectangle getBounds ( ) { } public Control getControl ( ) { } public Image getDisabledImage ( ) { } public boolean getEnabled ( ) { } public Image getHotImage ( ) { } public ToolBar getParent ( ) { } public boolean getSelection ( ) { } public String getToolTipText ( ) { } public int getWidth ( ) { } boolean hasCursor ( ) { } void hookEvents ( ) { } int hoverProc ( int id ) { } public boolean isEnabled ( ) { } void manageChildren ( ) { } void redraw ( ) { } void releaseHandle ( ) { } void releaseWidget ( ) { } public void removeSelectionListener ( SelectionListener listener ) { } void selectRadio ( ) { } void setBackgroundPixel ( int pixel ) { } void setBounds ( int x , int y , int width , int height ) { } public void setControl ( Control control ) { } public void setEnabled ( boolean enabled ) { } void setForegroundPixel ( int pixel ) { } public void setDisabledImage ( Image image ) { } boolean setFocus ( ) { } public void setHotImage ( Image image ) { } public void setImage ( Image image ) { } boolean setRadioSelection ( boolean value ) { } public void setSelection ( boolean selected ) { } public void setText ( String string ) { } public void setToolTipText ( String string ) { } void setVisible ( boolean visible ) { } public void setWidth ( int width ) { } void setDrawPressed ( boolean value ) { } boolean translateAccelerator ( char key , int keysym , XKeyEvent xEvent , boolean doit ) { } boolean translateMnemonic ( char key , int keysym , XKeyEvent xEvent ) { } boolean translateTraversal ( int key , XKeyEvent xEvent ) { } void propagateWidget ( boolean enabled ) { } int XButtonPress ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XButtonRelease ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XEnterWindow ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XFocusChange ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XKeyPress ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XKeyRelease ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XLeaveWindow ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XmNexposureCallback ( int w , int client_data , int call_data ) { } int XPointerMotion ( int w , int client_data , int call_data , int continue_to_dispatch ) { } }

Fix:
super . destroyWidget ( ) ;