module ActiveRecord::Encryption::ExtendedDeterministicQueries::EncryptedQueryArgumentProcessor

def additional_values_for(value, type)

def additional_values_for(value, type)
  type.previous_types.collect do |additional_type|
    AdditionalValue.new(value, additional_type)
  end
end

def process_encrypted_query_argument(value, check_for_additional_values, type)

def process_encrypted_query_argument(value, check_for_additional_values, type)
  return value if check_for_additional_values && value.is_a?(Array) && value.last.is_a?(AdditionalValue)
  case value
  when String, Array
    list = Array(value)
    list + list.flat_map do |each_value|
      if check_for_additional_values && each_value.is_a?(AdditionalValue)
        each_value
      else
        additional_values_for(each_value, type)
      end
    end
  else
    value
  end
end

def process_encrypted_query_arguments(args, check_for_additional_values)

def process_encrypted_query_arguments(args, check_for_additional_values)
  if args.is_a?(Array) && (options = args.first).is_a?(Hash)
    self.deterministic_encrypted_attributes&.each do |attribute_name|
      type = type_for_attribute(attribute_name)
      if !type.previous_types.empty? && value = options[attribute_name]
        options[attribute_name] = process_encrypted_query_argument(value, check_for_additional_values, type)
      end
    end
  end
end