private List<OffsetAndDeliveryCount> buildAcquiredRecordList(List<ShareFetchResponseData.AcquiredRecords> partitionAcquiredRecords) {
        List<OffsetAndDeliveryCount> acquiredRecordList = new LinkedList<>();
        partitionAcquiredRecords.forEach(acquiredRecords -> {
            for (long offset = acquiredRecords.firstOffset(); offset <= acquiredRecords.lastOffset(); offset++) {
                acquiredRecordList.add(new OffsetAndDeliveryCount(offset, acquiredRecords.deliveryCount()));
            }
        });
        return acquiredRecordList;
    }
{@link ShareCompletedFetch} represents a {@link RecordBatch batch} of {@link Record records}
that was returned from the broker via a {@link ShareFetchRequest}. It contains logic to maintain
state between calls to {@link #fetchRecords(Deserializers, int, boolean)}. Although it has
similarities with {@link CompletedFetch}, the details are quite different, such as not needing
to keep track of aborted transactions or the need to keep track of fetch position.
clients/src/main/java/org/apache/kafka/clients/consumer/internals/ShareCompletedFetch.java