anchor.diff:  %%                                   {stop, Reason, State}
   %% @end
   %%--------------------------------------------------------------------
  +handle_call({add_parent, Parent}, _From, State = #state{parents = Parents}) ->
  +    {reply, ok, State#state{parents = [Parent | Parents]}};
  +
   handle_call(_Request, _From, State) ->
       Reply = ok,
       {reply, Reply, State}.
  
positive.code: %%                     {stop, Reason}
  %% @end
  %%--------------------------------------------------------------------
  init([Parent, {Module, Args}]) ->
      {ok, CState, SubQs} = Module:init(Args),
      Children = [begin
                      {ok, Pid} = start_link({Ref, self()}, Query),
                      {Ref, Pid}
                  end || {Ref, Query} <- ensure_refed(SubQs, [])],
      {ok, #state{
              callback_module = Module,
              callback_state = CState,
              parents = [Parent],
              children = Children
             }}.
  
  
negative.code: start(Pid, Payload) ->
      gen_server:cast(Pid, {start, Payload}).
  
  add_parent(Pid, Ref) ->
      link(Pid),
      gen_server:call(Pid, {add_parent, {Ref, self()}}).
  
  build(Query) ->
      Ref = make_ref(),
      {ok, Pid} = supervisor:start_child(
                    dflow_sup, [{Ref, self()}, Query, dict:new()]),
      receive
          {queries, Ref, _} ->
              ok
      after
          1000 ->
              error(timeout)
      end,
      {ok, Ref, Pid}.
  
  %%%===================================================================
  