anchor.diff:      {noreply, NewState :: #state{}, timeout() | hibernate} |
       {stop, Reason :: term(), Reply :: term(), NewState :: #state{}} |
       {stop, Reason :: term(), NewState :: #state{}}).
  -handle_call({iterate, Iterator, Acc}, _From, #state{root = Root} = State) ->
  +handle_call({iterate, Iterator, Acc}, _From, #state{cache = Root} = State) ->
       {reply, ehome_vtree:iterate_subs(Iterator, Acc, Root), State};
  -handle_call({get_value, Path}, _From, #state{root = Root} = State) ->
  +handle_call({get_value, Path}, _From, #state{cache = Root} = State) ->
       {reply, ehome_vtree:get_value(Path, Root), State};
   handle_call(stop, _From, State) ->
       {stop, normal, ok, State};
  
positive.code:         fun([mqtt, control | Topic], Value) ->
              gen_server:cast(Self, {control_mqtt, Topic, Value})
          end),
      {ok, #state{mqtt = Mqtt, root = ehome_vtree:new()}}.
  
  %%--------------------------------------------------------------------
  %% @private
  
negative.code: 
  -record(state, {
      mqtt :: pid(),
      cache
  }).
  
  %%%===================================================================
  