def check_each(error_key, each_definition, current_expected)
      enumerable = each_definition[:each].call(current_expected)
      enumerable.each_with_index do |each_instance, idx|
        full_key = [error_key, idx].join('.')
        check_definition(each_definition[:attributes], each_instance, full_key)
      end
    end
def check_each(error_key, each_definition, current_expected)
      enumerable = each_definition[:each].call(current_expected)
      enumerable.each_with_index do |each_instance, idx|
        full_key = [error_key, idx].join('.')
        check_definition(each_definition[:attributes], each_instance, full_key)
      end
    end
Iterates through a list of objects while checking fields
 @api private
 @param error_key [String]
   the first name of the field reported in the error
   each errors are reported #{error_key}[#{idx}].#{each_key}
 @param each_definition [Hash]
   :each is a function that returns the list of items
   :attributes is a hash with the same structure as the top-level match_def hash
 @return [nil] returns nothing, adds to error list as side effect