Yes, this seems odd to me, too.  Is there some reason why ``InterruptibleIterator`` can't be implemented more like ``CompletionIterator``?  In other words, ``class InterruptibleIteratorDecorator`` just becomes ``class InterruptibleIterator``, which extends ``Iterator``; and your ``InterruptibleIterator`` trait becomes ``object InterruptibleIterator``, which defs a function called something like ``notInterrupted`` to replace all of the calls to ``InterruptibleIterator.hasNext`` -- i.e. the peculiar ``super.hasNext`` calls become something like ``InterruptibleIterator.notInterrupted``.