protected FiveCardBoard simulateBoard(ICardDeck deck) throws RuntimeException {
        FiveCardBoard simulatedBoard = copyOfBoard();
        while (!simulatedBoard.isFull()) {
            Card nextCard = deck.takeCard();
            if (nextCard == null) {
                throw new RuntimeException("The deck ran out of cards!");
            }
            simulatedBoard.addCard(nextCard);
        }
        return simulatedBoard;
    }