Reify { public static <T> PTransform<PCollection<T>, PCollection<ValueInSingleWindow<T>>> windows() { return new Window<>(); } private  Reify(); static PTransform<PCollection<T>, PCollection<TimestampedValue<T>>> timestamps(); static PTransform<PCollection<KV<K, V>>, PCollection<KV<K, TimestampedValue<V>>>> timestampsInValue(); static PTransform<PCollection<T>, PCollection<ValueInSingleWindow<T>>> windows(); static PTransform<PCollection<KV<K, V>>, PCollection<KV<K, ValueInSingleWindow<V>>>> windowsInValue(); static PTransform<PCollection<KV<K, TimestampedValue<V>>>, PCollection<KV<K, V>>> extractTimestampsFromValues(); static PTransform<PCollection<K>, PCollection<KV<K, V>>> viewAsValues(
      PCollectionView<V> view, Coder<V> coder); static PTransform<PBegin, PCollection<V>> viewInGlobalWindow(
      PCollectionView<V> view, Coder<V> coder);  }
@Test @Category({NeedsRunner.class, UsesTestStream.class}) public void globalWindowNoKeys() { PCollection<ValueInSingleWindow<String>> result = pipeline .apply( TestStream.create(StringUtf8Coder.of()) .addElements(TimestampedValue.of("dei", new Instant(123L))) .advanceWatermarkToInfinity()) .apply(Reify.windows()); PAssert.that(result) .containsInAnyOrder( ValueInSingleWindow.of( "dei", new Instant(123L), GlobalWindow.INSTANCE, PaneInfo.NO_FIRING)); pipeline.run(); }