Emulate covariance. We're forced to employ these because we can't make LogIO covariant, because covariant implicits are broken (see scalac bug)
Safe because F appears only in a covariant position
F
https://github.com/scala/bug/issues/11427