This could well be a user error (I'm kinda hoping so). I'm running into a strange case in C# were if I try to make recursive call in a method that uses yield it doesn't seem to be respected (i.e. the call is ignored).

The following program illustrates this:

```
// node in an n-ary tree
class Node
{
    public string Name { get; set; }
    public List<Node> ChildNodes { get; set; }
}
class Program
{
    // walk tree returning all names
    static IEnumerable<string> GetAllNames(IEnumerable<Node> nodes)
    {
        foreach (var node in nodes)
        {
            if (node.ChildNodes != null)
            {
                Console.WriteLine("[Debug] entering recursive case");
                // recursive case, yield all child node names
                GetAllNames(node.ChildNodes);
            }
            // yield current name
            yield return node.Name;
        }
    }

    static void Main(string[] args)
    {
        // initalize tree structure
        var tree = new List<Node>
                       {
                           new Node()
                               {
                                   Name = "One",
                                   ChildNodes = new List<Node>()
                                                    {
                                                        new Node() {Name = "Two"},
                                                        new Node() {Name = "Three"},
                                                        new Node() {Name = "Four"},
                                                    }
                               },
                           new Node() {Name = "Five"}
                       };

        // try and get all names
        var names = GetAllNames(tree);

        Console.WriteLine(names.Count());
            // prints 2, I would expect it to print 5

    }
}

```