@okkero as a guy who's authored some pretty nasty type signatures in java, I might beg to differ. Java's wildcard scheme and covariance-by-overidden-method-signature scheme is obnoxious and simply inferior to C#'s and Kotlins.
Kotlin's Covariance and Contravariance scheme is inline with Scala and C#'s and is pretty standard, and very useful