code: func versionParts(v string) ([]int, string) {
  	parts := strings.SplitN(v[1:], " ", 2) // " (+dev)" versions
  	if len(parts) == 1 {
  		parts = strings.SplitN(parts[0], "-", 2) // "-rc.1" type versions
  	}
  	fields := strings.Split(parts[0], ".")
  
  	release := make([]int, len(fields))
  	for i, s := range fields {
  		v, _ := strconv.Atoi(s)
  		release[i] = v
  	}
  
  	var prerelease string
  	if len(parts) > 1 {
  		prerelease = parts[1]
  	}
  
  	return release, prerelease
  }
docs: // Split a version as returned from transformVersion into parts.
  // "1.2.3-beta.2" -> []int{1, 2, 3}, "beta.2"}