anchor.diff:  
   -behaviour(gen_server).
   
  --export([ start_link/1,
  -          init/1,
  -          handle_call/3,
  -          handle_cast/2,
  -          handle_info/2,
  -          terminate/2,
  -          code_change/3
  +-export([idle_check/1,
  +         ping_timeout/1]).
  +
  +-export([start_link/1,
  +         init/1,
  +         handle_call/3,
  +         handle_cast/2,
  +         handle_info/2,
  +         terminate/2,
  +         code_change/3
           ]).
   
   -define(STATE, of_driver_connection_state).
  
positive.code:                  handler_state           :: term(),
                   pending_msgs            :: term(),
                   xid = 0                 :: integer(),
                   startup_leftovers       :: binary()
                 }).
  
  %%------------------------------------------------------------------
  
  
negative.code:     
  %%------------------------------------------------------------------
  
  handle_cast({send, hello}, State) ->
      Versions = of_driver_utils:conf_default(of_compatible_versions, fun erlang:is_list/1, [3, 4]),
      Msg = of_driver_utils:create_hello(Versions),
      do_send(Msg, State),
      {noreply, State};
  handle_cast(idle_check, State) ->
      NewState = maybe_ping(State),
      {noreply, NewState};
  handle_cast(ping_timeout, State) ->
      close_of_connection(State, ping_timeout).
  
  %%------------------------------------------------------------------
  
  