open class Base() { open val method : (A?) -> A = { it!! } open fun foo(value : B) : B = value open fun bar(value : () -> C) : (String) -> C = { value() } } class C : Base() { }