You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: usergroupadd_linux.go
    path of file: ./repos/zeebe/clients/go/vendor/github.com/docker/docker/pkg/idtools
    
    the code of the file until where you have to start completion: package idtools // import "github.com/docker/docke
    
func createSubordinateRanges(name string) error {
	// first, we should verify that ranges weren't automatically created
	// by the distro tooling
	ranges, err := parseSubuid(name)
	if err != nil {
		return fmt.Errorf("error while looking for subuid ranges for user %q: %v", name, err)
	}
	if len(ranges) == 0 {
		// no UID ranges; let's create one
		startID, err := findNextUIDRange()
		if err != nil {
			return fmt.Errorf("can't find available subuid range: %v", err)
		}
		idRange := fmt.Sprintf("%d-%d", startID, startID+defaultRangeLen-1)
		out, err := exec.Command("usermod", "-v", idRange, name).CombinedOutput()
		if err != nil {
			return fmt.Errorf("unable to add subuid range to user: %q; output: %s, err: %v", name, out, err)
		}
	}

	ranges, err = parseSubgid(name)
	if err != nil {
		return fmt.Errorf("error while looking for subgid ranges for user %q: %v", name, err)
	}
	if len(ranges) == 0 {
		// no GID ranges; let's create one
		startID, err := findNextGIDRange()
		if err != nil {
			return fmt.Errorf("can't find available subgid range: %v", err)
		}
		idRange := fmt.Sprintf("%d-%d", startID, startID+defaultRangeLen-1)
		out, err := exec.Command("usermod", "-w", idRange, name).CombinedOutput()
		if err != nil {
			return fmt.Errorf("unable to add subgid range to user: %q; output: %s, err: %v", name, out, err)
		}
	}
	return nil
}