anchor.diff:  		    Pid ! ssh_connected,
   		    connected_fun(User, Address, Method, Opts),
   		    {next_state, {connected,server},
  -		     State#state{auth_user = User, ssh_params = Ssh#ssh{authenticated = true}}};
  +		     State#data{auth_user = User, ssh_params = Ssh#ssh{authenticated = true}}};
   		{not_authorized, {User, Reason}, {Reply, Ssh}} when Method == "keyboard-interactive" ->
   		    retry_fun(User, Address, Reason, Opts),
   		    send_bytes(Reply, State),
  -		    {next_state, {userauth_keyboard_interactive,server}, State#state{ssh_params = Ssh}};
  +		    {next_state, {userauth_keyboard_interactive,server}, State#data{ssh_params = Ssh}};
   		{not_authorized, {User, Reason}, {Reply, Ssh}} ->
   		    retry_fun(User, Address, Reason, Opts),
   		    send_bytes(Reply, State),
  -		    {next_state, StateName, State#state{ssh_params = Ssh}}
  +		    {next_state, StateName, State#data{ssh_params = Ssh}}
   	    end;
   	false ->
   	    %% At least one non-erlang client does like this. Retry as the next event
  
positive.code: 	    inet:setopts(Socket, [{packet,0}, {mode,binary}, {active, once}, {recbuf, Size}]),
  	    {KeyInitMsg, SshPacket, Ssh} = ssh_transport:key_exchange_init_msg(Ssh1),
  	    send_bytes(SshPacket, S),
  	    {next_state, {kexinit,Role,init}, S#state{ssh_params = Ssh,
  						      key_exchange_init_msg = KeyInitMsg}};
  	not_supported ->
  	    disconnect(
  
negative.code:     {next_state, StateName, State, [postpone]};
  
  handle_event(cast, {adjust_window,ChannelId,Bytes}, StateName={connected,_Role},
  	     #data{connection_state =
  			#connection{channel_cache = Cache}} = State0) ->
      case ssh_channel:cache_lookup(Cache, ChannelId) of
  	#channel{recv_window_size = WinSize,
  