This two are the content of my work of last week. It was complicated to understand the model behind calypso and that took more time than preview.
A bit of an explanation:
1. First one eliminates the extension that takes +Traits+ as if they would be superclasses of somekind.
While I understand what Denis tried to do here, the premise he took is wrong: traits are not a
multiple inheritance mechanism (even if they can be used to simulate it), traits are a *composition* strategy (and there is a trait composition arithmetic that is somekind complex that needs to be
taken into account).
As a result, the price of simulating a multiple-inheritance scenario where there is not was complexifying
the model at levels way higher than desired. Also it was not working properly and patching it to make it
work was resulting on re-writing all the trait arithmetic at UI level.
So the right approach here is just to remove.
And to be clear: I'm not oposed to the existence of a plugin that hides methods comming from traits
(even if I think is incorrect because once a trait is applied, those methods actually 'belong' to the
class). But in case you want something like this, it can be implemented in a much simpler way by not
mixing what a superclass and a trait is.
2. Second PR also eliminates something :)
This time I eliminate the inclusion of metaclasses in the extension list while displaying a package.
Again, I understand what Denis tried to do: to easy the view of which classes are extended in the class
side and the ones that are extended in instance side.
Problem with thid is that it was breaking completely the cognitive model the system browser offers,
which is already complex enough to add also an exceptional behaviour.
Anyway, this list now works as before: if there are extensions classes are shown and to see the class side extensions you need to click in class side option.