 
     * `:warnings_as_errors` - cause compilation to fail when warnings are
       generated
-
+  
+  It returns the new list of compiler options.
+
+  ## Examples
+
+      Code.compiler_options(debug_info: true)
+      #=> [debug_info: true, docs: true, warnings_as_errors: false]
+    
   """
   def compiler_options(opts) do
     {opts, bad} = Keyword.split(opts, available_compiler_options)

  module uses this function to check if a specific parser exists for a given
  URI scheme.

  ## `Code.ensure_compiled/1`

  Elixir also contains an `ensure_compiled/1` function that is a
  superset of `ensure_loaded/1`.

  The modules defined in the file are not removed;
  calling this function only removes them from the list,
  allowing them to be required again.
 
  ## Examples

      # Load Eex Test code, Unload file, Check for functions still available
      Code.load_file("../eex/test/eex_test.exs")
      Code.unload_files(Code.loaded_files) 
      Kernel.function_exported?(EExTest.Compiled, :before_compile, 0) #=> true
      

  """
  def unload_files(files) do
    :elixir_code_server.cast {:unload_files, files}
  end

  @doc """
  Appends a path to the end of the Erlang VM code path list. This is the list of
  directories the Erlang VM uses for finding module code.

  The path is expanded with `Path.expand/1` before being appended.
  If this path does not exist, an error is returned.

  ## Examples

      Code.append_path(".") #=> true

      Code.append_path("/does_not_exist") #=> {:error, :bad_directory}

  """
  def append_path(path) do
    :code.add_pathz(to_char_list(Path.expand path))
  end

  @doc """
  Prepends a path to the begining of the Erlang VM code path list. This is the list of
  directories the Erlang VM uses for finding module code.

  The path is expanded with `Path.expand/1` before being prepended.
  If this path does not exist, an error is returned.


  ## Examples

      Code.prepend_path(".") #=> true

      Code.prepend_path("/does_not_exist") #=> {:error, :bad_directory}
     
  """
  def prepend_path(path) do
    :code.add_patha(to_char_list(Path.expand path))
  end

  @doc """
  Deletes a path from the Erlang VM code path list. This is the list of
  directories the Erlang VM uses for finding module code.

  The path is expanded with `Path.expand/1` before being deleted. If the
  path does not exist it returns false.

  ## Examples
    
      Code.prepend_path(".")
      Code.delete_path(".") #=> true

      Code.delete_path("/does_not_exist") #=> false
       
  """
  def delete_path(path) do
    :code.del_path(to_char_list(Path.expand path))
