code: @Override
    @CheckForSigned
    public int read (@Nonnull final char [] aBuf,
                     @Nonnegative final int nOfs,
                     @Nonnegative final int nLen) throws IOException
    {
      _ensureOpen ();
      ValueEnforcer.isArrayOfsLen (aBuf, nOfs, nLen);
  
      if (nLen == 0)
        return 0;
      if (m_nNext >= m_nLength)
        return -1;
      final int nChars = Math.min (m_nLength - m_nNext, nLen);
      System.arraycopy (m_aChars, m_nNext, aBuf, nOfs, nChars);
      m_nNext += nChars;
      return nChars;
    }
docs: Reads characters into a portion of an array.
  
  @param aBuf
  Destination buffer
  @param nOfs
  Offset at which to start writing characters
  @param nLen
  Maximum number of characters to read
  @return The number of characters read, or -1 if the end of the stream has
  been reached
  @exception IOException
  If an I/O error occurs