Buggy code:
public class Composite extends Scrollable { Layout layout ; public int embeddedHandle ; int focusHandle ; int damagedRegion ; int clientWindow ; Control [ ] tabList ; int layoutCount = 0 ; static byte [ ] _XEMBED_INFO = Converter . wcsToMbcs ( null , "_XEMBED_INFO" , true ) ; static byte [ ] _XEMBED = Converter . wcsToMbcs ( null , "_XEMBED" , true ) ; Composite ( ) { } public Composite ( Composite parent , int style ) { } Control [ ] _getChildren ( ) { } Control [ ] _getTabList ( ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } Control [ ] computeTabList ( ) { } public void changed ( Control [ ] changed ) { } void checkBuffered ( ) { } protected void checkSubclass ( ) { } void createHandle ( int index ) { } void createHandle ( int index , int parentHandle , boolean scrolled ) { } int defaultBackground ( ) { } int defaultForeground ( ) { } void deregister ( ) { } Composite findDeferredControl ( ) { } void fixTabList ( Control control ) { } int focusHandle ( ) { } int focusProc ( int w , int client_data , int call_data , int continue_to_dispatch ) { } boolean fowardKeyEvent ( int event ) { } public Control [ ] getChildren ( ) { } public Rectangle getClientArea ( ) { } int getChildrenCount ( ) { } public Layout getLayout ( ) { } public boolean getLayoutDeferred ( ) { } public Control [ ] getTabList ( ) { } boolean hasBorder ( ) { } void hookEvents ( ) { } boolean hooksKeys ( ) { } 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 manageChildren ( ) { } void markLayout ( boolean changed , boolean all ) { } Point minimumSize ( int wHint , int hHint , boolean changed ) { } void moveAbove ( int handle1 , int handle2 ) { } void moveBelow ( int handle1 , int handle2 ) { } void propagateChildren ( boolean enabled ) { } void realizeChildren ( ) { } void register ( ) { } void redrawWidget ( int x , int y , int width , int height , boolean redrawAll , boolean allChildren ) { } void releaseChildren ( boolean destroy ) { Control [ ] children = _getChildren ( ) ; for ( int i = 0 ; i < ( children . length ) ; i ++ ) { Control child = children [ i ] ; if ( ( child != null ) && ( ! ( child . isDisposed ( ) ) ) ) { <START_BUG> child . releaseChildren ( false ) ; <END_BUG> } } super . releaseChildren ( destroy ) ; } void releaseHandle ( ) { } void releaseWidget ( ) { } void removeControl ( Control control ) { } void resizeClientWindow ( ) { } void sendClientEvent ( int time , int message , int detail , int data1 , int data2 ) { } void setBackgroundPixel ( int pixel ) { } boolean setBounds ( int x , int y , int width , int height , boolean move , boolean resize ) { } void setClientWindow ( int window ) { } public boolean setFocus ( ) { } void setForegroundPixel ( int pixel ) { } public void setLayout ( Layout layout ) { } public void setLayoutDeferred ( boolean defer ) { } public void setTabList ( Control [ ] tabList ) { } boolean setScrollBarVisible ( ScrollBar bar , boolean visible ) { } boolean setTabGroupFocus ( boolean next ) { } boolean setTabItemFocus ( boolean next ) { } int traversalCode ( int key , XKeyEvent xEvent ) { } boolean translateMnemonic ( Event event , Control control ) { } boolean translateTraversal ( int key , XKeyEvent xEvent ) { } void updateLayout ( boolean all ) { } int XButtonPress ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XExposure ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int xFocusIn ( XFocusChangeEvent xEvent ) { } int xFocusOut ( XFocusChangeEvent xEvent ) { } 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 XNonMaskable ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XPropertyChange ( int w , int client_data , int call_data , int continue_to_dispatch ) { } int XStructureNotify ( int w , int client_data , int call_data , int continue_to_dispatch ) { } void updateMapped ( ) { } }

Fix:
child . release ( false ) ;