Buggy code:
public class CTableItem extends Item { CTable parent ; int index = - 1 ; boolean checked ; boolean grayed ; boolean cached ; String [ ] texts ; int [ ] textWidths = new int [ 1 ] ; int customWidth = - 1 ; int fontHeight ; int [ ] fontHeights ; int imageIndent ; Image [ ] images ; Color foreground ; Color background ; String [ ] displayTexts ; Accessible [ ] accessibles ; Color [ ] cellForegrounds ; Color [ ] cellBackgrounds ; Font font ; Font [ ] cellFonts ; Display display ; static final int MARGIN_TEXT = 3 ; public CTableItem ( CTable parent , int style ) { } public CTableItem ( CTable parent , int style , int index ) { } CTableItem ( CTable parent , int style , int index , boolean notifyParent ) { } void addColumn ( CTableColumn column ) { } static CTable checkNull ( CTable table ) { } void clear ( ) { } void computeDisplayText ( int columnIndex , GC gc ) { } void computeDisplayTexts ( GC gc ) { } void computeTextWidths ( GC gc ) { } public void dispose ( ) { } void dispose ( boolean notifyParent ) { } void disposeAccessibles ( ) { } Accessible getAccessible ( final Accessible accessibleTable , final int columnIndex ) { if ( ( accessibles [ columnIndex ] ) == null ) { Accessible accessible = new Accessible ( accessibleTable ) ; accessible . addAccessibleListener ( new AccessibleAdapter ( ) { public void getName ( AccessibleEvent e ) { e . result = getText ( columnIndex ) ; System . out . println ( ( "tableItem<seq2seq4repair_space>getName<seq2seq4repair_space>=<seq2seq4repair_space>" + ( e . result ) ) ) ; } } ) ; accessible . addAccessibleControlListener ( new AccessibleControlAdapter ( ) { public void getChild ( AccessibleControlEvent e ) { switch ( e . childID ) { case ACC . CHILDID_CHILD_INDEX : <START_BUG> e . detail = columnIndex ; <END_BUG> break ; } } public void getChildAtPoint ( AccessibleControlEvent e ) { Point point = parent . toControl ( e . x , e . y ) ; if ( getBounds ( columnIndex ) . contains ( point ) ) { e . childID = ACC . CHILDID_SELF ; } else { e . childID = ACC . CHILDID_NONE ; } } public void getFocus ( AccessibleControlEvent e ) { e . childID = ( ( ( parent . focusItem ) == ( CTableItem . this ) ) && ( parent . isFocusControl ( ) ) ) ? ACC . CHILDID_SELF : ACC . CHILDID_NONE ; } public void getLocation ( AccessibleControlEvent e ) { Rectangle location = getBounds ( columnIndex ) ; Point pt = parent . toDisplay ( location . x , location . y ) ; e . x = pt . x ; e . y = pt . y ; e . width = location . width ; e . height = location . height ; } public void getRole ( AccessibleControlEvent e ) { e . detail = ACC . ROLE_TABLECELL ; } public void getValue ( AccessibleControlEvent e ) { e . result = getText ( columnIndex ) ; } } ) ; accessible . addAccessibleTableCellListener ( new AccessibleTableCellListener ( ) { public void getColumnHeaders ( AccessibleTableCellEvent e ) { if ( ( parent . columns . length ) == 0 ) { e . accessibles = null ; } else { CTableColumn column = parent . columns [ columnIndex ] ; e . accessibles = new Accessible [ ] { column . getAccessible ( accessibleTable ) } ; } } public void getColumnIndex ( AccessibleTableCellEvent e ) { e . index = columnIndex ; } public void getColumnSpan ( AccessibleTableCellEvent e ) { e . count = 1 ; } public void getRowHeaders ( AccessibleTableCellEvent e ) { } public void getRowIndex ( AccessibleTableCellEvent e ) { e . index = index ; } public void getRowSpan ( AccessibleTableCellEvent e ) { e . count = 1 ; } public void getTable ( AccessibleTableCellEvent e ) { e . accessible = accessibleTable ; } public void isSelected ( AccessibleTableCellEvent e ) { e . isSelected = CTableItem . this . isSelected ( ) ; } } ) ; accessibles [ columnIndex ] = accessible ; } return accessibles [ columnIndex ] ; } public Color getBackground ( ) { } public Color getBackground ( int columnIndex ) { } public Rectangle getBounds ( ) { } Rectangle getBounds ( boolean checkData ) { } public Rectangle getBounds ( int columnIndex ) { } Rectangle getCellBounds ( int columnIndex ) { } Rectangle getCheckboxBounds ( ) { } public boolean getChecked ( ) { } int getContentWidth ( int columnIndex ) { } int getContentX ( int columnIndex ) { } String getDisplayText ( int columnIndex ) { } Rectangle getFocusBounds ( ) { } public Font getFont ( ) { } Font getFont ( boolean checkData ) { } public Font getFont ( int columnIndex ) { } Font getFont ( int columnIndex , boolean checkData ) { } int getFontHeight ( ) { } int getFontHeight ( int columnIndex ) { } public Color getForeground ( ) { } public Color getForeground ( int columnIndex ) { } public boolean getGrayed ( ) { } Rectangle getHitBounds ( ) { } public Image getImage ( ) { } public Image getImage ( int columnIndex ) { } Image getImage ( int columnIndex , boolean checkData ) { } public Rectangle getImageBounds ( int columnIndex ) { } public int getImageIndent ( ) { } public String toString ( ) { } public CTable getParent ( ) { } int getPreferredWidth ( int columnIndex ) { } public String getText ( ) { } public String getText ( int columnIndex ) { } String getText ( int columnIndex , boolean checkData ) { }

Fix:
e . detail = ( ( ( index ) * ( Math . max ( 1 , parent . getColumnCount ( ) ) ) ) + columnIndex ) + ( parent . getColumnCount ( ) ) ;