Challenge 1: A Value Class for Type Safety — Solution @JvmInline value class Meters(val value: Double) @JvmInline value class Feet(val value: Double) fun metersToFeet(m: Meters): Feet = Feet(m.value * 3.28084) fun main() { val distance = Meters(10.0) val converted = metersToFeet(distance) println("${distance.value}m = ${converted.value}ft") // val wrong = metersToFeet(Feet(5.0)) // Compile error: Feet is not Meters } /* Output: 10.0m = 32.8084ft Notes: - Meters and Feet both wrap a Double, but the compiler treats them as completely distinct types — metersToFeet(Meters) only accepts a Meters value, so passing a Feet(5.0) by mistake is caught at compile time, not discovered later as a silently wrong unit conversion. - At runtime, both Meters and Feet are erased to plain Double values in most cases (per @JvmInline), so this safety comes with no extra allocation or performance cost compared to just using raw Double everywhere and hoping not to mix them up. */