anchor.diff:  info(Name) ->
       Name ! {info, self()},
       receive {reply, Reply} -> Reply end.
  +
  +start_child(Name, ChildSpec) ->
  +    Name ! {start_child, self(), ChildSpec},
  +    receive {reply, Reply} -> Reply end.
  +
  +start_child({M,F,A,Type}) ->
  +    case (catch apply(M,F,A)) of
  +        {ok, Pid} -> {Pid, {M,F,A,Type,[]}, now()};
  +        _ -> {error, cannot_start_child}
  +    end.
  +
  +stop_child(Name, Id) ->
  +    Name ! {stop_child, self(), Id},
  +    receive {reply, Reply} -> Reply end.
  +
  
positive.code: %% child, replacing its entry in the list of children stored in the ChildList variable:
  
  restart_child(Pid, ChildList) ->
      {value, {Pid, {M,F,A,Type,RestartTs}}} = lists:keysearch(Pid, 1, ChildList),
      NewChildList = lists:keydelete(Pid,1,ChildList),
      case Type of
           transient -> NewChildList;
  
negative.code:             From ! {reply, terminate(ChildList)};
          {info, From} ->
              From ! {reply, ChildList},
              loop(ChildList);
          {start_child, From, ChildSpec} ->
              case start_child(ChildSpec) of
                  {Pid, Spec, Id} ->
                      NewChildList = [{Pid, Spec, Id}|ChildList],
                      From ! {reply, Id},
                      loop(NewChildList);
                  {error, cannot_start_child} ->
                      From ! {reply, error},
                      loop(ChildList)
              end;
          {stop_child, From, Id} ->
              case lists:keysearch(Id, 3, ChildList) of
                  {value, {Pid, _Spec, _Id}} -> 
                      unlink(Pid),
                      exit(Pid, kill),
                      From ! {reply, ok},
                      loop(lists:keydelete(Id, 3, ChildList));
                  false -> 
                      From ! {reply, error},
                      loop(ChildList)
              end
      end.
  
  %% We stop the supervisor by calling the synchronous client function stop/0. Upon receiving the 
  