public static <T> PTransform<PCollection<T>, PCollection<T>> unionDistinct(
      PCollection<T> rightCollection) {
    checkNotNull(rightCollection, "rightCollection argument is null");
    return new SetImpl<>(rightCollection, unionDistinct());
  }
@Test
  @Category(NeedsRunner.class)
  public void testUnion() {

    PAssert.that(first.apply("strings", Sets.unionDistinct(second)))
        .containsInAnyOrder("a", "b", "c", "d", "e", "f", "g", "h");

    PCollection<Row> results = firstRows.apply("rows", Sets.unionDistinct(secondRows));

    PAssert.that(results).containsInAnyOrder(toRows("a", "b", "c", "d", "e", "f", "g", "h"));

    assertEquals(schema, results.getSchema());

    p.run();
  }