   `{:error, :enotsup}`.
   """
   @since "1.5.0"
+  @spec ln_s(Path.t(), Path.t()) :: :ok | {:error, posix}
   def ln_s(existing, new) do
     :file.make_symlink(IO.chardata_to_string(existing), IO.chardata_to_string(new))
   end

  See `Stream.run/1` for an example of streaming into a file.

  """
  def stream!(path, modes \\ [], line_or_bytes \\ :line) do
    modes = normalize_modes(modes, true)
    File.Stream.__build__(IO.chardata_to_string(path), modes, line_or_bytes)

  Returns `:ok` otherwise
  """
  @since "1.5.0"
  @spec ln!(Path.t(), Path.t()) :: :ok | no_return
  def ln!(existing, new) do
    case ln(existing, new) do
      :ok ->
