code: private void readDataChunk() throws SAXException, IOException {
          int count;
  
          // See if we have any overflow (filterCR sets for CR at end)
          if (readBufferOverflow > -1) {
              readBuffer[0] = (char) readBufferOverflow;
              readBufferOverflow = -1;
              readBufferPos = 1;
          } else {
              readBufferPos = 0;
          }
  
          try {
              count = reader.read(readBuffer, readBufferPos, READ_BUFFER_MAX
                      - readBufferPos);
          } catch (CharacterCodingException cce) {
              // 2006-04-25 hsivonen
              fatal("Input data does not conform to the input encoding. The input encoding was "
                      + characterEncoding + ".");
              return; // never happens
          }
          if ((characterHandler != null) && (count > 0)) {
              characterHandler.characters(readBuffer, readBufferPos, count);
          }
          if ((normalizationChecker != null) && (count > 0)) {
              normalizationChecker.characters(readBuffer, readBufferPos, count);
          }
          if (count < 0) {
              readBufferLength = readBufferPos;
          } else {
              readBufferLength = readBufferPos + count;
          }
          if (readBufferLength > 0) {
              filterCR(count >= 0);
          }
      }
docs: Read a chunk of data from an external input source.
  <p>
  This is simply a front-end that fills the rawReadBuffer with bytes, then
  calls the appropriate encoding handler.
  
  @see #characterEncoding
  @see #rawReadBuffer
  @see #readBuffer
  @see #filterCR
  @see #copyUtf8ReadBuffer
  @see #copyIso8859_1ReadBuffer
  @see #copyUcs_2ReadBuffer
  @see #copyUcs_4ReadBuffer