docs: def parse_set_header(value, on_update=None):
      """Parse a set-like header and return a
      :class:`~werkzeug.datastructures.HeaderSet` object:
  
      >>> hs = parse_set_header('token, "quoted value"')
  
      The return value is an object that treats the items case-insensitively
      and keeps the order of the items:
  
      >>> 'TOKEN' in hs
      True
      >>> hs.index('quoted value')
      1
      >>> hs
      HeaderSet(['token', 'quoted value'])
  
      To create a header from the :class:`HeaderSet` again, use the
      :func:`dump_header` function.
  
      :param value: a set header to be parsed.
      :param on_update: an optional callable that is called every time a
                        value on the :class:`~werkzeug.datastructures.HeaderSet`
                        object is changed.
      :return: a :class:`~werkzeug.datastructures.HeaderSet`
      """
      if not value:
          return HeaderSet(None, on_update)
      return HeaderSet(parse_list_header(value), on_update)