   defp merge_sources(sources, nil), do: sources
 
   # Unbinding parameters
+  def condition_expression({:^, [], [_]} = binding, sources, _context), do: unbind(binding, sources)
   def condition_expression({op, [], [field, {:^, [], [_]} = binding]}, sources, context) do
      parameters = unbind(binding, sources)
      condition_expression({op, [], [field, parameters]}, sources, context)

  def condition_expression({:in, [], [field, parameters]}, sources, context) do
    field = condition_expression(field, sources, context)

    parameters
    |> Enum.map(fn parameter ->
      {:==, field, condition_expression(parameter, sources, context)}
    end)
    |> List.insert_at(0, :or)
    |> List.to_tuple()
  end

  # Conditions that have one argument. Functions (is_nil, not).

  def condition_expression(%Ecto.Query.Tagged{value: value}, _sources, _context), do: value
  def condition_expression(raw_value, sources, _context), do: unbind(raw_value, sources)

  def unbind({:^, [], [start_at, end_at]}, sources) do
    sources
    |> Enum.slice(Range.new(start_at, end_at))
  end
  def unbind({:^, [], [index]}, sources) do
    sources
    |> Enum.at(index)
