def demote_inbound_markers(path)
demoted = []
new_demoted = []
top_level.downto(0) do |i|
incoming_markers = path[i].forward_markers[i].dup
incoming_markers.each do |marker|
unless forward_node_with_marker_at_or_above_level?(marker, i)
path[i].forward_markers[i].delete(marker)
new_demoted.push(marker)
end
end
demoted.each do |marker|
path[i + 1].place_marker_on_inbound_path(marker, i, path[i])
if forward[i].markers.include?(marker)
path[i].forward_markers[i].push(marker)
else
new_demoted.push(marker)
end
end
demoted = new_demoted
new_demoted = []
end
end