code: @NotNull
      public static IntStream concat(
              @NotNull final IntStream a,
              @NotNull final IntStream b) {
          Objects.requireNonNull(a);
          Objects.requireNonNull(b);
          IntStream result = new IntStream(new IntConcat(a.iterator, b.iterator));
          return result.onClose(Compose.closeables(a, b));
      }
docs: Creates a lazily concatenated stream whose elements are all the
  elements of the first stream followed by all the elements of the
  second stream.
  
  <p>Example:
  <pre>
  stream a: [1, 2, 3, 4]
  stream b: [5, 6]
  result:   [1, 2, 3, 4, 5, 6]
  </pre>
  
  @param a the first stream
  @param b the second stream
  @return the concatenation of the two input streams
  @throws NullPointerException if {@code a} or {@code b} is null