bundles/org.apache.jasper.glassfish/src/org/apache/jasper/runtime/BodyContentImpl.java
public void write(char[] cbuf, int off, int len) throws IOException {
	if (writer != null) {
	    writer.write(cbuf, off, len);
	} else {
	    ensureOpen();

	    if ((off < 0) || (off > cbuf.length) || (len < 0) ||
		((off + len) > cbuf.length) || ((off + len) < 0)) {
		throw new IndexOutOfBoundsException();
	    } else if (len == 0) {
		return;
	    } 
	    
	    if (len >= bufferSize - nextChar)
		reAllocBuff (len);
	    
	    System.arraycopy(cbuf, off, cb, nextChar, len);
	    nextChar+=len;
	}
    }
public void write(char[] cbuf, int off, int len) throws IOException {
	if (writer != null) {
	    writer.write(cbuf, off, len);
	} else {
	    ensureOpen();

	    if ((off < 0) || (off > cbuf.length) || (len < 0) ||
		((off + len) > cbuf.length) || ((off + len) < 0)) {
		throw new IndexOutOfBoundsException();
	    } else if (len == 0) {
		return;
	    } 
	    
	    if (len >= bufferSize - nextChar)
		reAllocBuff (len);
	    
	    System.arraycopy(cbuf, off, cb, nextChar, len);
	    nextChar+=len;
	}
    }
Write a portion of an array of characters.

<p> Ordinarily this method stores characters from the given array into
this stream's buffer, flushing the buffer to the underlying stream as
needed.  If the requested length is at least as large as the buffer,
however, then this method will flush the buffer and write the characters
directly to the underlying stream.  Thus redundant
<code>DiscardableBufferedWriter</code>s will not copy data
unnecessarily.

@param cbuf A character array
@param off Offset from which to start reading characters
@param len Number of characters to write