code: public final static <T> Tuple2<Stream<T>, Stream<T>> duplicate(final Stream<T> stream) {
  
          final Tuple2<Iterator<T>, Iterator<T>> Tuple2 = Streams.toBufferingDuplicator(stream.iterator());
          return Tuple.tuple(
                            Streams.stream(Tuple2._1()), Streams.stream(Tuple2._2()));
      }
docs: Duplicate a Stream, buffers intermediate values, leaders may change positions so a limit
  can be safely applied to the leading stream. Not thread-safe.
  <pre>
  {@code
  Tuple2<ReactiveSeq<Integer>, ReactiveSeq<Integer>> copies =of(1,2,3,4,5,6).duplicate();
  assertTrue(copies._1.anyMatch(i->i==2));
  assertTrue(copies._2.anyMatch(i->i==2));
  
  }
  </pre>
  
  @return duplicated stream