fun testD(x: Comparable, y: Comparable): Boolean { return when { when { x is Double -> y is Double else -> false } -> less(arg0 = x /*as Double */, arg1 = y /*as Double */) else -> false } } fun testF(x: Comparable, y: Comparable): Boolean { return when { when { x is Float -> y is Float else -> false } -> less(arg0 = x /*as Float */, arg1 = y /*as Float */) else -> false } }