anchor.diff:  %% ====================================================================
   
   worker_loop(Parent) ->
  -    Parent ! worker_ready,
  +    Parent ! {worker_ready, self()},
       receive
           {compaction, Pid} ->
               Start = now(),
  
positive.code:         true ->
              {reply, already_queued, State};
          false ->
              case State#state.worker_ready of
                  true ->
                      State#state.worker ! {compaction, Pid},
                      {reply, ok, State};
                  false ->
                      NewState = State#state { queue = queue:in(Pid, Q) },
                      {reply, ok, NewState}
              end
      end.
  
  handle_cast(_Msg, State) ->
      {noreply, State}.
  
  handle_info(worker_ready, #state { queue = Q } = State) ->
      case queue:is_empty(Q) of
          true ->
              {noreply, State#state { worker_ready = true }};
          false ->
              {{value, Pid}, NewQ} = queue:out(Q),
              State#state.worker ! {compaction, Pid},
              NewState = State#state { queue=NewQ, worker_ready=false },
              {noreply, NewState}
      end;
  handle_info({'EXIT', Pid, Reason}, #state { worker = Pid } = State) ->
      error_logger:error_msg("Compaction worker PID exited: ~p\n", [Reason]),
      {stop, {compaction_deatch, Reason}, State}.
  
  terminate(_Reason, _State) ->
      ok.
  
negative.code:         _ ->
              %% ignore unknown messages
              ?MODULE:worker_loop(Parent)
      after 1000 ->
              ?MODULE:worker_loop(Parent)
      end.
  
  