En Kotlin, ¿es posible cambiar la delegación en Runtime?

El código de bytes generado para el siguiente código crea un campo private final Base $$delegate_0 en la class Derived . Cuando se asigna el campo mutable b el delegado original no cambia.

¿Hay alguna manera de cambiar el delegado en el time de ejecución mientras se mantiene la implementación de zero boilerplate ?

 interfaz Base {
     printing divertida ()
 }

 class BaseImpl (val x: Int): Base {
     anular fun print () {println (x)}
 }

 class Derivada (var b: Base): Base by b

 divertido main (args: Array) {
     val b = BaseImpl (10)
     val derived = Derivado (b)
     derived.print () // imprime 10

     derived.b = BaseImpl (20)
     derived.print () // imprime 10
 }

El ejemplo está tomado de los documentos https://kotlinlang.org/docs/reference/delegation.html y editado.