void (String tagName) { boolean freeMakerTag = !tagName.isEmpty() && '#' == tagName.charAt(0); do { final IElementType tt = token(); if (freeMakerTag) { if (tt == XmlTokenType.XML_EMPTY_ELEMENT_END || tt == XmlTokenType.XML_TAG_END || tt == XmlTokenType.XML_END_TAG_START || tt == XmlTokenType.XML_START_TAG_START) { break; } advance(); } else { if (tt == XmlTokenType.XML_NAME) { parseAttribute(); } else if (tt == XmlTokenType.XML_CHAR_ENTITY_REF || tt == XmlTokenType.XML_ENTITY_REF_TOKEN) { parseReference(); } else if (hasCustomTagHeaderContent()) { parseCustomTagHeaderContent(); } else { break; } } } while (!eof()); }