Source:
<code>private CheckpointStatistics( @JsonProperty(FIELD_NAME_ID) long id, @JsonProperty(FIELD_NAME_STATUS) CheckpointStatsStatus status, @JsonProperty(FIELD_NAME_IS_SAVEPOINT) boolean savepoint, @JsonProperty(FIELD_NAME_TRIGGER_TIMESTAMP) long triggerTimestamp, @JsonProperty(FIELD_NAME_LATEST_ACK_TIMESTAMP) long latestAckTimestamp, @JsonProperty(FIELD_NAME_STATE_SIZE) long stateSize, @JsonProperty(FIELD_NAME_DURATION) long duration, @JsonProperty(FIELD_NAME_ALIGNMENT_BUFFERED) long alignmentBuffered, @JsonProperty(FIELD_NAME_PROCESSED_DATA) long processedData, @JsonProperty(FIELD_NAME_PERSISTED_DATA) long persistedData, @JsonProperty(FIELD_NAME_NUM_SUBTASKS) int numSubtasks, @JsonProperty(FIELD_NAME_NUM_ACK_SUBTASKS) int numAckSubtasks, @JsonProperty(FIELD_NAME_CHECKPOINT_TYPE) CheckpointType checkpointType, @JsonDeserialize(keyUsing = JobVertexIDKeyDeserializer.class) @JsonProperty(FIELD_NAME_TASKS) Map<JobVertexID, TaskCheckpointStatistics> checkpointStatisticsPerTask) { this.id = id; this.status = Preconditions.checkNotNull(status); this.savepoint = savepoint; this.triggerTimestamp = triggerTimestamp; this.latestAckTimestamp = latestAckTimestamp; this.stateSize = stateSize; this.duration = duration; this.alignmentBuffered = alignmentBuffered; this.processedData = processedData; this.persistedData = persistedData; this.numSubtasks = numSubtasks; this.numAckSubtasks = numAckSubtasks; <START> this.checkpointType = checkpointType; <END> this.checkpointStatisticsPerTask = Preconditions.checkNotNull(checkpointStatisticsPerTask); }</code><technical_language>I forgot mention in other review: good call Preconditions.checkNotNull nullable parameters. other status example</technical_language>

Target:
private CheckpointStatistics( @JsonProperty(FIELD_NAME_ID) long id, @JsonProperty(FIELD_NAME_STATUS) CheckpointStatsStatus status, @JsonProperty(FIELD_NAME_IS_SAVEPOINT) boolean savepoint, @JsonProperty(FIELD_NAME_TRIGGER_TIMESTAMP) long triggerTimestamp, @JsonProperty(FIELD_NAME_LATEST_ACK_TIMESTAMP) long latestAckTimestamp, @JsonProperty(FIELD_NAME_STATE_SIZE) long stateSize, @JsonProperty(FIELD_NAME_DURATION) long duration, @JsonProperty(FIELD_NAME_ALIGNMENT_BUFFERED) long alignmentBuffered, @JsonProperty(FIELD_NAME_PROCESSED_DATA) long processedData, @JsonProperty(FIELD_NAME_PERSISTED_DATA) long persistedData, @JsonProperty(FIELD_NAME_NUM_SUBTASKS) int numSubtasks, @JsonProperty(FIELD_NAME_NUM_ACK_SUBTASKS) int numAckSubtasks, @JsonProperty(FIELD_NAME_CHECKPOINT_TYPE) CheckpointType checkpointType, @JsonDeserialize(keyUsing = JobVertexIDKeyDeserializer.class) @JsonProperty(FIELD_NAME_TASKS) Map<JobVertexID, TaskCheckpointStatistics> checkpointStatisticsPerTask) { this.id = id; this.status = Preconditions.checkNotNull(status); this.savepoint = savepoint; this.triggerTimestamp = triggerTimestamp; this.latestAckTimestamp = latestAckTimestamp; this.stateSize = stateSize; this.duration = duration; this.alignmentBuffered = alignmentBuffered; this.processedData = processedData; this.persistedData = persistedData; this.numSubtasks = numSubtasks; this.numAckSubtasks = numAckSubtasks; this.checkpointType = Preconditions.checkNotNull(checkpointType); this.checkpointStatisticsPerTask = Preconditions.checkNotNull(checkpointStatisticsPerTask); }