code: protected void doToHandler(final Handler<? super T> handler) throws Throwable {
          final Iterator<T> iterator = doIterator();
          while (iterator.hasNext()) {
              if (Thread.interrupted()) {
                  return;
              }
              handler.handle(iterator.next());
          }
          handler.handle(null);
      }
docs: Implementation methods responsible of forwarding all the elements of the Stream to the
  Handler specified. This method is called by {@link #toHandler(Handler)} to perform internal
  iteration, with the guarantee that it is called at most once and with the Stream in the
  <i>available</i> state. As a best practice, the method should intercept
  {@link Thread#interrupt()} requests and stop iteration, if possible; also remember to call
  {@link Handler#handle(Object)} with a null argument after the last element is reached, in
  order to signal the end of the sequence.
  
  @param handler
  the {@code Handler} where to forward elements
  @throws Throwable
  in case of failure