code: func (d *Dataset) Snapshot(name string, recursive bool) (*Dataset, error) {
  	args := make([]string, 1, 4)
  	args[0] = "snapshot"
  	if recursive {
  		args = append(args, "-r")
  	}
  	snapName := fmt.Sprintf("%s@%s", d.Name, name)
  	args = append(args, snapName)
  	_, err := zfs(args...)
  	if err != nil {
  		return nil, err
  	}
  	return GetDataset(snapName)
  }
docs: // Snapshot creates a new ZFS snapshot of the receiving dataset, using the
  // specified name.  Optionally, the snapshot can be taken recursively, creating
  // snapshots of all descendent filesystems in a single, atomic operation.