Как сохранить тип объекта для интеллектуального каста при возврате Any

Извиняюсь, если это глупый вопрос, Котлин по-прежнему новичок в моей жизни, и я не знаком с синтаксисом «типы», поэтому нашел, что ему трудно найти решение.

fun Any?.test(): Any? { return this } "test string".test() // implicit string is now type of "Any" "test string".test().substring() // what i'm trying to achieve 

Я в основном хочу, чтобы метод расширения класса возвращал свой собственный экземпляр, поэтому я все еще могу работать на нем в соответствии с нижней строкой примера

Извините за грубость примера, было упрощено