anchor.diff:  %% Checks if components of file are present.
   %% @end
   %%--------------------------------------------------------------------
  --spec check_missing_components(file_meta:uuid(), space_info:id(), [component()], [component()]) ->
  +-spec check_missing_components(file_meta:uuid(), od_space:id(), [component()], [component()]) ->
       [component() | {parent_links_partial, {file_meta:uuid(), file_meta:name(), file_meta:uuid()}}].
   check_missing_components(_FileUuid, _SpaceId, [], Found) ->
       Found;
  
positive.code: %% notify waiting processes.
  %% @end
  %%--------------------------------------------------------------------
  -spec check_and_add_components(file_meta:uuid(), space_info:id(), [component()]) -> ok.
  check_and_add_components(FileUuid, SpaceId, Components) ->
      FoundComponents = check_missing_components(FileUuid, SpaceId, Components),
      add_components_and_notify(FileUuid, FoundComponents).
  
negative.code: model_init/0, 'after'/5, before/4]).
  
  -type id() :: file_meta:id().
  -type component() :: file_meta | local_file_location | parent_links | link_to_parent | custom_metadata | times
      | {link_to_child, file_meta:name(), file_meta:uuid()} | {rev, Module :: atom(), Rev :: non_neg_integer()}.
  -type waiting() :: {[component()], pid(), PosthookArguments :: list()}.
  -type restart_posthook() :: Args:: list() | {Module :: atom(), Function:: atom(), Args:: list()}.
  