Data matching question

I have the following test:

The Grid component creates a tree branch for each column in the grid. In this case I get two branches at the same branch level with a list of two items in each branch.

If I connect a polygon center component, this two-branch structure is preserved in the output.
If I connect a control points component, I get 4 separate branches output on two different levels with one item in each branch.

Different components connected fall into either camp…

Original tree structure preserved:
ControlPolygon, Closed, CurveMiddle, etc.

Original tree structure altered:
Discontinuity, DivideCurve, OffsetCurve, etc.

Is there a logic behind this?

DataMatchQ.gh (12.7 KB)

On thinking about this more I guess the difference is between the components outputting one item or a list of multiple items…

Components that preserve the original tree structure, like ControlPolygo etc. output a single item for each input branch. So the output maintains the same branch structure as the input.

Components that alter the original tree structure, such as Discontinuity, DivideCurve, OffsetCurve, etc. output a list of multiple items for each input branch. This causes the output tree to expand, creating additional sub-branches for each item in the output lists.

The logic appears to be that when a component outputs a list, Grasshopper will create a new sub-branch for each item in that list. Single item outputs maintain the existing branch structure, while multi-item list outputs cause the tree to grow new sub-branches.