public void AllowsSkippingASubTree() { var ast = Parser.Parse("{ a, b { x }, c }", new ParseOptions { NoLocation = true, }); var visitor = new VisitedNodes(node => (node is Field && (node as Field).Name.Value == "b") ? null : node); visitor.Visit(ast); visitor.Visited.ShouldBeEquivalentTo(ImmutableArray.Create( Tuple.Create(true, NodeType.Document, (object)null), Tuple.Create(true, NodeType.OperationDefinition, (object)null), Tuple.Create(true, NodeType.SelectionSet, (object)null), Tuple.Create(true, NodeType.Field, (object)null), Tuple.Create(true, NodeType.Name, (object)"a"), Tuple.Create(false, NodeType.Name, (object)"a"), Tuple.Create(false, NodeType.Field, (object)null), Tuple.Create(true, NodeType.Field, (object)null), Tuple.Create(true, NodeType.Field, (object)null), Tuple.Create(true, NodeType.Name, (object)"c"), Tuple.Create(false, NodeType.Name, (object)"c"), Tuple.Create(false, NodeType.Field, (object)null), Tuple.Create(false, NodeType.SelectionSet, (object)null), Tuple.Create(false, NodeType.OperationDefinition, (object)null), Tuple.Create(false, NodeType.Document, (object)null) )); }