Buggy code:
private FieldController [ ] fieldController = new FieldController [ ] { startController , streetController , chanceController , streetController , taxController , shippingController , streetController , chanceController , streetController , streetController , jailController , streetController , breweryController , streetController , streetController , shippingController , streetController , chanceController , streetController , streetController , parkingController , streetController , chanceController , streetController , streetController , shippingController , streetController , streetController , breweryController , streetController , jailController , streetController , streetController , chanceController , streetController , shippingController , chanceController , streetController , taxController , streetController } ; private Player activePlayer ; private GameBoard board ; private Die dice ; private Player [ ] players ; private Color [ ] colors ; private GUIManager display ; private String name ; private boolean DTurn = false ; public GameController ( ) { } public static void main ( String [ ] args ) { } public void run ( ) { board = new GameBoard ( ) ; dice = new Die ( ) ; players = new Player [ 6 ] ; colors = new Color [ ] { Color . BLUE , Color . RED , Color . GREEN , Color . CYAN , Color . ORANGE , Color . YELLOW } ; int numberOfPlayers ; int dieOne ; int dieTwo ; int turn = 0 ; display = new GUIManager ( ) ; display . create ( board ) ; chanceController . putCardOnStack ( display ) ; numberOfPlayers = 2 ; players [ 0 ] = new Player ( 0 , "Jens" ) ; display . addPlayer ( "Jens" , 30000 , colors [ 0 ] ) ; players [ 1 ] = new Player ( 1 , "Mogens" ) ; display . addPlayer ( "Mogens" , 30000 , colors [ 1 ] ) ; while ( true ) { activePlayer = players [ turn ] ; if ( ( activePlayer ) == null ) { turn = ( ++ turn ) % numberOfPlayers ; continue ; } int countOfNotNull = 0 ; Player winningPlayer = null ; for ( int count = 0 ; count < ( players . length ) ; count ++ ) { if ( ( players [ count ] ) != null ) { countOfNotNull ++ ; winningPlayer = players [ count ] ; } } if ( countOfNotNull == 1 ) { display . winning ( winningPlayer . getName ( ) ) ; break ; } while ( true ) { String result = display . roll ( activePlayer . getName ( ) ) ; if ( result == "Køb<seq2seq4repair_space>hus//hotel" ) { ArrayList < String > owned = new ArrayList < String > ( ) ; ArrayList < OurStreet > allBuildable = board . getBuildableFields ( activePlayer . getId ( ) ) ; System . out . println ( allBuildable . size ( ) ) ; for ( int j = 0 ; j < ( allBuildable . size ( ) ) ; j ++ ) { if ( ( allBuildable . get ( j ) . getNumberOfHouses ( ) ) <= 5 ) { owned . add ( allBuildable . get ( j ) . getName ( ) ) ; } } if ( ( owned . size ( ) ) > 0 ) { String nameOfPlacement = display . chooseToPlaceHouse ( owned ) ; OurStreet placement = ( ( OurStreet ) ( board . getFieldWhereName ( nameOfPlacement ) ) ) ; if ( ( activePlayer . getBalance ( ) ) < ( placement . getHousePrice ( ) ) ) { display . sendMessage ( "Du<seq2seq4repair_space>har<seq2seq4repair_space>ikke<seq2seq4repair_space>nok<seq2seq4repair_space>penge<seq2seq4repair_space>til<seq2seq4repair_space>at<seq2seq4repair_space>købe<seq2seq4repair_space>dette<seq2seq4repair_space>hus" ) ; continue ; } else { activePlayer . withdraw ( placement . getHousePrice ( ) ) ; placement . addHouse ( ) ; display . updateHouses ( placement . getFieldId ( ) , placement . getNumberOfHouses ( ) ) ; display . updateBalance ( activePlayer . getName ( ) , activePlayer . getBalance ( ) ) ; } } } else if ( result == "Sælg<seq2seq4repair_space>hus" ) { <START_BUG> ArrayList < OurStreet > streetsWithHouses = board . getAllWithHouses ( ) ; <END_BUG> ArrayList < String > names = new ArrayList < String > ( ) ; for ( int i = 0 ; i < ( streetsWithHouses . size ( ) ) ; i ++ ) { names . add ( streetsWithHouses . get ( i ) . getName ( ) ) ; } if ( ( names . size ( ) ) == 0 ) continue ; String selectedName = display . chooseToRemoveHouse ( names ) ; OurStreet selectedStreet = ( ( OurStreet ) ( board . getFieldWhereName ( selectedName ) ) ) ; selectedStreet . removeHouse ( ) ; activePlayer . deposit ( ( ( selectedStreet . getHousePrice ( ) ) // 2 ) ) ; display . updateHouses ( selectedStreet . getFieldId ( ) , selectedStreet . getNumberOfHouses ( ) ) ; display . updateBalance ( activePlayer . getName ( ) , activePlayer . getBalance ( ) ) ; } else { break ; } } dieOne = dice . roll ( ) ; dieTwo = dice . roll ( ) ; if ( activePlayer . isImPrisoned ( ) ) { if ( display . rollOrPay ( ) . equals ( "Betal" ) ) { display . rollPayJail ( ) ; activePlayer . withdraw ( 1000 ) ; activePlayer . setImPrisoned ( false ) ; activePlayer . setTimeInJail ( 0 ) ; } else { display . rollJail ( ) ; display . setDice ( dieOne , dieTwo ) ; if ( dieOne == dieTwo ) { display . sendMessage ( "Du<seq2seq4repair_space>slog<seq2seq4repair_space>2<seq2seq4repair_space>ens<seq2seq4repair_space>og<seq2seq4repair_space>er<seq2seq4repair_space>blevet<seq2seq4repair_space>løsladt.<seq2seq4repair_space>Du<seq2seq4repair_space>får<seq2seq4repair_space>en<seq2seq4repair_space>ekstra<seq2seq4repair_space>tur." ) ; activePlayer . setImPrisoned ( false ) ; activePlayer . setTimeInJail ( 0 ) ; DTurn = true ; } else { activePlayer . setTimeInJail ( ( ( activePlayer . getTimeInJail ( ) ) + 1 ) ) ; if ( ( activePlayer . getTimeInJail ( ) ) > 3 ) { display . sendMessage ( "Du<seq2seq4repair_space>siddet<seq2seq4repair_space>din<seq2seq4repair_space>tid<seq2seq4repair_space>og<seq2seq4repair_space>er<seq2seq4repair_space>nu<seq2seq4repair_space>blevet<seq2seq4repair_space>løsladt.<seq2seq4repair_space>Dette<seq2seq4repair_space>koster<seq2seq4repair_space>1000" ) ;

Fix:
ArrayList < OurStreet > streetsWithHouses = board . getAllWithHouses ( activePlayer . getId ( ) ) ;