anchor.diff:  
   -export([start_link/0]).
   -export([init/1, handle_call/3, handle_cast/2]).
  +
  +-export([test/0]).
   
   -record(info, {id, map, x, y}).
   -record(state, {by_id, by_map}).
  
positive.code: %%
  
  test() ->
  	Info1_1_1 = #info{id=1, map=1, x=1, y=1},
  	Info1_1_2 = #info{id=1, map=1, x=2, y=2},
  	Info1_2_1 = #info{id=1, map=2, x=1, y=1},
  	Info2_1_1 = #info{id=2, map=1, x=1, y=1},
  	Info2_2_2 = #info{id=2, map=2, x=2, y=1},
  	set_info(1, Info1_1_1).
  
  get_info(Id) ->
  	gen_server:call(?MODULE, {get_info, Id}) .
  
  get_info(Id, Default) ->
  	{ok, V} = gen_server:call(?MODULE, {get_info, Id}) ,
  
negative.code: %% Internal
  %%
  
  make_state(ByIdDict, ByMapDict) ->
  	#state{by_id = ByIdDict, by_map = ByMapDict}.
  
  %% move in same map.
  update_all_state(OldValue, NewValue, State)
  	when is_record(OldValue, info),
  		is_record(NewValue, info),
  		OldValue#info.map == NewValue#info.map ->
  
  	#state{by_id = ByIdDict, by_map = ByMapDict} = State,
  	Id = NewValue#info.id,
  	MapId = NewValue#info.map,
  
  	InfoList = get_info_list_by_map(MapId, State),
  	NewInfoList = lists:keystore(Id, 2, InfoList, NewValue),
  
  	NewByMapDict = dict:store(MapId, NewInfoList, ByMapDict),
  	NewByIdDict = dict:store(Id, NewValue, ByIdDict),
  
  	NewState = #state{by_id = NewByIdDict, by_map = NewByMapDict},
  	io:format("~p~n", [NewState]),
  	NewState;
  
  %% move to another map.
  update_all_state(OldValue, NewValue, State) ->
  