kotlin extension
To declare an extension function, prefix its name with a receiver
type, which refers to the type being extended. The following adds a
swap function to MutableList<Int>:
fun MutableList<Int>.swap(index1: Int, index2: Int) {
val tmp = this[index1] // 'this' corresponds to the list
this[index1] = this[index2]
this[index2] = tmp
}