code: @Override public JobV3 fillFromImpl( Job job ) {
      if( job == null ) return this;
      // Handle fields in subclasses:
      PojoUtils.copyProperties(this, job, PojoUtils.FieldNaming.ORIGIN_HAS_UNDERSCORES);
      PojoUtils.copyProperties(this, job, PojoUtils.FieldNaming.CONSISTENT);  // TODO: make consistent and remove
  
      key = new JobKeyV3(job._key);
      description = job._description;
      warnings = job.warns();
      progress = job.progress();
      progress_msg = job.progress_msg();
      // Bogus status; Job no longer has these states, but we fake it for /3/Job poller's.
      // Notice state "CREATED" no long exists and is never returned.
      // Notice new state "CANCEL_PENDING".
      if( job.isRunning() )
        if( job.stop_requested() ) status = "CANCEL_PENDING";
        else status = "RUNNING";
      else
        if( job.stop_requested() ) status = "CANCELLED";
        else status = "DONE";
      Throwable ex = job.ex();
      if( ex != null ) status = "FAILED";
      exception = ex == null ? null : ex.toString();
      if (ex!=null) {
        StringWriter sw = new StringWriter();
        PrintWriter pw = new PrintWriter(sw);
        ex.printStackTrace(pw);
        stacktrace = sw.toString();
      }
      msec = job.msec();
      ready_for_view = job.readyForView();
  
      Keyed dest_type;
      Value value = null;
      if (job._result != null) {
        value = DKV.get(job._result);
      }
      if (value != null) {
        dest_type = (Keyed) TypeMap.theFreezable(value.type());
      } else {
        dest_type = (Keyed) TypeMap.theFreezable(job._typeid);
      }
      dest = job._result == null ? null : KeyV3.make(dest_type.makeSchema(), job._result);
      return this;
    }
docs: Version&Schema-specific filling from the impl