public bool TryPayWith(ManaPool pool)
        {
            Dictionary<MTGColor, int> manaRemaining = pool.GetManaRemaining();
            bool result = TryTakeMana(manaRemaining);

            if( result )
                pool.SetManaRemaining(manaRemaining);

            return result;
        }
        public void PayWith(ManaPool pool)
        {
            Dictionary<MTGColor, int> manaRemaining = pool.GetManaRemaining();
            if (!TryTakeMana(manaRemaining))
                throw new NotSupportedException("Can't afford this payment!");

            pool.SetManaRemaining(manaRemaining);
        }