public final JobLifeCycle build() {
      JobLifeCycle jobLifeCycle = autoBuild();
      if(jobLifeCycle.state().equals(State.ENDED)) {
        Preconditions.checkArgument(jobLifeCycle.endReason() != null, "End reason required when JobState is ENDED");
      }
      return jobLifeCycle;
    }
A list of States to represent the life cycle of a transfer Job. See the list of monitoring Event
codes ({@code org.datatransferproject.launcher.monitor.events.EventCode}) that represents more
granular states + reasons.
portability-spi-transfer/src/main/java/org/datatransferproject/spi/transfer/types/signals/JobLifeCycle.java