Iterable<Node> get possibleLoops sync* { for(var n in nodes) { if (!n.canLoop) { continue; } if (hasLoop(n)) { continue; } yield n; } }