class GenericInv<T : Number> {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

class GenericIn<in T : Number> {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

class GenericOut<out T : Number> {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

}

fun testReturnsRawGenericInv(j: JRaw): @FlexibleNullability GenericInv<*>? {
  return j.returnsRawGenericInv()
}

fun testReturnsRawGenericIn(j: JRaw): @FlexibleNullability GenericIn<*>? {
  return j.returnsRawGenericIn()
}

fun testReturnsRawGenericOut(j: JRaw): @FlexibleNullability GenericOut<*>? {
  return j.returnsRawGenericOut()
}

class KRaw : JRaw {
  constructor(j: JRaw) /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  override fun takesRawList(list: @FlexibleNullability List<*>?) {
    <this>.#<$$delegate_0>.takesRawList(list = list)
  }

  override fun returnsRawList(): @FlexibleNullability List<*>? {
    return <this>.#<$$delegate_0>.returnsRawList()
  }

  override fun takesRawGenericInv(g: @FlexibleNullability GenericInv<*>?) {
    <this>.#<$$delegate_0>.takesRawGenericInv(g = g)
  }

  override fun returnsRawGenericInv(): @FlexibleNullability GenericInv<*>? {
    return <this>.#<$$delegate_0>.returnsRawGenericInv()
  }

  override fun takesRawGenericIn(g: @FlexibleNullability GenericIn<*>?) {
    <this>.#<$$delegate_0>.takesRawGenericIn(g = g)
  }

  override fun returnsRawGenericIn(): @FlexibleNullability GenericIn<*>? {
    return <this>.#<$$delegate_0>.returnsRawGenericIn()
  }

  override fun takesRawGenericOut(g: @FlexibleNullability GenericOut<*>?) {
    <this>.#<$$delegate_0>.takesRawGenericOut(g = g)
  }

  override fun returnsRawGenericOut(): @FlexibleNullability GenericOut<*>? {
    return <this>.#<$$delegate_0>.returnsRawGenericOut()
  }

  local /* final field */ val <$$delegate_0>: JRaw = j

}
