interface Context1
interface Context2 {
fun getContextElement(): A
}
class Context2Impl(value: A) : Context2 {
override fun getContextElement(): A
val value: A
}
context(Int, String)
class A {
constructor(int: Int)
}
context(Context1, c2@Context2)
class B {
override fun toString(): String
}
context(Context2)
class C {
val a: A
get()
}
context(Context1)
@Deprecated(message = "Use `B` instead.")
class D
context(b@B, `fun`@A)
fun foo()
context(Context2>)
fun bar(): C