   """
   @spec copy!(Path.t, Path.t, pos_integer | :infinity) :: non_neg_integer | no_return
   def copy!(source, destination, bytes_count \\ :infinity) do
-    source = IO.chardata_to_string(source)
-    destination = IO.chardata_to_string(destination)
     case copy(source, destination, bytes_count) do
       {:ok, bytes_count} -> bytes_count
       {:error, reason} ->
         raise File.CopyError, reason: reason, action: "copy",
-          source: source, destination: destination
+          source: IO.chardata_to_string(source), destination: IO.chardata_to_string(destination)
     end
   end
 

    case cwd() do
      {:ok, cwd} -> cwd
      {:error, reason} ->
          raise File.Error, reason: reason, action: "get current working directory"
    end
  end


  """
  @spec mkdir!(Path.t) :: :ok | no_return
  def mkdir!(path) do
    case mkdir(path) do
      :ok -> :ok
      {:error, reason} ->
        raise File.Error, reason: reason, action: "make directory",
          path: IO.chardata_to_string(path)
    end
  end

