void () { PsiBuilder.Marker xmlText = null; while (true) { final IElementType tt = token(); if (tt == null || tt == XML_END_TAG_START) { break; } if (tt == XML_START_TAG_START) { xmlText = terminateText(xmlText); parseTag(false); } else if (tt == XML_PI_START) { xmlText = terminateText(xmlText); parseProcessingInstruction(); } else if (tt == XML_ENTITY_REF_TOKEN) { xmlText = terminateText(xmlText); parseReference(); } else if (tt == XML_CHAR_ENTITY_REF) { xmlText = startText(xmlText); parseReference(); } else if (tt == XML_CDATA_START) { xmlText = startText(xmlText); parseCData(); } else if (isCommentToken(tt)) { xmlText = terminateText(xmlText); parseComment(); } else if (tt == XML_BAD_CHARACTER) { xmlText = startText(xmlText); final PsiBuilder.Marker error = mark(); advance(); error.error(XmlPsiBundle.message("xml.parsing.unescaped.ampersand.or.nonterminated.character.entity.reference")); } else if (tt instanceof ICustomParsingType || tt instanceof ILazyParseableElementType) { xmlText = terminateText(xmlText); advance(); } else { xmlText = startText(xmlText); advance(); } } terminateText(xmlText); }