// TARGET_BACKEND: JVM public object SomeObject { private val workerThread = object : Thread() { override fun run() { foo() } } init { workerThread.start() } private fun foo() : Unit { } } public class SomeClass() { inner class Inner { val copy = list } private val list = ArrayList() var status : Throwable? = null private val workerThread = object : Thread() { public override fun run() { try { list.add("123") list.add("33") Inner().copy.add("444") } catch(t: Throwable) { status = t } } } init { workerThread.start() workerThread.join() } } public fun box(): String { var obj = SomeClass() return if (obj.status == null) "OK" else { (obj.status as java.lang.Throwable).printStackTrace() "failed" } }