<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _gen_grow_safe(self, pset, min_, max_, type_=None):
 """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 condition(height, depth, type_):
            """Stop when the depth is equal to height or when a node should be a terminal."""
            return type_ not in self.ret_types or depth == height

        return self._generate(pset, min_, max_, condition, type_)