class Covariant<out T> {
}
class Contravariant<in T> {
}
class Invariant<inout T> {
}
void covariantListInfer<T>(Covariant<List<T>> x) { }
void contravariantListInfer<T>(Contravariant<List<T>> x) { }
void invariantListInfer<T>(Invariant<List<T>> x) { }
main() { }
