sclass BreadthFirstPathFinder implements Steppable {
new LinkedList queue;
MultiMap links;
IF1> getChildren;
void add(A a, A prev default null) {
if (!links.containsKey(a)) {
links.put(a, prev);
queue.add(node);
}
}
public bool step() {
if (empty(queue)) false;
A a = popFirst(queue);
fOr (A b : getChildren.get(a))
add(b, a);
true;
}
}