Way to remove widgets

Thank you for the reply.

Because there’s really nothing “unified” about it: all widgets can contain children

There is. If widget can contain a child, that widget should now how to remove that child. Because it is very specific to that widget. So having one “remove_child” method for a widget and let the widget deal with the implementation should be the natural way.

Why would I? Wouldn’t it be more natural and user friendly that the user wouldn’t have to know what container it is and what child it is in order to be able to remove it? The container should “know” how to remove its child. I see a problem in design here.

As for the rest, I really do appreciate the time you’ve put in the answer, but from the explanation, it is (the mechanism of removing child from user created widgets vs built in widgets) it is a total mess.
There should be one, unified way to add and remove child from a widget. Irrelevant it if that widget is built-in or custom made.