'Generate an expression where each leaf might have a different depth between min_ and max_.
Parameters
pset: PrimitiveSetTyped
Primitive set from which primitives are selected.
min_: int
Minimum height of the produced trees.
max_: int
Maximum Height of the produced trees.
type_: class
The type that should return the tree when called, when
:obj:None (default) the type of :pset: (pset.ret)
is assumed.
Returns
individual: list
A grown tree with leaves at possibly different depths.'

def _gen_grow_safe(self, pset, min_, max_, type_=None):

    def condition(height, depth, type_):
        'Stop    when    the    depth    is    equal    to    height    or    when    a    node    should    be    a    terminal.'
        return ((type_ not in [np.ndarray, Output_Array]) or (depth == height))
    return self._generate(pset, min_, max_, condition, type_)
