public abstract class Spell<T> where T : Legend.Legend
public class TestSpell : Spell<TestLegend>
new Spell<Legend>[]{new TestSpell()}