public virtual bool CanPayFor(ICardEffect cardEffect)
        {
            if (cardEffect == null)
            {
                throw new ArgumentNullException("cardEffect");
            }

            //var costlyEffect = cardEffect as ICostlyEffect;
            //if (costlyEffect != null)
            //{
            //}

            if (Card.HasEffect <IDuringCheckForResourceMatch>())
            {
                var check = new CheckForResourceMatch(Game, cardEffect);

                foreach (var checkEffect in Card.Text.Effects.OfType <IDuringCheckForResourceMatch>())
                {
                    checkEffect.DuringCheckForResourceMatch(check);
                }

                return(check.IsResourceMatch);
            }

            return(false);
        }
        public virtual bool CanPayFor(ICostlyCard costlyCard)
        {
            if (costlyCard == null)
            {
                throw new ArgumentNullException("costlyCard");
            }

            //var cost = costlyCard.GetResourceCost(Game);
            //if (cost == null && Card.PrintedCardType == CardType.Hero)
            //    return true;

            if (Card.HasEffect <IDuringCheckForResourceMatch>())
            {
                var check = new CheckForResourceMatch(Game, costlyCard);

                foreach (var checkEffect in Card.Text.Effects.OfType <IDuringCheckForResourceMatch>())
                {
                    checkEffect.DuringCheckForResourceMatch(check);
                }

                return(check.IsResourceMatch);
            }

            return(false);
        }