Introduce new struct.List class and use instead of list.
This list class will always recursively copy and other lists within the sequence that it is initialized from. Previously if a coil tree was copied and modified changes to some lists would show up in all copies of the tree. Luckily no one has noticed this bug so far.