anchor.diff:  -export([append/2]).
   -export([default_start_index/1]).
   -export([list_and_postprocess/3]).
  +-export([browse_content/2]).
   
   %% datastore_model callbacks
   -export([get_ctx/0]).
  
positive.code: -type entry_index() :: binary().
  -type entry_content() :: json_utils:json_map().
  -type entry() :: {entry_index(), {infinite_log:timestamp(), entry_content()}}.
  
  %% Redefinition of infinite log browser listing opts to allow binary indices
  %% and listing exclusively from an index.
  %% @formatter:off
  -type listing_opts() :: #{
      direction => infinite_log_browser:direction(),
      start_from => undefined |
  
negative.code:     offset => infinite_log_browser:offset(),
      limit => infinite_log_browser:limit()
  }.
  % @formatter:on
  
  % Mapping function that will be applied to each listed infinite log
  % entry before the result is returned.
  -type listing_postprocessor(MappedEntry) :: fun((entry()) -> MappedEntry).
  
  -export_type([id/0, entry_index/0, entry/0, browse_result/0, listing_opts/0, listing_postprocessor/1]).
  
  -define(CTX, #{model => ?MODULE}).
  
  