code: func (d *Dataset) Children(depth uint64) ([]*Dataset, error) {
  	args := []string{"list"}
  	if depth > 0 {
  		args = append(args, "-d")
  		args = append(args, strconv.FormatUint(depth, 10))
  	} else {
  		args = append(args, "-r")
  	}
  	args = append(args, "-t", "all", "-Hp", "-o", dsPropListOptions)
  	args = append(args, d.Name)
  
  	out, err := zfs(args...)
  	if err != nil {
  		return nil, err
  	}
  
  	var datasets []*Dataset
  	name := ""
  	var ds *Dataset
  	for _, line := range out {
  		if name != line[0] {
  			name = line[0]
  			ds = &Dataset{Name: name}
  			datasets = append(datasets, ds)
  		}
  		if err := ds.parseLine(line); err != nil {
  			return nil, err
  		}
  	}
  	return datasets[1:], nil
  }
docs: // Children returns a slice of children of the receiving ZFS dataset.
  // A recursion depth may be specified, or a depth of 0 allows unlimited
  // recursion.