anchor.diff:      start(Fun, []).
   
   start(Fun, Opts) ->
  -    Parent = self(),
  -    PDict = erlang:get(),
  -
       SpawnFun =
           case proplists:get_value(monitor, Opts, false) of
               true ->
  
positive.code:       fun (Msg) ->
                self() ! Msg
        end, lists:reverse(PendingMsgs)).
  
negative.code:                                         erlang:get_stacktrace()}}
                        end,
  
                    Controller ! {Reply, R}
            end),
  
      Type = proplists:get_value(type, Opts, wait),
      async_loop_wait_result(Type, MRef, Child, Reply, []).
  
  maybe_register_with_parent_async(undefined) ->
      ok;
  maybe_register_with_parent_async(Pid) ->
      register_with_parent_async(Pid).
  
  register_with_parent_async(Pid) ->
      controller = get_role(),
      ok = call(Pid, {register_child_async, self()}).
  
  async_loop_wait_result(Type, ParentMRef, Child, Reply, ChildAsyncs) ->
  