getIterator method

Iterable<Expression> getIterator()

Implementation

Iterable<Expression<dynamic>> getIterator() sync* {
  var stack = Queue<Expression<dynamic>>.from([this]);
  var visitedExpressions = <Expression>{this};
  while (stack.isNotEmpty) {
    var expression = stack.removeLast();
    visitedExpressions.add(expression);
    yield expression;

    var childExpressions = expression.getChildren();
    childExpressions.forEach((e) {
      if (!visitedExpressions.contains(e)) {
        stack.addLast(e);
      }
    });
  }
}