inline fun mutableRandomAccess(vararg value: R): T where T : MutableList, T : RandomAccess, R: Any { val arr = ArrayList(value.size) arr.addAll(value) return arr as T } fun someRandomAccessLogic(ignoreMe: RandomAccess) { println("compiles $ignoreMe") } fun main(args: Array) { val ints = mutableRandomAccess>(1, 2, 3, 4) someRandomAccessLogic(ints) ints.forEach { println(it) } }