/// <summary>
 /// Create a new instance of a Card object.
 /// </summary>
 /// <param name="suit"></param>
 /// <param name="cardName"></param>
 /// <param name="cardValueManager"></param>
 public Card(SuitEnum suit, CardEnum cardName, ICardValueManager cardValueManager)
 {
     // Store the parameters
     this.Suit             = suit;
     this.CardName         = cardName;
     this.CardValueManager = cardValueManager;
 }
 /// <summary>
 /// method Dispose
 /// </summary>
 public void Dispose()
 {
     // destroy the lists and objects that might be created
     randomIntStorage  = null;
     randomCardStorage = null;
     cardValueManager  = null;
     shuffleOptions    = null;
 }
        /// <summary>
        /// Create a new instance of a RandomShuffler object; this constructor is for initializing RandomCardStorage.
        /// </summary>
        /// <param name="minValue"></param>
        /// <param name="maxValue"></param>
        /// <param name="numberToInitialize"></param>
        public RandomShuffler(int numberDecks, ICardValueManager cardValueManager, int initialShuffles = DefaultShuffleCount, int beforeItemIsPulledShuffles = 0, int afterItemIsPulledShuffles = 0)
        {
            // This is Cards Mode
            this.RandomMode = RandomModeEnum.Cards;

            // Store the CardValueManager
            this.CardValueManager = cardValueManager;

            // store the parameters
            this.MinValue         = CardMinValue;
            this.MaxValue         = CardMaxValue;
            this.SetsToInitialize = numberDecks;

            // Create the ShuffleOptions
            this.ShuffleOptions = new ShuffleOptionManager(initialShuffles, beforeItemIsPulledShuffles, afterItemIsPulledShuffles);

            // Perform initializations for this object
            Init();
        }