I am currently playing around with `StreamData`

and I have problems with generating recursive data structures. There is `StreamData.tree`

to generate trees, but I cannot apply the example presented there to my problem, since there is no root node with has a value except for the branches.

I use a simple functional tree which is either a `:leaf`

or an inner node with a value, left and right children:

```
@type tree(g) :: :leaf | {:node, g, tree(g), tree(g) }
```

In Proper (and thus propcheck) and in QuickCheck I can use the following approach:

```
def tree(g), do:
one_of([
:leaf,
lazy {:node, g, tree(g), tree(g)}
])
```

How do I generate such a tree with StreamData? Since there is no lazy construction, I cannot call my generator recursively (which result in an endless loop) . A brief look into the implementation of `StrreamData.tree()`

shows the usage of some internal functions to handle the recursion. But how do this properly in the spirit of the API?

Thanks!