internal AmlNavigator(IReadOnlyElement elem) { var parents = new List <IReadOnlyElement>() { elem }; var curr = elem; while (curr.Parent.Exists && !string.IsNullOrEmpty(curr.Parent.Name)) { parents.Add(curr.Parent); curr = curr.Parent; } parents.Reverse(); _stack.Push(new ElementList(parents[0])); _stack.Peek().MoveNext(); for (var i = 1; i < parents.Count; i++) { var list = new ElementList(parents[i - 1].Elements()); list.MoveTo(parents[i]); _stack.Push(list); } SetCurrent(_stack.Peek().Current); }