Buggy code:
public final class CCombo extends Composite { Text text ; List list ; int visibleItemCount = 5 ; Shell popup ; Button arrow ; boolean hasFocus ; Listener listener ; Listener filter ; Color foreground ; Color background ; Font font ; public CCombo ( Composite parent , int style ) { } static int checkStyle ( int style ) { } public void add ( String string ) { } public void add ( String string , int index ) { } public void addModifyListener ( ModifyListener listener ) { } public void addSelectionListener ( SelectionListener listener ) { } public void addVerifyListener ( VerifyListener listener ) { } void arrowEvent ( Event event ) { } public void clearSelection ( ) { } void comboEvent ( Event event ) { } public Point computeSize ( int wHint , int hHint , boolean changed ) { } public void copy ( ) { } void createPopup ( String [ ] items , int selectionIndex ) { } public void cut ( ) { } public void deselect ( int index ) { } public void deselectAll ( ) { } void dropDown ( boolean drop ) { <START_BUG> if ( drop == ( isDropped ( ) ) ) <END_BUG> return ; if ( ! drop ) { popup . setVisible ( false ) ; if ( ( ! ( isDisposed ( ) ) ) && ( isFocusControl ( ) ) ) { text . setFocus ( ) ; } return ; } if ( ( getShell ( ) ) != ( popup . getParent ( ) ) ) { String [ ] items = list . getItems ( ) ; int selectionIndex = list . getSelectionIndex ( ) ; list . removeListener ( Dispose , listener ) ; popup . dispose ( ) ; popup = null ; list = null ; createPopup ( items , selectionIndex ) ; } Point size = getSize ( ) ; int itemCount = list . getItemCount ( ) ; itemCount = ( itemCount == 0 ) ? visibleItemCount : Math . min ( visibleItemCount , itemCount ) ; int itemHeight = ( list . getItemHeight ( ) ) * itemCount ; Point listSize = list . computeSize ( DEFAULT , itemHeight , false ) ; list . setBounds ( 1 , 1 , Math . max ( ( ( size . x ) - 2 ) , listSize . x ) , listSize . y ) ; int index = list . getSelectionIndex ( ) ; if ( index != ( - 1 ) ) list . setTopIndex ( index ) ; Display display = getDisplay ( ) ; Rectangle listRect = list . getBounds ( ) ; Rectangle parentRect = display . map ( getParent ( ) , null , getBounds ( ) ) ; Point comboSize = getSize ( ) ; Rectangle displayRect = getMonitor ( ) . getClientArea ( ) ; int width = Math . max ( comboSize . x , ( ( listRect . width ) + 2 ) ) ; int height = ( listRect . height ) + 2 ; int x = parentRect . x ; int y = ( parentRect . y ) + ( comboSize . y ) ; if ( ( y + height ) > ( ( displayRect . y ) + ( displayRect . height ) ) ) y = ( parentRect . y ) - height ; if ( ( x + width ) > ( ( displayRect . x ) + ( displayRect . width ) ) ) x = ( ( displayRect . x ) + ( displayRect . width ) ) - ( listRect . width ) ; popup . setBounds ( x , y , width , height ) ; popup . setVisible ( true ) ; if ( isFocusControl ( ) ) list . setFocus ( ) ; } char _findMnemonic ( String string ) { } Label getAssociatedLabel ( ) { } public Control [ ] getChildren ( ) { } public boolean getEditable ( ) { } public String getItem ( int index ) { } public int getItemCount ( ) { } public int getItemHeight ( ) { } public String [ ] getItems ( ) { } public boolean getListVisible ( ) { } public Menu getMenu ( ) { } public Point getSelection ( ) { } public int getSelectionIndex ( ) { } public int getStyle ( ) { } public String getText ( ) { } public int getTextHeight ( ) { } public int getTextLimit ( ) { } public int getVisibleItemCount ( ) { } void handleFocus ( int type ) { } public int indexOf ( String string ) { } public int indexOf ( String string , int start ) { } void initAccessible ( ) { } boolean isDropped ( ) { } public boolean isFocusControl ( ) { } void internalLayout ( boolean changed ) { } void listEvent ( Event event ) { } public void paste ( ) { } void popupEvent ( Event event ) { } public void redraw ( ) { } public void redraw ( int x , int y , int width , int height , boolean all ) { } public void remove ( int index ) { } public void remove ( int start , int end ) { } public void remove ( String string ) { } public void removeAll ( ) { } public void removeModifyListener ( ModifyListener listener ) { } public void removeSelectionListener ( SelectionListener listener ) { } public void removeVerifyListener ( VerifyListener listener ) { } public void select ( int index ) { } public void setBackground ( Color color ) { } public void setEditable ( boolean editable ) { } public void setEnabled ( boolean enabled ) { } public boolean setFocus ( ) { }

Fix:
if ( ( drop == ( isDropped ( ) ) ) || ( ! ( isVisible ( ) ) ) )