void (XmlBuilder builder) { PsiBuilder b = createBuilderAndParse(); FlyweightCapableTreeStructure<LighterASTNode> structure = b.getLightTree(); LighterASTNode root = structure.getRoot(); final Ref<LighterASTNode[]> childrenRef = Ref.create(null); final int count = structure.getChildren(root, childrenRef); LighterASTNode[] children = childrenRef.get(); for (int i = 0; i < count; i++) { LighterASTNode child = children[i]; final IElementType tt = child.getTokenType(); if (tt instanceof IXmlTagElementType) { processTagNode(b, structure, child, builder); } else if (tt == XmlElementType.XML_PROLOG) { processPrologNode(b, builder, structure, child); } } structure.disposeChildren(children, count); }