imageList.dispose ();
Display display = getDisplay (); display.releaseImageList (imageList);
void releaseWidget () {	int hwndHeader =  OS.SendMessage (handle, OS.LVM_GETHEADER, 0, 0);	int columnCount = OS.SendMessage (hwndHeader, OS.HDM_GETITEMCOUNT, 0, 0);	if (columnCount == 1 && columns [0] == null) columnCount = 0;	for (int i=0; i<columnCount; i++) {		TableColumn column = columns [i];		if (!column.isDisposed ()) column.releaseWidget ();	}	columns = null;	int itemCount = OS.SendMessage (handle, OS.LVM_GETITEMCOUNT, 0, 0);		/*	* Feature in Windows.  When there are a large number	* of items in a table (>1000), it is much faster to	* delete each item with LVM_DELETEITEM rather than	* using LVM_DELETEALLITEMS.  The fix is to delete the	* items, one by one.	*	* NOTE: LVM_DELETEALLITEMS is also sent by the table	* when the table is destroyed.	*/	/* Turn off redraw and leave it off */	OS.SendMessage (handle, OS.WM_SETREDRAW, 0, 0);	for (int i=itemCount-1; i>=0; --i) {		ignoreSelect = true;		int code = OS.SendMessage (handle, OS.LVM_DELETEITEM, i, 0);		ignoreSelect = false;		TableItem item = items [i];		if (!item.isDisposed ()) item.releaseWidget ();	}		/*	* This code is intentionally commmented.  This is	* the correct code, assuming that the problem with	* LVM_DELETEALLITEMS did not occur.	*///	for (int i=0; i<itemCount; i++) {//		TableItem item = items [i];//		if (!item.isDisposed ()) item.releaseWidget ();//	}	items = null;	super.releaseWidget ();	if (imageList != null) {		OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_SMALL, 0);		imageList.dispose ();	}	imageList = null;	int hOldList = OS.SendMessage (handle, OS.LVM_GETIMAGELIST, OS.LVSIL_STATE, 0);	OS.SendMessage (handle, OS.LVM_SETIMAGELIST, OS.LVSIL_STATE, 0);	if (hOldList != 0) OS.ImageList_Destroy (hOldList);}