code: func NewLockInfo() *LockInfo {
  	id, err := uuid.GenerateUUID()
  	if err != nil {
  		// this of course shouldn't happen
  		panic(err)
  	}
  
  	// don't error out on user and hostname, as we don't require them
  	userName := ""
  	if userInfo, err := user.Current(); err == nil {
  		userName = userInfo.Username
  	}
  	host, _ := os.Hostname()
  
  	info := &LockInfo{
  		ID:      id,
  		Who:     fmt.Sprintf("%s@%s", userName, host),
  		Version: version.Version,
  		Created: time.Now().UTC(),
  	}
  	return info
  }
docs: // Generate a LockInfo structure, populating the required fields.