code: private boolean fillBuffer(int minimum) throws IOException, KriptonRuntimeException {
  		// If we've exhausted the current content source, remove it
  		while (nextContentSource != null) {
  			if (position < limit) {
  				throw new KriptonRuntimeException("Unbalanced entity!", true, this.getLineNumber(), this.getColumnNumber(), getPositionDescription(), null);
  			}
  			popContentSource();
  			if (limit - position >= minimum) {
  				return true;
  			}
  		}
  
  		// Before clobbering the old characters, update where buffer starts
  		for (int i = 0; i < position; i++) {
  			if (buffer[i] == '\n') {
  				bufferStartLine++;
  				bufferStartColumn = 0;
  			} else {
  				bufferStartColumn++;
  			}
  		}
  
  		if (bufferCapture != null) {
  			bufferCapture.append(buffer, 0, position);
  		}
  
  		if (limit != position) {
  			limit -= position;
  			System.arraycopy(buffer, position, buffer, 0, limit);
  		} else {
  			limit = 0;
  		}
  
  		position = 0;
  		int total;
  		while ((total = reader.read(buffer, limit, buffer.length - limit)) != -1) {
  			limit += total;
  			if (limit >= minimum) {
  				return true;
  			}
  		}
  		return false;
  	}
docs: Returns true once {@code limit - position >= minimum}. If the data is
  exhausted before that many characters are available, this returns false.
  
  @param minimum the minimum
  @return true, if successful
  @throws IOException Signals that an I/O exception has occurred.
  @throws KriptonRuntimeException the kripton runtime exception