public boolean addCard(Card card) {
        if (card == null) {
            throw new IllegalArgumentException("Null card can't be added to hand");
        }
        if (cards.contains(card)) {
            throw new IllegalArgumentException("Hand already contains card " + card);
        }
        if (isFull()) {
            return false;
        }
        cards.add(card);
        return true;
    }