TimestampedValue { public static <V> TimestampedValue<V> of(@Nullable V value, Instant timestamp) { return new TimestampedValue<>(value, timestamp); } protected  TimestampedValue(@Nullable V value, Instant timestamp); static TimestampedValue<V> atMinimumTimestamp(@Nullable V value); static TimestampedValue<V> of(@Nullable V value, Instant timestamp); V getValue(); Instant getTimestamp(); @Override boolean equals(@Nullable Object other); @Override int hashCode(); @Override String toString();  }
@Test public void testNullTimestamp() { thrown.expect(NullPointerException.class); thrown.expectMessage("timestamp"); TimestampedValue.of("foobar", null); }
@Test public void testCoderEncodeDecodeEquals() throws Exception { CoderProperties.coderDecodeEncodeEqual( CODER, TimestampedValue.of(GlobalWindow.INSTANCE, Instant.now())); }