docs: private boolean fillBuffer(int offset) throws IOException {
  		int maxReadLength = this.readBuffer.length - offset;
  		// special case for reading the whole split.
  		if (this.splitLength == FileInputFormat.READ_WHOLE_SPLIT_FLAG) {
  			int read = this.stream.read(this.readBuffer, offset, maxReadLength);
  			if (read == -1) {
  				this.stream.close();
  				this.stream = null;
  				return false;
  			} else {
  				this.readPos = offset;
  				this.limit = read;
  				return true;
  			}
  		}
  		
  		// else ..
  		int toRead;
  		if (this.splitLength > 0) {
  			// if we have more data, read that
  			toRead = this.splitLength > maxReadLength ? maxReadLength : (int) this.splitLength;
  		}
  		else {
  			// if we have exhausted our split, we need to complete the current record, or read one
  			// more across the next split.
  			// the reason is that the next split will skip over the beginning until it finds the first
  			// delimiter, discarding it as an incomplete chunk of data that belongs to the last record in the
  			// previous split.
  			toRead = maxReadLength;
  			this.overLimit = true;
  		}
  
  		int read = this.stream.read(this.readBuffer, offset, toRead);
  
  		if (read == -1) {
  			this.stream.close();
  			this.stream = null;
  			return false;
  		} else {
  			this.splitLength -= read;
  			this.readPos = offset; // position from where to start reading
  			this.limit = read + offset; // number of valid bytes in the read buffer
  			return true;
  		}
  	}