anchor.diff:      fun((datastore:link_name(), datastore:link_target(), Acc :: term()) -> Acc :: term()), AccIn :: term()) ->
       {ok, Acc :: term()} | datastore:link_error().
   % TODO - implementation base on old implementation from datastore - refactor when local cache is finished
  -foreach_link(#model_config{link_store_level = ?GLOBAL_ONLY_LEVEL} = ModelConfig, Key, Fun, AccIn) ->
  +foreach_link(#model_config{link_store_level = L} = ModelConfig, Key, Fun, AccIn)
  +    when L =:= ?GLOBAL_ONLY_LEVEL; L =:= ?LOCAL_ONLY_LEVEL ->
       direct_call(foreach_link, ModelConfig, Key, [Key, Fun, AccIn]);
   foreach_link(MC, Key, Fun, AccIn) ->
       Node = get_hashing_node(MC, Key),
  
positive.code: %%--------------------------------------------------------------------
  -spec fetch_link(model_behaviour:model_config(), datastore:ext_key(), datastore:link_name()) ->
      {ok, datastore:link_target()} | datastore:link_error().
  fetch_link(#model_config{link_store_level = ?GLOBAL_ONLY_LEVEL} = ModelConfig, Key, LinkName) ->
      direct_link_call(fetch_link, ModelConfig, Key, [Key, LinkName]);
  fetch_link(ModelConfig, Key, LinkName) ->
      direct_link_call(fetch_link, ModelConfig, Key, [Key, LinkName], {error, link_not_found}).
  
negative.code: %%--------------------------------------------------------------------
  -spec get(model_behaviour:model_config(), datastore:ext_key()) ->
      {ok, datastore:document()} | datastore:get_error().
  get(#model_config{store_level = L} = ModelConfig, Key)
      when L =:= ?GLOBAL_ONLY_LEVEL; L =:= ?LOCAL_ONLY_LEVEL ->
      direct_call(get, ModelConfig, Key, [Key]);
  get(#model_config{name = MN} = ModelConfig, Key) ->
      direct_call(get, ModelConfig, Key, [Key], {error, {not_found, MN}}).
  