EsCLDTStreamIterator
Description
An adapter class to adapt the atEnd/next style of the CLDT Stream to the moveNext/current style of an @Iterator
This is created from Stream>>iterator
Instance state
stream: <Stream> CLDT Stream
current:<Object> or nil
Class Methods
on:
  Answer a new iterator over @aStream

     Arguments:
        aStream - <Stream>
     Answers:
        <EsCLDTStreamIterator>
Instance Methods
current
  The current element.

     If the iterator has not yet been moved to the first element (#moveNext has not been called yet),
     or if the iterator has been moved past the last element. (#moveNext has answered false),
     then @current is unspecified.

     The #current getter should keep its value until the next call to #moveNext, even if an underlying CLDT stream changes.
     After a successful call to #moveNext, the user doesn't need to cache the current value, but can keep reading it from the iterator.

     Answers:
        <Object>
moveNext
  Advances the iterator to the next element of the CLDT Stream.

     Should be called before reading @current.
     If the call to #moveNext answers `true`,
     then @current will contain the next element of the CLDT Stream
     until #moveNext is called again.
     If the call answers `false`, there are no further elements
     and @current should not be used any more.

     It is safe to call #moveNext after it has already answered `false`,
     but it must keep returning `false` and not have any other effect.

     A call to #moveNext may raise an exception for various reasons,
     including a concurrent change to an underlying CLDT stream.
     If that happens, the iterator may be in an inconsistent
     state, and any further behavior of the iterator is unspecified,
     including the effect of reading @current.

     Answers:
        <Boolean>
Last modified date: 04/21/2022