code: func KeyValuesFromLine(line []byte, currentLine int) (Pair, error) {
  	kv := Pair{}
  
  	if !utf8.Valid(line) {
  		return kv, fmt.Errorf("line %d has invalid utf8 bytes : %v", line, string(line))
  	}
  
  	// We trim UTF8 BOM from the first line of the file but no others
  	if currentLine == 0 {
  		line = bytes.TrimPrefix(line, utf8bom)
  	}
  
  	// trim the line from all leading whitespace first
  	line = bytes.TrimLeftFunc(line, unicode.IsSpace)
  
  	// If the line is empty or a comment, we return a blank key/value pair.
  	if len(line) == 0 || line[0] == '#' {
  		return kv, nil
  	}
  
  	data := strings.SplitN(string(line), "=", 2)
  	key := data[0]
  	if errs := validation.IsEnvVarName(key); len(errs) != 0 {
  		return kv, fmt.Errorf("%q is not a valid key name: %s", key, strings.Join(errs, ";"))
  	}
  
  	if len(data) == 2 {
  		kv.Value = data[1]
  	} else {
  		// No value (no `=` in the line) is a signal to obtain the value
  		// from the environment.
  		kv.Value = os.Getenv(key)
  	}
  	kv.Key = key
  	return kv, nil
  }
docs: // KeyValuesFromLine returns a kv with blank key if the line is empty or a comment.
  // The value will be retrieved from the environment if necessary.