// CHECK:
//   Mangled name: Base
//   Public signature: /Base|null[0]
interface Base {

  // CHECK:
  //   Mangled name: Base#foo(){}
  //   Public signature: /Base.foo|-1041209573719867811[0]
  //   Public signature debug description: foo(){}
  fun foo(): Unit

}

// CHECK:
//   Mangled name: Derived
//   Public signature: /Derived|null[0]
object Derived : Base {
  // CHECK:
  //   Mangled name: Derived#<init>(){}
  //   Public signature: /Derived.<init>|-5645683436151566731[0]
  //   Public signature debug description: <init>(){}
  private constructor() /* primary */

  // CHECK:
  //   Mangled name: Derived#foo(){}
  //   Public signature: /Derived.foo|-1041209573719867811[0]
  //   Public signature debug description: foo(){}
  /* fake */ override fun foo(): Unit

}

// CHECK:
//   Mangled name: #test(){}
//   Public signature: /test|6620506149988718649[0]
//   Public signature debug description: test(){}
fun test(): Unit

