class IntervalSkipList::Node

def promote_markers(path)

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