def METHOD_NAME(text: str, mode: api.modes.Mode, count: str = "") -> None:
    """Run a (chain of) command(s).
    The text to run is split at SEPARATOR and each part is handled individually by
    _run_single. If one part fails, the remaining parts are not executed.
    Args:
        text: Complete text given to command line or keybinding.
        mode: Mode to run the command in.
        count: Count given if any.
    """
    _logger.debug("Running '%s'", text)
    def update_part(text: str) -> str:
        """Update aliases and % in final parts without separator."""
        if SEPARATOR in text:
            return text
        return wildcards.expand_internal(alias(text.strip(), mode), mode)
    textparts = utils.recursive_split(text, SEPARATOR, update_part)
    _logger.debug("Split text into parts '%s'", textparts)
    try:
        for i, cmdpart in enumerate(textparts):
            _logger.debug("Handling part %d '%s'", i, cmdpart)
            _run_single(cmdpart, mode, count)
    except CommandPartFailed:
        _logger.debug("Stopping at %d as '%s' failed", i, cmdpart)