public void EnumerateNamedNodesWithNestedConditions() { var doc = Load(@"--- items: - first - when X: - when Y: - name: second other: xyz - third - name: fourth "); var nodesWithoutGoal = parser.EnumerateNamedNodesOf(doc.RootNode, "items"); nodesWithoutGoal.Should() .NotBeNull() .And.HaveCount(2) .And.Contain(pair => pair.Key == "first") .And.Contain(pair => pair.Key == "fourth"); parser.SetActiveGoal(new Goal("X")); var nodesWithX = parser.EnumerateNamedNodesOf(doc.RootNode, "items"); nodesWithX.Should() .NotBeNull() .And.HaveCount(3) .And.Contain(pair => pair.Key == "first") .And.Contain(pair => pair.Key == "third") .And.Contain(pair => pair.Key == "fourth"); parser.SetActiveGoal(new Goal("Y")); var nodesWithY = parser.EnumerateNamedNodesOf(doc.RootNode, "items"); nodesWithY.Should() .NotBeNull() .And.HaveCount(2) .And.Contain(pair => pair.Key == "first") .And.Contain(pair => pair.Key == "fourth"); parser.SetActiveGoal(new Goal("Y", new[] { new Goal("X") })); var nodesWithXY = parser.EnumerateNamedNodesOf(doc.RootNode, "items"); nodesWithXY.Should() .NotBeNull() .And.HaveCount(4) .And.Contain(pair => pair.Key == "first") .And.Contain(pair => pair.Key == "second") .And.Contain(pair => pair.Key == "third") .And.Contain(pair => pair.Key == "fourth"); }