public void UseSpell(BattleUnitStack from, List <BattleUnitStack> to, ISpell spell) { if (!from.GetSpells().Contains(spell)) { throw new ArgumentOutOfRangeException("From stack does not contain provided spell"); } Console.WriteLine($"Using spell {spell}"); to.ForEach(stack => spell.Apply(stack)); }