I’m wondering if in and out can always be replaced with where in use-site variance. For example, it seems to me that the following functions are all considered identical.
fun <A,B> f(a: Array<A>, b: Array<B>) where A: B {}
fun <A> g(a: Array<A>, b: Array<in Int>) {}
fun <A> h(a: Array<out A>, b: Array<A>) {}
Given this, can one say that in and out can be desugared into where? (I just want to confirm that my understanding of type system is correct, no intention to compare between ways to write the conditions.)