private void readMarkupDecl() throws ParseException, IOException {
    if (isPi())
      readPi();
    else if (isComment())
      readComment();
    else if (isEntityDecl())
      readEntityDecl();
    else if (isSymbol(MARKUPDECL_BEGIN)) { // (element-|Attlist-|Entity-|Notation-)Decl
      while (!isChar('>')) {
        if (isChar('\'', '\"')) {
          char quote = readChar();
          while (!isChar(quote))
            readChar();
          readChar(quote);
        } else
          readChar();
      }
      readChar('>');
    } else
      throw new ParseException(this, "expecting processing instruction, comment, or \"<!\"");
  }