### Question:
WindowingKey implements Serializable { public WindowingKey(User user, DeviceId deviceId, CollectionId collectionId, SyncKey syncKey) { Preconditions.checkArgument(user != null); Preconditions.checkArgument(deviceId != null); Preconditions.checkArgument(collectionId != null); Preconditions.checkArgument(syncKey != null); this.user = user; this.deviceId = deviceId; this.collectionId = collectionId; this.syncKey = syncKey; } WindowingKey(User user, DeviceId deviceId, CollectionId collectionId, SyncKey syncKey); User getUser(); DeviceId getDeviceId(); CollectionId getCollectionId(); SyncKey getSyncKey(); WindowingKey withSyncKey(SyncKey dataDeltaSyncKey); @Override final int hashCode(); @Override final boolean equals(Object object); @Override String toString();  }### Answer:
@Test public void testWindowingKey() { User user = Factory.create().createUser("user@domain", "user@domain", "user@domain"); DeviceId deviceId = new DeviceId("132"); SyncKey syncKey = new SyncKey("123"); CollectionId collectionId = CollectionId.of(5); WindowingKey windowingKey = new WindowingKey(user, deviceId, collectionId, syncKey); assertThat(windowingKey.getUser()).isEqualTo(user); assertThat(windowingKey.getDeviceId()).isEqualTo(deviceId); assertThat(windowingKey.getCollectionId()).isEqualTo(collectionId); assertThat(windowingKey.getSyncKey()).isEqualTo(syncKey); }