docs: def create_providerinfo(self, capabilities):
          """
          Dynamically create the provider info response
  
          :param capabilities:
          :return:
          """
  
          _pinfo = self.package_capabilities()
          not_supported = {}
          for key, val in capabilities.items():
              try:
                  allowed = _pinfo[key]
              except KeyError:
                  _pinfo[key] = val
              else:
                  if isinstance(allowed, bool):
                      if allowed is False:
                          if val is True:
                              not_supported[key] = True
                      else:
                          _pinfo[key] = val
                  elif isinstance(allowed, str):
                      if val != allowed:
                          not_supported[key] = val
                  elif isinstance(allowed, list):
                      if isinstance(val, str):
                          sv = {val}
                      else:
                          try:
                              sv = set(val)
                          except TypeError:
                              if key == 'response_types_supported':
                                  sv = set()
                                  for v in val:
                                      v.sort()
                                      sv.add(' '.join(v))
                              else:
                                  raise
                          else:
                              sv = set()
                              for v in val:
                                  vs = v.split(' ')
                                  vs.sort()
                                  sv.add(' '.join(vs))
  
                      sa = set(allowed)
  
                      if (sv & sa) == sv:
                          _pinfo[key] = list(sv)
                      else:
                          not_supported[key] = list(sv - sa)
  
          if not_supported:
              _msg = "Server doesn't support the following features: {}".format(
                  not_supported)
              logger.error(_msg)
              raise ConfigurationError(_msg)
  
          if self.jwks_uri and self.keyjar:
              _pinfo["jwks_uri"] = self.jwks_uri
  
          for name, instance in self.endpoint.items():
              if name not in ['webfinger', 'provider_info']:
                  _pinfo['{}_endpoint'.format(name)] = instance.full_path
  
          return _pinfo