code: private void parseMixed(char[] saved) throws Exception {
          // Check for PCDATA alone.
          skipWhitespace();
          if (tryRead(')')) {
              // VC: Proper Group/PE Nesting
              if (readBuffer != saved) {
                  handler.verror("Illegal Group/PE nesting");
              }
  
              dataBufferAppend(")*");
              tryRead('*');
              return;
          }
  
          // Parse mixed content.
          skipWhitespace();
          while (!tryRead(")")) {
              require('|');
              dataBufferAppend('|');
              skipWhitespace();
              dataBufferAppend(readNmtoken(true));
              skipWhitespace();
          }
  
          // VC: Proper Group/PE Nesting
          if (readBuffer != saved) {
              handler.verror("Illegal Group/PE nesting");
          }
  
          require('*');
          dataBufferAppend(")*");
      }
docs: Parse mixed content.
  
  <pre>
  [51] Mixed ::= '(' S? ( '#PCDATA' (S? '|' S? Name)*) S? ')*'
  | '(' S? ('#PCDATA') S? ')'
  </pre>
  
  @param saved
  Buffer for entity that should have the terminal ')'