public bool release() { if (mRootNode != null) { Stack <MarkupNode> stackNode = new Stack <MarkupNode>(); stackNode.Push(mRootNode); { while (stackNode.Count() > 0) { MarkupNode node = stackNode.Peek(); List <MarkupNode> listNode = node.getChildList(); if (listNode.Count() > 0) { stackNode.Push(listNode[0]); continue; } MarkupNode nodeDiscard = stackNode.Pop(); if (stackNode.Count() > 0) { MarkupNode nodeParent = stackNode.Peek(); nodeParent.removeChild(0); } nodeDiscard.release(); nodeDiscard = null; } } stackNode.Clear(); stackNode = null; mRootNode = null; } return(true); }