anchor.diff:  %% @end
   %%--------------------------------------------------------------------
   -spec ensure_authorized_readdir(user_ctx:ctx(), file_ctx:ctx(),
  -    [fslogic_access:requirement()]
  -) ->
  -    {subpath, file_ctx:ctx()} |
  -    {ancestor, file_ctx:ctx(), children_list()}.
  +    [fslogic_access:requirement()]) -> relation_ctx().
   ensure_authorized_readdir(UserCtx, FileCtx0, AccessRequirements) ->
       FileCtx1 = fslogic_access:assert_granted(
           UserCtx, FileCtx0, AccessRequirements
       ),
  -    check_data_and_cache_constraints(UserCtx, FileCtx1, true).
  +    check_and_cache_data_constraints(UserCtx, FileCtx1, true).
   
   
   %%%===================================================================
  
positive.code: 
  
  %% @private
  -spec check_and_cache_data_constraints(user_ctx:ctx(), file_ctx:ctx(), allowed_paths(),
      allowed_guids(), AllowAncestorsOfPaths :: boolean()
  ) ->
      {subpath, file_ctx:ctx()} |
      {ancestor, file_ctx:ctx(), children_list()} |
      no_return().
  check_and_cache_data_constraints(_UserCtx, FileCtx, all, all, _) ->
      {subpath, FileCtx};
  check_and_cache_data_constraints(
  
negative.code: %%--------------------------------------------------------------------
  %% @doc
  %% Checks access to specified file and verifies data caveats.
  %% AllowAncestorsOfPaths means that permission can be granted not only
  %% for files in subpaths allowed by caveats but also for their ancestors.
  %% @end
  %%--------------------------------------------------------------------
  -spec ensure_authorized(user_ctx:ctx(), file_ctx:ctx(),
  