code: func (j *Job) requirements() map[string][]string {
  	uni := unit.NewUnitNameInfo(j.Name)
  	requirements := make(map[string][]string)
  	for key, values := range j.Unit.Contents["X-Fleet"] {
  		if _, ok := requirements[key]; !ok {
  			requirements[key] = make([]string, 0)
  		}
  
  		if uni != nil {
  			processedValues := make([]string, len(values))
  			for i, v := range values {
  				processedValues[i] = unitPrintf(v, *uni)
  			}
  			requirements[key] = processedValues
  		} else {
  			requirements[key] = values
  		}
  	}
  
  	return requirements
  }
docs: // requirements returns all relevant options from the [X-Fleet] section of a unit file.
  // Relevant options are identified with a `X-` prefix in the unit.
  // This prefix is stripped from relevant options before being returned.
  // Furthermore, specifier substitution (using unitPrintf) is performed on all requirements.