It appears that when you copy/paste a foreach node that the copied node loop will not execute properly, the $LISTNAME.Current$ is not populated in the second list, as the code finds the $LISTNAME.Current$ already exists but with a different DefinedBy and so creates a duplicate $LISTNAME.Current_#$ (repeatedly, once for each time through the loop). Incidentally the log output shows the iteration data as correct, but something as simple as a balloon popup with $LISTNAME.Current$ can show that the actual variable data is incorrect.
Subsequently $LISTNAME.Current$ is left as the last value from the first loop.
This only seems most likely to happen if you copy/paste a foreach node, however i have a scenario that i can't quite figure out where the same thing is happening but i was very careful to make a new foreach through the same List Variable - but in other cases i have seen (non-copy/paste) multiple loops work fine. I can't quite pin down how to reproduce this reliable.
Side-effects: If after you run the scenario and save it. Then close Test Builder. Restart and reload the scenario, you can see the the $LISTNAME.Current$ & $LISTNAME.Current_#$ variables listed in the Variables Dock window. I have also seen that in some case the variables list includes variables (_# versions) that were not displayed before saving the scenario.
As a work around i simple made a new List (copied the data) and that works fine.
I've determined the root cause and corrected it (locally)
TestCase.Clone was not updating the Scenario of the cloned TestCase and that allowed a new Scenario to be used which was a snapshot of the actual Scenario at the time of the Clone.
I changed the code in Clone to:
result.Scenario = this.Scenario;
result.UpdateIDs();
and then updated UpdatedIDS to the same for each child
child.Scenario = this.Scenario;
child.UpdateIDs();
and that seems to have resolved the problem.