       [1, 2]       #=> Lists
       "strings"    #=> Strings
       {key, value} #=> Tuples with two elements
+
+  If you would like to introduce any other value into an AST, you need
+  to make sure those values are escaped before via `Macro.escape/1`.
+
+  ## Options
+
+    * `:unquote` - when `false`, disables unquoting. This means any `unquote`
+      call will be kept as is in the AST, instead of replaced by the `unquote`
+      arguments. For example:
+
+          iex> quote do
+          ...>   unquote("hello")
+          ...> end
+          "hello"
+
+          iex> quote unquote: false do
+          ...>   unquote("hello")
+          ...> end
+          {:unquote, [], ["hello"]}
+
+    * `:location` - when set to `:keep`, keeps the current line and file from
+      quote. Read the Stacktrace information section below for more
+      information.
+
+    * `:line` - sets the quoted expressions to have the given line.
+
+    * `:generated` - marks the given chunk as generated so it does not emit warnings.
+      Currently it only works on special forms (for example, you can annotate a `case`
+      but not an `if`).
+
+    * `:context` - sets the resolution context.
+
+    * `:bind_quoted` - passes a binding to the macro. Whenever a binding is
+      given, `unquote/1` is automatically disabled.
 
   ## Quote and macros
 

      ...> end
      {:sum, [], [1, 2, 3]}

  ## Explanation

  Any Elixir code can be represented using Elixir data structures.
  The building block of Elixir macros is a tuple with three elements,

      function call. The third argument may be an atom, which is
      usually a variable (or a local call).

  Besides the tuple described above, Elixir has a few literals that
  are also part of its AST. Those literals return themselves when
  quoted. They are:

      :sum         #=> Atoms
      1            #=> Integers
