Buggy code:
public abstract class Control extends Widget implements Drawable { Composite parent ; Cursor cursor ; Menu menu ; Object layoutData ; String toolTipText ; Image backgroundImage ; int toolTipHandle ; Accessible accessible ; Control ( ) { } public Control ( Composite parent , int style ) { } public void addControlListener ( ControlListener listener ) { } public void addFocusListener ( FocusListener listener ) { } public void addHelpListener ( HelpListener listener ) { } public void addKeyListener ( KeyListener listener ) { } public void addMouseListener ( MouseListener listener ) { } public void addMouseTrackListener ( MouseTrackListener listener ) { } public void addMouseMoveListener ( MouseMoveListener listener ) { } public void addPaintListener ( PaintListener listener ) { } public void addTraverseListener ( TraverseListener listener ) { } public boolean forceFocus ( ) { } void checkBuffered ( ) { } public Point computeSize ( int wHint , int hHint ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } Control computeTabGroup ( ) { } Control computeTabRoot ( ) { } Control [ ] computeTabList ( ) { } void createWidget ( int index ) { } int defaultBackground ( ) { } byte [ ] defaultFont ( ) { } int defaultForeground ( ) { } boolean drawGripper ( int x , int y , int width , int height , boolean vertical ) { } int drawProc ( int widget , int damage ) { } void drawWidget ( int widget , int damage ) { } void enableWidget ( boolean enabled ) { } public Accessible getAccessible ( ) { } public Color getBackground ( ) { } public Image getBackgroundImage ( ) { } public Font getFont ( ) { } public Color getForeground ( ) { } public int getBorderWidth ( ) { } public Rectangle getBounds ( ) { } public Cursor getCursor ( ) { } public boolean getEnabled ( ) { } public Object getLayoutData ( ) { } public Point getLocation ( ) { } public Menu getMenu ( ) { } public Monitor getMonitor ( ) { } public Composite getParent ( ) { } Control [ ] getPath ( ) { } public Point getSize ( ) { } public String getToolTipText ( ) { } public Shell getShell ( ) { } public boolean getVisible ( ) { } boolean hasFocus ( ) { } void hookEvents ( ) { } int focusHandle ( ) { } public int internal_new_GC ( GCData data ) { } public void internal_dispose_GC ( int phGC , GCData data ) { } public boolean isEnabled ( ) { } boolean isFocusAncestor ( ) { Control control = display . getFocusControl ( ) ; <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 ( ) { } void markLayout ( boolean changed , boolean all ) { } Decorations menuShell ( ) { } public void moveAbove ( Control control ) { } public void moveBelow ( Control control ) { } public void pack ( ) { } public void pack ( boolean changed ) { } int Ph_EV_BOUNDARY ( int widget , int info ) { } int Ph_EV_BUT_PRESS ( int widget , int info ) { } int Ph_EV_BUT_RELEASE ( int widget , int info ) { } int Ph_EV_DRAG ( int widget , int info ) { } int Ph_EV_KEY ( int widget , int info ) { } int Ph_EV_PTR_MOTION ( int widget , int info ) { } int Pt_CB_GOT_FOCUS ( int widget , int info ) { } int Pt_CB_LOST_FOCUS ( int widget , int info ) { } void realizeWidget ( ) { } void releaseHandle ( ) { } void releaseParent ( ) { } void releaseWidget ( ) { } public void redraw ( ) { } public void redraw ( int x , int y , int width , int height , boolean allChildren ) { } public void removeControlListener ( ControlListener listener ) { } public void removeFocusListener ( FocusListener listener ) { } public void removeHelpListener ( HelpListener listener ) { } public void removeKeyListener ( KeyListener listener ) { } public void removeMouseTrackListener ( MouseTrackListener listener ) { } public void removeMouseListener ( MouseListener listener ) { } public void removeMouseMoveListener ( MouseMoveListener listener ) { } public void removePaintListener ( PaintListener listener ) { } public void removeTraverseListener ( TraverseListener listener ) { } int setBounds ( int x , int y , int width , int height , boolean move , boolean resize , boolean events ) { } public void setBounds ( int x , int y , int width , int height ) { } public void setBounds ( Rectangle rect ) { } public void setCapture ( boolean capture ) { } public void setCursor ( Cursor cursor ) { } public void setEnabled ( boolean enabled ) { } public boolean setFocus ( ) { } public void setBackground ( Color color ) { } public void setBackgroundImage ( Image image ) { } void setBackgroundPixel ( int pixel ) { } void setDefaultFont ( ) { } public void setFont ( Font font ) { } void setFont ( byte [ ] font ) { } void setFont ( int font ) { } public void setForeground ( Color color ) { } void setForegroundPixel ( int pixel ) { } public void setLayoutData ( Object layoutData ) { } public void setLocation ( int x , int y ) { } public void setLocation ( Point location ) { }

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