Variance answers: if Dog is a subtype of Animal, is List<Dog> a subtype of List<Animal>? In Kotlin, generic types are invariant by default — List<Dog> is not List<Animal> for mutability safety. Use out (covariant) when you only produce T — read-only. Use in (contravariant) when you only consume T — like Comparator<Animal> accepting Comparator<Dog>.
out — producers