code: final boolean load(int offset, boolean changeEntity)
  	throws IOException {
  
  	// read characters
  	int length = fCurrentEntity.mayReadChunks?
  	    (fCurrentEntity.ch.length - offset):
  	    (DEFAULT_XMLDECL_BUFFER_SIZE);
  	int count = fCurrentEntity.reader.read(fCurrentEntity.ch, offset,
  					       length);
  
  	// reset count and position
  	boolean entityChanged = false;
  	if (count != -1) {
  	    if (count != 0) {
  		fCurrentEntity.count = count + offset;
  		fCurrentEntity.position = offset;
  	    }
  	}
  
  	// end of this entity
  	else {
  	    fCurrentEntity.count = offset;
  	    fCurrentEntity.position = offset;
  	    entityChanged = true;
  	    if (changeEntity) {
  		endEntity();
  		if (fCurrentEntity == null) {
  		    throw new EOFException();
  		}
  		// handle the trailing edges
  		if (fCurrentEntity.position == fCurrentEntity.count) {
  		    load(0, false);
  		}
  	    }
  	}
  
  	return entityChanged;
  
      }
docs: Loads a chunk of text.
  
  @param offset       The offset into the character buffer to
  read the next batch of characters.
  @param changeEntity True if the load should change entities
  at the end of the entity, otherwise leave
  the current entity in place and the entity
  boundary will be signaled by the return
  value.
  
  @returns Returns true if the entity changed as a result of this
  load operation.