anchor.diff:    %% gen_server.
   
   
  +cancel(Pid,Options) ->
  +  gen_server:call(Pid,{cancel,Options}).
  +
   yield(Pid,Options,Arguments,ArgumentsKw) ->
  -  gen_server:cast(Pid,{yield,Options,Arguments,ArgumentsKw}).
  +  gen_server:cast(Pid,{yield,Options,Arguments,ArgumentsKw,self()}).
   
   error(Pid,Details,ErrorUri,Arguments,ArgumentsKw) ->
  -  gen_server:cast(Pid,{error,Details,ErrorUri,Arguments,ArgumentsKw}).
  +  gen_server:cast(Pid,{error,Details,ErrorUri,Arguments,ArgumentsKw,self()}).
   
   init(Args) ->
     case check_and_create_state(Args) of
  
positive.code: 
  
  %% API
  -export([yield/4]).
  -export([error/5]).
  
  
negative.code:   end.
  
  
  handle_call({cancel,_Options},_From, #state{canceled=false, callee_pids=Callees}=State) ->
    send_message_to({interrupt,set_request_id,[{invocation_pid,self()}]},Callees),
    {reply,ok,State#state{canceled=true}};
  handle_call(stop, _From, State) ->
  	{stop,normal,{ok,stopped},State};
  handle_call(_Request, _From, State) ->
  	{reply, ignored, State}.
  
  
  
  handle_cast({yield,Options,Arguments,ArgumentsKw,CalleePid}, #state{caller_pid=Pid,call_req_id=RequestId,callee_pids=Callees}=State) ->
    case lists:keyfind(progress,1,Options) of
      {progress,true} ->
        send_message_to({result, RequestId, [{progress,true}], Arguments, ArgumentsKw},Pid),
        {noreply,State};
      _ ->
        send_message_to({result, RequestId, [], Arguments, ArgumentsKw},Pid),
        case lists:delete(CalleePid,Callees) of
          [] ->
            {stop,normal,State#state{callee_pids=[]}};
          NewCallees ->
            {noreply,State#state{callee_pids=NewCallees}}
        end
    end;
  handle_cast({error,Details,ErrorUri,Arguments,ArgumentsKw,CalleePid},#state{caller_pid=Pid,call_req_id=RequestId, callee_pids=Callees}=State) ->
    send_message_to({error, call, RequestId, Details, ErrorUri, Arguments, ArgumentsKw},Pid),
    case lists:delete(CalleePid,Callees) of
      [] ->
        {stop,normal,State#state{callee_pids=[]}};
      NewCallees ->
        {noreply,State#state{callee_pids=NewCallees}}
    end;
  handle_cast(_Request, State) ->
  	{noreply, State}.
  
  