Kotlin: Как можно получить доступ к функциям расширения внутри одного типа извне?

Я часто сталкиваюсь с сценарием, где у меня есть абстрактные функции расширения внутри типа.

interface PetScript { fun Pet.feed() fun Pet.call() } 

Наличие функций функций расширения допускает очень минималистические реализации, потому что это дает автоматический контекст.

К сожалению, единственный способ использовать эти функции – написать стандартные стандартные шаблоны, которые переходят к расширениям.

 interface PetScript { fun Pet.feed() fun Pet.call() fun feed_(pet: Pet) = pet.feed() fun call_(pet: Pet) = pet.call() } 

Таким образом, я могу использовать такие функции:

 val pet = ... val script = ... script.feed_(pet) script.call_(pet) 

Есть ли лучший, более идиоматический способ использования функций расширения вне этого типа?

    Существует многолетний билет для нескольких приемников по функциям расширения , но простой способ обхода заключается в том, чтобы развернуть область видимости:

     val pet = ... val script = ... script.run { pet.feed() pet.call() }