Buggy code:
public void addPaintListener ( PaintListener listener ) { } public void addTraverseListener ( TraverseListener listener ) { } int colorProc ( int inControl , int inMessage , int inDrawDepth , int inDrawInColor ) { } int callFocusEventHandler ( int nextHandler , int theEvent ) { } void checkBackground ( ) { } void checkBuffered ( ) { } public Point computeSize ( int wHint , int hHint ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } Control computeTabGroup ( ) { } Control [ ] computeTabList ( ) { } Control computeTabRoot ( ) { } void createWidget ( ) { } Color defaultBackground ( ) { } Font defaultFont ( ) { } Color defaultForeground ( ) { } int defaultThemeFont ( ) { } void deregister ( ) { } void destroyWidget ( ) { } Event dragDetect ( Event event ) { } boolean dragDetect ( int x , int y , boolean filter , boolean [ ] consume ) { } void drawFocus ( int control , int context , boolean hasFocus , boolean hasBorder , Rect inset ) { } void drawFocusClipped ( int control , boolean hasFocus , boolean hasBorder , float [ ] background , Rect inset ) { } boolean drawFocusRing ( ) { } boolean drawGripper ( int x , int y , int width , int height , boolean vertical ) { } void drawWidget ( int control , int context , int damageRgn , int visibleRgn , int theEvent ) { } void enableWidget ( boolean enabled ) { } void fillBackground ( int control , int context , Rectangle bounds ) { } Cursor findCursor ( ) { } Control findBackgroundControl ( ) { } void fixFocus ( Control focusControl ) { } int focusHandle ( ) { } public boolean forceFocus ( ) { } public Accessible getAccessible ( ) { } public Color getBackground ( ) { } Color getBackgroundColor ( ) { } public Image getBackgroundImage ( ) { } public int getBorderWidth ( ) { } public Rectangle getBounds ( ) { } boolean getDragDetect ( ) { } int getDrawCount ( int control ) { } public Cursor getCursor ( ) { } public boolean getEnabled ( ) { } public Font getFont ( ) { } public Color getForeground ( ) { } Color getForegroundColor ( ) { } public Object getLayoutData ( ) { } public Point getLocation ( ) { } public Menu getMenu ( ) { } int getMininumHeight ( ) { } public Monitor getMonitor ( ) { } public Composite getParent ( ) { } float [ ] getParentBackground ( ) { } Control [ ] getPath ( ) { } public Shell getShell ( ) { } public Point getSize ( ) { } public String getToolTipText ( ) { } float getThemeAlpha ( ) { } public boolean getVisible ( ) { } int getVisibleRegion ( int control , boolean clipChildren ) { } boolean hasFocus ( ) { } int helpProc ( int inControl , int inGlobalMouse , int inRequest , int outContentProvided , int ioHelpContent ) { } void hookEvents ( ) { } public int internal_new_GC ( GCData data ) { } public void internal_dispose_GC ( int context , GCData data ) { } void invalidateChildrenVisibleRegion ( int control ) { } void invalidateVisibleRegion ( int control ) { } void invalWindowRgn ( int window , int rgn ) { } public boolean isEnabled ( ) { } boolean isEnabledCursor ( ) { } boolean isEnabledModal ( ) { } boolean isFocusAncestor ( Control control ) { <START_BUG> while ( ( control != null ) && ( control != ( this ) ) ) { <END_BUG> control = control . parent ; } return control == ( this ) ; } public boolean isFocusControl ( ) { } public boolean isReparentable ( ) { } boolean isShowing ( ) { } boolean isTabGroup ( ) { } boolean isTabItem ( ) { } public boolean isVisible ( ) { } Decorations menuShell ( ) { } int kEventAccessibleGetChildAtPoint ( int nextHandler , int theEvent , int userData ) { } int kEventAccessibleGetAllAttributeNames ( int nextHandler , int theEvent , int userData ) { } int kEventAccessibleGetNamedAttribute ( int nextHandler , int theEvent , int userData ) { } int kEventControlContextualMenuClick ( int nextHandler , int theEvent , int userData ) { } int kEventControlHitTest ( int nextHandler , int theEvent , int userData ) { } int kEventControlSetCursor ( int nextHandler , int theEvent , int userData ) { } int kEventControlSetFocusPart ( int nextHandler , int theEvent , int userData ) { } int kEventControlTrack ( int nextHandler , int theEvent , int userData ) { } int kEventMouseDown ( int nextHandler , int theEvent , int userData ) { } int kEventMouseDragged ( int nextHandler , int theEvent , int userData ) { } int kEventMouseMoved ( int nextHandler , int theEvent , int userData ) { } int kEventMouseUp ( int nextHandler , int theEvent , int userData ) { } int kEventMouseWheelMoved ( int nextHandler , int theEvent , int userData ) { } int kEventTextInputUnicodeForKeyEvent ( int nextHandler , int theEvent , int userData ) { } int kEventUnicodeKeyPressed ( int nextHandler , int theEvent , int userData ) { } void markLayout ( boolean changed , boolean all ) { } public void moveAbove ( Control control ) { } public void moveBelow ( Control control ) { } Accessible new_Accessible ( Control control ) { } public void pack ( ) { } public void pack ( boolean changed ) { } public void redraw ( ) { } void redraw ( boolean children ) { } public void redraw ( int x , int y , int width , int height , boolean all ) { }

Fix:
while ( ( ( control != null ) && ( control != ( this ) ) ) && ( ! ( control instanceof Shell ) ) ) {