protected boolean isFullHouse(final Deck deck) {
        usesLow = true;
        usesAllCards = false;
        high = null;
        low = null;
        
        for (Rank rank : Rank.values()) {
            if (high == null && deck.getRank(rank).size() >= 3) {
                high = rank;
            } else if (low == null && deck.getRank(rank).size() >= 2) {
                low = rank;
            }
            
            if (high != null && low != null) {
                return true;
            }
        }
        
        return false;
    }