           {module, func_arity_locations} <- source(source, :compile_dispatches),
           {_, deprecated} = exports_and_deprecated[module],
           {{func, arity}, locations} <- func_arity_locations,
+          not excluded?(excludes, module, func, arity),
           warning = deprecated_mfa(deprecated, module, func, arity),
           do: {warning, absolute_locations(locations, source(source, :source))}
 


  @protocol_builtins for {_, type} <- Protocol.__builtin__(), do: type

  defp skip?(:erlang, func, 2) when func in [:andalso, :orelse] do
    true
  end

  defp skip?(module, :__impl__, 1) do
    {maybe_protocol, maybe_builtin} = module |> Module.split() |> Enum.split(-1)
    maybe_protocol = Module.concat(maybe_protocol)
    maybe_builtin = Module.concat(maybe_builtin)

    end
  end

  defp unreachable_mfa(exports, module, func, arity) do
    cond do
      skip_unreachable?(module, func, arity) ->
        nil

      exports == :unknown_module ->
