// !DIAGNOSTICS: -UNUSED_PARAMETER fun test() { ")!>testInv() ")!>testIn() ")!>testOut() >")!>testStarProjection() testErrorType() ")!>testInProjection() ")!>testOutProjection() >>")!>testDeeplyNested() } interface Bound1 interface Bound2 object First : Bound1, Bound2 object Second : Bound1, Bound2 class Inv(val prop: T) class Out(val prop: O) class In(arg: I) class BiParam(first: F, second: S) fun intersect(vararg elements: S): S = TODO() fun makeStarProjection(): Inv<*> = TODO() fun makeInProjection(arg: I): Inv = TODO() fun makeOutProjection(arg: O): Inv = TODO() fun testInv() = Inv(intersect(First, Second)) fun testOut() = Out(intersect(First, Second)) fun testIn() = In(intersect(First, Second)) fun testInProjection() = makeInProjection(intersect(First, Second)) fun testOutProjection() = makeOutProjection(intersect(First, Second)) fun testDeeplyNested() = Inv(Inv(Inv(intersect(First, Second)))) fun testStarProjection() = BiParam( intersect(First, Second), makeStarProjection() ) fun testErrorType() = BiParam( intersect(First, Second), unresolved )