Iterator Solutions
nState encapsulated in “cursor”
n“This is Smalltalk again.”
n| hocusPocusPrestoOdometer |
nhocusPocusPrestoOdometer := Odometer on: ‘hocuspocuspresto’.
n[ hocusPocusPrestoOdometer atEnd ] whileFalse: [
n    | hocus pocus presto |
n    hocus := hocusPocusPrestoOdometer valueFor: ‘hocus’.
n    . . .
n    hocusPocusPrestoOdometer next.
n].
In this example, the state of the search is encapsulated in this variable hocusPocusPrestoOdometer, which can be copied, stored, reset, and so on.  It is a bookmark in the list of possible values for h, o, c, u, and s.