private NodeExpression(NodeExpression parent, IElement element, ITextIndexer textIndexer) { NodeType = textIndexer.GetIndex(element.TagName); Content = textIndexer.GetIndex(element.TextContent); Parent = parent; Element = element; var children = new NodeExpression[element.Children.Length]; for (int i = 0; i < element.Children.Length; i++) { children[i] = new NodeExpression(this, element.Children[i], textIndexer); } Children = children; _hash = $"[{NodeType}.{Content}.{string.Join(string.Empty, Children.Select(x => x.ToString()))}]"; }