anchor.diff:  send(Binary, #protocol{handle=H,compress=Z}=P) ->
       case myer_network:send(H, Binary, Z) of
   	{ok, Handle} ->
  -	    {ok, [replace(P,Handle)]};
  +	    {ok, [P#protocol{handle = Handle}]};
   	{error, Reason, Handle} ->
  -	    {error, Reason, replace(P,Handle)}
  +	    {error, Reason, P#protocol{handle = Handle}}
       end.
   
   send(Term, Binary, #protocol{handle=H,compress=Z}=P) ->
       case myer_network:send(H, Binary, Z) of
   	{ok, Handle} ->
  -	    {ok, [Term,replace(P,Handle)]};
  +	    {ok, [Term,P#protocol{handle = Handle}]};
   	{error, Reason, Handle} ->
  -	    {error, Reason, replace(P,Handle)}
  +	    {error, Reason, P#protocol{handle = Handle}}
       end.
   
   %% -- private: sql* --
  
positive.code: recv(#protocol{handle=H,compress=Z}=P, Length) ->
      case myer_network:recv(H, Length, Z) of
          {ok, Binary, Handle} ->
              {ok, Binary, replace(P,Handle)};
          {error, Reason, Handle} ->
              {error, Reason, replace(P,Handle)}
      end.
  
  -spec recv_packed_binary(undefined|binary(),protocol())
  
negative.code: merge(#protocol{}=P, #plugin{name=N}) ->
      P#protocol{plugin = N}.
  
  reset(#protocol{handle=H}=P) ->
      P#protocol{handle = myer_network:reset(H)}.
  
  zreset(#protocol{handle=H}=P) ->
      P#protocol{handle = myer_network:zreset(H)}.
  
  %% -- private: loop,auth --
  
  