code: public InputStream asByteInputStream() {
          Spliterator.OfInt spltr = spliterator();
          return new InputStream() {
              private int last;
  
              @Override
              public int read() {
                  return spltr.tryAdvance((int val) -> last = val) ? (last & 0xFF) : -1;
              }
  
              @Override
              public void close() {
                  IntStreamEx.this.close();
              }
          };
      }
docs: Returns an {@code InputStream} lazily populated from the current
  {@code IntStreamEx}.
  
  <p>
  Note that only the least-significant byte of every number encountered in
  this stream is preserved in the resulting {@code InputStream}, other
  bytes are silently lost. Thus it's a caller responsibility to check
  whether this may cause problems.
  
  <p>
  This is a terminal operation.
  
  <p>
  When the resulting {@code InputStream} is closed, this
  {@code IntStreamEx} is closed as well.
  
  @return a new {@code InputStream}.
  @see #of(InputStream)
  @since 0.6.1