       #=> false
 
   """
+  @spec delete_path(Path.t()) :: boolean
   def delete_path(path) do
     :code.del_path(to_charlist(Path.expand(path)))
   end

      #=> {:error, :bad_directory}

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

  """
  @doc_kinds [:docs, :moduledoc, :callback_docs, :type_docs, :all]

  @spec get_docs(module, :moduledoc) :: {line :: pos_integer, doc :: false | binary} | nil
  @spec get_docs(module, :docs) :: [{function, line, kind, list, doc}] | nil
        when function: {atom, arity}, line: pos_integer, kind: atom, doc: nil | false | binary
  @spec get_docs(module, :callback_docs) :: [{callback, line, kind, doc}] | nil
        when callback: {atom, arity}, line: pos_integer, kind: atom, doc: nil | false | binary
  @spec get_docs(module, :type_docs) :: [{type, line, kind, doc}] | nil
        when type: {atom, arity}, line: pos_integer, kind: atom, doc: nil | false | binary
  @spec get_docs(module, :all) :: keyword | nil
  def get_docs(module, kind)

  def get_docs(module, kind) when is_atom(module) and kind in @doc_kinds do
    case :code.get_object_code(module) do
      {_module, bin, _beam_path} -> do_get_docs(bin, kind)
