anchor.diff:          NewState = State#state{
              busy = Busy2,
              free = Free2,
  -           waiting = Waiting2
  +           waiting = Waiting2,
  +           callers = NewCallers1
           },
           {noreply, NewState};
      false ->
  -        {noreply, State}
  +        {noreply, State#state{callers = NewCallers0}}
      end.
   
   handle_info({'EXIT', Pid, _Reason}, State) ->
  
positive.code:         waiting = Waiting,
          callers = Callers
      } = State,
      demonitor_client(Callers, Pid),
      case Free -- [Pid] of
      Free ->
          case Busy -- [Pid] of
          Busy ->
              {noreply, State};
          Busy2 ->
              case queue:out(Waiting) of
              {empty, _} ->
                  {noreply, State#state{busy = Busy2}};
              {{value, From}, Waiting2} ->
                  {ok, Worker} = ibrowse:spawn_link_worker_process(Url),
                  monitor_client(Callers, Worker, From),
                  gen_server:reply(From, {ok, Worker}),
                  {noreply, State#state{busy = [Worker | Busy2], waiting = Waiting2}}
              end
          end;
      Free2 ->
          {noreply, State#state{free = Free2}}
      end;
  
  handle_info({'DOWN', Ref, process, _, _}, #state{callers = Callers} = State) ->
      case ets:match(Callers, {'$1', Ref}) of
      [] ->
          {noreply, State};
      [[Worker]] ->
          handle_cast({release_worker, Worker}, State)
      end.
  
  code_change(_OldVsn, OldState, _Extra) when tuple_size(OldState) =:= 6 ->
      {ok, erlang:append_element(OldState, ets:new(callers))};
  code_change(_OldVsn, State, _Extra) ->
      {ok, State}.
  
  
negative.code: 
  handle_cast({release_worker, Worker}, State) ->
      #state{waiting = Waiting, callers = Callers} = State,
      NewCallers0 = demonitor_client(Callers, Worker),
      case is_process_alive(Worker) andalso
          lists:member(Worker, State#state.busy) of
      true ->
          case queue:out(Waiting) of
          {empty, Waiting2} ->
              NewCallers1 = NewCallers0,
              Busy2 = State#state.busy -- [Worker],
              Free2 = [Worker | State#state.free];
          {{value, From}, Waiting2} ->
              NewCallers1 = monitor_client(Callers, Worker, From),
              gen_server:reply(From, {ok, Worker}),
              Busy2 = State#state.busy,
              Free2 = State#state.free
  