anchor.diff:  % http://www.erlang.org/doc/efficiency_guide/binaryhandling.html
   update(#state{buffer = Buffer} = S) when size(Buffer) =:= 0 ->
       {noreply, S};
  -update(#state{buffer = B,
  +update(#state{task = Task,
  +              buffer = B,
                 parser = P,
                 runtime = RT,
                 worker_send = WS,
                 throttle = T} = S) ->
       case worker_protocol:parse(B, P) of
           {ok, Request, Buffer, PState} ->
  +            proto_log(Task, from, "~p", [Request]),
               S1 = S#state{buffer = Buffer, parser = PState},
               try case worker_runtime:handle(Request, RT) of
                       {ok, Reply, RState} ->
  
positive.code:             Length = list_to_binary(integer_to_list(byte_size(Body))),
              Msg = <<Type/binary, " ", Length/binary, " ", Body/binary, "\n">>,
              port_command(Port, Msg),
              worker_send(Port)
      end.
  
  -spec make_jobhome(jobname(), node()) -> ok.
  
negative.code:                stderr_to_stdout,
                 {env, JobEnvs}],
      Port = open_port({spawn, Command}, Options),
      SendPid = spawn_link(fun() -> worker_send(T, Port) end),
      {noreply, State#state{port = Port, worker_send = SendPid}, ?PID_TIMEOUT}.
  
  
  