# File lib/brakeman/differ.rb, line 28
  def second_pass(warnings)
    # keep track of the number of elements deleted because the index numbers
    # won't update as the list is modified
    elements_deleted_offset = 0

    # dup this list since we will be deleting from it and the iterator gets confused.
    # use _with_index for fast deletion as opposed to .reject!{|obj| obj == *_warning}
    warnings[:new].dup.each_with_index do |new_warning, new_warning_id|
      warnings[:fixed].each_with_index do |fixed_warning, fixed_warning_id|
        if eql_except_line_number new_warning, fixed_warning
          warnings[:new].delete_at(new_warning_id - elements_deleted_offset)
          elements_deleted_offset += 1
          warnings[:fixed].delete_at(fixed_warning_id)
          break
        end
      end
    end

    warnings
  end