anchor.diff:  %%--------------------------------------------------------------------
   -spec get_link_doc(model_behaviour:model_config(), binary(), DocKey :: datastore:ext_key(),
       MainDocKey :: datastore:ext_key()) -> {ok, datastore:document()} | datastore:generic_error().
  -get_link_doc(#model_config{link_store_level = ?GLOBAL_ONLY_LEVEL} = ModelConfig, BucketOverride, DocKey, MainDocKey) ->
  +get_link_doc(#model_config{link_store_level = L} = ModelConfig, BucketOverride, DocKey, MainDocKey)
  +    when L =:= ?GLOBAL_ONLY_LEVEL; L =:= ?LOCAL_ONLY_LEVEL ->
       direct_link_call(get_link_doc, ModelConfig, MainDocKey, [BucketOverride, DocKey]);
   get_link_doc(#model_config{name = ModelName} = ModelConfig, BucketOverride, DocKey, MainDocKey) ->
       direct_link_call(get_link_doc, ModelConfig, MainDocKey, [BucketOverride, DocKey], {error, {not_found, ModelName}}).
  
positive.code: %%--------------------------------------------------------------------
  -spec exists_link_doc(model_behaviour:model_config(), datastore:ext_key(), links_utils:scope()) ->
      {ok, boolean()} | datastore:generic_error().
  exists_link_doc(#model_config{link_store_level = ?GLOBAL_ONLY_LEVEL} = ModelConfig, DocKey, Scope) ->
      direct_link_call(exists_link_doc, ModelConfig, DocKey, [DocKey, Scope]);
  exists_link_doc(ModelConfig, DocKey, Scope) ->
      direct_link_call(exists_link_doc, ModelConfig, DocKey, [DocKey, Scope], {ok, false}).
  
negative.code:     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 = 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),
  