def _DocToArgs(doc):
    """Converts a docstring documenting arguments into a dict.

    .. image:: _static/adb.common_cli._DocToArgs.CALLER_GRAPH.svg

    Parameters
    ----------
    doc : str
        The docstring for a method; see `MakeSubparser`.

    Returns
    -------
    out : dict
        A dictionary of arguments and their descriptions from the docstring ``doc``.

    """
    offset = None
    param = None
    out = {}

    for l in doc.splitlines():
        if l.strip() == 'Parameters':
            offset = len(l.rstrip()) - len(l.strip())

        elif offset:
            # The "----------" line
            if l.strip() == '-' * len('Parameters'):
                continue

            if l.strip() in ['Returns', 'Yields', 'Raises']:
                break

            # start of a parameter
            if len(l.rstrip()) - len(l.strip()) == offset:
                param = l.strip().split()[0]
                out[param] = ''

            # add to a parameter
            elif l.strip():
                if out[param]:
                    out[param] += ' ' + l.strip()
                else:
                    out[param] = l.strip()

    return out