Buggy code:
public class AuctionController { public AuctionController ( ) { } public void auction ( GUIManager GUI , Player [ ] possibleAuctioneers , Player activePlayer , Ownable field , boolean bankruptcy ) { Player [ ] auctioneers = new Player [ possibleAuctioneers . length ] ; for ( int i = 0 ; i < ( possibleAuctioneers . length ) ; i ++ ) { if ( ! ( ( possibleAuctioneers [ i ] ) == null ) ) { if ( ( possibleAuctioneers [ i ] . getId ( ) ) != ( activePlayer . getId ( ) ) ) { auctioneers [ i ] = possibleAuctioneers [ i ] ; } } } Player auctionWinner = null ; int winningBid = 0 ; int bidders = auctioneers . length ; for ( int i = 0 ; i < ( auctioneers . length ) ; i ++ ) { if ( ( auctioneers [ i ] ) == null ) { bidders -- ; } } if ( bankruptcy == true ) { GUI . sendMessage ( ( ( "Der<seq2seq4repair_space>bliver<seq2seq4repair_space>afholdt<seq2seq4repair_space>tvangsauktion<seq2seq4repair_space>af<seq2seq4repair_space>feltet<seq2seq4repair_space>" + ( field . getName ( ) ) ) + "." ) ) ; } else { GUI . sendMessage ( ( ( "Der<seq2seq4repair_space>bliver<seq2seq4repair_space>afholdt<seq2seq4repair_space>auktion<seq2seq4repair_space>af<seq2seq4repair_space>feltet<seq2seq4repair_space>" + ( field . getName ( ) ) ) + "." ) ) ; } int minBid = field . getPrice ( ) ; int newBid = 0 ; if ( field . getPawnedStatus ( ) ) { minBid = ( ( int ) ( ( field . getPrice ( ) ) // 2 ) ) ; GUI . sendMessage ( ( ( ( ( field . getName ( ) ) + "<seq2seq4repair_space>er<seq2seq4repair_space>pantsat.<seq2seq4repair_space>Startbuddet<seq2seq4repair_space>ligger<seq2seq4repair_space>på<seq2seq4repair_space>" ) + minBid ) + "." ) ) ; } else { GUI . sendMessage ( ( ( ( ( field . getName ( ) ) + "<seq2seq4repair_space>er<seq2seq4repair_space>ikke<seq2seq4repair_space>pantsat.<seq2seq4repair_space>Startbuddet<seq2seq4repair_space>ligger<seq2seq4repair_space>på<seq2seq4repair_space>" ) + minBid ) + "." ) ) ; } for ( int i = 0 ; i < ( auctioneers . length ) ; i ++ ) { if ( ( auctioneers [ i ] ) != null ) if ( ( auctioneers [ i ] . getBalance ( ) ) < minBid ) { GUI . sendMessage ( ( ( auctioneers [ i ] . getName ( ) ) + "<seq2seq4repair_space>har<seq2seq4repair_space>ikke<seq2seq4repair_space>råd<seq2seq4repair_space>til<seq2seq4repair_space>at<seq2seq4repair_space>byde<seq2seq4repair_space>og<seq2seq4repair_space>udgår<seq2seq4repair_space>automatisk." ) ) ; auctioneers [ i ] = null ; } } String choice = "" ; boolean allBid = false ; outerloop : while ( true ) { for ( int i = 0 ; i < ( auctioneers . length ) ; i ++ ) { if ( ( auctioneers [ i ] ) != null ) { if ( ( auctioneers [ i ] . getBalance ( ) ) <= minBid ) { GUI . sendMessage ( ( ( auctioneers [ i ] . getName ( ) ) + "<seq2seq4repair_space>har<seq2seq4repair_space>ikke<seq2seq4repair_space>længere<seq2seq4repair_space>råd<seq2seq4repair_space>til<seq2seq4repair_space>at<seq2seq4repair_space>byde<seq2seq4repair_space>på<seq2seq4repair_space>auktionen<seq2seq4repair_space>og<seq2seq4repair_space>udgår<seq2seq4repair_space>automatisk." ) ) ; auctioneers [ i ] = null ; bidders -- ; } else { choice = GUI . chooseToBid ( auctioneers [ i ] . getName ( ) , minBid ) ; if ( ( choice . equals ( "Ja" ) ) && ( ( auctioneers [ i ] . getBalance ( ) ) >= minBid ) ) { while ( true ) { newBid = GUI . enterBid ( minBid , auctioneers [ i ] . getBalance ( ) ) ; if ( ( newBid <= minBid ) && ( ! allBid ) ) { GUI . sendMessage ( "Du<seq2seq4repair_space>skal<seq2seq4repair_space>minimum<seq2seq4repair_space>byde<seq2seq4repair_space>over<seq2seq4repair_space>det<seq2seq4repair_space>tidligere<seq2seq4repair_space>bud,<seq2seq4repair_space>prøv<seq2seq4repair_space>igen." ) ; } else if ( ( auctioneers [ i ] . getBalance ( ) ) < newBid ) { GUI . sendMessage ( "Du<seq2seq4repair_space>kan<seq2seq4repair_space>ikke<seq2seq4repair_space>byde<seq2seq4repair_space>et<seq2seq4repair_space>større<seq2seq4repair_space>beløb<seq2seq4repair_space>end<seq2seq4repair_space>du<seq2seq4repair_space>har,<seq2seq4repair_space>prøv<seq2seq4repair_space>igen." ) ; } else if ( ( ( ( newBid == minBid ) && allBid ) && ( newBid <= ( auctioneers [ i ] . getBalance ( ) ) ) ) || ( ( newBid > minBid ) && ( newBid <= ( auctioneers [ i ] . getBalance ( ) ) ) ) ) { <START_BUG> winningBid = minBid ; <END_BUG> auctionWinner = auctioneers [ i ] ; break ; } } } else if ( choice . equals ( "Nej" ) ) { auctioneers [ i ] = null ; bidders -- ; } } } if ( allBid && ( bidders <= 1 ) ) { break outerloop ; } } allBid = true ; } if ( auctionWinner == null ) { System . out . println ( "No<seq2seq4repair_space>bids" ) ; GUI . sendMessage ( ( ( "Ingen<seq2seq4repair_space>har<seq2seq4repair_space>budt<seq2seq4repair_space>på<seq2seq4repair_space>grunden<seq2seq4repair_space>" + ( field . getName ( ) ) ) + ",<seq2seq4repair_space>og<seq2seq4repair_space>den<seq2seq4repair_space>overgår<seq2seq4repair_space>derfor<seq2seq4repair_space>til<seq2seq4repair_space>banken." ) ) ; field . setOwner ( null ) ; } else { for ( int i = 0 ; i < ( auctioneers . length ) ; i ++ ) { if ( ( auctioneers [ i ] ) != null ) { if ( ( auctionWinner . getId ( ) ) == ( auctioneers [ i ] . getId ( ) ) ) { field . setOwner ( auctioneers [ i ] ) ; OurStreet street = ( ( OurStreet ) ( field ) ) ; auctionWinner . addToInventory ( field . getFieldId ( ) , field . getPrice ( ) , street . getCategory ( ) ) ; GUI . setOwner ( field . getFieldId ( ) , auctioneers [ i ] . getName ( ) ) ; GUI . sendMessage ( ( ( ( ( ( ( auctionWinner . getName ( ) ) + "<seq2seq4repair_space>vandt<seq2seq4repair_space>auktionen<seq2seq4repair_space>af<seq2seq4repair_space>" ) + ( field . getName ( ) ) ) + "<seq2seq4repair_space>for<seq2seq4repair_space>" ) + winningBid ) + "." ) ) ; auctioneers [ i ] . withdraw ( winningBid ) ; GUI . updateBalance ( auctioneers [ i ] . getName ( ) , auctioneers [ i ] . getBalance ( ) ) ; break ; } } } } } }

Fix:
winningBid = newBid ;