anchor.diff:  
   
   %% @private
  --spec gen_progress_marker(infinite_log_sentinel:record(), direction(), infinite_log:entry_index()) ->
  +-spec gen_progress_marker(sentinel_record(), direction(), entry_index()) ->
       progress_marker().
   gen_progress_marker(#sentinel{entry_count = EntryCount}, ?FORWARD, EndIndex) when EndIndex >= EntryCount - 1 ->
       done;
  
positive.code: 
  
  %% @private
  -spec assign_entry_indices(
      direction(),
      [infinite_log:entry()],
      infinite_log:entry_index(),
      infinite_log:entry_index()
  ) -> listing_batch().
  assign_entry_indices(?FORWARD, Entries, StartIndex, EndIndex) ->
      lists:zip(lists:seq(StartIndex, EndIndex), Entries);
  assign_entry_indices(?BACKWARD, Entries, StartIndex, EndIndex) ->
  
negative.code: 
  
  %% @private
  -spec index_in_node_of_timestamp(node_record(), non_neg_integer(), direction(), timestamp()) ->
      index_in_node().
  index_in_node_of_timestamp(#node{entries = Entries}, EntriesLength, ?FORWARD, TargetTimestamp) ->
      lists_utils:foldl_while(fun({Timestamp, _}, Index) ->
  