covariant return example