Unfortunately the nio2 API was designed before Java8's stream library.
The documentation says that ShrinkWrapDirectoryStream.iterator must throw IllegalStateException if the Stream is closed OR if the iterator() has been accessed already.
From my reading of the DirectoryStream javadoc, the implementation of Iterator is otherwise fine. close() does not have to prematurely terminate the Iterator. iterator() should just comply with the precondition exceptions.
ShrinkWrapDirectoryStream is package protected, there is no reason to discuss any relationship to SecureDirectoryStream.