class OfDouble extends Spliterators.AbstractDoubleSpliterator implements DoubleConsumer {
        DoubleStreamEx.DoubleEmitter e;
        Spliterator.OfDouble buf;
        int vals;
        DoubleConsumer cons;

        OfDouble(DoubleStreamEx.DoubleEmitter e) {
            super(Long.MAX_VALUE, Spliterator.ORDERED | Spliterator.IMMUTABLE | Spliterator.NONNULL);
            this.e = e;
        }

        @Override
        public boolean tryAdvance(DoubleConsumer action) {
            if (buf != null) {
                if (buf.tryAdvance(action))
                    return true;
                buf = null;
            }
            cons = action;
            for (vals = 0; vals == 0; e = e.next(this)) {
                if (e == null)
                    return false;
            }
            if (vals > 1) {
                buf = ((DoubleStream.Builder) cons).build().spliterator();
            }
            cons = null;
            return true;
        }

        @Override
        public void forEachRemaining(DoubleConsumer action) {
            if (buf != null) {
                buf.forEachRemaining(action);
                buf = null;
            }
            DoubleStreamEx.DoubleEmitter e = this.e;
            this.e = null;
            while (e != null)
                e = e.next(action);
        }

        @Override
        public void accept(double t) {<FILL_FUNCTION_BODY>}
    }

            if ((vals += vals < 3 ? 1 : 0) == 2) {
                cons = DoubleStream.builder();
            }
            cons.accept(t);
        
<methods>public int characteristics() ,public long estimateSize() ,public Spliterator<T> trySplit() <variables>static final int BATCH_UNIT,static final int MAX_BATCH,private int batch,private final int characteristics,private long est