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 @RawType GenericInv<Number> {
  return j.returnsRawGenericInv()
}

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

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

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

  }

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

  override fun returnsRawList(): @FlexibleNullability @RawType MutableList<Any?> {
    return <this>.#<$$delegate_0>.returnsRawList() /*!! @RawType MutableList<Any?> */
  }

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

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

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

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

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

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

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

}
