class IntervalSkipList::Node

def demote_inbound_markers(path)

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