code: func (e *Job) ParseSchedule() (*schedule.Schedule, error) {
  	if e.cachedSchedule == nil && e.cachedScheduleErr == nil {
  		hash := fnv.New64()
  		hash.Write([]byte(e.JobID))
  		seed := hash.Sum64()
  		e.cachedSchedule, e.cachedScheduleErr = schedule.Parse(e.EffectiveSchedule(), seed)
  		if e.cachedSchedule == nil && e.cachedScheduleErr == nil {
  			panic("no schedule and no error")
  		}
  	}
  	return e.cachedSchedule, e.cachedScheduleErr
  }
docs: // ParseSchedule returns *Schedule object, parsing e.Schedule field.
  //
  // If job is paused e.Schedule field is ignored and "triggered" schedule is
  // returned instead.