package h //traits to make ambiguity with function literal as an argument trait A trait B trait C: A, B fun foo(a: A, f: () -> T): T = f() fun foo(b: B, f: () -> T): T = f() fun test(c: C) { foo(c) @f { c!! } }