Given a "current" arg pattern (that was used to match the last
        actual argument of an expression), and another ("last") argument
        pattern, raise a ValueError, unless the "last" argument pattern is a
        "zero or more" wildcard. In that case, return a dict that maps the
        wildcard name to an empty list

def _check_last_arg_pattern(self, current_arg_pattern, last_arg_pattern):
        """Given a "current" arg pattern (that was used to match the last
        actual argument of an expression), and another ("last") argument
        pattern, raise a ValueError, unless the "last" argument pattern is a
        "zero or more" wildcard. In that case, return a dict that maps the
        wildcard name to an empty list
        """
        try:
            if last_arg_pattern.mode == self.single:
                raise ValueError("insufficient number of arguments")
            elif last_arg_pattern.mode == self.zero_or_more:
                if last_arg_pattern.wc_name is not None:
                    if last_arg_pattern != current_arg_pattern:
                        # we have to record an empty match
                        return {last_arg_pattern.wc_name: []}
            elif last_arg_pattern.mode == self.one_or_more:
                if last_arg_pattern != current_arg_pattern:
                    raise ValueError("insufficient number of arguments")
        except AttributeError:
            raise ValueError("insufficient number of arguments")
        return {}