import java.lang.Thread
import java.lang.Runnable
import java.util.concurrent.Callable
import java.util.function.Supplier

public final class SAMKt {
    @org.jetbrains.annotations.NotNull private static final var notSam: kotlin.jvm.functions.Function0<kotlin.Unit> = {

    }
    @org.jetbrains.annotations.NotNull private static var foo: java.lang.Runnable = {

    }
    @org.jetbrains.annotations.NotNull private static final var baz: java.lang.Runnable = java.lang.Runnable({

    })
    public static final fun getNotSam() : kotlin.jvm.functions.Function0<kotlin.Unit> = UastEmptyExpression
    public static final fun getFoo() : java.lang.Runnable = UastEmptyExpression
    public static final fun setFoo(@org.jetbrains.annotations.NotNull foo: java.lang.Runnable) : void = UastEmptyExpression
    public static final fun bar() : java.lang.Runnable {
        foo = {

        }
        var a: java.lang.Runnable = {

        } as java.lang.Runnable
        runRunnable({

        })
        return {

        }
    }
    public static final fun getBaz() : java.lang.Runnable = UastEmptyExpression
    public static final fun runRunnable(@org.jetbrains.annotations.NotNull r: java.lang.Runnable) : error.NonExistentClass {
        return <anonymous class>()
    }
    public static final fun test1() : void {
        var thread1: java.lang.Thread = <init>({
            println("hello1")
        })
    }
    public static final fun test2() : void {
        var thread2: java.lang.Thread = <init>(Runnable({
            println("hello2")
        }))
    }
    public static final fun test3() : void {
        ambiguousSamAcceptor(Supplier({
            return "Supplier"
        }))
        ambiguousSamAcceptor(Callable({
            return "Callable"
        }))
    }
    public static final fun ambiguousSamAcceptor(@org.jetbrains.annotations.NotNull s: java.util.function.Supplier<java.lang.String>) : java.lang.String {
        return TODO()
    }
    public static final fun ambiguousSamAcceptor(@org.jetbrains.annotations.NotNull s: java.util.concurrent.Callable<java.lang.String>) : java.lang.String {
        return TODO()
    }
}
