code: protected void finishDTD(boolean copyContents)
          throws XMLStreamException
      {
          /* We know there are no spaces, as this char was read and pushed
           * back earlier...
           */
          char c = getNextChar(SUFFIX_IN_DTD);
          if (c == '[') {
              // Do we need to get contents as text too?
              if (copyContents) {
                  ((BranchingReaderSource) mInput).startBranch(mTextBuffer, mInputPtr, mNormalizeLFs);
              }
  
              try {
                  MinimalDTDReader.skipInternalSubset(this, mInput, mConfig);
              } finally {
                  /* Let's close branching in any and every case (may allow
                   * graceful recovery in error cases in future
                   */
                  if (copyContents) {
                      /* Need to "push back" ']' got in the succesful case
                       * (that's -1 part below);
                       * in error case it'll just be whatever last char was.
                       */
                      ((BranchingReaderSource) mInput).endBranch(mInputPtr-1);
                  }
              }
  
              // And then we need closing '>'
              c = getNextCharAfterWS(SUFFIX_IN_DTD_INTERNAL);
          }
  
          if (c != '>') {
              throwUnexpectedChar(c, "; expected '>' to finish DOCTYPE declaration.");
          }
      }
docs: This method gets called to handle remainder of DOCTYPE declaration,
  essentially the optional internal subset. This class implements the
  basic "ignore it" functionality, but can optionally still store copy
  of the contents to the read buffer.
  <p>
  NOTE: Since this default implementation will be overridden by
  some sub-classes, make sure you do NOT change the method signature.
  
  @param copyContents If true, will copy contents of the internal
  subset of DOCTYPE declaration
  in the text buffer; if false, will just completely ignore the
  subset (if one found).