// !LANGUAGE: +InlineClasses inline class Result(val value: Any?) { val isFailure: Boolean get() = value is Failure public companion object { public inline fun success(value: T): Result = Result(value) public inline fun failure(exception: Throwable): Result = Result(Failure(exception)) } class Failure ( val exception: Throwable ) } inline fun runCatching(block: () -> R): Result { return try { Result.success(block()) } catch (e: Throwable) { Result.failure(e) } } class Box(val x: T) fun box(): String { val r = runCatching { TODO() } val b = Box(r) if (r.isFailure != b.x.isFailure || !r.isFailure) return "Fail: r=${r.isFailure}; b.x=${b.x.isFailure}" return "OK" }