def promote_markers(path)
promoted = []
new_promoted = []
0.upto(top_level) do |i|
incoming_markers = path[i].forward_markers[i]
markers.concat(incoming_markers)
incoming_markers.each do |marker|
if can_be_promoted_higher?(marker, i)
new_promoted.push(marker)
forward[i].delete_marker_from_path(marker, i, forward[i+1])
else
forward_markers[i].push(marker)
end
end
promoted.each do |marker|
if can_be_promoted_higher?(marker, i)
new_promoted.push(marker)
forward[i].delete_marker_from_path(marker, i, forward[i+1])
else
forward_markers[i].push(marker)
end
end
promoted = new_promoted
new_promoted = []
end
end