I’ve just been experimenting with childLaneSets, and was surprised to see in the BPMN / XML that if an object is inside a childLaneSet, it is listed in the BPMN twice - once in the parent Lane, second inside the child lane (inside the childLaneSet, which is inside the parent Lane).
Is this correct behaviour? (it does the same in Camunda 7 and 8 and bpmn.io)
Here is a piece of the BPMN. The diagram has a Lane, which has a childLaneSet, which has a childLaneSet. There is 1 startEvent in the model (no other objects). Note that the StartEvent is listed as a flowNodeRef of the parent, child, and grandchild…
<bpmn:lane id="Lane_1r8l53g">
**<bpmn:flowNodeRef>StartEvent_1</bpmn:flowNodeRef>**
<bpmn:childLaneSet id="LaneSet_0r8c9yf">
<bpmn:lane id="Lane_1ac96jb" />
<bpmn:lane id="Lane_1tjbvkh">
**<bpmn:flowNodeRef>StartEvent_1</bpmn:flowNodeRef>**
<bpmn:childLaneSet id="LaneSet_0yexzuo">
<bpmn:lane id="Lane_1788htu" />
<bpmn:lane id="Lane_1ssqozw">
**<bpmn:flowNodeRef>StartEvent_1</bpmn:flowNodeRef>**
</bpmn:lane>
</bpmn:childLaneSet>
</bpmn:lane>
</bpmn:childLaneSet>
</bpmn:lane>
<bpmn:lane id="Lane_09lyj55" />
</bpmn:laneSet>```
Yes, this is allowed by the specification. Every lane will have flow node refs of for all elements are are visually inside of it.