anchor.diff:      end.
   
   show_started_childs(Prefix, SupRef) ->
  -    Childs = supervisor:which_children(SupRef),
  +    Childs = sup_which_children(SupRef),
       show_childs(Prefix, Childs).
   
   show_childs(_Prefix, []) -> ok;
  
positive.code: %%      have been paused by sup_pause_childs/1.
  -spec sup_kill_childs(Supervisor::pid() | atom()) -> ok.
  sup_kill_childs(SupPid) ->
      ChildSpecs = supervisor:which_children(SupPid),
      _ = [ try
                case Type of
                    supervisor -> sup_kill_childs(Pid);
  
negative.code:                   Pid =/= undefined, is_process_alive(Pid) ],
      ok.
  
  -spec sup_get_all_children(Supervisor::pid() | atom()) -> [pid()].
  sup_get_all_children(Supervisor) ->
      AllChilds = [X || X = {_, Pid, _, _} <- sup_which_children(Supervisor),
                        Pid =/= undefined],
      WorkerChilds = [Pid ||  {_Id, Pid, worker, _Modules} <- AllChilds],
      SupChilds = [Pid || {_Id, Pid, supervisor, _Modules} <- AllChilds],
      lists:flatten([WorkerChilds | [sup_get_all_children(S) || S <- SupChilds]]).
  
  %% @doc Hardened version of supervisor:which_children/1 which returns an empty
  %%      list of childs if the supervisor has been killed, e.g. by another
  %%      process.
  -spec sup_which_children(Supervisor::pid() | atom()) ->
            [{Id::term(), Pid::pid | undefined, Type::worker | supervisor,
              Modules::[module()] | dynamic}].
  sup_which_children(Supervisor) ->
      try supervisor:which_children(Supervisor)
      catch exit:{killed, _} -> [];
            exit:{noproc, _} -> []
      end.
  