code: @NotNull
      public static <T> Stream<T> concat(
              @NotNull Stream<? extends T> stream1,
              @NotNull Stream<? extends T> stream2) {
          Objects.requireNonNull(stream1);
          Objects.requireNonNull(stream2);
          Stream<T> result = new Stream<T>(new ObjConcat<T>(stream1.iterator, stream2.iterator));
          return result.onClose(Compose.closeables(stream1, stream2));
      }
docs: Concatenates two streams.
  
  <p>Example:
  <pre>
  stream 1: [1, 2, 3, 4]
  stream 2: [5, 6]
  result:   [1, 2, 3, 4, 5, 6]
  </pre>
  
  @param <T> The type of stream elements
  @param stream1  the first stream
  @param stream2  the second stream
  @return the new concatenated stream
  @throws NullPointerException if {@code stream1} or {@code stream2} is null