     run(env, stack)
   end
 
+  @spec prepare(atom, [any]) :: Tesla.Env.stack
   def prepare(module, stack) do
     Enum.map stack, fn
       {name, opts}              -> prepare_module(module, name, opts)

  @type __module__  :: atom
  @type __client__  :: function

  @type stack       :: [{atom, atom, any}]

  @type t :: %__MODULE__{
            method:     method,


defmodule Tesla.Client do
  @type t :: %__MODULE__{
            fun:  (Tesla.Env.t, Tesla.Env.stack -> Tesla.Env.t) | nil,
            pre:  Tesla.Env.stack,
            post: Tesla.Env.stack
  }
