private void CollectInterestingNodes(List <IAXNode> collection, IAXNode node, bool insideControl) { if (node.IsInteresting(insideControl)) { collection.Add(node); } if (node.IsLeafNode()) { return; } insideControl = insideControl || node.IsControl(); foreach (var child in node.Children) { CollectInterestingNodes(collection, child, insideControl); } }
private SerializedAXNode[] SerializeTree(IAXNode node, ICollection <IAXNode> whitelistedNodes = null) { var children = new List <SerializedAXNode>(); foreach (var child in node.Children) { children.AddRange(SerializeTree(child, whitelistedNodes)); } if (whitelistedNodes?.Contains(node) == false) { return(children.ToArray()); } var serializedNode = node.Serialize(); if (children.Count > 0) { serializedNode.Children = children.ToArray(); } return(new[] { serializedNode }); }