anchor.diff:  -spec delete(model_behaviour:model_config(), datastore:ext_key(), datastore:delete_predicate()) ->
       ok | datastore:generic_error().
   delete(#model_config{bucket = Bucket, name = ModelName} = ModelConfig, Key, Pred) ->
  -    datastore:run_transaction(ModelName, synchronization_link_key(ModelConfig, Key),
  +    datastore:run_transaction(ModelName, synchronization_doc_key(ModelConfig, Key),
           fun() ->
               case Pred() of
                   true ->
  
positive.code:         end);
  create_or_update(#model_config{name = ModelName} = ModelConfig, #document{key = Key} = NewDoc, Diff)
      when is_map(Diff) ->
      datastore:run_transaction(ModelName, synchronization_link_key(ModelConfig, Key),
          fun() ->
              case get(ModelConfig, Key) of
                  {error, {not_found, ModelName}} ->
  
negative.code: -spec update(model_behaviour:model_config(), datastore:ext_key(),
      Diff :: datastore:document_diff()) -> {ok, datastore:ext_key()} | datastore:update_error().
  update(#model_config{bucket = _Bucket, name = ModelName} = ModelConfig, Key, Diff) when is_function(Diff) ->
      datastore:run_transaction(ModelName, synchronization_doc_key(ModelConfig, Key),
          fun() ->
              case get(ModelConfig, Key) of
                  {error, Reason} ->
  