class foo {

    class foo {
        object foo {

        }

        class Bar {}

        fun foo()

        val x

        var f

        typealias foo = bar
    }

    class Bar {
        object foo {
            companion object {

            }

            private companion object {

            }

            private companion object : Fooo {

            }

            private companion object : Fooo, Bar by foo {

            }

            private companion object : Fooo, Bar by foo, Goo()
        }

        class Bar {}

        fun foo()

        val x

        var f

        typealias foo = bar
    }

    fun foo()

    val x

    var f

    typealias foo = bar

    companion object {

    }

    private companion object {

    }

    private companion object : Fooo {

    }

    private companion object : Fooo, Bar by foo {

    }

    private companion object : Fooo, Bar by foo, Goo()


}
