// RUN_PIPELINE_TILL: BACKEND
// FIR_IDENTICAL
// JVM_DEFAULT_MODE: no-compatibility
// JVM_TARGET: 1.8

public interface KInterface {
    fun test(): String {
        return "OK";
    }

    val property: String
        get() = "OK"
}

// FILE: 1.kt

interface KotlinInterface : KInterface {
    fun fooo() {
        super.test()
        super.property

        object  {
            fun run () {
                super@KotlinInterface.test()
                super@KotlinInterface.property
            }
        }
    }

    val propertyy: String
        get() {
            super.test()
            super.property

            object  {
                fun run () {
                    super@KotlinInterface.test()
                    super@KotlinInterface.property
                }
            }
            return ""
        }
}

interface KotlinInterfaceIndirectInheritance : KotlinInterface {
    fun foooo() {
        super.test()
        super.property

        object  {
            fun run () {
                super@KotlinInterfaceIndirectInheritance.test()
                super@KotlinInterfaceIndirectInheritance.property
            }
        }
    }

    val propertyyy: String
        get() {
            super.test()
            super.property

            object  {
                fun run () {
                    super@KotlinInterfaceIndirectInheritance.test()
                    super@KotlinInterfaceIndirectInheritance.property
                }
            }
            return ""
        }
}

open class KotlinClass : KInterface {
    fun foo() {
        super.test()
        super.property

        object  {
            fun run () {
                super@KotlinClass.test()
                super@KotlinClass.property
            }
        }
    }

    val xproperty: String
        get() {
            super.test()
            super.property

            object  {
                fun run () {
                    super@KotlinClass.test()
                    super@KotlinClass.property
                }
            }

            return ""
        }
}

class KotlinClassIndirectInheritance : KotlinClass() {
    fun foo2() {
        super.test()
        super.property

        object  {
            fun run () {
                super@KotlinClassIndirectInheritance.test()
                super@KotlinClassIndirectInheritance.property
            }
        }

    }

    val property2: String
        get() {
            super.test()
            super.property

            object  {
                fun run () {
                    super@KotlinClassIndirectInheritance.test()
                    super@KotlinClassIndirectInheritance.property
                }
            }
            return ""
        }
}

class KotlinClassIndirectInheritance2 : KotlinInterfaceIndirectInheritance {
    fun foo() {
        super.test()
        super.property

        object  {
            fun run () {
                super@KotlinClassIndirectInheritance2.test()
                super@KotlinClassIndirectInheritance2.property
            }
        }
    }

    val xproperty: String
        get() {
            super.test()
            super.property

            object  {
                fun run () {
                    super@KotlinClassIndirectInheritance2.test()
                    super@KotlinClassIndirectInheritance2.property
                }
            }
            return ""
        }
}

fun test() {
    KotlinClass().test()
    KotlinClass().property
    KotlinClassIndirectInheritance2().test()
    KotlinClassIndirectInheritance2().propertyyy

    KotlinClass().test()
    KotlinClass().property
}

/* GENERATED_FIR_TAGS: anonymousObjectExpression, classDeclaration, functionDeclaration, getter, interfaceDeclaration,
propertyDeclaration, stringLiteral, superExpression */
