benefits of using self type annotations over inheritance

"kind of", but not really IMHO... 
I mean, you still force users to be of a certain type in order to implement such trait (to fulfil the self trait) - so it's not really composition. In composition I can be of **any** type, as long as I implement some methods you want from me. This is not the case with self types - the type must match