code: public static JSLJob buildFlowInSplitSubJob(long topLevelJobInstanceId, JobContext jobContext, Split split, Flow flow) {
  
          ObjectFactory jslFactory = new ObjectFactory();
          JSLJob subJob = jslFactory.createJSLJob();
  
          // Uses the true top-level job instance id, not an internal "subjob" id.
          String subJobId = generateSubJobId(topLevelJobInstanceId, split.getId(), flow.getId());
          subJob.setId(subJobId);
          
          //Copy all properties from parent JobContext to flow threads
          subJob.setProperties(CloneUtility.javaPropsTojslProperties(jobContext.getProperties()));
  
          //We don't need to do a deep copy here since each flow is already independent of all others, unlike in a partition
          //where one step instance can be executed with different properties on multiple threads.
  
          subJob.getExecutionElements().add(flow);
  
          return subJob;
      }
docs: /*
  Build a generated job with only one flow in it to submit to the
  BatchKernel. This is used to build subjobs from splits.