Entendiendo los rasgos en Kotlin

En Kotlin tendremos la posibilidad de crear un "rasgo que pueda requerir que una class se extienda en el lado de la llamada", como

class Bar {} trait T1 : Bar {} class Foo : Bar, T1, T2, T3 {} class Wrong : T1, T2 //error: Wrong should extend Bar 

No puedo imaginar ningún flujo en el que pueda aplicar esta estructura. ¿Alguien puede decirme por qué lo necesitamos?

    Creo que la razón principal para esto es permitir que el rasgo haga uso de methods y properties definidos en la class concreta. Imagínese que Bar tiene algún método básico que otros methods de conveniencia podrían ser construidos además … al hacer que el rasgo requiera que se use en subclasss de Bar , podría definir methods en el rasgo que llama a ese método. Luego puede proporcionar esos methods a muchas subclasss dándoles el rasgo.