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.)