code: List<Long> includeUpdateBatch(long segmentId, TableKeyBatch batch, long batchOffset) {
          SegmentKeyCache cache;
          int generation;
          synchronized (this.segmentCaches) {
              generation = this.currentCacheGeneration;
              cache = this.segmentCaches.computeIfAbsent(segmentId, s -> new SegmentKeyCache(s, this.cache));
          }
  
          return cache.includeUpdateBatch(batch, batchOffset, generation);
      }
docs: Updates the tail cache for the given Table Segment with the contents of the given {@link TableKeyBatch}.
  Each {@link TableKeyBatch.Item} is updated only if no previous entry exists with its {@link TableKeyBatch.Item#getHash()}
  or if its {@link TableKeyBatch.Item#getOffset()} is greater than the existing entry's offset.
  
  This method should be used for processing new updates to the Index (as opposed from bulk-loading already indexed keys).
  
  @param segmentId   Segment Id that the {@link TableKeyBatch} Items belong to.
  @param batch       An {@link TableKeyBatch} containing items to accept into the Cache.
  @param batchOffset Offset in the Segment where the first item in the {@link TableKeyBatch} has been written to.
  @return A List of offsets for each item in the {@link TableKeyBatch} (in the same order) of where the latest value
  for that item's Key exists now.