Compilation error (line 38, col 15): The type 'Program.Cat' cannot be used as type parameter 'TAnimal' in the generic type or method 'Program.AbstractAnimalValidator<TAnimal>'. There is no implicit reference conversion from 'Program.Cat' to 'Program.Animal<Program.IFoo,Program.IBar>'.