### Question:
CheckpointProperties implements Serializable { @VisibleForTesting CheckpointProperties( boolean forced, CheckpointType checkpointType, boolean discardSubsumed, boolean discardFinished, boolean discardCancelled, boolean discardFailed, boolean discardSuspended) { this.forced = forced; this.checkpointType = checkNotNull(checkpointType); this.discardSubsumed = discardSubsumed; this.discardFinished = discardFinished; this.discardCancelled = discardCancelled; this.discardFailed = discardFailed; this.discardSuspended = discardSuspended; } @VisibleForTesting  CheckpointProperties(
			boolean forced,
			CheckpointType checkpointType,
			boolean discardSubsumed,
			boolean discardFinished,
			boolean discardCancelled,
			boolean discardFailed,
			boolean discardSuspended); CheckpointType getCheckpointType(); boolean isSavepoint(); boolean isSynchronous(); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString(); static CheckpointProperties forSavepoint(); static CheckpointProperties forSyncSavepoint(); static CheckpointProperties forCheckpoint(CheckpointRetentionPolicy policy);  }### Answer:
@Test public void testCheckpointProperties() { CheckpointProperties props = CheckpointProperties.forCheckpoint(CheckpointRetentionPolicy.RETAIN_ON_FAILURE); assertFalse(props.forceCheckpoint()); assertTrue(props.discardOnSubsumed()); assertTrue(props.discardOnJobFinished()); assertTrue(props.discardOnJobCancelled()); assertFalse(props.discardOnJobFailed()); assertTrue(props.discardOnJobSuspended()); props = CheckpointProperties.forCheckpoint(CheckpointRetentionPolicy.RETAIN_ON_CANCELLATION); assertFalse(props.forceCheckpoint()); assertTrue(props.discardOnSubsumed()); assertTrue(props.discardOnJobFinished()); assertFalse(props.discardOnJobCancelled()); assertFalse(props.discardOnJobFailed()); assertFalse(props.discardOnJobSuspended()); }