code: @Override
      public Spliterator<T> trySplit() {
          final HoldingConsumer<T> holder = new HoldingConsumer<>();
          if(!tryAdvance(holder)) {
              return null;
          }
  
          final Object[] a = new Object[batchSize];
          int j = 0;
          do {
              a[j] = holder.value;
  
          }
          while (++j < batchSize && tryAdvance(holder));
  
          if(est != Long.MAX_VALUE) {
              est -= j;
          }
  
          return spliterator(a, 0, j, characteristics() | SIZED);
      }
docs: {@inheritDoc}