code: public void write(char cbuf[], int off, int len) throws IOException {
          if (sink == null) {
              throw new IOException("Pipe not connected");
          } else if ((off | len | (off + len) | (cbuf.length - (off + len))) < 0) {
              throw new IndexOutOfBoundsException();
          }
          sink.receive(cbuf, off, len);
      }
docs: Writes <code>len</code> characters from the specified character array
  starting at offset <code>off</code> to this piped output stream.
  This method blocks until all the characters are written to the output
  stream.
  If a thread was reading data characters from the connected piped input
  stream, but the thread is no longer alive, then an
  <code>IOException</code> is thrown.
  
  @param      cbuf  the data.
  @param      off   the start offset in the data.
  @param      len   the number of characters to write.
  @exception  IOException  if the pipe is
  <a href=PipedOutputStream.html#BROKEN> <code>broken</code></a>,
  {@link #connect(java.io.PipedReader) unconnected}, closed
  or an I/O error occurs.