class A : Java1<Int?> {
  constructor() /* primary */ {
    super/*Java1*/<Int?>()
    /* <init>() */

  }

}

class B : Java1<Any> {
  constructor() /* primary */ {
    super/*Java1*/<Any>()
    /* <init>() */

  }

  override operator fun get(i: Any?): Any {
    return 1
  }

  override operator fun invoke() {
  }

  override operator fun plus(i: Any?): Java1<Any> {
    return Java1<Any>()
  }

}

fun test(a: A, b: B) {
  val a: A = A()
  val k: Unit = a.invoke()
  val k1: Java1<*>? = a.plus(i = 1)
  val k2: Int? = a.get(i = 1)
  val b: B = B()
  val k3: Unit = b.invoke()
  val k4: Java1<*> = b.plus(i = 1)
  val k5: Any = b.get(i = 1)
}
