¿Cómo restrinjo un parámetro de la función de extensión de Kotlin para que sea el mismo que el tipo extendido?

Quiero escribir un método de extensión en un tipo genérico T, donde el tipo coincidente restringe un parámetro de método.

Quiero que esto compile:

"Hello".thing("world")

Pero no esto, ya que 42 no es una cadena:

"Hello".thing(42)

Esta definición no funciona, porque T está satisfecho porAny

fun <T> T.thing(p: T) {}

Respuestas a la pregunta(3)

Su respuesta a la pregunta