code: @Override
    public boolean ready () throws IOException
    {
      _ensureOpen ();
  
      /*
       * If newline needs to be skipped and the next char to be read is a newline
       * character, then just skip it right away.
       */
      if (m_bSkipLF)
      {
        /*
         * Note that in.ready() will return true if and only if the next read on
         * the stream will not block.
         */
        if (m_nNextCharIndex >= m_nChars && m_aReader.ready ())
          _fill ();
        if (m_nNextCharIndex < m_nChars)
        {
          if (m_aBuf[m_nNextCharIndex] == '\n')
            m_nNextCharIndex++;
          m_bSkipLF = false;
        }
      }
      return m_nNextCharIndex < m_nChars || m_aReader.ready ();
    }
docs: Tells whether this stream is ready to be read. A buffered character stream
  is ready if the buffer is not empty, or if the underlying character stream
  is ready.
  
  @return <code>true</code> if the reader is ready
  @exception IOException
  If an I/O error occurs