public Deck( Set<DefaultRank> usedRanks, Set<? extends Suit> usedSuits, int numberOfJokers )
    {
        List<Card> deck = new ArrayList<Card>();
        
        for ( Suit suit : usedSuits )
        {
            for ( DefaultRank rank : usedRanks )
            {
                deck.add( new Card( rank, suit ) );
            }
        }
        
        for ( int i = 0; i < numberOfJokers; i++ )
        {
            deck.add( Card.JOKER );
        }
        
        this.internalDeck = deck;
    }