void (boolean topLevel) { if (!topLevel && myBuilder.rawLookup(0) != XML_WHITE_SPACE) { myBuilder.error(XmlPsiBundle.message("dtd.parser.message.whitespace.expected")); } else if (!topLevel) { final IElementType tokenType = myBuilder.getTokenType(); String tokenText; if (tokenType != XML_LEFT_PAREN && tokenType != XML_ENTITY_REF_TOKEN && tokenType != XML_CONTENT_ANY && tokenType != XML_CONTENT_EMPTY && (tokenType != XML_NAME || ( !("-".equals(tokenText = myBuilder.getTokenText())) && !"O".equals(tokenText))) // sgml compatibility ) { PsiBuilder.Marker spec = myBuilder.mark(); spec.done(XML_ELEMENT_CONTENT_SPEC); myBuilder.error(XmlPsiBundle.message("dtd.parser.message.left.paren.or.entityref.or.empty.or.any.expected")); return; } } PsiBuilder.Marker spec = myBuilder.mark(); parseElementContentSpecInner(topLevel); spec.done(XML_ELEMENT_CONTENT_SPEC); }