void (FlyweightCapableTreeStructure<LighterASTNode> structure, LighterASTNode node, XmlBuilder builder) { final Ref<LighterASTNode[]> childrenRef = Ref.create(null); final int count = structure.getChildren(node, childrenRef); LighterASTNode[] children = childrenRef.get(); for (int i = 0; i < count; i++) { LighterASTNode child = children[i]; IElementType tt = child.getTokenType(); final int start = child.getStartOffset(); final int end = child.getEndOffset(); final CharSequence physical = getTokenText(child); if (XmlTokenType.COMMENTS.contains(tt)) continue; if (tt == XmlTokenType.XML_CDATA_START || tt == XmlTokenType.XML_CDATA_END) { builder.textElement("", physical, start, end); } else if (tt == XmlElementType.XML_CDATA) { processTextNode(structure, child, builder); } else if (tt == XmlTokenType.XML_CHAR_ENTITY_REF) { builder.textElement(new String(new char[] {XmlUtil.getCharFromEntityRef(physical.toString())}), physical, start, end); } else { builder.textElement(physical, physical, start, end); } } structure.disposeChildren(children, count); }