package toplevelObjectDeclarations open class Foo(y : Int) { ~foo()~open fun foo() : Int = 1 } object ~A~A : Foo(0) { ~x~val x : Int = 2 fun test() { return `x`x + `foo()`foo() } } object B : A {} ~ns.x~val x = `A`A.`foo()`foo() fun f() { ~y~val y = object : Foo(`ns.x`x) { init { `ns.x`x + 12 } ~y.foo()~override fun foo() : Int = 1 } val z = `y`y.`y.foo()`foo() }