The "is overlapping" conditions are what's causing the trouble. It compares all the picked "destination" and "walk" objects together. It's kind of hard to visualize how it behaves sometimes so if you can reduce what objects are picked it makes it simpler.
For example you can condense the conditions in event 7 and 8 to this:
system: for each destination
walk: selected = destination.selected
destination: is overlapping walk
That way you select each pair in turn and "is overlapping" has one of each object to compare when it's reached.