# JAVA basic iterator implementation
[hear] (class COS_JListIterator (ref)
(field pipe (cell new (ref contents get)))
(method <init>-V (self))
(method <init> (self <init>-V))
(method hasNext-Z (> (list-length / pipe get) 0))
(method hasNext (self hasNext-Z))
(method next (self next-Object))
(method next-Object
(let ((result (head / pipe get)))
(begin
(pipe set / tail / pipe get)
(result)))));
[hear] (define test1 (COS_JList new));
[hear] (begin
(test1 add 15)
(test1 add 72)
(test1 add 99)
(true));
[hear] (define iter1 (test1 iterator));
[hear] (iter1 hasNext);
[hear] (demo / iter1 next);
evaluates to: 99
[hear] (iter1 hasNext);
[hear] (demo / iter1 next);
evaluates to: 72
[hear] (iter1 hasNext);
[hear] (demo / iter1 next);
evaluates to: 15
[hear] (not / iter1 hasNext);
# There is Java code for COS_JListIterator available