 
   @doc """
   Returns the current file name as a binary.
+
   Although the file can be accessed in the `__ENV__`, this macro
   is a convenient shortcut.
   """

  defmacro :<<>>.(args)

  @doc """
  `alias` is used to setup atom aliases, often useful with modules names.

  ## Examples


  defmacro unquote(name)(expr)

  @doc """
  Internal special form for modifying scope information.

  Used when `quote` is invoked with `location: :keep` to execute
  a given block as if it belonged to another file.

      quote location: :keep, do: 1
      #=> { :__scope__, [line: 1], [[file: "iex"],[do: 1]] }

  Check `quote/2` for more information.
  """
  defmacro __scope__(opts, args)

  @doc """
  Internal special form to hold aliases information.

  It is usually compiled to an atom:

      iex> quote do: Foo.Bar
      {:__aliases__, [alias: false], [:Foo, :Bar]}

  Elixir represents `Foo.Bar` as `__aliases__` so calls can be
  unambiguously identified by the operator `:.`. For example:

      iex> quote do: Foo.bar
      {{:., [], [{:__aliases__, [alias: false], [:Foo]}, :bar]}, [], []}

  Whenever an expression iterator sees a `:.` as the tuple key,
  it can be sure that it represents a call and the second argument
