code: 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;
  	        }
  			//PK33136
  	        strBuffer.append(cbuf, off, len);
  	        nextChar+=len;
  	        //PK33136
  	    }
      }
docs: 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