public override void Query(object source, StatQuery sq)
        {
            if (ReferenceEquals(source, this))
            {
                switch (sq.Statistic)
                {
                case Statistic.Attack:
                    sq.Result += this.Attack;
                    break;

                case Statistic.Defense:
                    sq.Result += this.Defense;
                    break;

                default:
                    throw new ArgumentException();
                }
            }
            else
            {
                if (sq.Statistic == Statistic.Defense)
                {
                    sq.Result++;
                }
            }
        }
 public override void Query(object source, StatQuery sq)
 {
     if (!ReferenceEquals(source, this) && sq.Statistic == Statistic.Attack)
     {
         sq.Result++;
     }
 }
 public abstract void Query(object source, StatQuery q);