@Nullable
  @Override
  public MixedFormatRecordWithOffset<T> nextRecordFromSplit() {
    if (position < numberOfRecords) {
      setRecordWithOffset();
      position++;
      return recordWithOffset;
    } else {
      return null;
    }
  }
{@link RecordsWithSplitIds} is used to pass a batch of records from fetcher to source reader.
Batching is to improve the efficiency for records handover.

<p>{@link RecordsWithSplitIds} interface can encapsulate batches from multiple splits. This is
the case for Kafka source where fetchers can retrieve records from multiple Kafka partitions at
the same time.

<p>For file-based sources like Iceberg, readers always read one split/file at a time. Hence, we
will only have a batch of records for one split here.

<p>This class uses array to store a batch of records from the same file (with the same
fileOffset).
amoro-format-mixed/amoro-mixed-flink/amoro-mixed-flink-common/src/main/java/org/apache/amoro/flink/read/hybrid/reader/ArrayBatchRecords.java