code: @Override
    public D readRecordImpl(@Deprecated D reuse) throws DataRecordException, IOException {
      this.totalRecordCount++;
  
      if (this.statusCount > 0 && this.totalRecordCount % this.statusCount == 0) {
        LOG.info("Total number of records processed so far: " + this.totalRecordCount);
      }
  
      // If records have been read, check the hasNext value, if not then get the next file to process
      if (this.currentFile != null && this.currentFileItr != null) {
        this.hasNext = this.currentFileItr.hasNext();
  
        // If the current file is done, move to the next one
        if (!this.hasNext) {
          getNextFileToRead();
        }
      } else {
        // If no records have been read yet, get the first file to process
        getNextFileToRead();
      }
  
      if (this.hasNext) {
        return this.currentFileItr.next();
      }
  
      LOG.info("Finished reading records from all files");
      return null;
    }
docs: Initializes a list of files to pull on the first call to the method
  Iterates through the file and returns a new record upon each call until
  there are no more records left in the file, then it moves on to the next
  file