private ArrayIter readNextPage(ArrayIter buffer) throws DecoderException {
		if (asNeededStream == null) {
			throw new DecoderException("Unexpected end of stream");
		}
		currentBuffer = new ArrayIter();
		buffer.next = currentBuffer;
		currentBuffer.array = new byte[BUFFER_SIZE];
		try {
			currentPos = readPage(asNeededStream, currentBuffer);
		}
		catch (IOException e) {
			throw new DecoderException(e.getMessage());
		}
		if (currentPos < BUFFER_SIZE) {
			pad();
		}
		return buffer.next;
	}
Read the next page of data.  The new ArrayIter is added to the linked list, its
byte buffer is allocated, and data is read into the buffer.
If the end of stream is reached, padding is added.
@param buffer is the ArrayIter currently at the end of the linked list
@return the newly allocated ArrayIter
@throws DecoderException if there are errors reading from the stream
Ghidra/Framework/SoftwareModeling/src/main/java/ghidra/program/model/pcode/LinkedByteBuffer.java