public overrides Handle(IAnimalHandler handler)
 {
     handler.Handle(this);     // Chooses the right overload at compile time!
 }
 abstract public Handle(IAnimalHandler handler);