 
     # If we don't implement all protocols and any is not in the
     # list, we need to add a final clause that returns nil.
-    if !L.keyfind(Any, 1, conversions) && length(conversions) < 10 do
+    if L.keyfind(Any, 1, conversions) == false && length(conversions) < 10 do
       contents = contents ++ [quote do
         defp __raw_impl__(_) do
           nil

defmodule Protocol.DSL do
  @moduledoc false

  defmacro def(expression) do
    case expression do
      { _, _, args } when args == [] or is_atom(args) ->


    arity = length(args)

    quote do
      @functions [unquote({name, arity})|@functions]

      # Generate a fake definition with the user
      # signature that will be used by docs
      Kernel.def unquote(name).(unquote_splicing(args))

      { args, body } = Protocol.DSL.args_and_body(__MODULE__, unquote(name), unquote(arity))
      Kernel.def unquote(name), args, [], do: body
    end
  end
end
