// TARGET_BACKEND: JVM // JVM_TARGET: 1.8 // WITH_STDLIB // CHECK_BYTECODE_TEXT // JVM_IR_TEMPLATES // 0 java/lang/invoke/LambdaMetafactory // FILE: box.kt fun box(): String { var result = "Fail" val r = Request { obj: CharSequence -> result = obj as String } r.deliver("OK") return result } // FILE: Request.java public class Request { private final Consumer consumer; public Request(Consumer consumer) { this.consumer = consumer; } public void deliver(Object response) { deliverResponse(consumer, response); } public void deliverResponse(final Consumer consumer, Object rawResponse) { K response = (K) rawResponse; consumer.accept(response); } } // FILE: Consumer.java public interface Consumer { void accept(T t); }