   specialized one.
 
   Second, falling back to `Any` adds an extra lookup to all types,
-  which is unecessary overhead unless an implementation for Any is
+  which is unnecessary overhead unless an implementation for Any is
   required.
 
   ## Types


  ## Raising exceptions

  The most common way to raise an exception is via the raise
  function:

      defexception MyException, [:message]
      raise MyException,
        message: "did not get what expected, got: #{inspect value}"

  In many cases though, it is more convenient to just pass the
  expected value to raise and generate the message in the `exception/1`
  callback:

      defexception MyException, [:message] do
        def exception(opts) do
          msg = "did not get what expected, got: #{inspect opts[:actual]}"
          MyException[message: msg]
        end
      end


  * `:pretty` - if set to true enables pretty printing, defaults to false;

  * `:width` - the width available for inspect to layout the data structure
               representation. Defaults to the smaller of 80 or the terminal width;

  ## Examples

