anchor.diff:  -record(job, {
       client::reference(),
       worker::reference(),
  -    pid::pid()
  +    client_pid::pid(),
  +    worker_pid::pid()
   }).
   
   -record(st, {
  
positive.code:     {noreply, St}.
  
  terminate(_Reason, St) ->
      ets:foldl(fun(#job{pid=Pid},_) -> exit(Pid,kill) end, nil, St#st.workers),
      ok.
  
  code_change(_OldVsn, {st, Workers}, _Extra) ->
      {ok, #st{workers = Workers}};
  
  code_change(_OldVsn, {st, Workers0, Errors, Limit, Count}, _Extra) ->
      Jobs = [#job{pid=A, worker=B, client=C} || {A, B, {_, C}}
          <- ets:tab2list(Workers0)],
      ets:delete(Workers0),
      State = #st{errors = Errors, error_limit = Limit, error_count = Count},
      ets:insert(State#st.workers, Jobs),
  
negative.code: 
  handle_info({'DOWN', Ref, process, Pid, Error}, #st{workers=Workers} = St) ->
      case find_worker(Ref, Workers) of
      #job{worker_pid=Pid, worker=Ref, client_pid=CPid, client=CRef} =Job ->
          case Error of #error{reason = {_Class, Reason}, stack = Stack} ->
              notify_caller({CPid, CRef}, {Reason, Stack}),
              St1 = save_error(Error, St),
              {noreply, remove_job(Job, St1)};
          _ ->
              notify_caller({CPid, CRef}, Error),
              {noreply, remove_job(Job, St)}
          end;
      false ->
  