'construct a new ``HTTPHeader`` instance
We use the ``__new__`` operator to ensure that only one
``HTTPHeader`` instance exists for each field-name, and to
register the header so that it can be found/enumerated.'

def __new__(cls, name, category=None, reference=None, version=None):

    self = get_header(name, raiseError=False)
    if self:
        assert (self.name == name), 'duplicate    registration    with    different    capitalization'
        assert (self.category == category), 'duplicate    registration    with    different    category'
        assert (cls == self.__class__), 'duplicate    registration    with    different    class'
        return self
    self = object.__new__(cls)
    self.name = name
    assert isinstance(self.name, str)
    self.category = (category or self.category)
    self.version = (version or self.version)
    self.reference = (reference or self.reference)
    _headers[self.name.lower()] = self
    self.sort_order = {'general': 1, 'request': 2, 'response': 3, 'entity': 4}[self.category]
    self._environ_name = getattr(self, '_environ_name', ('HTTP_' + self.name.upper().replace('-', '_')))
    self._headers_name = getattr(self, '_headers_name', self.name.lower())
    assert (self.version in ('1.1', '1.0', '0.9'))
    return self
