protected List<AbstractStartingHand> fillStartingHands(ICardDeck deck) {
        List<AbstractStartingHand> filledStartingHands = new ArrayList<AbstractStartingHand>();
        for (int i = 0; i < startingHands.size(); i++) {
            AbstractStartingHand copyOfHand = startingHands.get(i).copyOfHand();
            while (!copyOfHand.isFull()) {
                Card nextCard = deck.takeCard();
                if (nextCard == null) {
                    throw new RuntimeException("The deck ran out of cards!");
                }
                copyOfHand.addCard(nextCard);
            }
            filledStartingHands.add(copyOfHand);
        }

        return filledStartingHands;
    }