// Rendering settings:
// - Signature version: 2
// - Show manifest properties: false
// - Show declarations: true

// Library unique name: <main>
abstract interface /A : /X, /Z // /A|null[0]
abstract interface /B : /X, /Z // /B|null[0]
final class <#A: /X> /G1 { // /G1|null[0]
    constructor <init>() // /G1.<init>|<init>(){}[0]
    final fun checkFoo(/IFoo<in #A>) // /G1.checkFoo|checkFoo(IFoo<in|1:0>){}[0]
}
final class <#A: /X & /Z> /G2 { // /G2|null[0]
    constructor <init>() // /G2.<init>|<init>(){}[0]
    final fun checkBar1(/IBar1<in #A>) // /G2.checkBar1|checkBar1(IBar1<in|1:0>){}[0]
    final fun checkBar2(/IBar2<in #A>) // /G2.checkBar2|checkBar2(IBar2<in|1:0>){}[0]
    final fun checkFoo(/IFoo<in #A>) // /G2.checkFoo|checkFoo(IFoo<in|1:0>){}[0]
}
abstract fun interface <#A: /X & /Z> /IBar1 { // /IBar1|null[0]
    abstract fun bar(#A) // /IBar1.bar|bar(1:0){}[0]
}
abstract fun interface <#A: /X & /Z> /IBar2 { // /IBar2|null[0]
    abstract fun bar(#A) // /IBar2.bar|bar(1:0){}[0]
}
abstract fun interface <#A: /X> /IFoo { // /IFoo|null[0]
    abstract fun foo(#A) // /IFoo.foo|foo(1:0){}[0]
}
abstract interface /X // /X|null[0]
abstract interface /Z // /Z|null[0]
final fun <#A: kotlin/Any?> /sel(#A, #A): #A // /sel|sel(0:0;0:0){0§<kotlin.Any?>}[0]
final fun /test1() // /test1|test1(){}[0]
final fun /test2() // /test2|test2(){}[0]
