# File lib/hashdiff/linear_compare_array.rb, line 12
    def call
      return [] if old_array.empty? && new_array.empty?

      self.old_index = 0
      self.new_index = 0
      # by comparing the array lengths we can expect that a number of items
      # are either added or removed
      self.expected_additions = new_array.length - old_array.length

      loop do
        if extra_items_in_old_array?
          append_deletion(old_array[old_index], old_index)
        elsif extra_items_in_new_array?
          append_addition(new_array[new_index], new_index)
        else
          compare_at_index
        end

        self.old_index = old_index + 1
        self.new_index = new_index + 1
        break if iterated_through_both_arrays?
      end

      changes
    end