fun WithCompanion.test() {
  val test1: <no name provided> = { // BLOCK
    local class <no name provided> : WithCompanion {
      constructor() /* primary */ {
        super/*WithCompanion*/(a = Companion)
        /* <init>() */

      }

    }

    <no name provided>()
  }
  val test2: <no name provided> = { // BLOCK
    local class <no name provided> : WithCompanion {
      constructor() /* primary */ {
        super/*WithCompanion*/(a = Companion.foo())
        /* <init>() */

      }

    }

    <no name provided>()
  }
}

open class WithCompanion {
  constructor(a: Companion) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  companion object Companion {
    private constructor() /* primary */ {
      super/*Any*/()
      /* <init>() */

    }

    fun foo(): Companion {
      return <this>
    }

  }

}
