// FIR_IDENTICAL
interface IBase {
    fun foo(x: Int, s: String)
    fun bar(): Int
    fun String.qux()
}

object BaseImpl : IBase {
    override fun foo(x: Int, s: String) {}
    override fun bar(): Int = 42
    override fun String.qux() {}
}

interface IOther {
    val x: String
    var y: Int
    val Byte.z1: Int
    var Byte.z2: Int
}

fun otherImpl(x0: String, y0: Int): IOther = object : IOther {
    override val x: String = x0
    override var y: Int = y0
    override val Byte.z1: Int get() = 1
    override var Byte.z2: Int
        get() = 2
        set(value) {}
}

class Test1 : IBase by BaseImpl

class Test2 : IBase by BaseImpl, IOther by otherImpl("", 42)
