code: func ParseGroupVersion(gv string) (GroupVersion, error) {
  	// this can be the internal version for the legacy kube types
  	// TODO once we've cleared the last uses as strings, this special case should be removed.
  	if (len(gv) == 0) || (gv == "/") {
  		return GroupVersion{}, nil
  	}
  
  	s := strings.Split(gv, "/")
  	// "v1" is the only special case. Otherwise GroupVersion is expected to contain
  	// one "/" dividing the string into two parts.
  	switch {
  	case len(s) == 1 && gv == "v1":
  		return GroupVersion{"", "v1"}, nil
  	case len(s) == 2:
  		return GroupVersion{s[0], s[1]}, nil
  	default:
  		return GroupVersion{}, fmt.Errorf("Unexpected GroupVersion string: %v", gv)
  	}
  }
docs: // ParseGroupVersion turns "group/version" string into a GroupVersion struct. It reports error
  // if it cannot parse the string.