// MODULE: lib
// MODULE: main
// FILE: nullCheckOnInterfaceDelegation.kt

interface IFoo {
  abstract fun foo(): String

}

class Derived : A, IFoo {
  constructor() /* primary */ {
    super/*A*/()
    /* <init>() */

  }

  override fun foo(): @FlexibleNullability String? {
    return super.foo()
  }

}

class Delegated : IFoo {
  constructor() /* primary */ {
    super/*Any*/()
    /* <init>() */

  }

  private /* final field */ val $$delegate_0: Derived = Derived()
  override fun foo(): String {
    return <this>.#$$delegate_0.foo() /*!! String */
  }

}

fun testReturnValue(): String {
  return Delegated().foo()
}
