I’m not so sure about that, partly because your shell shape wasn’t a solid (“Closed Brep”), it was open top and bottom. That’s why I added Cap (Cap Holes), but it still failed. I don’t waste time wondering why, I just try something different.
Experienced, not expert.
Shift Paths, not Shift List - The best way to see what it does, or understand data trees from any component really, is to connect temporary text panels before and after.
See what it did? {0;0;0;3;0} and {0;0;0;3;1} are combined to the {0;0;0;3} branch with two items.
{0;0;0;5;0}, {0;0;0;5;1} and {0;0;0;5;2} are combined to the {0;0;0;5} branch with three items. Etc.
To understand MM (Mass Multiplication) you have to again examine the data trees, before and after.
Remember that SplitMul (Split Brep Multiple) cut all the boxes in two that touch the shell shape. For each vertex of the fragments (and whole boxes), BrepInc (Point In Brep) returns ‘True’ if the point is inside the shell or ‘False’ if not. MM multiplies all the items in each branch together, so if any one of them is zero, the result will be ‘0’ (outside), otherwise ‘1’ (inside).
The net result of all those steps is a cull pattern that matches the data tree from SplitMul, leaving only the box fragments (and whole boxes) that are inside the shell and ignoring those outside.
Whew! That takes a long time to explain but matching data tree patterns becomes second nature after awhile. It’s the only way to succeed at Grasshopper.