anchor.diff:  %% -----------------------------------------------------------------------------
   %% << sql/auth/sql_authentication.cc : send_server_handshake_packet/3
   %% -----------------------------------------------------------------------------
  -
   recv_handshake(S, #handshake{version=undefined}=H) ->
       {ok, Binary, Socket} = recv(S, <<0>>),
       recv_handshake(Socket, H#handshake{version = binary_to_version(Binary)});
  
positive.code:     {ok, [Handshake,auth_to_binary(User,Password,Database,Handshake,Protocol),Protocol]}.
  
  auth_post(<<254>>, _Handshake, #protocol{}=P) ->
      recv_plugin(P);
  auth_post(<<0>>, _Handshake, #protocol{}=P) ->
      recv_result(P).
  
  
negative.code:     recv_handshake(Socket, H#handshake{plugin = Binary});
  recv_handshake(S, #handshake{plugin=undefined}=H) ->
      recv_handshake(S, H#handshake{plugin = <<"mysql_native_password">>});
  recv_handshake(S, #handshake{caps1=C1,caps2=C2,seed1=S1,seed2=S2}=H) ->
      {ok, [H#handshake{caps = (C2 bsl 16) bor C1, seed = <<S1/binary, S2/binary>>}, S]}.
  
  %% -----------------------------------------------------------------------------
  %% << sql/auth/sql_authentication.cc : send_plugin_request_packet/3
  %% -----------------------------------------------------------------------------
  recv_plugin(S, #plugin{name=undefined}=P) ->
      {ok, Binary, Socket} = recv(S, <<0>>),
      recv_plugin(Socket, P#plugin{name = Binary});
  recv_plugin(S, #plugin{}=P) ->
      {ok, [P,S]}.
  
  %% -----------------------------------------------------------------------------
  %% << sql/sql_prepare.cc : send_prep_stmt/2
  