       ""
 
   """
-  @spec slice(t, Range.t) :: t
+  @spec slice(t, Range.t()) :: t
 
   def slice(string, range)
 

  def printable?(binary, _) when is_binary(binary), do: false

  defp decrement(:infinity), do: :infinity
  defp decrement(counter),   do: counter - 1

  @doc ~S"""
  Divides a string into substrings at each Unicode whitespace

      ["a", "b", "c", "d"]

  """
  @spec splitter(t, pattern, keyword) :: Enumerable.t()
  def splitter(string, pattern, options \\ []) do
    pattern = maybe_compile_pattern(pattern)
    trim = Keyword.get(options, :trim, false)
    Stream.unfold(string, &do_splitter(&1, pattern, trim))
  end

  defp do_splitter(:nomatch, _pattern, _), do: nil
  defp do_splitter("", _pattern, true), do: nil
  defp do_splitter("", _pattern, false), do: {"", :nomatch}

  defp do_splitter(bin, "", _trim) do
    next_grapheme(bin)
