Both of these seem very like the ES6 iterator interface. Can you just use that instead of minting a new iterable/iterator interface, viz. `.iterator()`/`.next()` or `.nextNode()`? The resulting code would be
```js
var tw = document.createTreeWalker(document.body, "ul.menu > li");
for (var node of tw) {
if (...) break;
...
}
```
for François's proposal, whereas it would be
```js
var iterable = document.querySelectorAll("div");
for (var current of iterable) {
current.remove();
}
```
for Ojan's.
