Buggy code:
public class Table extends Composite { TableItem [ ] items ; TableColumn [ ] columns ; ImageList imageList ; TableItem currentItem ; int lastIndexOf ; int lastWidth ; boolean customDraw ; boolean dragStarted ; boolean fixScrollWidth ; boolean tipRequested ; boolean wasSelected ; boolean ignoreActivate ; boolean ignoreSelect ; boolean ignoreShrink ; boolean ignoreResize ; boolean resized ; static final int INSET = 4 ; static final int GRID_WIDTH = 1 ; static final int HEADER_MARGIN = 10 ; static final int TableProc ; static final TCHAR TableClass = new TCHAR ( 0 , OS . WC_LISTVIEW , true ) ; static final char [ ] BUTTON = new char [ ] { 'B' , 'U' , 'T' , 'T' , 'O' , 'N' , 0 } ; public Table ( Composite parent , int style ) { } TableItem _getItem ( int index ) { } public void addSelectionListener ( SelectionListener listener ) { } int callWindowProc ( int hwnd , int msg , int wParam , int lParam ) { } int callWindowProc ( int hwnd , int msg , int wParam , int lParam , boolean forceSelect ) { } static int checkStyle ( int style ) { } boolean checkData ( TableItem item , boolean redraw ) { } protected void checkSubclass ( ) { } public void clear ( int index ) { } public void clear ( int start , int end ) { } public void clear ( int [ ] indices ) { } public void clearAll ( ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } void createHandle ( ) { } void createItem ( TableColumn column , int index ) { } void createItem ( TableItem item , int index ) { } void createWidget ( ) { } int defaultBackground ( ) { } public void deselect ( int [ ] indices ) { } public void deselect ( int index ) { } public void deselect ( int start , int end ) { } public void deselectAll ( ) { } void destroyItem ( TableColumn column ) { } void destroyItem ( TableItem item ) { } void fixCheckboxImageList ( ) { } int getBackgroundPixel ( ) { } public TableColumn getColumn ( int index ) { } public int getColumnCount ( ) { } public int [ ] getColumnOrder ( ) { } public TableColumn [ ] getColumns ( ) { } int getFocusIndex ( ) { } int getForegroundPixel ( ) { } public int getGridLineWidth ( ) { } public int getHeaderHeight ( ) { } public boolean getHeaderVisible ( ) { } public TableItem getItem ( int index ) { } public TableItem getItem ( Point point ) { } public int getItemCount ( ) { } public int getItemHeight ( ) { } public TableItem [ ] getItems ( ) { } public boolean getLinesVisible ( ) { } public TableItem [ ] getSelection ( ) { } public int getSelectionCount ( ) { } public int getSelectionIndex ( ) { } public int [ ] getSelectionIndices ( ) { } public int getTopIndex ( ) { } int imageIndex ( Image image ) { if ( image == null ) return OS . I_IMAGENONE ; if ( ( imageList ) == null ) { Rectangle bounds = image . getBounds ( ) ; <START_BUG> imageList = display . getImageList ( new Point ( bounds . width , bounds . height ) ) ; <END_BUG> int index = imageList . indexOf ( image ) ; if ( index == ( - 1 ) ) index = imageList . add ( image ) ; int hImageList = imageList . getHandle ( ) ; int topIndex = getTopIndex ( ) ; setRedraw ( false ) ; setTopIndex ( 0 ) ; OS . SendMessage ( handle , LVM_SETIMAGELIST , LVSIL_SMALL , hImageList ) ; setTopIndex ( topIndex ) ; fixCheckboxImageList ( ) ; setRedraw ( true ) ; return index ; } int index = imageList . indexOf ( image ) ; if ( index != ( - 1 ) ) return index ; return imageList . add ( image ) ; } public int indexOf ( TableColumn column ) { } public int indexOf ( TableItem item ) { } public boolean isSelected ( int index ) { } void releaseWidget ( ) { } public void remove ( int [ ] indices ) { } public void remove ( int index ) { } public void remove ( int start , int end ) { } public void removeAll ( ) { } public void removeSelectionListener ( SelectionListener listener ) { } public void select ( int [ ] indices ) { } public void select ( int index ) { } public void select ( int start , int end ) { } public void selectAll ( ) { } LRESULT sendMouseDownEvent ( int type , int button , int msg , int wParam , int lParam ) { } void setBackgroundPixel ( int pixel ) { } public void setColumnOrder ( int [ ] order ) { } void setCheckboxImageListColor ( ) { } void setCheckboxImageList ( int width , int height ) { } void setFocusIndex ( int index ) { } public void setFont ( Font font ) { } void setForegroundPixel ( int pixel ) { } public void setHeaderVisible ( boolean show ) { } public void setItemCount ( int count ) { } void setItemHeight ( ) { } public void setLinesVisible ( boolean show ) { } public void setRedraw ( boolean redraw ) { } boolean setScrollWidth ( TableItem item , boolean force ) { } public void setSelection ( int [ ] indices ) { } public void setSelection ( TableItem [ ] items ) { } public void setSelection ( int index ) { }

Fix:
imageList = display . getImageList ( bounds . width , bounds . height ) ;