Extract the named section from the source.

    Args:
        name: The name of the section to extract (e.g. "Usage").
        source: The usage string to parse.

    Returns:
        A string containing only the requested section. If the section appears
        multiple times, each instance will be merged into a single section.

def _get_section(name, source):
    # type: (str, str) -> Optional[str]
    """Extract the named section from the source.

    Args:
        name: The name of the section to extract (e.g. "Usage").
        source: The usage string to parse.

    Returns:
        A string containing only the requested section. If the section appears
        multiple times, each instance will be merged into a single section.
    """
    pattern = re.compile(
        '^([^\n]*{name}[^\n]*\n?(?:[ \t].*?(?:\n|$))*)'.format(name=name),
        re.IGNORECASE | re.MULTILINE)
    usage = None
    for section in pattern.findall(source):
        usage = _merge_section(usage, section.strip())
    return usage