- Animal uses an Animal Baby field rather than a Boolean pregnancy field;
- null represents the state where no unborn animal exists;
- MakePregnant() creates a Baby only when the field is null;
- Baby values are assigned directly without a custom Initialize(...) method;
- the Baby uses the parent's current animal type;
- Eat(double foodWeight) updates the adult;
- the Baby is updated only when Baby != null;
- all decisions remain simple one-way if statements.