You can use wildcard parameters to make an invariant parameter effectively covariant. (Wildcards are actually syntactic sugar for existential types -- but the term "existential type" makes it sound so much more complicated!)