fun testBoolean(v: Boolean): Boolean {
    var value = false
    fun setValue(v: Boolean) {
        value = v
    }
    setValue(v)
    return value
}

fun testChar(v: Char): Char {
    var value = 0.toChar()
    fun setValue(v: Char) {
        value = v
    }
    setValue(v)
    return value
}

fun testByte(v: Byte): Byte {
    var value = 0.toByte()
    fun setValue(v: Byte) {
        value = v
    }
    setValue(v)
    return value
}

fun testShort(v: Short): Short {
    var value = 0.toShort()
    fun setValue(v: Short) {
        value = v
    }
    setValue(v)
    return value
}

fun testInt(v: Int): Int {
    var value = 0.toInt()
    fun setValue(v: Int) {
        value = v
    }
    setValue(v)
    return value
}

fun testLong(v: Long): Long {
    var value = 0.toLong()
    fun setValue(v: Long) {
        value = v
    }
    setValue(v)
    return value
}

fun testFloat(v: Float): Float {
    var value = 0.toFloat()
    fun setValue(v: Float) {
        value = v
    }
    setValue(v)
    return value
}

fun testDouble(v: Double): Double {
    var value = 0.toDouble()
    fun setValue(v: Double) {
        value = v
    }
    setValue(v)
    return value
}

fun box(): String {
    return when {
        testBoolean(true) != true -> "testBoolean"
        testChar('a') != 'a' -> "testChar"
        testByte(1) != 1.toByte() -> "testByte"
        testShort(1) != 1.toShort() -> "testShort"
        testInt(1) != 1 -> "testInt"
        testLong(1) != 1L -> "testLong"
        testFloat(1.0F) != 1.0F -> "testFloat"
        testDouble(1.0) != 1.0 -> "testDouble"
        else -> "OK"
    }
}