anchor.diff:      ref :: reference(),
       pid :: undefined | pid(),
       config = maps:new() :: config(),
  +    overlaykeys = [] :: [term()],
       kill_timer :: undefined | timer:tref()
   }).
   
  
positive.code:     lager:debug("Done applying configuration: ~p", [DeltaConfig]),
      NewConfig = update_config(DeltaConfig, OldConfig),
      Data1 = Data0#data{config = NewConfig},
      {next_state, batching, Data1};
  configuring(info, _EventContent, _Data) ->
      {keep_state_and_data, postpone}.
              
  batching(info, EventContent, _Data) ->
      {keep_state_and_data, {timeout, ?LISTEN_TIMEOUT, {do_configure, EventContent}}};
  batching(timeout, {do_configure, EventContent}, Data) ->
      {next_state, configuring, Data, {next_event, internal, EventContent}}.
  
  %% private API
  
  
negative.code: code_change(_OldVsn, OldState, OldData, _Extra) ->
      {ok, OldState, OldData}.
  
  %%-----------------------------------------------------------------------------------------------------
  %% State transition
  %%----------------------------------------------------------------------------------------------------- 
  %%                                                              lashup_event
  %%                                                               +------+
  %%                                                               |      |
  %%  +--------------+              +-------------+ lashup event +-+------+-+               +------------+
  %%  |              |              |             +      or      |          |               |            |
  %%  |              | lashup_event |             |    timeout1  |          |    reapply    |            |
  %%  | unconfigured +------------> | configuring +------------> | batching +-------------> | reapplying |
  %%  |              |              |             | <------------+          | <-------------+            |
  %%  |              |              |             |    timeout2  |          |  lashup event |            |
  %%  |              |              |             |              |          |      or       |            |
  %%  +--------------+              +-------------+              +----------+    timeout1   +------------+
  %%
  %%------------------------------------------------------------------------------------------------------
  
  unconfigured(info, EventContent, Data) ->
      {next_state, configuring, Data, {next_event, internal, EventContent}}.
  