code: def _serialiseFirstJob(self, jobStore):
          
  
          # Check if the workflow root is a checkpoint but not a leaf vertex.
          # All other job vertices in the graph are checked by checkNewCheckpointsAreLeafVertices
          if self.checkpoint and not Job._isLeafVertex(self):
              raise JobGraphDeadlockException(
                  'New checkpoint job %s is not a leaf in the job graph' % self)
  
          # Create first jobGraph
          jobGraph = self._createEmptyJobGraphForJob(jobStore=jobStore, predecessorNumber=0)
          # Write the graph of jobs to disk
          self._serialiseJobGraph(jobGraph, jobStore, None, True)
          jobStore.update(jobGraph)
          # Store the name of the first job in a file in case of restart. Up to this point the
          # root job is not recoverable. FIXME: "root job" or "first job", which one is it?
          jobStore.setRootJob(jobGraph.jobStoreID)
          return jobGraph
docs: Serialises the root job. Returns the wrapping job.
  
          :param toil.jobStores.abstractJobStore.AbstractJobStore jobStore: