'find/construct field-value(s) for the given header
Resolution is done according to the following arguments:
- If only keyword arguments are given, then this is equivalent
to ``compose(**kwargs)``.
- If the first (and only) argument is a dict, it is assumed
to be a WSGI ``environ`` and the result of the corresponding
``HTTP_`` entry is returned.
- If the first (and only) argument is a list, it is assumed
to be a WSGI ``response_headers`` and the field-value(s)
for this header are collected and returned.
- In all other cases, the arguments are collected, checked that
they are string values, possibly verified by the header\'s
logic, and returned.
At this time it is an error to provide keyword arguments if args
is present (this might change).  It is an error to provide both
a WSGI object and also string arguments.  If no arguments are
provided, then ``compose()`` is called to provide a default
value for the header; if there is not default it is an error.'

def values(self, *args, **kwargs):

    if (not args):
        return self.compose(**kwargs)
    if (list == type(args[0])):
        assert (1 == len(args))
        result = []
        name = self.name.lower()
        for value in [value for (header, value) in args[0] if (header.lower() == name)]:
            result.append(value)
        return result
    if (dict == type(args[0])):
        assert ((1 == len(args)) and ('wsgi.version' in args[0]))
        value = args[0].get(self._environ_name)
        if (not value):
            return ()
        return (value,)
    for item in args:
        assert (not (type(item) in (dict, list)))
    return args
