タイトルのことを実現するには↓のように実装するだけです。

open class A {
    fun chain(): A {
        return this
    }
}

このAを継承したサブクラスで上記メソッドを実行すると
メソッドの実装どおり、Aクラスを返すことになります。

class B: A {
}

私はイメージとして、
B().chain() では B クラスを返したいです。
これを実現できる方法はありますか?

【追記】
@kunif さんの回答は限りなく正解に近いものだと思うのですが↓のような結果になりました。
何故かBクラスのメソッド内部でしか chain メソッドが見えなくなりました。

open class A {
    fun <T:A>T.chain(): T {
        return this
    }
}

class B: A() {
    fun test() {
        val chainメソッド参照可能返ってくるのはBクラス = chain()
    }
}

A().chain()           //  これは当たり前だけどchainメソッドは参照できない
val ss = B().chain()  //  ここでもchainメソッドは参照できない できそうなのに。