So from a domain modeling perspective, list of nonempty should indeed be a subtype of list of IntSets So we call types for which this relationship holds, covariant, because the subtyping relationship varies exactly like the type parameter. 