 
   Inlined by the compiler into `:erlang.system_time/1`.
   """
-  @spec system_time(:erlang.time_unit) :: integer
+  @spec system_time(time_unit) :: integer
   def system_time(unit) do
     :erlang.system_time(unit)
   end


  Inlined by the compiler into `:erlang.monotonic_time/1`.
  """
  @spec monotonic_time(:erlang.time_unit) :: integer
  def monotonic_time(unit) do
    :erlang.monotonic_time(unit)
  end

  Converts `time` from time unit `from_unit` to time unit `to_unit`. The result
  is rounded via the floor function.

  `convert_time_unit/3` accepts an additional time unit (other than the ones in
  the `time_unit` type): `:native`. `:native` is the time unit used by the
  Erlang runtime system. It's determined when the runtime starts and stays the
  same until the runtime is stopped. To determine what the `:native` unit
  amounts to in a system, you can call this function to convert 1 second to the
  `:native` time unit (i.e., `System.convert_time_unit(1, :seconds, :native)`).

  Inlined by the compiler into `:erlang.convert_time_unit/3`.
  """
  @spec convert_time_unit(integer, time_unit | :native, time_unit | :native) :: integer
  def convert_time_unit(time, from_unit, to_unit) do
    :erlang.convert_time_unit(time, from_unit, to_unit)
  end
