class Cucumber::MultilineArgument::DataTable::DiffMatrices

def perform_diff

def perform_diff
  inserted    = 0
  missing     = 0
  last_change = nil
  changes.each do |change|
    if change.action == '-'
      @missing_row_pos = change.position + inserted
      cell_matrix[missing_row_pos].each { |cell| cell.status = :undefined }
      row_indices.insert(missing_row_pos, nil)
      missing += 1
    else # '+'
      @insert_row_pos = change.position + missing
      inserted_row = change.element
      inserted_row.each { |cell| cell.status = :comment }
      cell_matrix.insert(insert_row_pos, inserted_row)
      row_indices[insert_row_pos] = nil
      inspect_rows(cell_matrix[missing_row_pos], inserted_row) if last_change == '-'
      inserted += 1
    end
    last_change = change.action
  end
end