Extract a dictionary of arguments and definitions.

    Args:
        source: The source for a section of a usage string that contains
            definitions.

    Returns:
        A two-tuple containing a dictionary of all arguments and definitions as
        well as the length of the longest argument.

def _get_definitions(source):
    # type: (str) -> Tuple[Dict[str, str], int]
    """Extract a dictionary of arguments and definitions.

    Args:
        source: The source for a section of a usage string that contains
            definitions.

    Returns:
        A two-tuple containing a dictionary of all arguments and definitions as
        well as the length of the longest argument.
    """
    max_len = 0
    descs = collections.OrderedDict()  # type: Dict[str, str]
    lines = (s.strip() for s in source.splitlines())
    non_empty_lines = (s for s in lines if s)
    for line in non_empty_lines:
        if line:
            arg, desc = re.split(r'\s\s+', line.strip())
            arg_len = len(arg)
            if arg_len > max_len:
                max_len = arg_len
            descs[arg] = desc
    return descs, max_len