def _resolve_arg_value_types(self, argnames, indirect):
valtypes = {}<EOL>if indirect is True:<EOL><INDENT>valtypes = dict.fromkeys(argnames, "<STR_LIT>")<EOL><DEDENT>elif indirect is False:<EOL><INDENT>valtypes = dict.fromkeys(argnames, "<STR_LIT>")<EOL><DEDENT>elif isinstance(indirect, (tuple, list)):<EOL><INDENT>valtypes = dict.fromkeys(argnames, "<STR_LIT>")<EOL>for arg in indirect:<EOL><INDENT>if arg not in argnames:<EOL><INDENT>fail(<EOL>"<STR_LIT>".format(<EOL>self.function.__name__, arg<EOL>),<EOL>pytrace=False,<EOL>)<EOL><DEDENT>valtypes[arg] = "<STR_LIT>"<EOL><DEDENT><DEDENT>return valtypes<EOL>
Resolves if each parametrized argument must be considered a parameter to a fixture or a "funcarg"
        to the function, based on the ``indirect`` parameter of the parametrized() call.

        :param List[str] argnames: list of argument names passed to ``parametrize()``.
        :param indirect: same ``indirect`` parameter of ``parametrize()``.
        :rtype: Dict[str, str]
            A dict mapping each arg name to either:
            * "params" if the argname should be the parameter of a fixture of the same name.
            * "funcargs" if the argname should be a parameter to the parametrized test function.