def leaves

      expressions.inject([]) { |a, exp|
        a.select { |e| ! exp.ancestor?(e.fei) } + [ exp ]
      }
    end
def leaves

      expressions.inject([]) { |a, exp|
        a.select { |e| ! exp.ancestor?(e.fei) } + [ exp ]
      }
    end
Returns the expressions where the flow is currently, ak the leaves
 of the execution tree.

 Whereas #position only looks at participant expressions (and errors),
 #leaves looks at any expressions that is a leave (which has no
 child at this point).

 Returns an array of FlowExpression instances. (Note that they may
 have their attribute #error set).