<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:

def holds(snapshot, **kwargs):
    '''
    Lists all existing user references for the given snapshot or snapshots.

    snapshot : string
        name of snapshot
    recursive : boolean
        lists the holds that are set on the named descendent snapshots also.

    .. versionadded:: 2016.3.0

    CLI Example:

    .. code-block:: bash

        salt '*' zfs.holds myzpool/mydataset@baseline

    '''
    ## Configure command
    # NOTE: initialize the defaults
    flags = ['-H']
    target = []

    # NOTE: set extra config from kwargs
    if kwargs.get('recursive', False):
        flags.append('-r')

    # NOTE: update target
    target.append(snapshot)

    ## Lookup holds
    res = __salt__['cmd.run_all'](
        __utils__['zfs.zfs_command'](
            command='holds',
            flags=flags,
            target=target,
        ),
        python_shell=False,
    )

    ret = __utils__['zfs.parse_command_result'](res)
    if res['retcode'] == 0:
        for hold in res['stdout'].splitlines():
            hold_data = OrderedDict(list(zip(
                ['name', 'tag', 'timestamp'],
                hold.split("\t"),
            )))
            ret[hold_data['tag'].strip()] = hold_data['timestamp']

    return ret