// 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>() */

  }

  override fun foo(): String {
    return <this>.#<$$delegate_0>.foo() /*!! String */
  }

  local /* final field */ val <$$delegate_0>: Derived = Derived()

}

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

