delete (IntervalSkipList)

    # File lib/treetop/runtime/interval_skip_list/interval_skip_list.rb, line 64
      def delete(marker)
        range = ranges[marker]
        path_to_first_node = make_path
        first_node = find(range.first, path_to_first_node)

        cur_node = first_node
        cur_level = first_node.top_level
        while next_node_at_level_inside_range?(cur_node, cur_level, range)
          while can_ascend_from?(cur_node, cur_level) && next_node_at_level_inside_range?(cur_node, cur_level + 1, range)
            cur_level += 1
          end
          cur_node = unmark_forward_path_at_level(cur_node, cur_level, marker)
        end

        while node_inside_range?(cur_node, range)
          while can_descend_from?(cur_level) && next_node_at_level_outside_range?(cur_node, cur_level, range)
            cur_level -= 1
          end
          cur_node = unmark_forward_path_at_level(cur_node, cur_level, marker)
        end
        last_node = cur_node

        first_node.endpoint_of.delete(marker)
        if first_node.endpoint_of.empty?
          first_node.delete(path_to_first_node)
        end

        last_node.endpoint_of.delete(marker)
        if last_node.endpoint_of.empty?
          path_to_last_node = make_path
          find(range.last, path_to_last_node)
          last_node.delete(path_to_last_node)
        end
      end