       are still alive
 
   """
-  @spec count_children(supervisor) ::
-        %{specs: non_neg_integer, active: non_neg_integer,
-          supervisors: non_neg_integer, workers: non_neg_integer}
+  @spec count_children(supervisor) :: %{
+          specs: non_neg_integer,
+          active: non_neg_integer,
+          supervisors: non_neg_integer,
+          workers: non_neg_integer
+        }
   def count_children(supervisor) do
-    call(supervisor, :count_children) |> :maps.from_list
+    call(supervisor, :count_children) |> :maps.from_list()
   end
 
   @doc """

      child, you will have to pass a child specification as a map:

          %{
            id: #{inspect module},
            start: {#{inspect module}, :start_link, [arg1, arg2]}
          }

      See the Supervisor documentation for more information.
      """
    else
      "The module #{inspect module} was given as a child to a supervisor but it does not exist."
    end
  end


  # Note we have inlined all types for readability
  @typedoc "The supervisor specification"
  @type child_spec :: %{
          required(:id) => term(),
          required(:start) => {module(), function(), [term()]},
          optional(:restart) => :permanent | :transient | :temporary,
          optional(:shutdown) => :brutal_kill | non_neg_integer() | :infinity,
          optional(:type) => :worker | :supervisor,
          optional(:modules) => [module()] | :dynamic
        }

  @doc """
  Starts a supervisor with the given children.
