I am a bit lost of the self-type business. Self-types are not supertypes, so it might be confusing to show them as such (I didn't try the UI, so maybe they are marked differently, then ignore me).

Another observation: I think you should always look at the self type. :) If there is no explicit self-type (by definition of `hasExplicitSelfType`), it means the self-type == class type. Doesn't it follow from there that you don't need any special casing, and instead always use the self-type parents? For example:

```
class A extends B { self: C => ... } // self-type: A with C
class A extends B { self: A => .. } // self-type: A
```

You could always expand (get parents) of the first type in the list (meaning the defining type itself).

WDYT?