anchor.diff:  connect_opt(C, clean_session) ->
       C#connect{ clean_session = true };
   connect_opt(C, {clean_session, B}) ->
  -    C#connect{ clean_session = B }.
  +    C#connect{ clean_session = B };
  +connect_opt(C, {keep_alive, K}) ->
  +    C#connect{ keep_alive = K }.
   
   -type(publish_option() ::
           retain
  
positive.code:     | {will, topic(), payload(), qos_level(), boolean()}
      | {will, topic(), payload()}
      | {clean_session, boolean()}
      | clean_session).
  
  -spec(connect_opt(#connect{}, connect_option()) -> #connect{}).
  connect_opt(C, {client_id, Id}) ->
  
negative.code: init([Address, ClientId, ConnectOpts, Receiver]) ->
      Monitor = monitor(process, Receiver),
      CleanSession = proplists:get_value(clean_session, ConnectOpts, true),
      KeepAlive = proplists:get_value(keep_alive, ConnectOpts, 0),
      {ok, unopened, #state{
             connect_args = {Address, ClientId, ConnectOpts},
             clean_session = CleanSession,
             receiver = Receiver,
             receiver_monitor = Monitor,
             keep_alive = KeepAlive
            }}.
  
  %% states
  