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

}

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

  // CHECK JVM_IR:
  //   Mangled name: B#component1@A(){}kotlin.Int
  //   Public signature: /B.component1|-7852292492190161170[0]
  //   Public signature debug description: component1@A(){}kotlin.Int
  // CHECK JS_IR NATIVE:
  //   Mangled name: B#component1@A(){}
  //   Public signature: /B.component1|-5209316971718544805[0]
  //   Public signature debug description: component1@A(){}
  operator fun A.component1(): Int

  // CHECK JVM_IR:
  //   Mangled name: B#component2@A(){}kotlin.Int
  //   Public signature: /B.component2|-9145888741821901515[0]
  //   Public signature debug description: component2@A(){}kotlin.Int
  // CHECK JS_IR NATIVE:
  //   Mangled name: B#component2@A(){}
  //   Public signature: /B.component2|-4967140045736561606[0]
  //   Public signature debug description: component2@A(){}
  operator fun A.component2(): Int

  // CHECK JVM_IR:
  //   Mangled name: B#component3@A(){}kotlin.Int
  //   Public signature: /B.component3|-6348117122081835134[0]
  //   Public signature debug description: component3@A(){}kotlin.Int
  // CHECK JS_IR NATIVE:
  //   Mangled name: B#component3@A(){}
  //   Public signature: /B.component3|-5144611481254766335[0]
  //   Public signature debug description: component3@A(){}
  operator fun A.component3(): Int

}

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

