anchor.diff:  
   -define(SERVER, ?MODULE).
   
  --record(state, {cache}).
  +-record(state, {}).
   
   %%%===================================================================
   %%% API
   %%%===================================================================
  --spec(get() ->
  -  {ok, [#device_state{}]} | {error, string()}).
  -get() ->
  -  gen_server:call(?SERVER, {get}).
  -
  --spec(get(DeviceId :: integer()) ->
  -  {ok, DeviceState :: #device_state{}} | {error, string()}).
  -get(DeviceId) ->
  -  gen_server:call(?SERVER, {get, DeviceId}).
  -
  --spec(link(DeviceState :: #device_state{}) ->
  -  {ok, DeviceState :: #device_state{}} | {error, string()}).
  -link(DeviceState) ->
  -  gen_server:call(?SERVER, {link, DeviceState}).
  -
  --spec(unlink(DeviceState :: #device_state{}) ->
  -  {ok, DeviceState :: #device_state{}} | {error, string()}).
  -unlink(DeviceState) ->
  -  gen_server:call(?SERVER, {unlink, DeviceState}).
  -
   -spec(execute(Command :: #command{}) ->
     {ok, Command :: #command{}} | {error, string()}).
   execute(Command) ->
  
positive.code: -export([start_link/0]).
  
  -export([
    get/0,
    get/1,
    link/1,
    unlink/1,
    execute/1
  ]).
  
  
negative.code: %%%===================================================================
  %%% Internal functions
  %%%===================================================================
  
  do_execute_command(State, Command) ->
    {reply, em_proc:send(Command#command.deviceId, {command, Command}), State}.
  