This flexibility allows each node in these trees to be manipulated in
the way most idiomatic for its role. It’s rare to want to insert a cell
in a table, causing all the other cells to wrap around; similarly,
it’s rare to want to remove a child from a flex row by index instead
of by reference.

The RenderParagraph object is the most extreme case: it has a child of
an entirely different type, TextSpan. At the RenderParagraph boundary,
the RenderObject tree transitions into being a TextSpan tree.

The overall approach of specializing APIs to meet the developer’s
expectations is applied to more than just child models.

Similarly, hiding a widget subtree is easily done by not including the
widget subtree in the build at all. However, developers typically expect
there to be a widget to do this, and so the Visibility widget exists
to wrap this pattern in a trivial reusable widget.

Explicit arguments