Buggy code:
public class TreeItem extends Item { Tree parent ; TreeItem parentItem ; String [ ] strings ; Image [ ] images ; boolean checked ; boolean grayed ; boolean cached ; Color foreground ; Color background ; Color [ ] cellForeground ; Color [ ] cellBackground ; Font font ; Font [ ] cellFont ; int id ; int width = - 1 ; int itemCount = 0 ; int [ ] childIds ; public TreeItem ( Tree parent , int style ) { } public TreeItem ( Tree parent , int style , int index ) { } public TreeItem ( TreeItem parentItem , int style ) { } public TreeItem ( TreeItem parentItem , int style , int index ) { } TreeItem ( Tree parent , TreeItem parentItem , int style , int index , boolean create ) { } boolean _getExpanded ( ) { } static TreeItem checkNull ( TreeItem item ) { } static Tree checkNull ( Tree parent ) { } static int checkIndex ( int index ) { } int calculateWidth ( int index , GC gc ) { } protected void checkSubclass ( ) { } void clear ( ) { } public void clear ( int index , boolean all ) { } public void clearAll ( boolean all ) { } void destroyWidget ( ) { } public Color getBackground ( ) { } public Color getBackground ( int index ) { } public Rectangle getBounds ( ) { } public Rectangle getBounds ( int index ) { } public boolean getChecked ( ) { } public boolean getExpanded ( ) { } public Font getFont ( ) { } public Font getFont ( int index ) { } public Color getForeground ( ) { } public Color getForeground ( int index ) { } public boolean getGrayed ( ) { } public Image getImage ( ) { } public Image getImage ( int index ) { } public Rectangle getImageBounds ( int index ) { } public TreeItem getItem ( int index ) { } public int getItemCount ( ) { } public TreeItem [ ] getItems ( ) { } String getNameText ( ) { } public Tree getParent ( ) { } public TreeItem getParentItem ( ) { } public String getText ( ) { } public String getText ( int index ) { } public Rectangle getTextBounds ( int index ) { } public int indexOf ( TreeItem item ) { } void redraw ( int propertyID ) { if ( parent . ignoreRedraw ) return ; <START_BUG> if ( ( ( parent . drawCount ) != 0 ) && ( propertyID != ( Tree . CHECK_COLUMN_ID ) ) ) <END_BUG> return ; int parentHandle = parent . handle ; int parentID = ( ( parentItem ) == null ) ? OS . kDataBrowserNoItem : parentItem . id ; DataBrowserCallbacks callbacks = new DataBrowserCallbacks ( ) ; OS . GetDataBrowserCallbacks ( parent . handle , callbacks ) ; callbacks . v1_itemCompareCallback = 0 ; OS . SetDataBrowserCallbacks ( parent . handle , callbacks ) ; int [ ] ids = new int [ ] { id } ; if ( propertyID == ( OS . kDataBrowserNoItem ) ) { if ( ( ( parent . style ) & ( SWT . CHECK ) ) != 0 ) { OS . UpdateDataBrowserItems ( parentHandle , parentID , ids . length , ids , kDataBrowserItemNoProperty , CHECK_COLUMN_ID ) ; } if ( ( parent . columnCount ) == 0 ) { OS . UpdateDataBrowserItems ( parentHandle , parentID , ids . length , ids , kDataBrowserItemNoProperty , parent . column_id ) ; } else { for ( int i = 0 ; i < ( parent . columnCount ) ; i ++ ) { OS . UpdateDataBrowserItems ( parentHandle , parentID , ids . length , ids , kDataBrowserItemNoProperty , parent . columns [ i ] . id ) ; } } } else { OS . UpdateDataBrowserItems ( parentHandle , parentID , ids . length , ids , kDataBrowserItemNoProperty , propertyID ) ; } callbacks . v1_itemCompareCallback = display . itemCompareProc ; OS . SetDataBrowserCallbacks ( parent . handle , callbacks ) ; if ( propertyID == ( Tree . CHECK_COLUMN_ID ) ) { Rect rect = new Rect ( ) ; if ( ( OS . GetDataBrowserItemPartBounds ( parentHandle , id , propertyID , kDataBrowserPropertyEnclosingPart , rect ) ) == ( OS . noErr ) ) { int x = rect . left ; int y = ( rect . top ) - 1 ; int width = ( rect . right ) - ( rect . left ) ; int height = 1 ; redrawWidget ( parentHandle , x , y , width , height , false ) ; } } } void releaseChildren ( boolean destroy ) { } void releaseHandle ( ) { } void releaseWidget ( ) { } public void removeAll ( ) { } public void setBackground ( Color color ) { } public void setBackground ( int index , Color color ) { } public void setChecked ( boolean checked ) { } void setChecked ( boolean checked , boolean notify ) { } public void setExpanded ( boolean expanded ) { } public void setFont ( Font font ) { } public void setFont ( int index , Font font ) { } public void setForeground ( Color color ) { } public void setForeground ( int index , Color color ) { } public void setGrayed ( boolean grayed ) { } public void setImage ( Image [ ] images ) { } public void setImage ( int index , Image image ) { } public void setImage ( Image image ) { } public void setItemCount ( int count ) { } public void setText ( String [ ] strings ) { } public void setText ( int index , String string ) { }

Fix:
if ( ( ! ( getDrawing ( ) ) ) && ( propertyID != ( Tree . CHECK_COLUMN_ID ) ) )