// Path: throwing-interfaces/src/main/java/name/falgout/jeffrey/throwing/ThrowingBaseSpliterator.java
// public interface ThrowingBaseSpliterator<E, X extends Throwable, S extends ThrowingBaseSpliterator<E, X, S>> {
//   public static interface ThrowingSpliterator<E, X extends Throwable>
//       extends ThrowingBaseSpliterator<E, X, ThrowingSpliterator<E, X>> {}
// 
//   public static interface OfPrimitive<E, E_CONS, X extends Throwable, S extends OfPrimitive<E, E_CONS, X, S>>
//       extends ThrowingBaseSpliterator<E, X, S> {
//     public boolean tryAdvance(E_CONS action) throws X;
//   }
// 
//   public static interface OfInt<X extends Throwable>
//       extends OfPrimitive<Integer, ThrowingIntConsumer<? extends X>, X, OfInt<X>> {
//     default public boolean normalTryAdvance(IntConsumer action) throws X {
//       return tryAdvance((ThrowingIntConsumer<? extends X>) action::accept);
//     }
//   }
// 
//   public static interface OfLong<X extends Throwable>
//       extends OfPrimitive<Long, ThrowingLongConsumer<? extends X>, X, OfLong<X>> {
//     default public boolean normalTryAdvance(LongConsumer action) throws X {
//       return tryAdvance((ThrowingLongConsumer<? extends X>) action::accept);
//     }
//   }
// 
//   public static interface OfDouble<X extends Throwable>
//       extends OfPrimitive<Double, ThrowingDoubleConsumer<? extends X>, X, OfDouble<X>> {
//     default public boolean normalTryAdvance(DoubleConsumer action) throws X {
//       return tryAdvance((ThrowingDoubleConsumer<? extends X>) action::accept);
//     }
//   }
// 
//   default public boolean normalTryAdvance(Consumer<? super E> action) throws X {
//     return tryAdvance(action::accept);
//   }
// 
//   public boolean tryAdvance(ThrowingConsumer<? super E, ? extends X> action) throws X;
// 
//   public S trySplit();
// 
//   public long estimateSize();
// 
//   public int characteristics();
// }
// 
// Path: throwing-interfaces/src/main/java/name/falgout/jeffrey/throwing/ThrowingIterator.java
// public interface ThrowingIterator<E, X extends Throwable> {
//   public static interface OfPrimitive<E, E_CONS, X extends Throwable>
//       extends ThrowingIterator<E, X> {
//     public void forEachRemaining(E_CONS action) throws X;
//   }
// 
//   public static interface OfInt<X extends Throwable>
//       extends OfPrimitive<Integer, ThrowingIntConsumer<? extends X>, X> {
//     public int nextInt() throws X;
// 
//     @Override
//     default public Integer next() throws X {
//       return nextInt();
//     }
//   }
// 
//   public static interface OfLong<X extends Throwable>
//       extends OfPrimitive<Long, ThrowingLongConsumer<? extends X>, X> {
//     public long nextLong() throws X;
// 
//     @Override
//     default public Long next() throws X {
//       return nextLong();
//     }
//   }
// 
//   public static interface OfDouble<X extends Throwable>
//       extends OfPrimitive<Double, ThrowingDoubleConsumer<? extends X>, X> {
//     public double nextDouble() throws X;
// 
//     @Override
//     default public Double next() throws X {
//       return nextDouble();
//     }
//   }
// 
//   public E next() throws X;
// 
//   public boolean hasNext() throws X;
// 
//   default public void remove() throws X {
//     throw new UnsupportedOperationException();
//   }
// 
//   public void forEachRemaining(ThrowingConsumer<? super E, ? extends X> action) throws X;
// }
// 
// Path: throwing-stream/src/main/java/name/falgout/jeffrey/throwing/stream/intermediate/ThrowingBaseStreamIntermediate.java
// public interface ThrowingBaseStreamIntermediate<S extends ThrowingBaseStreamIntermediate<S>> {
//   public S sequential();
// 
//   public S parallel();
// 
//   public S unordered();
// 
//   public S onClose(Runnable closeHandler);
// 
//   public boolean isParallel();
// }
// 
// Path: throwing-stream/src/main/java/name/falgout/jeffrey/throwing/stream/terminal/ThrowingBaseStreamTerminal.java
// public interface ThrowingBaseStreamTerminal<T, X extends Throwable> {
//   public ThrowingIterator<T, X> iterator();
// 
//   public ThrowingBaseSpliterator<T, X, ?> spliterator();
// 
//   public void close();
// }


import java.util.function.Function;
import name.falgout.jeffrey.throwing.ThrowingBaseSpliterator;
import name.falgout.jeffrey.throwing.ThrowingIterator;
import name.falgout.jeffrey.throwing.stream.intermediate.ThrowingBaseStreamIntermediate;
import name.falgout.jeffrey.throwing.stream.terminal.ThrowingBaseStreamTerminal;
package name.falgout.jeffrey.throwing.stream;



public interface ThrowingBaseStream<T, X extends Throwable, S extends ThrowingBaseStream<T, X, S>> extends
    ThrowingBaseStreamIntermediate<S>,
    ThrowingBaseStreamTerminal<T, X> {
  @Override
  public ThrowingIterator<T, X> iterator();

  @Override
// Path: throwing-interfaces/src/main/java/name/falgout/jeffrey/throwing/ThrowingBaseSpliterator.java
// public interface ThrowingBaseSpliterator<E, X extends Throwable, S extends ThrowingBaseSpliterator<E, X, S>> {
//   public static interface ThrowingSpliterator<E, X extends Throwable>
//       extends ThrowingBaseSpliterator<E, X, ThrowingSpliterator<E, X>> {}
// 
//   public static interface OfPrimitive<E, E_CONS, X extends Throwable, S extends OfPrimitive<E, E_CONS, X, S>>
//       extends ThrowingBaseSpliterator<E, X, S> {
//     public boolean tryAdvance(E_CONS action) throws X;
//   }
// 
//   public static interface OfInt<X extends Throwable>
//       extends OfPrimitive<Integer, ThrowingIntConsumer<? extends X>, X, OfInt<X>> {
//     default public boolean normalTryAdvance(IntConsumer action) throws X {
//       return tryAdvance((ThrowingIntConsumer<? extends X>) action::accept);
//     }
//   }
// 
//   public static interface OfLong<X extends Throwable>
//       extends OfPrimitive<Long, ThrowingLongConsumer<? extends X>, X, OfLong<X>> {
//     default public boolean normalTryAdvance(LongConsumer action) throws X {
//       return tryAdvance((ThrowingLongConsumer<? extends X>) action::accept);
//     }
//   }
// 
//   public static interface OfDouble<X extends Throwable>
//       extends OfPrimitive<Double, ThrowingDoubleConsumer<? extends X>, X, OfDouble<X>> {
//     default public boolean normalTryAdvance(DoubleConsumer action) throws X {
//       return tryAdvance((ThrowingDoubleConsumer<? extends X>) action::accept);
//     }
//   }
// 
//   default public boolean normalTryAdvance(Consumer<? super E> action) throws X {
//     return tryAdvance(action::accept);
//   }
// 
//   public boolean tryAdvance(ThrowingConsumer<? super E, ? extends X> action) throws X;
// 
//   public S trySplit();
// 
//   public long estimateSize();
// 
//   public int characteristics();
// }
// 
// Path: throwing-interfaces/src/main/java/name/falgout/jeffrey/throwing/ThrowingIterator.java
// public interface ThrowingIterator<E, X extends Throwable> {
//   public static interface OfPrimitive<E, E_CONS, X extends Throwable>
//       extends ThrowingIterator<E, X> {
//     public void forEachRemaining(E_CONS action) throws X;
//   }
// 
//   public static interface OfInt<X extends Throwable>
//       extends OfPrimitive<Integer, ThrowingIntConsumer<? extends X>, X> {
//     public int nextInt() throws X;
// 
//     @Override
//     default public Integer next() throws X {
//       return nextInt();
//     }
//   }
// 
//   public static interface OfLong<X extends Throwable>
//       extends OfPrimitive<Long, ThrowingLongConsumer<? extends X>, X> {
//     public long nextLong() throws X;
// 
//     @Override
//     default public Long next() throws X {
//       return nextLong();
//     }
//   }
// 
//   public static interface OfDouble<X extends Throwable>
//       extends OfPrimitive<Double, ThrowingDoubleConsumer<? extends X>, X> {
//     public double nextDouble() throws X;
// 
//     @Override
//     default public Double next() throws X {
//       return nextDouble();
//     }
//   }
// 
//   public E next() throws X;
// 
//   public boolean hasNext() throws X;
// 
//   default public void remove() throws X {
//     throw new UnsupportedOperationException();
//   }
// 
//   public void forEachRemaining(ThrowingConsumer<? super E, ? extends X> action) throws X;
// }
// 
// Path: throwing-stream/src/main/java/name/falgout/jeffrey/throwing/stream/intermediate/ThrowingBaseStreamIntermediate.java
// public interface ThrowingBaseStreamIntermediate<S extends ThrowingBaseStreamIntermediate<S>> {
//   public S sequential();
// 
//   public S parallel();
// 
//   public S unordered();
// 
//   public S onClose(Runnable closeHandler);
// 
//   public boolean isParallel();
// }
// 
// Path: throwing-stream/src/main/java/name/falgout/jeffrey/throwing/stream/terminal/ThrowingBaseStreamTerminal.java
// public interface ThrowingBaseStreamTerminal<T, X extends Throwable> {
//   public ThrowingIterator<T, X> iterator();
// 
//   public ThrowingBaseSpliterator<T, X, ?> spliterator();
// 
//   public void close();
// }


// Path: throwing-stream/src/main/java/name/falgout/jeffrey/throwing/stream/ThrowingBaseStream.java
import java.util.function.Function;
import name.falgout.jeffrey.throwing.ThrowingBaseSpliterator;
import name.falgout.jeffrey.throwing.ThrowingIterator;
import name.falgout.jeffrey.throwing.stream.intermediate.ThrowingBaseStreamIntermediate;
import name.falgout.jeffrey.throwing.stream.terminal.ThrowingBaseStreamTerminal;

package name.falgout.jeffrey.throwing.stream;



public interface ThrowingBaseStream<T, X extends Throwable, S extends ThrowingBaseStream<T, X, S>> extends
    ThrowingBaseStreamIntermediate<S>,
    ThrowingBaseStreamTerminal<T, X> {
  @Override
  public ThrowingIterator<T, X> iterator();

  @Override
  public ThrowingBaseSpliterator<T, X, ?> spliterator();