function filterUnusedSelectors(selectors, ignore, usedSelectors) {
    /* There are some selectors not supported for matching, like
     *   :before, :after
     * They should be removed only if the parent is not found.
     * Example: '.clearfix:before' should be removed only if there
     *          is no '.clearfix'
     */
    return selectors.filter(selector => {
        selector = dePseudify(selector);
        /* TODO: process @-rules */
        if (selector[0] === '@') {
            return true;
        }
        for (let i = 0, len = ignore.length; i < len; ++i) {
            if (_.isRegExp(ignore[i]) && ignore[i].test(selector)) {
                return true;
            }
            if (/:\w+/.test(ignore[i])) {
                const ignored = dePseudify(ignore[i]);
                if (ignored === selector) {
                    return true;
                }
            }
            if (ignore[i] === selector) {
                return true;
            }
        }
        return usedSelectors.indexOf(selector) !== -1;
    });
}
Private function used in filterUnusedRules.
@param  {Array} selectors      CSS selectors created by the CSS parser
@param  {Array} ignore         List of selectors to be ignored
@param  {Array} usedSelectors  List of Selectors found in the jsdom pages
@return {Array}                The selectors matched in the DOMs