@viddi I think it's a more general issue. what you need is a "self type" (e.g. see similar java question
http://stackoverflow.com/a/17138674/615306) which you achieve with generics but which is a bit ugly. the implementation will be
interface Foo<T: Foo<T>> {
fun something(): T
}
class Bar: Foo<Bar> {
override fun something: Bar
}