def verify_capabilities(self, capabilities):
        """
        Verify that what the admin wants the server to do actually
        can be done by this implementation.

        :param capabilities: The asked for capabilities as a dictionary
        or a ProviderConfigurationResponse instance. The later can be
        treated as a dictionary.
        :return: True or False
        """
        _pinfo = self.provider_features()
        not_supported = {}
        for key, val in capabilities.items():
            if isinstance(val, six.string_types):
                try:
                    if val in _pinfo[key]:
                        continue
                    else:
                        not_supported[key] = val
                except KeyError:
                    not_supported[key] = ''
            elif isinstance(val, bool):
                if not _pinfo[key] and val:
                    not_supported[key] = ''
            elif isinstance(val, list):
                for v in val:
                    try:
                        if v in _pinfo[key]:
                            continue
                        else:
                            try:
                                not_supported[key].append(v)
                            except KeyError:
                                not_supported[key] = [v]
                    except __HOLE__:
                        not_supported[key] = ''

        if not_supported:
            logging.error(
                "Server doesn't support the following features: {}".format(
                    not_supported))
            return False

        return True

    # noinspection PyUnusedLocal
dataset/ETHPy150Open rohe/pyoidc/src/oic/oic/provider.py/Provider.verify_capabilities