var bird = new Animal<Egg>();
var pig = new Animal<Piglet>();
public static void Main()
public class Animal<T> where T : Offspring{
public T Offspring {get; set;}
public abstract class Offspring{
public class Egg : Offspring{
public class Piglet : Offspring{