def _argument_list_to_execution_argument(argument_list, cli_argument,
    batch_value):
    """
    Returns a list of strings representing the execution argument for the given cli argument.

    :param argument_list: The list of argument without prefix
    :param cli_argument: The cli argument whose prefix might be added.
    :param batch_value: The batch value corresponding to the cli argument
    """
    execution_argument = []
    if cli_argument.prefix:
        do_separate = cli_argument.separate
        if cli_argument.is_array() and not cli_argument.item_separator:
            do_separate = True
        should_add_prefix = True
        if cli_argument.is_array():
            if not batch_value:
                should_add_prefix = False
        if cli_argument.is_boolean():
            if not batch_value:
                should_add_prefix = False
        if should_add_prefix:
            if do_separate:
                execution_argument.append(cli_argument.prefix)
                execution_argument.extend(argument_list)
            elif not argument_list:
                execution_argument.append(cli_argument.prefix)
            else:
                assert len(argument_list) == 1
                joined_argument = '{}{}'.format(cli_argument.prefix,
                    argument_list[0])
                execution_argument.append(joined_argument)
    else:
        execution_argument.extend(argument_list)
    return execution_argument
