The first occurrence of “FWorldContext PieContext = *Contextit;” is the correct one.
The only reason a sub-level would not show up even if it’s added into the array you send to PrepareMapChange, is if there is no reference to that sub-level in the segment you’re loading into (i.e. they get garbage collected).
The old levels get garbage collected when you no longer reference them.
If you need more of a “clean slate” approach where everything you used to have is deleted, replaced by a new level, and you’re put into the new level’s game start, then I would recommend a different approach.