returns the current element, returns the same element as the previous next call if there is no next before current called then we will call next as initial element
in order to filter we have to make a look ahead until the first next allowed element hence we prefetch the element and then serve it via next
looks ahead cnt without changing the internal data "pointers" of the data source (this is mostly needed by LazyStreams, because they do not know by definition their boundaries)
the elements to look ahead
either the element or ITERATION_STATUS.EO_STRM if we hit the end of the stream before finding the "cnt" element
serve the next element
resets the position to the beginning
an intermediate data source which prefilters incoming stream data and lets only the data out which passes the filter function check