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(")*");
    }
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 ')'
src/nu/validator/gnu/xml/aelfred2/XmlParser.java