I use the following pattern/idiom: ``` interface F...
# announcements
k
I use the following pattern/idiom:
Copy code
interface Foo {
    fun duStuff()
}

interface FooCompanion<T: Foo> {
    fun create() : T
}

class FooX : Foo {
    companion object : FooCompanion<FooX> {
        override fun create() = FooX()
    }

    override fun duStuff() {
    }
}

fun <T : Foo> FooCompanion<T>.doStuff() = create().duStuff()