A WrappingIterator delivers wrappers for the nodes delivered
by its underlying iterator. It is used when no whitespace stripping
is actually needed, e.g. for the attribute axis. But we still need to
create wrappers, so that further iteration remains in the virtual layer
rather than switching to the real nodes.
Close the iterator. This indicates to the supplier of the data that the client
does not require any more items to be delivered by the iterator. This may enable the
supplier to release resources. After calling close(), no further calls on the
iterator should be made; if further calls are made, the effect of such calls is undefined.
(Currently, closing an iterator is important only when the data is being "pushed" in
another thread. Closing the iterator terminates that thread and means that it needs to do
no additional work. Indeed, failing to close the iterator may cause the push thread to hang
waiting for the buffer to be emptied.)
Get another iterator over the same sequence of items, positioned at the
start of the sequence. It must be possible to call this method at any time, whether
none, some, or all of the items in the original iterator have been read. The method
is non-destructive: it does not change the state of the original iterator.