static persistable class ImmutableListWalker implements Iterator { L list; int index; *(L *list) {} *(L *list, int *index) {} public A has() { ret index >= 0 && index < l(list); } public A get() { ret _get(list, index); } public ImmutableListWalker next() { ret new ImmutableListWalker(list, index+1); } }