<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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