interface Source method next() as word end interface class Counter implements Source private word value private word[4] seen public method init(start as word) self.value = start end method public method next() as word self.value = self.value + 1 return self.value end method public method twice() as Counter return self end method public method fill(n as word) var i as word for i = 0 to 3 step 1 seen[i] = self.next() end for for i = 3 to 0 step -1 if seen[i] = 0 return else if i > n and not (i = 2) seen[i] = seen[i - 1] end if end if end for while value < n value = value + 1 end while end method end class program Main var c as Counter var s as Source var w as word c = new Counter((1 + 2) * 3) c.fill(c.next()) c.twice().twice().fill(w) s = c w = s.next() print "done" print 'x' print true print w if s <> null delete s end if end program