code: func NewSemVer(s string) (*SemVer, error) {
  	nsv, err := semver.NewVersion(s)
  	if err != nil {
  		return nil, ErrBadSemVer
  	}
  	v := SemVer(*nsv)
  	if v.Empty() {
  		return nil, ErrNoZeroSemVer
  	}
  	return &v, nil
  }
docs: // NewSemVer generates a new SemVer from a string. If the given string does
  // not represent a valid SemVer, nil and an error are returned.